Linux

Linux 磁盘管理

·8 分钟阅读·3082 字

梳理Linux 磁盘管理的核心概念、关键流程与实践要点

📋 目录

Linux 磁盘管理

1. 人性化显示容量、使用率(日常最常用)

df -h

2. 查看 inode 使用率(排查 inode 耗尽必用)

df -i

3. 只展示本地磁盘,排除临时文件系统

df -hT

字段说明:

  •  Filesystem :分区/设备名
  •  Size/Used/Avail :总大小、已用、剩余
  •  Use% :使用率
  •  Mounted on :挂载目录
  1.  du  查看文件/目录实际占用空间 bash

4. 查看当前目录总大小

du -sh

5. 递归查看目录下各文件/子目录大小

du -lh

6. 只统计一级目录(不递归)

du -sh /*

df 与 du 区别(面试高频)

  •  df :读取文件系统元数据,反映整体分区占用,包含已删除但句柄未释放的文件
  •  du :遍历文件,统计现有文件真实大小
  • 现象: df  占用远大于  du  → 大概率存在  deleted  未释放文件
  1. 查看磁盘硬件、分区信息 bash

7. 查看整块磁盘、分区列表(重点)

lsblk

8. 传统查看分区、文件系统

fdisk -l

9. 查看磁盘IO性能、读写状态

iostat -xd 1

设备命名规则:

  •  /dev/sda :第一块SATA/SCSI磁盘
  •  /dev/sda1 :第一块盘的第一个分区
  •  /dev/vda :云服务器虚拟化磁盘(ECS 常见) 三、分区操作(fdisk / parted)
  1. fdisk(MBR 分区,最常用) 交互式分区工具,仅支持 MBR 分区表 bash fdisk /dev/sda 交互常用指令:
  •  m :帮助
  •  n :新建分区
  •  p :查看分区列表
  •  d :删除分区
  •  w :保存分区并退出(必须执行,否则不生效)
  •  q :不保存退出 分区后需执行  partprobe  刷新分区表,避免重启生效。
  1. 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

五、挂载 & 卸载(核心操作)

  1. 临时挂载(重启失效) bash

13. 把 /dev/sda1 挂载到 /data 目录

mount /dev/sda1 /data

14. 挂载 ISO 镜像

mount -o loop xxx.iso /mnt

  1. 卸载 bash

15. 卸载挂载点(推荐写目录)

umount /data

16. 设备忙无法卸载:先查找占用进程

lsof | grep /data

fuser -m /data

  1. 永久挂载(/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  校验。

  1. 通过 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 逻辑卷(云服务器/生产常用,扩容必考)
  1. LVM 三层结构
  • PV 物理卷:将普通磁盘/分区转为 LVM 物理卷
  • VG 卷组:多个 PV 合并成一个大卷组
  • LV 逻辑卷:从 VG 中划分空间,最终挂载使用
  1. 常用命令 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

  1. 在线扩容(面试最高频,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 排查

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro