ドライブを 2 つの btrfs パーティションに分割しました。1 つは としてマウントされ/ (dev/sda1)
、もう 1 つは としてマウントされます/home (/dev/sda2)
。
最初のスナップショットを作成しました/home
:
mkdir -p /home/snapshots/mnt
mount -o subvolid=0 /dev/sda2 /home/snapshots/mnt
btrfs subvolume snapshot /home /home/snapshots/mnt/snapshots/init
その後、init
スナップショットをデフォルトにしてシステムを再起動しました。init
スナップショットをクリーンな状態に保ちたかったので、スナップショットを作成して次のように呼ぶことにしましたcurrent
。
mount -o subvolid=0 /dev/sda2 /home/snapshots/mnt
btrfs subvolume snapshot /home /home/snapshots/mnt/snapshots/current
動作しましたが、current
デフォルトのサブボリュームを作成してシステムを再起動すると、予期しない結果になることls
に気付きました。/home/snapshots
# ls /home/snapshots
init mnt
# ls /home/snapshots/init
#
問題は、なぜinit
フォルダーが表示されるのかということです。私の直感では、init
スナップショットは ID 0 のサブボリュームに作成され、そこからのみ表示されるはずです。
答え1
特定のサブボリュームのスナップショットが作成されると、そこに含まれるすべてのサブボリューム (ファイル ツリーに添付されているという意味で) は空のディレクトリのように扱われます。これが動作の理由です。スナップショットからそれらを削除するだけで、データ損失はありません :)