如何调整Linux RAID-1卷大小:扩容/dev/md1(/boot)并缩减/dev/md2以腾出空间
如何调整Linux RAID-1卷大小:扩容/dev/md1(/boot)并缩减/dev/md2以腾出空间
当然可以实现这个需求!不过这套操作涉及RAID阵列和文件系统的调整,属于高风险操作,务必先做好全量离线备份——哪怕是看起来不重要的系统文件,出错了都可能让系统直接挂掉。下面是一步步的操作流程,我会尽量讲清楚每个环节的注意点:
前置准备
首先你需要一张Linux Live CD/USB镜像(比如Ubuntu、Debian的桌面版镜像),因为根分区/dev/md2挂载在/下,无法在运行的系统里直接调整。启动Live环境后,确保系统能识别到你的RAID设备(可以用mdadm --examine --scan检查,能列出/dev/md1到/dev/md4就没问题)。
步骤1:缩减/dev/md2(根分区)的文件系统与RAID卷
因为要从/dev/md2腾出100M给/dev/md1,必须先缩小/dev/md2的文件系统,再调整RAID卷和底层分区:
- 先检查文件系统完整性,避免调整时出问题:
注意:如果e2fsck提示文件系统已挂载,说明Live环境自动挂载了你的分区,一定要先卸载(e2fsck -f /dev/md2umount /dev/md2)再执行检查。 - 缩小ext4文件系统,预留出100M空间:
执行前可以用resize2fs /dev/md2 -100Mdf -h /dev/md2确认当前已用空间,确保缩小后的文件系统大小大于已用空间(比如已用40G,缩小到49.9G肯定没问题)。 - 调整RAID卷大小,让
/dev/md2缩减100M:
执行后用mdadm --grow /dev/md2 --size=-100Mcat /proc/mdstat查看同步进度,等进度到100%再继续下一步。
步骤2:调整磁盘上的md2分区大小
RAID-1是镜像结构,每个磁盘上的md2分区(比如/dev/sda2、/dev/sdb2)现在还有多余的空间,需要逐个调整:
- 以
/dev/sda为例,用fdisk调整分区:
操作流程:fdisk /dev/sda- 输入
d删除分区2(注意别删错分区!) - 输入
n新建分区,类型选主分区(p),分区号选2,起始扇区要和原来的分区2完全一致(fdisk会默认显示原来的起始扇区,直接回车就行),结束扇区输入-100M(或者手动计算扇区数,确保比原来的结束位置少100M对应的扇区) - 输入
t修改分区类型,选分区2,输入fd设置为Linux raid autodetect - 输入
w保存分区表,此时系统会重新读取分区信息
- 输入
- 用同样的方法调整另一个磁盘(比如
/dev/sdb)的分区2,确保两个磁盘的分区2大小一致。 - 把调整后的分区重新加入RAID阵列:
再次用mdadm /dev/md2 --add /dev/sda2 mdadm /dev/md2 --add /dev/sdb2cat /proc/mdstat等待同步完成。
步骤3:扩容/dev/md1(/boot)的RAID卷与文件系统
现在每个磁盘上,md1对应的分区(/dev/sda1、/dev/sdb1)后面已经有了100M的空闲空间,接下来扩容:
- 先处理第一个磁盘的
md1分区:- 先将该分区从RAID中移除:
mdadm /dev/md1 --fail /dev/sda1 mdadm /dev/md1 --remove /dev/sda1 - 用fdisk调整
/dev/sda1:fdisk /dev/sda- 输入
d删除分区1 - 输入
n新建分区1,起始扇区和原来一致,结束扇区直接用默认的最大位置(这样就会包含原来的分区1+刚腾出的100M空间) - 输入
t修改分区类型为fd(Linux raid autodetect) - 输入
w保存
- 输入
- 将调整后的分区重新加入RAID:
等待同步完成。mdadm /dev/md1 --add /dev/sda1
- 先将该分区从RAID中移除:
- 用同样的方法处理另一个磁盘的
md1分区(/dev/sdb1):先移除、调整分区、重新加入RAID,等待同步。 - 让RAID卷使用最大可用空间:
mdadm --grow /dev/md1 --size=max - 最后扩容ext4文件系统:
这个命令会自动把文件系统扩展到RAID卷的最大大小。resize2fs /dev/md1
验证与收尾
重启系统进入原来的环境,执行以下操作确认一切正常:
- 用
df -h查看/boot和/的空间是否符合预期 - 用
mdadm --detail /dev/md1和mdadm --detail /dev/md2检查RAID阵列状态,确保两个成员都处于active sync状态 - 再次检查文件系统完整性:
e2fsck -f /dev/md1 e2fsck -f /dev/md2
重要注意事项
- 备份!备份!备份!重要的事情说三遍,哪怕是用Live环境把所有分区克隆到外部硬盘都好,别心存侥幸。
- 操作过程中绝对不能断电,RAID同步中断很容易导致阵列损坏。
- 如果对扇区计算没把握,可以用
parted的resizepart命令,它支持直接调整分区大小且更直观,但要注意单位(默认是字节,用unit MB切换单位更方便)。 - 确保Live环境的内核支持你的RAID控制器,否则识别不了阵列就白搭,最好用和原系统同系列的发行版镜像。
备注:内容来源于stack exchange,提问作者botnico
相关产品推荐
相关产品推荐

