mdadm raid10に新しいデバイスを追加 - 新しいデバイスのセクタ数が少なくなります。

mdadm raid10に新しいデバイスを追加 - 新しいデバイスのセクタ数が少なくなります。

カーネル 4.4.6-1 を使用して Debian でテストしている間、mdadm v3.4 を使用して作成された raid10 を拡張するために、2 つの新しいドライブを追加しようとしています。問題は、私の新しいドライブがアレイを作成するために使用された最小のドライブよりも数セクタ少ないことです。アレイを破壊せずにパーティションを縮小する方法はありますか?

root@debian-nas:~# mdadm /dev/md0 --add /dev/sdb1 /dev/sdd1
mdadm: /dev/sdb1 not large enough to join array

これが今配列の様子です。

root@debian-nas:~# mdadm --detail --verbose /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Mar 26 21:13:23 2016
     Raid Level : raid10
     Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
  Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sun Mar 27 16:25:22 2016
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : debian-nas:0  (local to host debian-nas)
           UUID : 86266375:bf94ae93:d449a171:aa746159
         Events : 13726

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync set-A   /dev/sda1
       1       8       33        1      active sync set-B   /dev/sdc1
       2       8       65        2      active sync set-A   /dev/sde1
       3       8       81        3      active sync set-B   /dev/sdf1

/dev/sdb1と/dev/sdd1を/dev/md0に追加しようとしています。

root@debian-nas:~# blockdev --report /dev/sda1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512   512       2048   3000591916544   /dev/sda1

root@debian-nas:~# blockdev --report /dev/sdb1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000590934016   /dev/sdb1

root@debian-nas:~# blockdev --report /dev/sdc1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000591450112   /dev/sdc1

root@debian-nas:~# blockdev --report /dev/sdd1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000590934016   /dev/sdd1

root@debian-nas:~# blockdev --report /dev/sde1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000591450112   /dev/sde1

root@debian-nas:~# blockdev --report /dev/sdf1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512   512       2048   3000591916544   /dev/sdf1

データをアレイから移動して破壊し、新しいドライブを含めることができるように、より小さなパーティションで作成する方が良いでしょうか。

答え1

パーティションテーブルが必要ない場合/dev/sd[bd](デフォルトでは両方のドライブから起動する必要がない場合)、ドライブ全体をアレイに追加すると十分なセクタが提供されます。

mdadm /dev/md0 --add /dev/sdb /dev/sdd

あるいは、新しいパーティションにダウングレードされた新しいアレイを作成し、データをそのアレイに移行してから、ドライブを古いアレイから新しいアレイに徐々に移動することもできます。

答え2

だから私はアレイを再構築せずにデータを失うことなく/dev/sdb1使用する方法を見つけました。/dev/sdd1

これは最新のカーネル(3.5以降)とmdadmバージョン3.3以降でのみ機能します。

アレイをマウント解除します。

umount /dev/md0

ファイルシステムチェックを実行します。次のステップの前に完了する必要があります。

e2fsck -f /dev/md0

ファイルシステムのサイズを5TBに調整します。

resize2fs /dev/md0 5000G

ファイルシステムで別のチェックを実行します。これまで混乱を引き起こさないようにしてください。

e2fsck -f /dev/md0

アレイを5TB少し以上縮小します。ここで、サイズパラメータは、アレイ内の各ディスクで使用されるスペースの量です。これはおそらく(size of fs / number of mirrors) + some small extra。私の場合は、ファイルシステムを5TBに設定し、RAID 10に4つのディスクがあり、2つのミラーリングストライプが作成されました。これはファイルシステムよりも大きな合計サイズを提供する必要があり、そうしないとデータが失われます。

mdadm --verbose --grow --size=2685403136 /dev/md0 # 2.5TB + 1MB

ファイルシステムを再確認してください。

e2fsck -f /dev/md0

この時点で、より小さいドライブをRAID 10に追加できますが、まずデータが良好であることを確認してください。ファイルシステムの検査だけに頼らないでください。実際にデータが良好であることを確認してください。

これで新しいドライブを追加できます!

mdadm --add /dev/md0 /dev/sdf1 /dev/sdg1

そしてそれを使用するために配列を拡張します。

mdadm --verbose --grow --raid-devices=6 /dev/md0

この時点でaを実行すると、cat /proc/mdstat次のようになります。

Personalities : [raid6] [raid5] [raid4] [raid0] [raid10]
md0 : active raid10 sdd1[5] sdb1[4] sdf1[3] sde1[2] sdc1[1] sda1[0]
      5370806272 blocks super 1.2 512K chunks 2 near-copies [6/6] [UUUUUU]
      [>....................]  reshape =  2.8% (151477952/5370806272) finish=458.7min speed=189604K/sec
      bitmap: 11/31 pages [44KB], 131072KB chunk

unused devices: <none>

再構成が完了したら、別のファイルシステムチェックを実行します。 (私は編集証があり、すべてのステップを確認します。)

e2fsck -f /dev/md0

ドライブがサポートする最大サイズにアレイのサイズを変更します。

mdadm --verbose --grow --size=max /dev/md0

次に、ファイルシステムのサイズを変更します。

resize2fs /dev/md0

そしてもう一度確認してください。

e2fsck -f /dev/md0

最後に、新しく拡張されたファイルシステムをマウントできます。

mount /dev/md0 /mnt/raid10

関連情報