web-dev-qa-db-ja.com

一時的なドライブを介してraidz1をraidz2に変換する

数か月前に新しいNASサーバーをセットアップしてRaidZとして設定しました。その決定を再考しているので、追加のドライブを取得してRaidZ2に移動したいと思います。全員が返信する前にこれはZFSでは不可能であることを指摘したいと思います。直接不可能であることを私は知っています。私は何日もドキュメントを検索してきましたが、これを手動で行う方法についての一連の指示がないようです。私は私がする必要があると信じています:

  1. プール全体を、使用済みスペースを保持するのに十分な大きさのドライブに移動します
  2. 既存のプールを破棄します。
  3. raidz2の追加ドライブを使用して新しいプールを構築します
  4. データをプールに戻します。

トリッキーなようには見えませんが、ZFSまたはFreeBSDに精通していないため、ステップ1を正常に達成できたとは言えません。ステップ4についても完全にはわかりませんが、再試行できますが、最初のステップを台無しにすると、楽しんで。私の読書は、rsyncがドライブを効果的に複製する方法であることを示唆していますが、コピーするものが正確にソースと同じであることを確認したい、システム/隠しファイル、シンボリックリンク、ジェイルなどを含みます。OSはミラーリングされたフラッシュドライブで実行されており、変更されることはなく、理想的には、次回の起動時に何も変更されたことに気付くことさえありません(たとえば、すべてのジェイルは次のように起動します)。前)。プール/ドライブのコピー/クローン作成もパーティション情報を移動しますか? FreeNASはこれらを再作成しますか、それとも手動で操作する必要がありますか?.

私はFreeNAS9.3を実行していて、単一のraidzプールに3x3TBHDDを持っています。最終的にraidz2で4x3TBになりたいです。現在のプールは1.3TBのスペースを使用しており、一時ストレージ用に2TBの外付けドライブがあります。データが失われた場合、ミッションクリティカルではありません。

更新

実際の質問:再作成されたzpoolにプッシュバックするのに十分な完全なコピーであることを確認しながら、プールを一時ドライブにコピーするにはどうすればよいですか。また、元のコピーの逆ではない場合、どうすればプッシュバックできますか。

3
JRoughan

純粋にFreeNASGUIを使用して、これにアプローチする方法は次のとおりです。

  • ルートデータセット(ボリュームxなど)からの再帰スナップショットの定期的なスナップショットタスクを設定します
  • 一時ドライブを使用して、単純な1ディスクストライプボリューム、たとえばボリュームyとして作成します。
  • そのドライブへのレプリケーションを確立します(xからy)。
  • レプリケーションが完了するまで待ちます。
  • Yの再帰スナップショットの定期スナップショットタスクを設定します。
  • Xを破棄して再作成します。
  • Yからxへのレプリケーションをセットアップします。
  • レプリケーションが完了するまで待ちます。
  • Yを破壊します。

免責事項:すべての刑務所がまだ機能することを確認するためにこれをテストしていないので、どこかから確認を得るか、刑務所を再作成する準備をしてください(または最初の複製が行われた後にyを注意深く調べてください)。これは、すべての履歴スナップショット情報を含む通常のデータセットに対してスムーズに機能しました。

1
morfizm

zfs send ...を使用すると、ファイルシステムにあるすべてのものを簡単に「保存」できます。隠しファイル、ファイル属性、拡張属性、zvol、スナップショットなどが含まれますが、これらに限定されません。

実際には、スペアドライブに「レプリカ」ファイルシステムを作成し、マウントし、さらには起動して、完全で、実行可能で、起動可能であることを確認してから、古いプールの破棄に進むことができます。

ただし、スペアドライブにUFSを作成し、その中のファイルにZFSを保存することをお勧めします。確認のためにマウントすることはできませんが、私見では少し安全だと言っています。

この作業中にスペアドライブが停止しないように指を交差させてください。

0
Fox