ZFSファイルシステムをあるプールから別のプールに移動する


18

ルートrpoolに加えて、追加のストレージプールを備えたSolaris 10 U8サーバーを拡張しています。

特定のZFSファイルシステムをrpoolからこの新しいストレージプールに移動する最も効果的/シンプル/信頼できる方法は何ですか?

オンラインで実行できますか、またはこれらのプールを使用して最初にサービスをシャットダウンする必要がありますか?

回答:


15

サービスの無効化に関する質問は、基本的にサービス自体に依存します。

  • 彼らはあなたが移動しようとしているファイルシステムに積極的に書き込んでいますか?
  • 保持したい永続データを保存していますか。

いずれにせよ、ZFSファイルシステムの送信には時間がかかる場合があります。ほとんどの場合、サービスをオンラインのままにしておくことで、サービスの利用不能を最小限に抑えることができます。

  • スナップショットを作成する
  • 以前に提案した方法でスナップショットを送信しますが、すべてのサービスをアクティブに保ちます
  • 他のプールでfsを受信したら、そのファイルシステムにバインドされている重要なサービスを無効にします。変更は後でとにかく破棄されるため、宛先プールの新しいファイルシステムが変更されていないことを確認してください。
  • 2番目のスナップショットを作成します(snapshot2など)
  • その2番目のスナップショットをインクリメンタルに送信すると、以前の転送よりもはるかに高速になります。例えば:

    zfs send -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs receive -F destinationpool / filesystem

  • 完了したら、ファイルシステムのマウントポイントを古いデータセットから新しいデータセットに移動します。例えば:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs set mountpoint = / application / directory destination / filesystem

これを実現するには、プロセスがバインドされていないことを確認する必要があり/application/filesystemます(たとえば、ファイルにアクセスするか、ファイルを現在のディレクトリとして保持する)。

  • サービスを再度有効にすると完了です。

10

これをオンラインで実行できるとは思いませんが、私のプロセスは必要なサービスをシャットダウンし、スナップショットを取り、zfs send / receiveを使用して移行を行うことです。何かのようなもの:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

編集:

「パイプビュー」コマンド(pv)をインストールすると、次のコマンドで転送のステータスを監視できます。

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem

10

jlliagreが言ったことの多くを繰り返していますが、子孫のファイルシステムを追加しています。(ほとんどの場合、私は忘れたときに参照があります。)

サブファイルシステムがある場合は-r、zfs snapshotコマンドでフラグを使用し、コマンドで-ror -Rフラグを使用しzfs sendます。大文字-Rはすべてのプロパティ、スナップショット、クローンを移動します

プール全体を移動するには:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

その後、移行期間を短縮するために変更を同期するには、アプリケーションをシャットダウンし、samba、nfsをシャットダウンします

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

移行用に複数の中間スナップショットを作成している場合は、zfs send -Iスイッチに関するマニュアルページを参照してください。


3
私の実験では、正確なコマンドは次のように見えました:zfs send -R Pool0 @ moving | zfsは-dF Pool1
TinkerTank

4

また、パイプラインで「mbuffer」などのツールを使用するといくつかの利点があります。両端がほとんど連続してデータをストリーミングできる場合、ZFSのsend / recvのパフォーマンスが劇的に向上し、mbuffer(または同様のもの)がないと、一方が連続してブロックするピンポン効果が得られます。


これは非常に古い質問(5年以上)であり、あなたの答えがその古い質問に何かを追加する可能性は低いことに注意してください。
キャサリンマッキネス

1
これは素晴らしいアドバイスであり、プールの移動にも使用します。
ダンビューラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.