BTRFSサブボリュームの名前を変更する方法は?


24

サブボリュームのセットを含むBTRFSファイルシステムがあります。ここまでは順調ですね。サブボリュームの名前を変更する必要があります。残念ながら、btrfsプログラムではサブボリュームの名前を変更できません。Googleで検索すると、いくつかの結果が得られました。1つは私にできると言い、もう1つは新しい名前に移動して古いサブボリュームを削除mvできると言いsnapshotました。パーティションをクラッシュさせ、バックアップからパーティションをリロードしなければならない前に(かなり大きい)、私の質問は次のとおりです。

  • 現在、サブボリュームの名前を変更する最良の方法は何ですか?
  • それだけで大丈夫mvですか、それとも内部構造を無効にしますか?
  • 新しいスナップショットを作成して古いサブボリュームを削除する方法ですか、これにはいくつかの欠点がありますか?

私はすべてがまだ実験的であることを知っていますが、私の目的のためには非常にうまく機能しています(これまでのところ、毎日の増分バックアップがあります)。


1
btrfsがうまく機能していると聞いてうれしいです。これまでのところ私にとってはうまく機能しています。問題はありません。
Monica

回答:


16

mvそれだけ。これがUbuntuコミュニティのドキュメントで推奨されている方法です。

そして、それが正しい方法である理由をさらに明確にするために、btrfs sysadminガイドからの引用を以下に示します。

スナップショット

スナップショットは、btrfsのCOW機能を使用して、他のサブボリュームとデータ(およびメタデータ)を共有する単なるサブボリュームです。[書き込み可能]スナップショットが作成されると、元のサブボリュームと新しいスナップショットサブボリュームのステータスに違いはありません。スナップショットにロールバックするには、変更された元のサブボリュームをアンマウントし、スナップショットをその場所にマウントします。この時点で、必要に応じて元のサブボリュームを削除できます。スナップショットはサブボリュームであるため、スナップショットのスナップショットも可能です。


8

重要なことはほとんどありません。命名:

btrfsサブボリューム-独立したデータコンテナーinsideファイルシステム。既存のFSのディレクトリとして表されます。新しいサブボリュームを作成すると、空になり、ファイルシステム内で論理データブロックを使用する準備が整います。異なるVMや異なるサブボリューム上の異なるクライアントなど、データを論理的に分離する必要がある場合に使用すると非常に便利です。これによりvery fast、サブボリューム削除コマンドだけですべての論理データブロックを削除できます。

btrfsスナップショット- existingスナップショットが完了した瞬間のすべてのデータを含むサブボリュームのコピー。設定または変更を元に戻すための操作バックアップとして使用できます。たとえば、サブボリュームスナップショットの作成、変更(VMまたはデータ)の作成、すべてが正常かどうかのテスト、猶予期間後のスナップショットの削除。重要な点:スナップショットは読み取り専用(-rスイッチ)であるため、FS変更の増分ブロックとして使用でき、場合によっては絶対に別のBTRFSに転送できます!

現在(2016-12-30)BTRFSの制限:

サブボリューム間でデータをコピーまたは移動します。たとえば、mv dir1/dataset1 dir_subvolume1/データを別のサブボリュームにコピーし、移動する場合は元のサブボリュームから削除するために、すべての実入出力を生成します。そして、参照を作成して、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ファンの時間が大幅に節約されることを願っています:)


4

ルートボリュームの名前をネストされたサブボリュームに変更する場合は、スナップショットを作成してfind $ROOT_VOL -xdev -deleteから、ルートボリュームの以前の内容を削除する必要があります。逆の操作(サブボリュームの名前をルートボリュームに変更)は不可能と思われます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.