web-dev-qa-db-ja.com

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

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

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

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

18

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

  • 移動する予定のファイルシステムに積極的に書き込みを行っていますか?
  • 保持したい永続データを格納していますか。

いずれの場合でも、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にバインドされていないことを確認する必要があります(たとえば、ファイルにアクセスしたり、現在のディレクトリとして持っている)。

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

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

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

編集:

「pipe view」コマンド(pv)をインストールすると、次の方法で転送のステータスを監視できます。

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

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

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

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

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スイッチのマニュアルページをお読みください。

10
Dan Buhler

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

4
Adam Thompson