GNU/Linux >> Linux の 問題 >  >> Cent OS

Btrfs スナップショットを作成してマウントする方法

Btrfs は、Linux 用のオープンソースの汎用ファイル システムです。この名前は、B ツリーを使用して内部ファイル システム構造を格納することに由来します。ファイルシステムには、「Butter F S」や「B-tree F S」など、さまざまな名前が使用されています。 Btrfs の開発は 2007 年に Oracle で開始され、現在、多くの企業 (Red Hat、Fujitsu、Intel、SUSE など) が開発作業に貢献しています。 Btrfs はメインラインの Linux カーネルに含まれています。

Btrfs スナップショット

Btrfs サブボリュームは、スナップショットとクローンを作成して、追加の B ツリーを作成できます。スナップショットは、ある時点で作成されたサブボリュームのコピーとして開始されます。スナップショットを書き込み可能にして、元のサブボリュームの進化したクローンとして使用できます。または、スナップショットをサブボリュームの安定したイメージとして使用して、バックアップや他のシステムへの移行を行うことができます。スナップショットはすばやく作成でき、最初はほとんどディスク容量を消費しません。

サブボリュームの書き込み可能/読み取り可能スナップショットを作成するには、btrfs subvolume snapshot コマンドを使用します。次の例では、SV1 サブボリュームのスナップショットを作成します:

# btrfs subvolume snapshot /btrfs/SV1 /btrfs/SV1/SV1-snap
Create a snapshot of '/btrfs/SV1' in '/btrfs/SV1/SV1-snap'

btrfs サブボリューム スナップショットを使用 -r 読み取り専用スナップショットを作成するオプション:

# btrfs subvolume snapshot -r /btrfs/SV1 /btrfs/SV1-rosnap
Create a readonly snapshot of '/btrfs/SV1' in '/btrfs/SV1-rosnap'

ls コマンドを使用すると、スナップショットは通常のディレクトリとして表示されます。スナップショットは、btrfs subvolume list コマンドの出力にも表示されます。

# btrfs subvolume list /btrfs
ID 257 gen 10 top level 5 path SV1
ID 258 gen 9 top level 257 path SV1/SV1-snap
ID 259 gen 10 top level 5 path SV1-rosnap

ファイルのスナップショットを撮る

cp –reflink」を使用できます 」 コマンドを使用して、ファイルのスナップショットを取得します。このオプションを使用すると、ファイル システムは既存の i ノードを指す新しいリンクを作成しませんが、代わりに元のコピーと同じディスク ブロックを共有する新しい i ノードを作成します。新しいファイルは元のファイルのコピーのように見えますが、データ ブロックは複製されていません。これにより、コピーをほぼ瞬時に行うことができ、ディスク容量も節約できます。ファイルのコンテンツが時間の経過とともに分岐するにつれて、必要なストレージの量が増えます。制限の 1 つは、この操作は同じファイル システムの境界内および同じサブボリューム内でのみ機能することです。

次の例では、cp –reflink コマンドを使用してファイルをコピーします。使用されたスペースは、コピー操作の前後に与えられます。使用されるスペースは増加しないことに注意してください。

# df -hP /btrfs
Filesystem       Size  Used   Avail  Use%   Mounted on
/dev/sda         10G   23M    8.0G    1%    /btrfs
# cp --reflink /btrfs/SV1/vmlinuz-3.10.0-693.17.1.el7.x86_64 /btrfs/SV1/copy_of_vmlinuz
# df -h /btrfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda         10G   23M  8.0G   1% /btrfs

サブボリュームまたはスナップショットのマウント

デフォルトでは、Linux は ID が 0 の親 Btrfs ボリュームをマウントします。この例では、サブボリュームとスナップショットを作成する前に、次のマウント コマンドが発行されました。

# mount /dev/sdb /btrfs

サブボリューム SV1 は /btrfs に作成されました。 ls コマンドはサブボリュームを表示します:

# ls -l /btrfs
total 0
drwxr-xr-x. 1 root root 84 Mar 29 11:01 SV1

次の例では、ファイルを SV1 にコピーし、SV1 のスナップショットを作成して、サブボリュームとスナップショットの両方に同じファイルが含まれていることを確認します:

