Linux磁盘分区与Swap和磁盘故障查询

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 的步骤如下:

  1. 创建指定大小的文件
  2. 将文件格式化为 swap
  3. 启用 swap
  4. 配置永久启用
  5. 按需关闭 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 -hdu -sh
Inode 不足 小文件太多,容量还没满,但无法创建新文件 df -ifind
进程占用已删除文件 文件删了,但空间没有释放 `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 设备名称,如 sdasda1vdb
MAJ:MIN 主设备号和次设备号
RM 是否为可移动设备,1 表示可移动,0 表示固定设备
SIZE 设备容量
RO 是否只读,1 表示只读,0 表示可读写
TYPE 设备类型,如 diskpartlooplvmrom
MOUNTPOINT 挂载点,如 //data
lsblk -f 常见列说明
列名 含义说明
FSTYPE 文件系统类型,如 ext4xfsvfat
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,最后查进程和挂载关系。

相关推荐
梦想三三1 小时前
LangChain Output Parser 实战:从字符串到结构化数据的完整指南
android·服务器·langchain·github·uv
netho02 小时前
影刀rpa证书题库使用教学
运维·服务器·rpa
llilian_162 小时前
便携式相位测量模块应用方案的核心优势
网络·功能测试·单片机
无足鸟ICT3 小时前
【RHCA+】$[]
linux·运维·服务器
运维技术小记3 小时前
国产化环境配置 VNC 远程桌面:麒麟 V10 实战
linux·运维·服务器
QH139292318803 小时前
# R&S ZNB43 ZNA43 ZNA67矢量网络分析仪
开发语言·网络·php
栋***t3 小时前
2026年不止防作弊,麦塔在线培训系统培训与考试安全的体系化设计
网络·安全
xiaoye-duck3 小时前
《Linux系统编程》Linux 系统多线程(八): C++ 高并发线程池全链路深度解析与从零手撕实现
linux·c++·线程池