スナップショットを使用すると、btrfs showコマンドは機能しません。

スナップショットを使用すると、btrfs showコマンドは機能しません。

「デフォルト」に設定した後にスナップショット(本質的にサブボリューム)をマウントすると、showコマンドが機能しなくなり、スナップショットのディレクトリの内容が消える理由を誰かが説明できますか?使用しない場合にのみ機能するスナップショットシステムを持つことは無意味です。なぜこのように動作するのかを説明したら、以下に説明するように、私が望む方法で動作するようにする方法を説明してください。

シナリオ:/のあるルートbtrfs設定があり、/home、/rootなどのサブボリュームはありません。なぜなら、そのような設定が気に入らず、どんな対価を払っても避けたいからです。これは私が望むものではありません。 1つのスナップショットだけではシステム全体を復元できないためです(virtualboxスナップショットの復元に似ています)。スナップショットの回復によってユーザーのコンテンツやシステム構成が失われることは気にしません。他の日付(過去および可能であれば現在のスナップショットに基づいて将来)の既存のスナップショットコンテンツを検索する機能を失うことなく、すべてを特定の時点に復元したいと思います。私が持っている唯一の「サブボリューム」はスナップショットです。

これは、btrfsがリストの最後のインストールである現在のインストール設定を示しています。他のことは重要ではなかったのでカットしました。

root@Work-VirtualBox ~ # mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=8179248k,nr_inodes=2044812,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=1642476k,mode=755)
/dev/sda1 on / type btrfs (rw,relatime,compress=lzo,ssd,space_cache,subvolid=634,subvol=/snapshots/09-25-2022-03:00:01)
... yada yada

現在のサブボリュームのリスト(すべてのスナップショット)

sudo btrfs subvol list /
ID 625 gen 1695 top level 5 path snapshots/test5
ID 626 gen 1694 top level 5 path snapshots/09-25-2022-01:40:33
ID 627 gen 1694 top level 5 path snapshots/09-25-2022-01:42:21
ID 628 gen 1694 top level 5 path snapshots/09-25-2022-01:42:28
ID 629 gen 1695 top level 5 path snapshots/09-25-2022-01:48:47
ID 630 gen 2782 top level 5 path snapshots/09-25-2022-01:50:42
ID 631 gen 1695 top level 5 path snapshots/09-25-2022-01:51:28
ID 632 gen 1695 top level 5 path snapshots/09-25-2022-01:52:25
ID 633 gen 2720 top level 5 path snapshots/09-25-2022-01:58:45
ID 634 gen 2691 top level 5 path snapshots/09-25-2022-03:00:01
ID 635 gen 2654 top level 634 path snapshots/09-25-2022-03:00:01/snapshots/test6

現在の基本スナップショット:

sudo btrfs subvol get-default /
ID 630 gen 2783 top level 5 path snapshots/09-25-2022-01:50:42

質問:

「デフォルト」スナップショットをID 5以外に設定するたびに、ls -latch /snapshots/NAMEHEREbtrfs subvol showとを使用すると効果が失われます。デフォルトを5に設定すると、ショーはすべてのスナップショットに適用され、/ snapshotsディレクトリに移動できます。どんなIDを使っても構いません。 625、630、634を使ってみました。 634を使用すると、test6という新しいスナップショットが作成されました。 634をデフォルトとして使用するときにshowコマンドを使用できる唯一のスナップショットはtest6(id 635)です。 /snapshots ディレクトリの内容を参照することもできます。

予想される結果:

任意のスナップショットに切り替えることができると期待し、切り替えたより古い他のスナップショットも引き続き参照できます。ここではまったくそうではありません。 / snapshotsのディレクトリリストには以前のスナップショットのみが表示されますが、そのディレクトリの内容は完全に空であり、ファイルがまったく表示されないことがわかります。スナップショット名だけでなくファイルも表示したいです。また、「btrfs subvol show」コマンドを使用して、少なくとも前のコマンドの詳細を表示したいと思います。新しいコマンドでも動作すると良いでしょう。

また、親(ID:5)がどこにもリストされていないのがおかしいと思います。作成したすべてのスナップショットのサブキーを含むリストに表示する必要があります。実際にこれが初めて使用されたので、どのようにID:5を得たのかさえわかりません。 ID:5ではなくID:1になりたいです。

sudo btrfs subvol show -r 5 /snapshots/test5
ERROR: cannot resolve rootid for path: Inappropriate ioctl for device
ERROR: can't find rootid '5' on '/snapshots/test5': -25
ERROR: Failed to get subvol info /snapshots/test5: Inappropriate ioctl for device
sudo btrfs subvol show /snapshots/test5
ERROR: not a subvolume: /snapshots/test5
ERROR: Failed to get subvol info /snapshots/test5: 1

現在の解決策:

btrfs showコマンドが正しく機能し、スナップショットにディレクトリの内容が表示されるようにする唯一の回避策は、デフォルトのサブボリュームをID:5に戻すことです。しかし、これは私に完全に間違っているように聞こえます。必要なスナップショットに設定できる必要があり、その時点から実行するすべてのタスクは、デフォルトのスナップショット設定を別のIDに設定するまで、現在のスナップショットをその時点から実行するすべてのタスクの親スナップショットにします。新しいIDを設定する前に新しいスナップショットを作成しないと、私が行ったすべての操作が失われると予想されます。作業内容を保存するには、現在作業しているジョブの子となる新しいスナップショットを作成する必要があります。

ベストアンサー1

おすすめ記事