磁盘空间管理是Linux系统运维中绕不开的话题。无论是服务器根分区被日志撑满,还是虚拟机磁盘需要在线扩容,掌握磁盘空间调整的方法都能让你在关键时刻从容应对。本文将从基础的磁盘查看命令讲起,逐步深入到分区调整、LVM动态扩容等高级技巧,最后汇总常见错误与注意事项,帮助你建立一套完整的磁盘管理知识体系。

一、磁盘使用情况查看与问题定位
调整磁盘空间之前,第一步永远是搞清楚现状。最常用的命令是df -h,它以人类可读的方式展示每个挂载点的总容量、已用空间和剩余空间。执行后重点关注Use%这一列,当使用率超过90%时就需要警惕了。
# 查看磁盘使用情况 df -h # 查看指定目录占用空间 du -sh /var/log # 找出当前目录下占用最大的前10个文件或目录 du -ah . | sort -rh | head -n 10
当发现空间不足时,不要急着扩容,先排查是什么在占用空间。常见的元凶包括:日志文件失控增长(比如/var/log下的journal日志)、Docker镜像和容器层堆积、以及被删除但句柄未释放的文件。特别是最后一种情况,用df看不到大文件却显示空间被占满,可以用lsof | grep deleted找出进程占用的已删除文件,重启对应进程或清空句柄即可释放空间。
另外,lsblk命令用于查看块设备树状结构,能清晰看到磁盘、分区和挂载点的对应关系;fdisk -l则列出所有磁盘的分区表详情。这两个命令在规划分区调整时非常实用。
二、基础操作:分区调整与文件系统扩容
如果是普通分区(非LVM),调整分区需要谨慎操作。传统MBR分区表用fdisk处理,超过2TB的GPT磁盘则用parted或gdisk。下面以虚拟机磁盘扩容后扩展根分区为例说明。
假设已经把/dev/sda磁盘从100GB扩展到200GB,登录系统后执行fdisk /dev/sda,删除原有分区再以相同起始扇区重建更大的分区,保存后内核可能不会立即识别新的分区大小,此时需要执行partprobe或重启系统刷新分区表。这是一个高频踩坑点,很多人刷新失败就以为操作错了。
# 刷新分区表 partprobe /dev/sda # 对ext4文件系统执行扩容(在线进行,无需卸载) resize2fs /dev/sda1 # xfs文件系统则使用以下命令(挂载状态下执行) xfs_growfs /
这里有一个重要的区别:ext4文件系统用resize2fs操作的是设备,而xfs用xfs_growfs操作的是挂载点,且xfs只支持扩大不支持缩小。CentOS 7之后默认使用xfs,很多人习惯性地对xfs执行resize2fs,结果直接报错。扩容完成后,再用df -h确认容量是否生效。
三、高级技巧:LVM动态扩容与逻辑卷管理
LVM(逻辑卷管理)是Linux磁盘管理最强大的工具,它把物理磁盘抽象成可灵活分配的存储池。核心概念分三层:物理卷(PV)、卷组(VG)和逻辑卷(LV)。物理磁盘或分区初始化为PV后加入VG,再从VG中划分出LV供文件系统使用。这种架构的好处是空间可以随时在线调整,不必受限于物理分区的边界。
# 1. 将新磁盘创建为物理卷 pvcreate /dev/sdb # 2. 将物理卷加入已有卷组 vgextend centos /dev/sdb # 3. 扩展逻辑卷(例如增加50G) lvextend -L +50G /dev/centos/root # 4. 刷新文件系统 xfs_growfs /
一条更简洁的写法是lvextend -L +50G -r /dev/centos/root,参数-r会在扩展逻辑卷后自动调用对应的文件系统扩容命令,省去了手动执行resize2fs或xfs_growfs的步骤,推荐日常使用。
缩减空间方面要格外小心:ext4可以先执行resize2fs缩小文件系统再执行lvreduce缩小逻辑卷,但顺序不能颠倒,否则会导致数据损坏;xfs则完全不支持缩小,只能通过备份、重建的方式实现。生产环境中如果没有十足的把握,建议只做扩容不做缩容。
LVM还支持快照功能,通过lvcreate -s创建快照卷,在进行高风险调整前给数据留一条后路,这是生产运维中非常实用的保障手段。
四、常见错误与注意事项总结
磁盘操作风险高,一旦出错往往是数据级别的损失。以下这些坑在实践中出现频率最高,务必牢记:
- 扩容后容量没变化:只扩展了逻辑卷却忘了刷新文件系统,
df -h看到的仍是旧容量,务必执行resize2fs或xfs_growfs。 - 分区表未刷新:修改分区后内核未感知,执行
partprobe或用partx -u /dev/sda更新,必要时重启。 - 对挂载中的分区执行危险操作:fdisk删分区虽然允许在线操作,但重建时起始扇号必须与原分区完全一致,用
fdisk -lu提前记录。 - xfs误用resize2fs:命令与文件系统类型不匹配会直接报错,先确认类型再动手。
- 误判设备名导致覆盖数据:操作前用
lsblk反复确认目标设备,避免把数据盘当成空盘初始化。 - 缩容顺序错误:ext4缩容必须先缩文件系统再缩逻辑卷,顺序颠倒等于销毁数据。
最后强调操作纪律:任何涉及分区的调整,先备份重要数据;关键业务服务器操作前创建LVM快照;操作命令逐条执行并核对输出结果,不要批量粘贴执行。养成良好的操作习惯,比掌握任何一个具体命令都更重要。只要遵循查看现状、确认方案、小心执行、验证结果这四步流程,Linux磁盘空间调整完全可以做到安全可控。