在CentOS服务器的生命周期中,磁盘空间的管理是一项至关重要的任务,随着系统更新、应用程序安装和日志文件的增长,根分区(/)的空间常常会变得紧张,当系统提示“No space left on device”时,服务可能会中断,合理地调整根分区大小是系统管理员必备的技能,本文将详细介绍如何在CentOS中安全、有效地调整根分区大小,主要聚焦于最常见且灵活的LVM(逻辑卷管理)环境。
准备工作:万无一失的前提
调整根分区是一项高风险操作,任何微小的失误都可能导致数据丢失或系统无法启动,周全的准备工作是成功的基石。
备份所有重要数据
这是整个流程中最重要的一步,没有之一,无论您对自己的操作多么有信心,都必须先进行完整备份,可以使用 rsync
、tar
或其他备份工具将重要数据、配置文件和整个系统备份到外部存储设备或网络存储上。
识别当前磁盘布局
在动手之前,必须清晰地了解您服务器的磁盘分区结构,以下命令可以帮助您获取关键信息:
lsblk
:以树状图形式显示块设备、分区和挂载点,非常直观。fdisk -l
:列出磁盘的分区表信息。pvs
,vgs
,lvs
:如果使用LVM,这三个命令分别用于显示物理卷、卷组和逻辑卷的详细信息。
通过这些命令,您需要确认根分区(/)和您打算“借用”空间的分区(通常是 /home)的逻辑卷名称,/dev/mapper/centos-root
和 /dev/mapper/centos-home
。
准备救援环境
根分区在系统运行时是无法被卸载的,因此大部分调整操作需要在救援模式下进行,准备一张CentOS的安装光盘或USB启动盘,并确保服务器可以从该介质启动,进入救援模式后,系统会提示您挂载原有的系统文件到 /mnt/sysimage
目录。
核心场景:从/home分区回收空间
最常见的扩容场景是 /home
分区有大量闲置空间,而根分区(/)空间告急,我们将以从 /home
分区中划出50GB空间给根分区为例,详细说明操作步骤,此过程假设您使用的是LVM,并且文件系统为ext4(XFS文件系统无法缩小,这一点将在FAQ中详细说明)。
操作步骤详解(LVM环境)
卸载/home分区
需要卸载目标分区以确保数据一致性。
umount /home
如果卸载失败,提示设备正忙,可以使用以下命令查看并终止占用该分区的进程:
fuser -km /home # 或者 lsof | grep /home
检查并缩减文件系统
在缩小逻辑卷之前,必须先缩小其上的文件系统。
# 检查文件系统完整性 e2fsck -f /dev/mapper/centos-home # 将文件系统缩小到指定大小(假设缩减50GB) resize2fs /dev/mapper/centos-home 50G
这里的 50G
是您希望 /home
分区调整后的最终大小,请根据实际情况计算。
缩减逻辑卷
文件系统缩小后,现在可以安全地缩小逻辑卷了。
lvreduce -L 50G /dev/mapper/centos-home
系统会要求您确认,输入 y
继续,卷组中就多出了可用空间。
扩展根分区逻辑卷
将刚刚释放的空间全部或部分分配给根分区。
lvextend -L +50G /dev/mapper/centos-root
+50G
表示在原有基础上增加50GB空间,如果您想用完所有剩余空间,可以使用 -l +100%FREE
参数。
扩展根文件系统
逻辑卷容量已增加,但文件系统本身还不知道,需要通知它更新大小。
resize2fs /dev/mapper/centos-root
对于XFS文件系统,应使用 xfs_growfs /dev/mapper/centos-root
,并且可以在线执行,无需卸载。
重新挂载并验证
重新挂载 /home
分区,并使用 df -h
命令查看调整结果。
mount /home df -h
您应该能看到根分区的容量增加了50GB,而 /home
分区的容量相应减少了。
文件系统 | 大小 | 已用 | 可用 | 使用% | 挂载点 |
---|---|---|---|---|---|
调整前 | |||||
/dev/mapper/centos-root | 50G | 45G | 0G | 96% | |
/dev/mapper/centos-home | 5T | 100G | 3T | 7% | /home |
调整后 | |||||
/dev/mapper/centos-root | 100G | 45G | 50G | 48% | |
/dev/mapper/centos-home | 45T | 100G | 25T | 8% | /home |
非LVM环境操作简述
对于未使用LVM的传统分区环境,操作更为复杂和危险,基本流程是:进入救援模式,使用 parted
或 fdisk
删除根分区和 /home
分区,然后重新创建它们,确保根分区的起始扇区与原来完全一致,但结束扇区向后延伸,最后用 resize2fs
调整文件系统大小,此方法风险极高,稍有不慎就会导致分区表损坏,强烈建议优先使用LVM。
相关问答FAQs
问题1:为什么我的XFS文件系统的/home分区无法缩小?
解答: 这是由XFS文件系统的设计决定的,XFS是一种高性能的日志文件系统,但它不支持在线或离线缩小,您只能使用 xfs_growfs
命令来扩大它,如果您的 /home
分区是XFS格式,您不能直接通过 lvreduce
和 resize2fs
的方式来回收空间,变通的方法是:① 备份 /home
分区内的所有数据;② 使用 lvremove
删除 /home
逻辑卷;③ 使用 lvcreate
创建一个更小的新的 /home
逻辑卷;④ 格化并挂载新逻辑卷;⑤ 将备份的数据恢复回去,这个过程虽然繁琐,但相对安全。
问题2:调整分区大小后,系统无法启动怎么办?
解答: 首先不要惊慌,这通常是因为引导加载程序(GRUB)记录的分区信息与磁盘实际分区表不匹配造成的,请再次使用CentOS安装盘进入救援模式,在救援模式的shell中,执行以下步骤:
- 将您的系统根目录挂载到
/mnt/sysimage
:chroot /mnt/sysimage
- 重新安装GRUB引导程序到主引导记录(MBR)或EFI分区,假设您的系统盘是
/dev/sda
,则执行:grub2-install /dev/sda
- 重新生成GRUB配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
- 输入
exit
退出chroot环境,然后重启系统。
通常情况下,这可以修复因分区表变更导致的引导问题,如果问题依旧,请检查/etc/fstab
文件中的UUID或设备名是否正确。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复