在IBM Cloud服务器上使用额外硬盘扩容根文件系统
嘿,我来帮你搞定IBM Cloud上Debian系统的根文件系统扩容问题!先看了你的磁盘布局,有两块400G的空闲磁盘(xvdc、xvde),当前根分区是xvda2(99G),咱们可以通过两种方式来扩容,我给你详细说清楚步骤,你根据自己的情况选就行:
重要提醒:所有磁盘操作都有数据丢失风险,务必先备份服务器上的所有重要数据,比如用
rsync同步到远程存储或者IBM Cloud对象存储里!
方案一:将根文件系统迁移至LVM实现大幅扩容(推荐)
这个方案能把所有空闲磁盘整合进根文件系统,让根分区直接拥有近900G的空间(原99G+两块400G),适合需要整体扩容根目录的场景。
1. 准备新磁盘的LVM物理卷
首先给空闲磁盘创建LVM类型的分区:
# 处理xvdc磁盘 fdisk /dev/xvdc # 输入n → 选p(主分区)→ 分区号填1 → 起始扇区直接回车用默认 → 结束扇区回车用全部空间 # 输入t → 输入8e(把分区类型改成LVM) # 输入w保存分区表 # 同样处理xvde磁盘 fdisk /dev/xvde # 重复上面的操作,创建xvde1分区并设置为LVM类型
然后创建物理卷:
pvcreate /dev/xvdc1 /dev/xvde1
2. 创建卷组和逻辑卷
创建一个名为vg_root的卷组,把刚才的物理卷加进去:
vgcreate vg_root /dev/xvdc1 /dev/xvde1
接着创建逻辑卷,用卷组的全部空间:
lvcreate -l 100%FREE -n lv_root vg_root
3. 格式化逻辑卷并迁移根文件系统
先格式化逻辑卷为ext4格式:
mkfs.ext4 /dev/mapper/vg_root-lv_root
创建临时挂载点,挂载新逻辑卷,然后同步根目录的所有内容过去:
mkdir /mnt/new_root mount /dev/mapper/vg_root-lv_root /mnt/new_root rsync -axv / /mnt/new_root/
4. 修改启动配置,让系统从新根分区启动
先备份原有的fstab文件:
cp /mnt/new_root/etc/fstab /mnt/new_root/etc/fstab.bak
查看新逻辑卷的UUID:
blkid /dev/mapper/vg_root-lv_root
编辑/mnt/new_root/etc/fstab,把原来根分区(xvda2)的条目替换成新逻辑卷的UUID,比如把:
UUID=25a4ce50-0329-4893-af97-c022d6f06853 / ext4 defaults 0 1
替换成:
UUID=你的新逻辑卷UUID / ext4 defaults 0 1
然后挂载boot分区到新根目录,更新grub引导:
mount /dev/xvda1 /mnt/new_root/boot chroot /mnt/new_root update-grub grub-install /dev/xvda exit
5. 重启验证并扩容原有根分区
重启服务器:
reboot
重启后用df -h查看根目录大小,应该已经有800G左右了。如果确认一切正常,还可以把原来的xvda2加入卷组进一步扩容:
pvcreate /dev/xvda2 vgextend vg_root /dev/xvda2 lvextend -l 100%FREE /dev/mapper/vg_root-lv_root resize2fs /dev/mapper/vg_root-lv_root
方案二:挂载新磁盘到根目录子目录(简单快捷)
如果不想折腾根分区迁移,这个方案更简单——把空闲磁盘挂载到根目录下占用空间大的子目录(比如/home、/var),间接释放根分区的空间。
1. 格式化新磁盘
比如选择xvdc磁盘,格式化为ext4:
mkfs.ext4 /dev/xvdc
2. 备份子目录内容并挂载磁盘
以/home为例,先备份/home的内容:
rsync -axv /home/ /tmp/home_backup/
挂载新磁盘到/home:
mount /dev/xvdc /home
把备份的内容移回新挂载的/home:
rsync -axv /tmp/home_backup/ /home/
3. 设置开机自动挂载
查看xvdc的UUID:
blkid /dev/xvdc
编辑/etc/fstab,添加一行自动挂载的配置:
UUID=你的xvdcUUID /home ext4 defaults 0 2
同样的方法可以把xvde挂载到其他子目录,比如/var,进一步扩容。
备注:内容来源于stack exchange,提问作者Shahbaz Ahmad

