web-dev-qa-db-ja.com

FREENAS:なぜRAIDZ1ボリューム内でmvコマンドがインスタントにならないのですか?

現在、RAIDZ1ボリューム内のファイル構造を「再編成」しています。あるデータセットから別のデータセットにディレクトリを移動する。どちらも同じボリュームに含まれています。

SSHがマシンに組み込まれ、古き良き方法で実行されました。

mv *宛先

これは瞬時ではありませんか?私はそれが3つのドライブに分散していることを理解していますが、同時に、ファイル自体を実際に移動する必要はありません。これらのファイルのポインターを微調整し、基本的には瞬時であると期待していました。それは間違いなく違います。移動するデータは約500Gあり、約30分実行されています。 o.O

なぜそれはほぼ瞬時ではないのですか?

仕様:CPU:Intel G3220
MB:ギガバイトGA-B85-HD3
MEM:キングストンDDR3-1600 8GB
DISK:RAIDZ1ボリュームの3x2TB WDグリーン

14
Ryan

あなたは間違ったレベルから物事を考えています、すべてです。

単一のZFSデータセットの範囲内でファイルを移動すると、期待どおりの動作になります。プールの範囲内であるがデータセット間でファイルを移動する場合、それは実際の移動です。はい、技術的にはデータはポイントAからポイントBに行き、両方のポイントは同じ大皿にあります-しかしZFSの観点から、それは家を動かしました。

ZFSデータセットは個別のファイルシステムです。実際のファイルシステム。ブロックサイズや圧縮設定などが異なる場合があります。同じプール上であっても、2つのZFSファイルシステム間でファイルを移動するのは実際の移動です。ポインターを更新するだけではなく、ビットが読み取られ、再度書き込まれます。

機能的には、同じハードディスクの2つのパーティションから技術的に取得された2つのext4ファイルシステム間でファイルを移動することとほぼ同じです。2つのファイルシステムは、基盤となるハードウェアを共有しているにもかかわらず、論理的に異なるため、「ポインター」の変更は発生しないため、同じ物理ドライブ上のある場所から別の場所にデータをコピーするだけの場合でも、ファイルを物理的に移動します。

22
Nex7