스냅샷을 사용할 때 btrfs show 명령이 작동하지 않습니다.

스냅샷을 사용할 때 btrfs show 명령이 작동하지 않습니다.

"기본값"으로 설정한 후 스냅샷(본질적으로 하위 볼륨)을 마운트하면 show 명령이 더 이상 작동하지 않고 스냅샷의 디렉터리 내용이 사라지는 이유를 누군가 설명할 수 있습니까? 사용하지 않을 때만 작동하는 스냅샷 시스템을 갖는 것은 무의미해 보입니다. 왜 이런 식으로 작동하는지 설명한 후에는 아래에 설명된 대로 제가 원하는 방식으로 작동하도록 하는 방법을 설명해 주세요.

시나리오: /가 있는 루트 btrfs 설정이 있고 /home, /root 등과 같은 하위 볼륨은 없습니다. 왜냐하면 그러한 설정이 마음에 들지 않고 어떤 대가를 치르더라도 피하고 싶기 때문입니다. 이는 제가 원하는 것이 전혀 아닙니다. 단 하나의 스냅샷만으로는 전체 시스템을 복원할 수 없기 때문입니다(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 디렉토리를 탐색할 수 있습니다. 어떤 아이디를 사용하든 상관없습니다. 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를 설정하기 전에 새 스냅샷을 생성하지 않으면 내가 수행한 모든 작업이 손실될 것으로 예상되는데, 이것이 바로 내가 원하는 동작입니다. 작업 내용을 저장하려면 현재 작업 중인 작업의 하위 항목이 될 새 스냅샷을 만들어야 합니다.

관련 정보