web-dev-qa-db-ja.com

プールに空き領域の1/3を超える場合は、3つのドライブを備えたZFSRAIDZを4つのディスクにインプレース移行する

想定したZoLでRAID-Zプールを作成すると、後で追加のディスクを簡単にドロップインできました。その間、私はこれがまだ不可能であることを学びました。

しかし...私は最初のプールの作成で同様の問題を抱えていました。空きSATAポートは4つだけですが、2TBディスクが3つある古いRAID5と4TBディスクが3つある新しいRAIDZ1です。解決策は、a)RAID5を劣化させ、b)「仮想サードドライブ」としてスパースファイルを使用して初期RAIDZを構築することでした。これは、プールの作成後すぐにオフラインになりました。

  1. スパースファイルを作成します:dd if=/dev/zero of=/zfs1 bs=1 count=1 seek=4100G
  2. Raidzプールを作成します:zpool create zfspool raidz /dev/disk1 /dev/disk2 /zfs1
  3. スパースファイルをすぐに削除します:zpool offline zfspool /zfs1
  4. データをzfspoolに移行します。古いRAID5ディスクをアンインストールし、3番目の新しい4TBディスクを追加します
  5. プール内のスパースファイルを実際の3番目のドライブに置き換えて再シルバー化します。
    zpool replace zfspool /zfs1 /dev/disk3

これは本当にうまくいきました! ZFSはRAIDzへの単一ディスクの追加を直接サポートしていませんが、ディスクをより大きなディスクに1つずつ置き換えることをサポートしていることを学びました。

これが私の計画です。誰かがそれに欠陥を見ますか?

  • 4番目の4TBディスクを購入し、既存のプールから1つのディスクをオフラインにします
  • これら2つの空きディスクに2x2TBのパーティションを作成します。
  • 次の4つの「ディスク」からRAIDzを構築します:3x2TB = 6TBネットストレージ。
  • パフォーマンス上の理由:2番目のパーティションの1つをすぐにオフラインにします
  • 最大移行6TBのデータを新しいプールに入れて古いプールを破壊する
  • オフラインの「2TBディスク」を古いプールの実際の4TBディスクと交換します。銀色になるのを待ちます。
  • 2つのアクティブなパーティションがあるドライブの場合:2番目の2TBパーティションをオフラインにして、古いプールの2番目の4TBディスクと交換します。再銀化を待ちます。
  • 1つずつ:残りの2TBパーティションをオフラインにし、4TBでパーティションを拡張し、ディスクをプールに再度追加します。再銀化を待ちます。
  • 最後の2TBディスク/パーティションをすすぎ、繰り返します

これは機能しますか?プロセス中に冗長性が失われるため、データ損失に対する脆弱性が高くなることはわかっていますが、最も重要なデータのバックアップを取ります。 6TBのペイロード全体には不十分です。

そして、ZFSは最後のステップの後、プールを自動的に(3 + 1)x4TB = 12TBに拡張しますか?

3
bentolor

醜いですが、これはうまくいくでしょう。

そうでない場合を除いて;)。

  • パーティションを指定するとき、およびディスクを交換するときは、十分に注意してください
  • 事前にam VMで試してください。ハードウェアのような仮想ディスクをセットアップし、1〜2回ドライランします。
  • 開始する前にスクラブを行い、ディスクからのS.M.A.R.T情報を確認してください。すでに薄片状のディスクでこれを試すことはありません。

重要:試してみる前に、別のメディアまたはマシンでテスト済みのバックアップを作成することをお勧めします。

はい、最後の2TBのディスクまたはパーティションが4TBのものに置き換えられた場合(プールに対してautoexpand = onがある場合)、ZFSはプールを拡張します。

zpool get autoexpand $pool

zpool set autoexpand=on $pool

補足:2TBを超えるディスクではRAID-Zを使用しないでください。障害が発生したディスクを交換するときに、再シルバーリングでエラーが発生する可能性は非常に高くなります。 RAID-Z2を検討してください。

4
scheelec

これはひどいですね。それはあなたのデータなので、あなたはあなたが望むように行うことができます...しかし、誰も解決策を支持しません。

これは本当にあなたがすべき状況です最初からやり直すだけです

データを一時的にどこかに移動して再構築します。

1
ewwhite