1TBのデータを保持しながら、2TBディスク1個と1TBディスク2個で2TB RAID-1アレイを作成できますか?

1TBのデータを保持しながら、2TBディスク1個と1TBディスク2個で2TB RAID-1アレイを作成できますか?

現在、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
    
  • linear0必要に応じて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アレイを最初にビルドする必要があり、ファイルに最初にリストされている場合に発生します。

おすすめ記事