あるzfsファイルシステムから同じプール内の別のzfsファイルシステムにファイルを移動する方法は?


17

同じzfsプールに2つのファイルシステムが/mnt/fs_aあり/mnt/fs_bます。からに約1 TBのデータを移動fs_afs_bます。しかし、私が:

mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/

驚いたことに、ファイルをブロックごとにコピーし始めます。2GBファイルを移動するのにかかった時間を考えると、この操作を完了するには大量のスラッシングが数日かかるようです。

これを行うには、はるかにスマートで高速な方法が必要です。

回答:


22

(これはコメントとして始まりましたが、長すぎたので今は答えです)

残念ながら、答えは「いいえ」です。これを行うためのより高速な、またはよりスマートな方法はありません。

ZFSファイルシステムは(同じプール上にあるとしても)別のファイルシステムです。どちらmvも他のツールは、ちょうど上にあったファイルがなるようにブロックポインタを移動したり、何でもできるfs_aになりましたfs_b

mvちなみに、同じディスクまたはRAIDアレイ上の複数のフォーマットされたパーティションまたはLVMボリュームも個別のファイルシステムであり、それらのコピーと削除にも委ねられます)

この問題は長年にわたって何度も取り上げられています(あなたがやりたいことをするためのツールを作成するという話もあります)。 -のスナップショットがあるfs_a場合、ブロックは両方のファイルシステムに同時に存在します。同じことがハードリンクを持つファイルにも当てはまります。

私は何度も(たとえば、データセット間でファイルを移動したときや、サブディレクトリをfsに変換する必要があるとき)自分自身に遭遇しましたが、不便に耐えることを学びました。主要なPITAになる可能性があります。

場合はfs_b空であるか、まだ存在していない、あなたが移動したい全体の内容をfs_afs_bあなたが使用することができます(だけでなく、いくつかの、あるいはほとんどのファイル&ディレクトリ)zfs rename名前を変更するfs_aにはfs_b。ただし、これはあなたの状況に関係ないと思われます。

https://github.com/zfsonlinux/zfs/issues/2991でZFSOnLinuxに関してこれに関する未解決の問題があります

私は検索していませんが、アップストリームのOpenZFS およびSun / Oracle ZFSでさえ、おそらく同様のバグレポート/機能リクエストがあると予想しています。

ところで、https: //serverfault.com/questions/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volumeも参照してください


3
徹底的な対応をありがとう。名前の変更の提案に感謝しますが、あなたが疑うように、私はbにしたくないそれについてさらに多くのデータを持っています。少なくとも今は先に進み、バッファディスク経由でファイルをコピーして、少なくともスラッシングを排除します。
フレッドハミルトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.