現在、RAID-1 mdadmアレイに1TBのデータがあります。アレイは、1TBディスクと2TBディスクの1TBパーティションで構成されています。これで、2TB RAID-1アレイの作成に使用したい2番目の1TBディスクを購入しました。
/dev/urandom
この配列のデータはdm-cryptを使用して暗号化されているため、データを入れる前に各ディスクをデータで上書きしたいと思います。
問題は、この2TB RAID-1アレイを作成し、現在1TB RAID-1アレイに1TBのデータを保持しながら、各ディスクを任意のデータで安全に上書きできるかどうかです。
要約すると、1 TBディスク2つと2TBディスク1つがあります。ミラーの片側は2つの1TBディスクで構成され、ミラーのもう一方は2TBディスク全体で構成される2TB RAID-1アレイを作成したいと思います。また、これらのディスクのみを使用して1TBのデータを保持しながら、各ディスクを任意のデータで上書きできるようにしたいです。
ベストアンサー1
適用範囲に関しては各ランダムなデータを含むディスクは重複します。新しい暗号化されたRAIDを構築しているので、再同期はとにかくすべてを上書きします。
上書き方法は/dev/urandom
非常に遅く、テラバイトを消去しようとする人は時間がかかりすぎて途中でキャンセルすることがよくあります。任意のキーでデバイスを暗号化してから削除する方が/dev/zero
はるかshred -n 1
に高速です。したがって、ディスクにランダムなデータが必要な場合は、代わりにこの方法を使用することをお勧めします。
次に、RAIDに対して次のことを行います。 (loop2
この例では2TBディスク)
新しい1TBディスクパーティションをRAID-1に追加します。同期が完了するまで待ちます。。これにより、1TBのデータが3つのディスクにまたがる可能性があります。
$ mdadm /dev/md99 --grow --raid-devices=3 --add /dev/loop1p1 mdadm: added /dev/loop1p1 raid_disks for /dev/md99 set to 3 $ cat /proc/mdstat md99 : active raid1 loop1p1[2] loop2p1[1] loop0p1[0] 100224 blocks super 1.2 [3/3] [UUU]
RAID-1アレイから2TBディスクを取り外します。 1TBはまだ予約されています。重複2つの1TBディスクにあります。
$ mdadm /dev/md99 --fail /dev/loop2p1 mdadm: set /dev/loop2p1 faulty in /dev/md99 $ mdadm /dev/md99 --remove /dev/loop2p1 mdadm: hot removed /dev/loop2p1 from /dev/md99 $ mdadm /dev/md99 --grow --raid-devices=2 raid_disks for /dev/md99 set to 2 $ cat /proc/mdstat md99 : active raid1 loop1p1[2] loop0p1[0] 100224 blocks super 1.2 [2/2] [UU]
2TBディスクの消去
$ shred -n 1 /dev/loop2
ディスクを2TBに再パーティションします。他の起動デバイスがないと、暗号化されたデバイスから起動できないため、起動パーティションが必要です。
$ parted /dev/loop2
このパーティションを使用して、2番目のデバイス用
missing
の新しいRAID-1アレイを作成します。 2番目のデバイスは後で追加される予定です。また、現在のサイズは限られており、現在2x1TBのディスクサイズがわからないため、後で増やす予定です。 (確かな場合はここで他のサイズを自由に使用しても構いませんが、大きすぎると後で2x1TBを追加できません。)$ mdadm /dev/md42 --create --level=1 --raid-devices=2 --size=1000G /dev/loop2p1 missing mdadm: largest drive (/dev/loop2p1) exceeds size (102400K) by more than 1% Continue creating array? yes mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md42 started. $ cat /proc/mdstat md42 : active raid1 loop2p1[0] 102400 blocks super 1.2 [2/1] [U_] md99 : active raid1 loop1p1[2] loop0p1[0] 100224 blocks super 1.2 [2/2] [UU]
暗号化、mkfs、データのコピー(必要なパスワードと設定、LVM、ファイルシステム、コピー方法を使用して...)
$ cryptsetup luksFormat /dev/md42 $ cryptsetup luksOpen /dev/md42 luksmd42 $ mkfs.ext4 /dev/mapper/luksmd42 $ mount /dev/md99 /mnt/old $ mount /dev/md42 /mnt/new $ rsync -aAHSX /mnt/old/. /mnt/neW/. $ umount /mnt/old /mnt/new
データは、古いRAID 1(暗号化されていない)と新しい非冗長RAID 1(暗号化されていない)で重複します。ただし、この時点で新しいRAID 1に2x1TBディスクを追加するには、冗長性を破る必要があります。
$ mdadm --stop /dev/md99 mdadm: stopped /dev/md99
時間を無駄にしたい場合は、この時点で2x1TBディスクを消去することもできます。 RAID-1 は 2 TB ディスクのランダムデータを 1 TB ディスクに同期するため、これは不要です。
$ shred -n 1 /dev/loop0 & $ shred -n 1 /dev/loop1 & $ wait # for shred $ parted /dev/loop0 $ parted /dev/loop1
linear
0
必要に応じてmdadmを使用するか、2x1TBを組み合わせてください。$ mdadm /dev/md43 --create --level=0 --raid-devices=2 /dev/loop0p1 /dev/loop1p1 $ cat /proc/mdstat md43 : active raid0 loop1p1[1] loop0p1[0] 199680 blocks super 1.2 512k chunks md42 : active raid1 loop2p1[0] 102400 blocks super 1.2 [2/1] [U_]
RAID 1に追加し、同時にRAID 1を拡張します。
$ mdadm /dev/md42 --add /dev/md43 mdadm: added /dev/md43 $ mdadm /dev/md42 --grow --size=max mdadm: component size of /dev/md42 has been set to 199616K $ cat /proc/mdstat md43 : active raid0 loop1p1[1] loop0p1[0] 199680 blocks super 1.2 512k chunks md42 : active raid1 md43[2] loop2p1[0] 199616 blocks super 1.2 [2/2] [UU]
また、cryptsetupとファイルシステムを拡張します。
$ cryptsetup resize luksmd42 $ resize2fs /dev/mapper/luksmd42 resize2fs 1.42.7 (21-Jan-2013) Resizing the filesystem on /dev/mapper/luksmd42 to 197568 (1k) blocks. The filesystem on /dev/mapper/luksmd42 is now 197568 blocks long.
ああ、終わりました。
編集する:
/etc/mdadm.conf
以下は、この設定を使用する例です(mdadm --detail --scan
開始点を取得するため)。
ARRAY /dev/md43 metadata=1.2 UUID=b9f590d7:9984dad4:cb75131b:63bca165
ARRAY /dev/md42 metadata=1.2 UUID=3a70188d:9ecacda7:ac715e16:9402fc55
特に:
- ラインなし
DEVICE
(必ずラインが必要な場合はデバイスが含まれていることをmd*
確認してください) - 行の順序が
ARRAY
重要です。 RAID0アレイを最初にビルドする必要があり、ファイルに最初にリストされている場合に発生します。