web-dev-qa-db-ja.com

RAID-Z2を縮退状態で作成できますか?

あるサーバーから別のサーバーに移動していて、いくつかのディスクを持ち帰りたいと思っています。残念ながら、古いサーバーのすべてのデータをバックアップするのに十分なストレージがありません。

古いサーバー4ディスク_RAID5_
2台のディスクを古いサーバーから次のものに持ってきます:
新しいサーバー6 DISK RAID-Z2 (4+2)

古いサーバーは1つのディスクを失う可能性がありますが、2つを失うことはありません。

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

または、これを回避する他の方法はありますか?

7
ToPa

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


詳細については https://www.mail-archive.com/[email protected]/msg22993.html および https://www.mail-archive.com/を参照してください詳細については、zfs-discuss @ opensolaris.org/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またはnetcatの間でsendまたはrecvを使用してください)。

    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つの偽のディスクを使用する場合):

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

8
user121391

最初の答えにコミットできないので、新しい答えを出します。

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

残りは元の答えとまったく同じです。

0
Skaronator