Linux 磁盘管理
1. 人性化显示容量、使用率(日常最常用)
df -h
2. 查看 inode 使用率(排查 inode 耗尽必用)
df -i
3. 只展示本地磁盘,排除临时文件系统
df -hT
字段说明:
- Filesystem :分区/设备名
- Size/Used/Avail :总大小、已用、剩余
- Use% :使用率
- Mounted on :挂载目录
- du 查看文件/目录实际占用空间 bash
4. 查看当前目录总大小
du -sh
5. 递归查看目录下各文件/子目录大小
du -lh
6. 只统计一级目录(不递归)
du -sh /*
df 与 du 区别(面试高频)
- df :读取文件系统元数据,反映整体分区占用,包含已删除但句柄未释放的文件
- du :遍历文件,统计现有文件真实大小
- 现象: df 占用远大于 du → 大概率存在 deleted 未释放文件
- 查看磁盘硬件、分区信息 bash
7. 查看整块磁盘、分区列表(重点)
lsblk
8. 传统查看分区、文件系统
fdisk -l
9. 查看磁盘IO性能、读写状态
iostat -xd 1
设备命名规则:
- /dev/sda :第一块SATA/SCSI磁盘
- /dev/sda1 :第一块盘的第一个分区
- /dev/vda :云服务器虚拟化磁盘(ECS 常见) 三、分区操作(fdisk / parted)
- fdisk(MBR 分区,最常用) 交互式分区工具,仅支持 MBR 分区表 bash fdisk /dev/sda 交互常用指令:
- m :帮助
- n :新建分区
- p :查看分区列表
- d :删除分区
- w :保存分区并退出(必须执行,否则不生效)
- q :不保存退出 分区后需执行 partprobe 刷新分区表,避免重启生效。
- parted(GPT 大磁盘分区) 大于2TB 磁盘必须用 parted + GPT bash parted /dev/sda 四、格式化 & 文件系统 分区完成后,必须格式化才能使用 bash
10. 格式化为 ext4
mkfs.ext4 /dev/sda1
11. 格式化为 xfs(CentOS7/8 默认)
mkfs.xfs /dev/sda2
12. 查看分区文件系统类型
blkid
五、挂载 & 卸载(核心操作)
- 临时挂载(重启失效) bash
13. 把 /dev/sda1 挂载到 /data 目录
mount /dev/sda1 /data
14. 挂载 ISO 镜像
mount -o loop xxx.iso /mnt
- 卸载 bash
15. 卸载挂载点(推荐写目录)
umount /data
16. 设备忙无法卸载:先查找占用进程
lsof | grep /data
fuser -m /data
- 永久挂载(/etc/fstab,面试必考) 写入 /etc/fstab ,开机自动挂载 格式 plaintext 设备名 挂载目录 文件系统 挂载参数 自检优先级 示例 plaintext /dev/sda1 /data xfs defaults 0 0 字段解释: 1. 设备名: /dev/sda1 或 UUID (推荐UUID,盘符变化不影响) 2. 挂载目录:必须提前存在 3. 文件系统: xfs / ext4 4. 挂载参数:
- defaults :默认参数(rw,suid,dev,exec,auto,nouser,async)
- ro :只读挂载
- noexec :禁止执行二进制文件(安全加固) 5. 第5列:dump 备份开关(0=不备份) 6. 第6列:开机磁盘自检优先级(0=不自检) 生效命令(修改 fstab 后必执行) bash
17. 重载挂载,不重启
mount -a
风险提醒: fstab 写错会导致服务器开机失败,改完务必先 mount -a 校验。
- 通过 UUID 挂载(生产推荐) 1. 查看分区UUID bash blkid 2. 写入 fstab plaintext UUID=“xxxx-xxxx” /data xfs defaults 0 0 六、两大经典磁盘故障(面试/排错重中之重) 故障1:df 显示磁盘 100% 满,但 du 查不到大文件 根因 文件被 rm 删除,但进程仍持有文件句柄,空间不释放。 排查步骤 1. df -h 确认分区满 2. 查找已删除未释放文件 bash lsof | grep deleted 3. 找到对应 PID/进程 4. 处理方案:
- 临时应急(不重启): > 文件名 清空文件
- 根治:重启对应服务/进程,释放句柄 故障2:磁盘空间充足,创建文件提示 No space left on device 根因 inode 耗尽。分区 block 还有空间,但所有 inode 已被占用(大量小文件/碎片文件导致)。 排查&解决 1. 查看 inode 使用率 bash df -i 2. 定位海量小文件目录 bash find /data -type f | wc -l 3. 清理无用小文件、临时文件、日志碎片。 七、LVM 逻辑卷(云服务器/生产常用,扩容必考)
- LVM 三层结构
- PV 物理卷:将普通磁盘/分区转为 LVM 物理卷
- VG 卷组:多个 PV 合并成一个大卷组
- LV 逻辑卷:从 VG 中划分空间,最终挂载使用
- 常用命令 bash
18. 查看 PV、VG、LV 信息
pvs
vgs
lvs
19. 创建 PV
pvcreate /dev/sdb1
20. 创建 VG
vgcreate vg01 /dev/sdb1
21. 创建 LV
lvcreate -L 20G -n lv01 vg01
22. 格式化 + 挂载
mkfs.xfs /dev/vg01/lv01
mount /dev/vg01/lv01 /data
- 在线扩容(面试最高频,xfs/ext4 区别) 场景:给 /data 所在 LV 扩容 10G 1. 扩容逻辑卷空间 bash lvextend -L +10G /dev/vg01/lv01 (扩容卷组用vgextend) 2. 刷新文件系统(关键,不同文件系统命令不同)
- XFS(CentOS7+ 默认,只支持扩容,不支持缩容)
xfs_growfs /data
- EXT4
resize2fs /dev/vg01/lv01
八、磁盘IO 排查(业务卡顿常用)
# 查看磁盘整体IO、繁忙度 %util
iostat -xd 1
# 定位高IO进程
iotop
- %util 接近 100%:磁盘设备跑满,IO 瓶颈
- await 过高:磁盘读写延迟大
九、面试必背简答题(直接背诵)
1. df 和 du 区别? df 统计文件系统整体占用,包含已删除未释放文件;du 遍历现有文件统计真实大小。 2. 磁盘空间充足但无法新建文件,原因? inode 耗尽,大量小文件占用所有索引节点,执行 df -i 查看,清理小文件解决。 3. rm 删除文件后空间不释放原因? 文件被进程占用句柄,用 lsof | grep deleted 定位,重启进程释放。 4. fstab 作用?修改后如何生效?写错有什么风险? 用于开机自动挂载分区;执行 mount -a 生效;配置错误会导致服务器无法开机。 5. XFS 和 EXT4 扩容命令区别? XFS 使用 xfs_growfs 挂载点 ;EXT4 使用 resize2fs 设备名 ;XFS 不支持在线缩容。 6. MBR 和 GPT 分区表区别? MBR 最大2TB、最多4个主分区;GPT 支持大容量磁盘、分区数量更多,安全性更高。 十、高频命令速记(手写/实操)
df -h # 查看磁盘使用率
df -i # 查看inode
du -sh # 目录大小
lsblk # 磁盘分区概览
mount / umount # 挂载/卸载
blkid # 查看UUID、文件系统
lsof | grep deleted # 查删而未释文件
iostat / iotop # IO排查
pvs/vgs/lvs # LVM查看
lvextend # LVM扩容
xfs_growfs # xfs刷新扩容
关联文档 -服务器 IO 过高排查流程:IO 排查
- Ceph 分布式存储:分布式存储
