サブボリュームとスナップショットの作成

Btrfsファイル・システムの最上位レベルは、ディレクトリやファイルを含む名前付きのBツリー構造で構成されたサブボリュームです。これには、さらに名前付きのBツリーであるbtrfsサブボリュームがあり、それぞれにディレクトリやファイルなどが含まれています。

サブボリュームを作成するには、サブボリュームを作成するbtrfsファイル・システム内の場所にディレクトリを変更し、次のコマンドを実行します。

sudo btrfs subvolume create subvolume_name

スナップショットは、スナップショットの取得時に親のサブボリュームの内容を記録するサブボリュームの一種です。btrfsファイル・システムのスナップショットを取得し、それに書込みを行わないと、そのスナップショットは元のファイル・システムの状態を記録し、バックアップを作成できる安定したイメージになります。スナップショットを書込み可能にすると、それを元のファイル・システムの代替バージョンとして使用できます。btrfsファイル・システムのコピーオンライト機能は、スナップショットが迅速に作成され、最初に消費するディスク領域が非常に少ないことを意味します。

ノート:

サブボリュームのスナップショットの取得は、再帰的プロセスではありません。サブボリュームのスナップショットを作成すると、サブボリュームに含まれるサブボリュームまたはそのスナップショットは、すべてスナップショット内の同じ名前の空のディレクトリにマップされます。

次の表では、一般的なスナップショット操作を実行するために使用するコマンドの一部について説明します。

コマンド 説明

btrfs subvolume snapshot pathname pathname / snapshot_path

pathnameによって指定された親サブボリュームまたはスナップショットのスナップショットsnapshot_pathを作成します。次に例を示します。

btrfs subvolume snapshot /mybtrfs /mybtrfs/snapshot1

btrfs subvolume list pathname

pathnameで指定されたサブボリュームまたはスナップショットのサブボリューム、またはスナップショットをリストします。次に例を示します。

btrfs subvolume list /mybtrfs

ノート:

このコマンドを使用して、サブボリュームまたはスナップショットのIDを特定できます。

btrfs subvolume set-default ID pathname

デフォルトでは、親サブボリュームではなく、IDで指定されたスナップショットまたはサブボリュームをマウントします。次に例を示します。

btrfs subvolume set-default 4 /mybtrfs

btrfs subvolume get-default pathname

指定されたサブボリュームでマウントされているデフォルトのサブボリュームのIDを表示します。次に例を示します。

btrfs subvolume get-default /mybtrfs

Btrfsサブボリュームは、ディスク・デバイスのようにマウントできます。親のサブボリュームのかわりにスナップショットをマウントすると、ファイル・システムの状態をスナップショット取得時の状態に効率的にロールバックできます。set-defaultオプションを使用してデフォルトのサブボリュームを変更していなければ、デフォルトで、オペレーティング・システムによって0のIDを持つ親のBtrfsボリュームがマウントされます。新しいデフォルトのサブボリュームを設定すると、今後はそのサブボリュームがマウントされます。デフォルト設定を上書きするには、次の表で説明するmountオプションのいずれかを指定します。

マウント・オプション 説明

subvolid= snapshot-ID

デフォルトのサブボリュームのかわりに、そのサブボリュームIDで指定されたサブボリュームまたはスナップショットをマウントします。

subvol= pathname / snapshot_path

デフォルトのサブボリュームのかわりに、そのパス名で指定されたサブボリュームまたはスナップショットをマウントします。

ノート:

サブボリュームまたはスナップショットは、Btrfsファイル・システムのrootに存在する必要があります。

スナップショットをマウントしてファイル・システムをロールバックした場合、スナップショットのスナップショットを取得してその状態を記録できます。

サブボリュームまたはスナップショットが不要になったときには、次のようにして削除できます。

sudo btrfs subvolume delete subvolume_path

サブボリュームを削除すると、Bツリー階層でその下位にあるすべてのサブボリュームも削除されます。そのため、0のIDを持つbtrfsファイル・システムの最上位のサブボリュームは、削除できません。

snapperコマンドを使用したBtrfsスナップショットの作成および管理の詳細は、Snapperユーティリティを使用したファイル・システム・スナップショットの自動化を参照してください。

注意:

スナップショットでは、ある時点のファイル・システムの状態を記録します。そのため、スナップショットが作成された時点で操作中になっていた可能性のあるトランザクション・プロセスについては、ファイル・システムの整合性を保証することはできません。snapperコマンドのようなユーティリティは、dnfコマンドの使用時など、特定の操作の前後のスナップショットを取得するために役立ちますが、そのようなスナップショットはシステムで同時に実行している可能性のある別のプロセスを認識しません。I/Oやメモリーを大量に消費するプロセス(データベースやミドルウェア・アプリケーションなど)がある場合は、そうしたプロセスを停止するか、すべてのアクティビティが完了していることを確認してからスナップショットを取得することで、スナップショット内のデータ整合性やファイル・システムが破損する問題の可能性を減らせます。