カーネル 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