Linux

Linux 磁盘管理

·9 分钟阅读·3312 字

一、核心概念

1. 磁盘分区:将整块物理盘划分为多个逻辑分区,常见分区表:

  • MBR:传统,最大支持 2TB 磁盘、最多4个主分区,兼容老设备

  • GPT:新分区表,支持超大容量、更多分区,UEFI 启动标配

2. 文件系统:分区格式化后才能使用( ext4 、 xfs 、 tmpfs  等,CentOS7+ 默认  xfs )

3. 挂载:Linux 无盘符,必须把分区/磁盘挂载到目录才能访问

4. inode / block

  • block:数据块,真正存放文件内容

  • inode:索引节点,存放文件元信息(权限、属主、大小、时间、block指针),一个文件占用一个 inode

二、常用查看命令(必考)

  1.  df  查看分区使用率、挂载信息

bash

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

df -h

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

df -i

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

df -hT

字段说明:

  •  Filesystem :分区/设备名

  •  Size/Used/Avail :总大小、已用、剩余

  •  Use% :使用率

  •  Mounted on :挂载目录

  1.  du  查看文件/目录实际占用空间

bash

查看当前目录总大小

du -sh

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

du -lh

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

du -sh /*

df 与 du 区别(面试高频)

  •  df :读取文件系统元数据,反映整体分区占用,包含已删除但句柄未释放的文件

  •  du :遍历文件,统计现有文件真实大小

  • 现象: df  占用远大于  du  → 大概率存在  deleted  未释放文件

  1. 查看磁盘硬件、分区信息

bash

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

lsblk

传统查看分区、文件系统

fdisk -l

查看磁盘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

格式化为 ext4

mkfs.ext4 /dev/sda1

格式化为 xfs(CentOS7/8 默认)

mkfs.xfs /dev/sda2

查看分区文件系统类型

blkid

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

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

bash

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

mount /dev/sda1 /data

挂载 ISO 镜像

mount -o loop xxx.iso /mnt

  1. 卸载

bash

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

umount /data

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

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

重载挂载,不重启

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

查看 PV、VG、LV 信息

pvs

vgs

lvs

1. 创建 PV

pvcreate /dev/sdb1

2. 创建 VG

vgcreate vg01 /dev/sdb1

3. 创建 LV

lvcreate -L 20G -n lv01 vg01

4. 格式化 + 挂载

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 排查

  • ../../storage/Ceph 分布式存储 — 分布式存储