Linux 磁盘分区 GPT、swap 与磁盘故障排查总结

一、磁盘分区实操:GPT
GPT,全称是 GUID Partition Table,中文一般叫"全局唯一标识分区表"。
如果说 MBR 是老式分区表,那么 GPT 就是现在新服务器、大容量磁盘更常见的分区方式。尤其是磁盘容量超过 2TB,或者服务器使用 UEFI 引导时,GPT 基本就是优先选择。
1. MBR 和 GPT 的区别

MBR 和 GPT 都是分区表,作用都是记录"磁盘被怎么分区了"。区别在于:MBR 设计比较早,结构简单,兼容老系统;GPT 设计更现代,支持更大的磁盘、更多分区,并且有校验和备份机制。
分区表结构
MBR:
- MBR 分区表位于磁盘的第 0 磁道、第 0 柱面、第 1 扇区,也就是通常说的磁盘第一个扇区。
- MBR 分区表大小为 512 字节,其中包含:
- 446 字节引导代码
- 64 字节分区表
- 2 字节结束标志
55AA
- MBR 最多支持 4 个主分区,或者 3 个主分区加 1 个扩展分区。
- 分区表信息在固定位置,一旦损坏,恢复成本比较高。
GPT:
- GPT 分区表位于磁盘的开头和结尾,结尾处有冗余备份。
- GPT 使用 GUID 标识分区,分区信息更完整。
- GPT 通常支持最多 128 个主分区。
- GPT 分区表包含分区类型、分区名称、分区大小等更多信息。
分区大小限制
MBR:
- MBR 使用 32 位 LBA 表示分区起始和结束位置。
- 常见最大分区大小为 2TB。
- 如果磁盘使用 4KB 扇区,在特定系统支持下可以突破到更大,但兼容性不如 GPT。
GPT:
- GPT 使用 64 位 LBA。
- 理论最大分区大小可达到 9.4ZB。
- 更适合现代大容量磁盘。
数据完整性
MBR:
- 分区表固定放在磁盘开头。
- 没有内置校验机制。
- 如果 MBR 损坏,可能导致系统无法启动或分区信息丢失。
GPT:
- 磁盘开头和结尾都有分区表信息。
- 使用 CRC32 校验分区表完整性。
- 主分区表损坏时,可以尝试从备份分区表恢复。
应用场景
MBR 适合:
- 老系统
- 老硬件
- 小于 2TB 的磁盘
- BIOS 引导环境
GPT 适合:
- 新服务器
- 大容量磁盘
- UEFI 引导环境
- 对分区数量和数据完整性要求更高的场景
综合比较
| 特性 | MBR | GPT |
|---|---|---|
| 分区表位置 | 磁盘的第 1 扇区 | 磁盘的开头和结尾 |
| 最大分区数量 | 4 个主分区,或 3 个主分区 + 1 个扩展分区 | 128 个主分区 |
| 最大分区大小 | 2TB,或 16TB,取决于扇区大小 | 9.4ZB |
| 引导方式 | BIOS | UEFI |
| 数据完整性 | 无冗余备份,无校验机制 | 冗余备份,CRC32 校验 |
| 兼容性 | 广泛支持旧系统和硬件 | 主要支持现代系统和硬件 |
| 分区类型和名称 | 分区类型代码,无分区名称 | GUID 分区类型,支持分区名称 |
| 适用场景 | 旧系统、小型磁盘 | 现代系统、大容量磁盘 |
简单总结:新服务器、大容量磁盘,优先考虑 GPT;老系统兼容场景,再考虑 MBR。
2. parted 命令
parted 是一个功能比较强的磁盘分区工具,可以创建、修改和管理磁盘分区。
和传统的 fdisk 相比,parted 对 GPT 支持更好,也更适合处理大于 2TB 的磁盘。

常用操作
| 操作 | 说明 |
|---|---|
parted /dev/sdc |
进入指定磁盘的 parted 交互环境 |
print |
查看当前磁盘分区信息 |
help |
查看 parted 帮助信息 |
mklabel gpt |
创建 GPT 分区表 |
mktable gpt |
创建 GPT 分区表,和 mklabel gpt 类似 |
mkpart primary start end |
创建分区,指定分区类型、起始位置和结束位置 |
rm 分区号 |
删除指定编号的分区 |
q |
退出 parted,操作会自动生效 |
注意:如果要创建 MBR 分区表,在 parted 中一般使用 mklabel msdos,不是写 mbr。
操作示例:给 /dev/sdc 创建 10MB GPT 分区
先进入目标磁盘:
bash
parted /dev/sdc
在 parted 交互界面中查看当前分区:
bash
print
创建 GPT 分区表:
bash
mklabel gpt
创建一个 10MB 的主分区:
bash
mkpart primary 0 10MB
查看创建结果:
bash
print
退出:
bash
q
回到系统后,可以通过 lsblk 查看分区是否已经生成:
bash
lsblk
如果后续要正常存放文件,还需要给分区创建文件系统并挂载,例如:
bash
mkfs.xfs /dev/sdc1
mkdir -p /data
mount /dev/sdc1 /data
df -h
操作磁盘前一定要确认设备名。比如 /dev/sdb、/dev/sdc 看起来只差一个字母,但如果选错盘,分区表可能直接被覆盖。
二、swap 分区实操
swap 是 Linux 的交换空间,可以理解为"磁盘上临时借给内存用的一块空间"。
当物理内存 RAM 不够时,Linux 内核会把一部分暂时不活跃的内存页换出到 swap 中,从而释放 RAM 给更活跃的进程使用。
1. swap 分区的作用
swap 主要有两个作用。
扩展可用内存:
当物理内存不足时,系统可以将不常用的数据移动到 swap,避免进程因为内存不足直接被系统杀掉。
提高系统稳定性:
swap 相当于一个缓冲区。它不能让系统变快,但能在内存紧张时给系统一点缓冲空间,避免瞬间崩掉。
2. swap 分区的缺点
swap 的缺点也很明显。
性能比内存低很多:
swap 位于磁盘上,磁盘读写速度远低于内存。如果系统频繁使用 swap,常见现象就是机器变慢、命令卡顿、服务响应变慢。
增加磁盘读写压力:
频繁使用 swap 会增加磁盘 I/O。对于 SSD 来说,长期大量 swap 还可能增加写入损耗。
所以 swap 的定位要明确:它是兜底缓冲,不是性能优化手段。应用长期吃满内存时,根因通常还是要优化程序或增加内存。
3. 创建 swap

