You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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 -f /dev/md2
    
    注意:如果e2fsck提示文件系统已挂载,说明Live环境自动挂载了你的分区,一定要先卸载(umount /dev/md2)再执行检查。
  • 缩小ext4文件系统,预留出100M空间:
    resize2fs /dev/md2 -100M
    
    执行前可以用df -h /dev/md2确认当前已用空间,确保缩小后的文件系统大小大于已用空间(比如已用40G,缩小到49.9G肯定没问题)。
  • 调整RAID卷大小,让/dev/md2缩减100M:
    mdadm --grow /dev/md2 --size=-100M
    
    执行后用cat /proc/mdstat查看同步进度,等进度到100%再继续下一步。

步骤2:调整磁盘上的md2分区大小

RAID-1是镜像结构,每个磁盘上的md2分区(比如/dev/sda2、/dev/sdb2)现在还有多余的空间,需要逐个调整:

  • 以/dev/sda为例,用fdisk调整分区:
    fdisk /dev/sda
    
    操作流程:
    1. 输入d删除分区2(注意别删错分区!)
    2. 输入n新建分区,类型选主分区(p),分区号选2,起始扇区要和原来的分区2完全一致(fdisk会默认显示原来的起始扇区,直接回车就行),结束扇区输入-100M(或者手动计算扇区数,确保比原来的结束位置少100M对应的扇区)
    3. 输入t修改分区类型,选分区2,输入fd设置为Linux raid autodetect
    4. 输入w保存分区表,此时系统会重新读取分区信息
  • 用同样的方法调整另一个磁盘(比如/dev/sdb)的分区2,确保两个磁盘的分区2大小一致。
  • 把调整后的分区重新加入RAID阵列:
    mdadm /dev/md2 --add /dev/sda2
    mdadm /dev/md2 --add /dev/sdb2
    
    再次用cat /proc/mdstat等待同步完成。

步骤3:扩容/dev/md1(/boot)的RAID卷与文件系统

现在每个磁盘上,md1对应的分区(/dev/sda1、/dev/sdb1)后面已经有了100M的空闲空间,接下来扩容:

  • 先处理第一个磁盘的md1分区:
    1. 先将该分区从RAID中移除:
      mdadm /dev/md1 --fail /dev/sda1
      mdadm /dev/md1 --remove /dev/sda1
      
    2. 用fdisk调整/dev/sda1:
      fdisk /dev/sda
      
      • 输入d删除分区1
      • 输入n新建分区1,起始扇区和原来一致,结束扇区直接用默认的最大位置(这样就会包含原来的分区1+刚腾出的100M空间)
      • 输入t修改分区类型为fd(Linux raid autodetect)
      • 输入w保存
    3. 将调整后的分区重新加入RAID:
      mdadm /dev/md1 --add /dev/sda1
      
      等待同步完成。
  • 用同样的方法处理另一个磁盘的md1分区(/dev/sdb1):先移除、调整分区、重新加入RAID,等待同步。
  • 让RAID卷使用最大可用空间:
    mdadm --grow /dev/md1 --size=max
    
  • 最后扩容ext4文件系统:
    resize2fs /dev/md1
    
    这个命令会自动把文件系统扩展到RAID卷的最大大小。

验证与收尾

重启系统进入原来的环境,执行以下操作确认一切正常:

  • 用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 08:07:58