RAID-Z2を劣化した状態で作成できますか?

RAID-Z2を劣化した状態で作成できますか?

あるサーバーから別のサーバーに移行する予定で、いくつかのディスクをインポートしたいと思います。残念ながら、既存のサーバー上のすべてのデータをバックアップするのに十分なストレージがありません。

古いサーバー4ディスクRAID5
古いサーバーで、2つのディスクを
新しいサーバー6ディスクに移動します。RAID-Z2 (4+2)

古いサーバーでは、1つのディスクが失われる可能性がありますが、2つは失われません。

RAID-Z2 (4+2)ディスクがなくても新しいサーバーを設定できますか?すべてのデータを移動して最後のディスクを追加しますか?

それともこの問題を解決する他の方法はありますか?

答え1

はい。偽のファイルバックアップディスクを冗長ディスクとして使用することは可能です。もちろん、サポートされておらず、バックアップが必要なので、まず古いプールの小さなファイルでシミュレートして、すべてが期待どおりに機能していることを確認してください。


詳細については、次を参照してください。https://www.mail-archive.com/[Eメール保護]/msg22993.htmlそしてhttps://www.mail-archive.com/[Eメール保護]/msg23023.htmlもっと学ぶ。他のシステム(FreeNASなど)がある場合は、オンラインで「create raidz2 Degraded」を検索することもできます。

重要な手順(Tomas ÖgrenとDaniel Rockのメーリングリストアーカイブスレッドから取得)は次のとおりです。

  1. 物理ディスクサイズ(この例では1000 GBと仮定)でスパースファイルを作成します。

    mkfile -n 1000g /tmp/fakedisk1
    
  2. 物理ディスクとスパースファイルを使用してzpoolを作成します。

    zpool create -f newpool raidz2 disk1 disk2 disk3 disk4 disk5 /tmp/fakedisk1
    
  3. 誰もファイルに書き込もうとしないように、スパースファイルをすぐにオフラインにします。

    zpool offline newpool /tmp/fakedisk1
    
  4. これでプールはダウングレードされますが、機能します。ファイルを新しいプールにコピーします(直接接続されたプールの代わりにネットワークを使用する場合、または間を使用ssh)。netcatsendrecv

    zfs snapshot -r oldpool@now
    zfs send -R oldpool@now | zfs recv -Fdu newpool
    
  5. 古いファイルを削除し、スパースファイルを現在利用可能なディスクに置き換えます。

    zpool replace newpool /tmp/fakedisk1 disk6
    

繰り返しますが、冗長性のレベルに応じて(Z2で2つのダミーディスクを使用する場合、またはZ3で3つのダミーディスクを使用する場合):

覚えておいてください:データ移行プロセス中は、シートベルトなしで実行されます。移行中にディスクに障害が発生すると、データが失われます。

答え2

最初の回答を確定できないので、新しい回答を作成します。

Linuxを使用する場合、mkfile最良のオプションはtruncate最初にfdiskを使用してHDDの(正確な)サイズをバイト単位で取得することです。

root@OMV-NAS:~# fdisk  -l /dev/sda
Disk /dev/sda: 7,3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes

この場合、8001563222016バイトなので8,001...TBです。これで、次のように偽のファイルを作成できます。

truncate -s 8001563222016 /tmp/FD1.img

残りは元の答えと同じです。

関連情報