假设系统中某个应用程序,比如 Java 程序占用大量内存,已经开始使用 swap。为了保证应用先正常运行,可以适当增加 swap 空间。
创建 swap 的步骤如下:
- 创建指定大小的文件
- 将文件格式化为 swap
- 启用 swap
- 配置永久启用
- 按需关闭 swap
第一步:创建文件
这里使用 /dev/zero 创建一个约 1GB 的文件:
bash
[root@atguigu ~]# dd if=/dev/zero of=/tmp/swap_1g bs=1M count=1000
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,33.1107 秒,31.7 MB/秒
[root@atguigu ~]# ll /tmp/swap_1g
-rw-r--r-- 1 root root 1048576000 6月 30 09:18 /tmp/swap_1g
参数说明:
| 参数 | 说明 |
|---|---|
if=/dev/zero |
输入文件为 /dev/zero,持续输出 0 |
of=/tmp/swap_1g |
输出文件路径 |
bs=1M |
每次写入 1MB |
count=1000 |
写入 1000 次,约 1GB |
第二步:格式化
使用 mkswap 将普通文件转换为 swap 文件:
bash
[root@atguigu ~]# mkswap /tmp/swap_1g
正在设置交换空间版本 1,大小 = 1023996 KiB
无标签,UUID=687d8ad0-5261-44e7-bf13-fd0a6f6149d8
查看文件类型:
bash
[root@atguigu ~]# file /tmp/swap_1g
/tmp/swap_1g: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, UUID=687d8ad0-5261-44e7-bf13-fd0a6f6149d8
第三步:启用
启用前先看当前内存和 swap:
bash
[root@atguigu ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 223M 431M 9.5M 1.3G 1.5G
Swap: 2.0G 0B 2.0G
修改 swap 文件权限:
bash
[root@atguigu ~]# chmod 600 /tmp/swap_1g
启用 swap:
bash
[root@atguigu ~]# swapon /tmp/swap_1g
再次查看:
bash
[root@atguigu ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 224M 431M 9.5M 1.3G 1.5G
Swap: 3.0G 0B 3.0G
可以看到 swap 从 2GB 增加到了 3GB。
第四步:永久启用
临时启用的 swap,重启后会失效。如果需要永久生效,可以写入 /etc/fstab。
编辑配置文件:
bash
vim /etc/fstab
添加一行:
bash
/tmp/swap_1g swap swap defaults 0 0
也可以把 swapon /tmp/swap_1g 写入 rc.local,但更推荐使用 /etc/fstab 管理。
第五步:关闭 swap
查看当前 swap:
bash
[root@atguigu ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 224M 430M 9.5M 1.3G 1.5G
Swap: 3.0G 0B 3.0G
关闭指定 swap 文件:
bash
[root@atguigu ~]# swapoff /tmp/swap_1g
再次查看:
bash
[root@atguigu ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 223M 431M 9.5M 1.3G 1.5G
Swap: 2.0G 0B 2.0G
关闭所有 swap:
bash
swapoff -a
启用 /etc/fstab 中配置的所有 swap:
bash
swapon -a
三、企业分区方案
安装 Linux 时可以自动分区,也可以根据业务需要手动分区。
企业环境更推荐提前规划,因为分区方式会影响后续扩容、重装系统、数据保留和故障恢复。
1. 服务器数据不重要
这种场景常见于测试机、临时环境、可随时重建的服务器。
| 分区 | 作用与大小 | 补充 |
|---|---|---|
/boot 引导分区 |
存放系统启动文件和内核镜像,推荐 1GB | |
swap |
内存大于 8GB,swap 配 8GB 即可;内存低于 8GB,可按 1.5 倍或 2 倍配置,最大 8GB | 公有云可以不配置;Java 服务建议配置一些 |
/ 根分区 |
所有剩余空间给根分区 | 简单省事 |
这种方式维护简单,但缺点是系统和数据混在一起。重装系统时,如果没有提前备份,数据容易一起丢。
2. 服务器存放重要数据
这种场景更接近生产环境。核心思路是:系统和业务数据分开。
| 分区 | 作用与大小 | 补充 |
|---|---|---|
/boot 引导分区 |
存放系统启动文件和内核镜像,推荐 1GB | |
swap |
内存大于 8GB,swap 配 8GB 即可;内存低于 8GB,可按 1.5 倍或 2 倍配置,最大 8GB | 公有云可以不配置;Java 服务建议配置一些 |
/ 根分区 |
40GB 到 200GB,主要安装系统和软件 | 重要数据不要直接堆在根分区 |
/data |
剩余所有空间 | 重装系统时可以保留该分区,业务数据不受影响 |
比如数据库文件、业务上传文件、备份文件、应用日志等,都可以规划到 /data 或 /data/mysql、/data/app 这样的目录。
3. 不确定数据是否重要
如果前期业务还没有完全定型,可以预留空间。
| 分区 | 作用与大小 | 补充 |
|---|---|---|
/boot 引导分区 |
存放系统启动文件和内核镜像,推荐 1GB | |
swap |
内存大于 8GB,swap 配 8GB 即可;内存低于 8GB,可按 1.5 倍或 2 倍配置,最大 8GB | 公有云可以不配置;Java 服务建议配置一些 |
/ 根分区 |
40GB 到 200GB | 安装系统和软件 |
| 剩余空间不划分 | 后续谁使用谁划分 | 方便后面按业务扩展 |
公有云上很多厂商默认不配置 swap,这是因为云服务器一般希望减少磁盘 I/O,提高整体性能。是否需要 swap,要结合服务类型判断。
四、企业故障案例:磁盘空间不足
Linux 系统磁盘不足时,经常会看到类似报错:
bash
No space left on device
生产环境中,磁盘使用率通常到 70% 左右就应该开始关注。如果等到 95%、100% 才处理,很多服务可能已经写不进日志、创建不了临时文件,甚至出现业务异常。

1. 磁盘空间不足的常见原因
磁盘空间不足主要有 3 类原因。
| 原因 | 表现 | 排查方向 |
|---|---|---|
| Block 不足 | 大文件太多,磁盘容量被占满 | df -h、du -sh |
| Inode 不足 | 小文件太多,容量还没满,但无法创建新文件 | df -i、find |
| 进程占用已删除文件 | 文件删了,但空间没有释放 | `lsof |
2. 原因 1:Block 不足
Block 不足是最常见的磁盘空间问题。简单说,就是大文件太多,真的把磁盘容量占满了。
场景模拟
创建一个大文件:
bash
[root@atguigu ~]# dd if=/dev/zero of=/var/log/big bs=1M count=6000
记录了6000+0 的读入
记录了6000+0 的写出
6291456000字节(6.3 GB)已复制,84.179 秒,74.7 MB/秒
查看磁盘使用情况:
bash
[root@atguigu ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root 47G 9.1G 38G 20% /
/dev/sdb1 17M 1.1M 16M 7% /data
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 199M 0 199M 0% /run/user/0
这里根分区使用率变高了,下一步要逐层往下找。
排查方式
先看根目录下哪个目录最大:
bash
[root@atguigu ~]# du -sh /* | sort -rhk1
6.6G /var
1.4G /usr
1001M /tmp
121M /root
105M /boot
32M /etc
9.6M /run
52K /atguigu
16K /home
0 /sys
0 /srv
发现 /var 比较大,再查 /var:
bash
[root@atguigu ~]# du -sh /var/* | sort -rhk1
5.9G /var/log
620M /var/cache
71M /var/lib
16K /var/spool
8.0K /var/db
4.0K /var/tmp
0 /var/yp
0 /var/run
继续查 /var/log:
bash
[root@atguigu ~]# du -sh /var/log/* | sort -rhk1
5.9G /var/log/big
2.4M /var/log/anaconda
1.4M /var/log/sa
1.2M /var/log/messages-20250627
984K /var/log/audit
最终定位到 /var/log/big。
注意:生产环境中不能看到大文件就直接 rm -f。尤其是日志、数据库文件、业务上传文件,要先确认文件用途,再决定清理、压缩、归档还是扩容。
3. 原因 2:Inode 不足
Inode 不足是 Linux 比较典型的问题。
每创建一个文件,就会消耗一个 inode。inode 用来保存文件属性信息,比如权限、属主、大小、时间戳、数据块位置等。
有时候磁盘容量明明还有,但创建文件还是报 No space left on device,这就可能是 inode 被耗尽了。
场景模拟
创建一个 10MB 的小分区,挂载后模拟 inode 被耗尽:
bash
[root@atguigu ~]# dd if=/dev/zero of=/tmp/10m bs=1M count=10
[root@atguigu ~]# mkfs.ext4 /tmp/10m
[root@atguigu ~]# mkdir /inode
[root@atguigu ~]# mount /tmp/10m /inode
查看挂载情况:
bash
[root@atguigu ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
...
/dev/loop0 8.7M 172K 7.9M 3% /inode
查看 inode 使用情况:
bash
[root@atguigu inode]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
...
/dev/loop0 2560 11 2549 1% /inode
创建大量小文件:
bash
[root@atguigu ~]# cd /inode/
[root@atguigu inode]# touch inode{01..3000}.txt
touch: 无法创建"inode2550.txt": 设备上没有空间
touch: 无法创建"inode2551.txt": 设备上没有空间
touch: 无法创建"inode2552.txt": 设备上没有空间
再次查看 inode:
bash
[root@atguigu inode]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
...
/dev/loop0 2560 2560 0 100% /inode
此时容量没有完全用完,但 inode 已经 100%,所以无法继续创建新文件。
排查方式
方式一:查找比较大的目录:
bash
find / -type d -size +1M
方式二:统计文件集中在哪些目录:
bash
find / -type f | xargs dirname | sort | uniq -c | sort -rn | head
示例输出:
bash
2549 /inode
877 /usr/share/man/man3
859 /usr/share/man/man1
711 /usr/share/man/man8
700 /usr/bin
如果某个目录下文件数量异常高,就要重点排查这个目录。
解决方案
找到小文件所在目录后,确认文件可删除,再进行清理。
如果一次性创建或删除大量文件,可能遇到参数列表过长:
bash
-bash: /usr/bin/touch: 参数列表过长
可以使用 xargs 解决:
bash
echo a{01..350000}.txt | xargs touch
删除大量文件时也可以用:
bash
ls | xargs rm -f
或者缩小匹配范围:
bash
ls 1* | xargs rm -f
如果是千万级别小文件,逐个删除会非常慢。更实际的方式是删除整个目录,然后重新创建目录并恢复权限。
4. 原因 3:进程占用已删除文件
还有一种很容易误判的情况:文件已经被 rm 删除了,但空间没有释放。
原因是 Linux 文件真正释放要满足两个条件:
- 文件的引用计数为 0,也就是没有文件名指向它。
- 文件没有被任何进程打开。
如果一个日志文件正在被 tail -f 或某个服务进程打开,即使执行了 rm,文件名入口没了,但进程仍然持有文件描述符,磁盘空间不会立即释放。
场景模拟
创建一个大文件:
bash
[root@atguigu ~]# dd if=/dev/zero of=/var/log/test_big bs=1M count=6000
查看磁盘:
bash
[root@atguigu ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root 47G 7.5G 40G 16% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 199M 0 199M 0% /run/user/0
打开两个连接:
- 一个连接执行
tail -f /var/log/test_big占用文件。 - 另一个连接执行
rm /var/log/test_big删除文件。
再次查看磁盘,可能发现空间并没有释放。
排查方式
先用 df -h 看文件系统使用情况:
bash
df -h
再用 du -sh / 看目录真实占用:
bash
du -sh /
如果 df 显示占用很高,但 du 统计出来明显小很多,就要怀疑有"已删除但仍被进程占用"的文件。
安装 lsof:
bash
yum install -y lsof
查看被进程占用的文件:
bash
lsof | grep tail
查看已删除但仍被占用的文件:
bash
lsof | grep deleted
示例:
bash
tail 12991 root 3r REG 253,0 6291456000 33561843 /var/log/test_big (deleted)
其中 deleted 表示文件入口已经没了,但还有进程在占用。
解决方式就是关闭或重启对应进程:
bash
kill 12991
如果是业务服务占用日志文件,生产环境中不要随手 kill -9。更稳妥的方式是重启对应服务,或者按服务自己的日志切割机制处理。
五、文件系统

文件系统决定了分区如何组织和管理文件。不同 Linux 发行版、不同版本,默认文件系统也不完全一样。
1. ext4
ext4 是目前常见的 Linux 文件系统之一,Ubuntu 和 CentOS 6.x 环境中比较常见。
特点:
- 支持大文件和大容量存储。
- 最大文件大小可达 16TB。
- 文件系统最大容量可达 1EB。
- 改进了日志机制,提高可靠性和恢复速度。
- 支持在线碎片整理。
适用场景:
- 通用服务器
- 桌面系统
- 大量普通文件存储
- 对兼容性要求比较高的环境
2. xfs
xfs 是 CentOS 7 及之后版本常见的默认文件系统。
特点:
- 专为高性能和大容量存储设计。
- 最大文件大小可达 8EB。
- 文件系统最大容量可达 8EB。
- 文件分配和扩展机制效率高。
- 支持在线扩展和碎片整理。
适用场景:
- 存储服务器
- 大文件场景
- 高并发文件访问
- 日志、备份、对象存储类目录
注意:xfs 支持在线扩容,但不支持像 ext4 那样方便地缩小文件系统。生产环境缩容前一定要备份,并确认文件系统能力。
3. tmpfs
tmpfs 是基于内存的临时文件系统。
特点:
- 数据存储在内存中,速度非常快。
- 重启后数据会丢失。
- 适合临时数据,不适合持久化数据。
适用场景:
- 临时文件
- 缓存目录
- 运行时目录
- 对速度要求高、但数据可丢失的场景
4. swap
swap 可以是交换分区,也可以是 swap 文件。
特点:
- 作为物理内存不足时的补充空间。
- swap 文件创建和删除更灵活。
- swap 分区需要在分区时提前规划。
- swap 文件可以通过权限控制访问。
适用场景:
- 内存不足时提供缓冲。
- 避免系统因为瞬时内存压力直接崩溃。
- Java 等内存占用较高的服务,可以根据实际情况配置一定 swap。
六、磁盘性能指标
磁盘不只看容量,还要看性能。常见指标有 IOPS、吞吐量、响应时间和 MTBF。
| 指标 | 含义 | 说明 |
|---|---|---|
| IOPS | 每秒完成的 I/O 操作数量 | 小文件随机读写场景非常关注 |
| 吞吐量 | 每秒传输的数据量,单位通常是 MB/s 或 GB/s | 大文件连续读写更关注 |
| 响应时间 Latency | 从发出 I/O 请求到完成所需时间 | 越低越好,单位通常是 ms |
| 平均无故障时间 MTBF | 两次相邻故障之间的平均时间 | 越高代表可靠性越好 |
举个例子:
- 数据库小查询很多,更关注 IOPS 和延迟。
- 备份大文件传输,更关注吞吐量。
- 业务请求偶尔卡顿,可能要重点看磁盘延迟。
七、查看磁盘信息常用命令
磁盘排查时,几个命令要分清楚用途:
df看文件系统整体使用情况。du看目录或文件实际占用。lsblk看块设备结构。fdisk看分区表。blkid看 UUID 和文件系统类型。
1. df
df 用来查看磁盘分区的整体使用情况,包括空间占用、挂载点等。
| 常用选项 | 说明 |
|---|---|
df -h |
以人类可读的单位显示,如 GB、MB |
df -T |
显示文件系统类型 |
df -i |
查看 inode 使用情况,而不是磁盘空间 |
常见用法:
bash
df -h
df -T
df -i
2. du
du 用来查看指定目录或文件的磁盘占用详情,更偏向文件级别的大小统计。
| 常用选项 | 说明 |
|---|---|
du -h <目录> |
以可读单位显示目录下各文件或子目录大小 |
du -sh <目录> |
只显示指定目录总大小 |
du -h --max-depth=1 <目录> |
显示一级子目录大小 |
常见用法:
bash
du -sh /*
du -sh /var/*
du -h --max-depth=1 /var
du -sh /var/log/* | sort -rhk1
3. lsblk
lsblk 用来列出块设备结构,适合查看磁盘、分区、挂载点之间的关系。
| 常用选项 | 说明 |
|---|---|
lsblk |
默认显示设备名称、大小、挂载点等 |
lsblk -f |
显示文件系统类型和 UUID |
lsblk -l |
以列表形式显示,不使用树形结构 |
lsblk 常见列说明
| 列名 | 含义说明 |
|---|---|
| NAME | 设备名称,如 sda、sda1、vdb |
| MAJ:MIN | 主设备号和次设备号 |
| RM | 是否为可移动设备,1 表示可移动,0 表示固定设备 |
| SIZE | 设备容量 |
| RO | 是否只读,1 表示只读,0 表示可读写 |
| TYPE | 设备类型,如 disk、part、loop、lvm、rom |
| MOUNTPOINT | 挂载点,如 /、/data |
lsblk -f 常见列说明
| 列名 | 含义说明 |
|---|---|
| FSTYPE | 文件系统类型,如 ext4、xfs、vfat |
| LABEL | 文件系统标签 |
| UUID | 文件系统唯一标识,常用于 /etc/fstab 自动挂载 |
4. fdisk 和 blkid
fdisk 用来查看磁盘分区表,通常需要管理员权限。
bash
fdisk -l
blkid 用来查看块设备 UUID、文件系统类型等信息,配置 /etc/fstab 时很常用。
bash
blkid
如果要做永久挂载,推荐优先使用 UUID,而不是直接写 /dev/sdb1。因为磁盘设备名在某些情况下可能变化,但 UUID 更稳定。
八、常用排查思路总结
磁盘问题不要一上来就删文件,先判断是哪类问题。
bash
# 1. 看整体空间
df -h
# 2. 看 inode
df -i
# 3. 找大目录
du -sh /* | sort -rhk1
# 4. 继续逐层深入
du -sh /var/* | sort -rhk1
du -sh /var/log/* | sort -rhk1
# 5. 如果 df 和 du 对不上,查已删除但仍被占用的文件
lsof | grep deleted
# 6. 看磁盘和分区结构
lsblk
lsblk -f
# 7. 看 UUID 和文件系统类型
blkid
最后记住一条排查顺序:
先看空间,再看 inode,最后查进程和挂载关系。