ただ mv
それ。これは、Ubuntu コミュニティのドキュメントで推奨されている方法です。
そして、それが正しい方法である理由をさらに明確にするために、btrfs sysadmin ガイドからの引用を次に示します。
<ブロック引用>スナップショット
スナップショットは、btrfs の COW 機能を使用して、データ (およびメタデータ) を他のサブボリュームと共有する単純なサブボリュームです。 [書き込み可能な] スナップショットが作成されると、元のサブボリュームと新しいスナップショット サブボリュームの間でステータスに違いはありません。スナップショットにロールバックするには、変更された元のサブボリュームをアンマウントし、その場所にスナップショットをマウントします。この時点で、必要に応じて元のサブボリュームを削除できます。スナップショットはサブボリュームであるため、スナップショットのスナップショットも可能です。
注意すべき重要な点がいくつかあります。名前付け:
btrfs サブボリューム - 独立したデータ コンテナ inside
ファイルシステム。 ディレクトリとして表されます 既存の FS の。新しいサブボリュームを作成すると、それは空になり、ファイルシステム内の論理データ ブロックを使用する準備が整います。データを論理的に分離する必要がある場合に使用すると非常に便利です。異なるサブボリューム上の異なる VM または異なるクライアント。これにより、very fast
が許可されます すべての削除 サブボリューム削除コマンドだけで論理データ ブロックを削除します。
btrfs スナップショット - existing
のコピー スナップショットが完了した時点でのすべてのデータを含むサブボリューム。設定や変更を元に戻すための運用バックアップとして使用できます。サブボリュームのスナップショットを作成し、変更 (VM またはデータ) を作成し、すべてが問題ないかどうかをテストし、猶予期間後にスナップショットを削除します。重要な注意事項:スナップショットは読み取り専用 (-r
スイッチ) したがって、FS 変更のインクリメント ブロックとして使用でき、まったく別の BTRFS に転送される可能性があります!
現在 (2016 年 12 月 30 日) の BTRFS の制限:
サブボリューム間でのデータのコピーまたは移動。 mv dir1/dataset1 dir_subvolume1/
データを別のサブボリュームにコピーし、移動の場合は元のサブボリュームから削除するためにすべての実際の io を生成します。そして非常に 参照を作成し、BTRFS の COW 機能を使用するだけで大量のデータを効率的にコピー:
cp -a --reflink=always dir1/dataset1 dir_subvolume1/
必要に応じて:
rm -rf dir1/dataset1
読み取り専用のサブボリューム スナップショットは名前を変更できます (mv
で移動) ) 既存のディレクトリ レベルで、名前を変更したり、別のサブディレクトリ レベルに移動したりすることはできません。例えばmv /btrfs/subvol_snap1 /btrfs/.snaphots
あまり説明されていないエラーが生成されます:mv: cannot move 'subvol_snap1' to '.snapshots/subvol_snap1': Read-only file system
.このようなスナップショットを移動できるようにするには、既存の読み取り専用スナップショットの新しい読み取り専用スナップショットを新しい優先場所に作成してから、古いスナップショットを削除する必要があります:
btrfs sub snap -r /btrfs/subvol_snap1 /btrfs/.snaphots/subvol_snap1
btrfs sub del /btrfs/subvol_snap1
より簡単なライブのために:
btrfs sub list /btrfs
これにより、すべての新しい btrfs ファンの時間を大幅に節約できることを願っています :)
ルート ボリュームの名前をネストされたサブボリュームに変更する場合は、スナップショットを作成してから find $ROOT_VOL -xdev -delete
を実行する必要があります。 ルート ボリュームの以前の内容を削除します。逆の操作 (サブボリュームの名前をルート ボリュームに変更する) は不可能のようです。