扩展 Linux MD RAID 10 阵列以使用更大的磁盘

Kef*_*fka 14 linux raid storage software-raid

据我所知,这是可能的,但我无法在任何地方找到关于如何进行的直接答案,而且我不想冒丢失数据的风险自己尝试使用它,所以我在这里问。

我有一个家庭服务器,有五个运行 CentOS 的磁盘。一个是装有操作系统的 SSD。剩下的四块硬盘是4TB硬盘,配置成RAID10,带mdraid。使用的文件系统是 xfs。

我正在考虑尝试用 8TB 的磁盘替换 4TB 的磁盘。究竟需要做些什么才能在不重新配置新的 RAID 和丢失数据的情况下进行这种替换?

Details output:

[root@fluttershy ~]# mdadm -D /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Mon Apr 18 12:46:24 2016
     Raid Level : raid10
     Array Size : 7813771264 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 3906885632 (3725.90 GiB 4000.65 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Mon Jun 13 11:04:41 2016
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : fluttershy:data  (local to host fluttershy)
           UUID : aa8f857a:g8bd0344:06d2f6d3:bac01a46
         Events : 13440

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync set-A   /dev/sda1
       1       8       17        1      active sync set-B   /dev/sdb1
       2       8       33        2      active sync set-A   /dev/sdc1
       3       8       49        3      active sync set-B   /dev/sdd1
Run Code Online (Sandbox Code Playgroud)

bwD*_*aco 17

为每个磁盘完成以下步骤;/dev/sda1根据需要更换为其他磁盘。您必须对一个磁盘完成所有这些步骤,然后才能继续处理下一个磁盘。

  • 将磁盘标记为失败,以便 MD 停止使用它: mdadm --manage /dev/md127 --fail /dev/sda1
  • 从阵列中移除磁盘: mdadm --manage /dev/md127 --remove /dev/sda1
  • 物理更换磁盘。
  • 使用 type 对新磁盘进行0xDA分区,其中一个分区跨越整个磁盘。
  • 将新磁盘添加到阵列: mdadm --manage /dev/md127 --add /dev/sda1

添加替换磁盘后,MD 将重建阵列。继续下一个磁盘之前,请确保重建已完成。您可以通过运行来检查阵列的状态cat /proc/mdstat

一旦所有的硬盘都被替换和重建阵列,展开阵列,以填补所有磁盘的最大容量mdadm --grow /dev/md127 --size=max。您可以从那里调整文件系统的大小以填充扩展的 RAID;在您的情况下,请使用该xfs_growfs命令。

Linux RAID wiki上提供了有关如何扩展 MD 阵列的更多信息。

与任何其他磁盘操作任务一样,您应该在开始之前进行备份。