# cp -p /boot/vmlinuz-3.10.0-693.17.1.el7.x86_64 /btrfs/SV1
# btrfs sub snapshot /btrfs/SV1 /btrfs/SV1-snap
Create a snapshot of '/btrfs/SV1' in '/btrfs/SV1-snap'
# ls /btrfs/SV1*
/btrfs/SV1:
vmlinuz-3.10.0-693.17.1.el7.x86_64

/btrfs/SV1-snap:
vmlinuz-3.10.0-693.17.1.el7.x86_64

/btrfs をアンマウントして再マウントすると、親の Btrfs ボリュームがデフォルトでマウントされます:

# ls /btrfs/
SV1  SV1-snap
# umount /btrfs
# mount /dev/sda /btrfs/
# ls /btrfs/
SV1  SV1-snap

ただし、btrfs サブボリュームまたはスナップショットをディスク デバイスのようにマウントすることはできます。親サブボリュームの代わりにスナップショットをマウントすると、ファイル システムの状態が、スナップショットが作成された時点に効果的にロールバックされます。次の例では、コンテンツが SV1-snap とは異なるようにファイルを SV1 にコピーします:

# cp testfile /btrfs/SV1
# ls -l /btrfs/SV1*
/btrfs/SV1:
total 5760
-rw-r--r--. 1 root root      19 Mar 29 11:44 testfile
-rwxr-xr-x. 1 root root 5890720 Jan 25 20:26 vmlinuz-3.10.0-693.17.1.el7.x86_64

/btrfs/SV1-snap:
total 5756
-rwxr-xr-x. 1 root root 5890720 Jan 25 20:26 vmlinuz-3.10.0-693.17.1.el7.x86_64

サブボリュームまたはスナップショットをマウントするには、まず、マウントするサブボリュームの ID 番号を決定する必要があります。 ID 番号を表示するには、btrfs subvolume list コマンドを使用します。次の例では、ルート サブボリュームの ID は 257 です:

# btrfs sub list /btrfs
ID 257 gen 12 top level 5 path SV1
ID 258 gen 9 top level 5 path SV1-snap

btrfs「subvolume set-default」を使用します 」 コマンドを使用して、ファイル システムのデフォルトのサブボリュームを設定します。たとえば、ID が 257 の SV1 Btrfs サブボリュームをマウントするには:

# btrfs subvolume set-default 257 /btrfs

次に、Btrfs ファイル システムをアンマウントして再マウントする必要があります。ルート レベルには SV1 サブボリュームの内容が含まれ、ルート サブボリュームは表示されなくなります。

# ls -l /btrfs
total 5760
-rw-r--r--. 1 root root      19 Mar 29 11:44 testfile
-rwxr-xr-x. 1 root root 5890720 Jan 25 20:26 vmlinuz-3.10.0-693.17.1.el7.x86_64

-o subvolid」を使用することもできます ルート サブボリューム、サブボリューム、またはスナップショットをマウントするには、mount コマンドに ” オプションを追加します。たとえば、ルート サブボリュームをマウントするには:

# umount /btrfs
# mount -o subvolid=5 /dev/sda /btrfs
# ls -l /btrfs
total 0
drwxr-xr-x. 1 root root 84 Mar 29 11:44 SV1
drwxr-xr-x. 1 root root 68 Mar 29 11:17 SV1-snap
Btrfs ファイル システムを作成してマウントする方法 (例で説明)
Btrfs ボリューム/ファイル システムのサイズを変更/拡張する方法


Cent OS
  1. Centos /RHEL8でスワップパーティションを作成して有効にする方法

  2. ファイルを作成してファイルシステムとしてマウントする方法は?

  3. snapper コマンドを使用して LVM シン ボリュームのスナップショットを作成する方法

  1. RockyLinuxおよびCentOSでSudoユーザーを作成する方法

  2. Linuxでドライブをマウントおよびアンマウントする方法

  3. CentOS/RHEL 8 で Stratis ファイルシステムを作成/削除およびマウントする方法

  1. Btrfsサブボリュームとフォルダー?

  2. Btrfs スナップショットを作成してマウントする方法

  3. ルートファイルシステムの LVM スナップショットを作成し、以前の状態に復元する方法