하위 하위 볼륨으로 btrfs 하위 볼륨 롤백 정식 방법이 있습니까? 예를 들어, 이것은 내

하위 하위 볼륨이있는 하위 볼륨 스냅 샷으로 롤백하는 정식 방법이 있습니까? 예를 들어, 이것은 내 btrfs 볼륨 레이아웃입니다.

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var

따라서 home, opt 및 var는 __active의 하위 하위 볼륨임을 알 수 있습니다. 이것이 내가 새로운 레이아웃이되도록 __active를 스냅 샷하면 :

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

__active의 스냅 샷으로 롤백하려면 home, opt 및 var를 새로운 __active에 다시 연결하는 방법이 있습니까?



답변

다시 연결하면 다음과 같이 btrfs subvolume list표시됩니다.

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

다음 에는 지금과 그렇게 할 수있는 방법이 없습니다 btrfs-progs.

하위 볼륨은 (로 생성 된 btrfs subvolume create ...) 모든 하위 하위 볼륨 이 비어있는 경우에만 삭제할 수 있지만 스냅 샷 (으로 생성됨)에는 해당되지 않습니다 btrfs subvolume snapshot .... 스냅 샷을 제거하는 데 문제가 있습니다.

하위 하위 볼륨과 스냅 샷이 모두 동일한 트리 구조로 나타나고 btrfs subvolume delete ..명령을 공유하더라도 동일하게 작동하지는 않습니다.


답변

우선을 만들 때 __snapshot/__active하위 볼륨 (home, opt, var)이 스냅되지 않습니다. 대신 빈 디렉토리가 작성됩니다. 따라서 __snapshot/__active쉽게 제거 할 수는 있지만 제거 __active할 수는 없습니다.

그러나 요점은로 복원 __active하는 것이 었 습니다 __snapshot/__active. 내가 아는 한 이것은 원자 적으로 할 수 없습니다. 그러나 mv(쓰기 가능하다면) 스냅 샷과 다른 하위 볼륨을 행복하게 만들 수 있습니다 . 예를 들어

mv __active __snapshot/__active.old
mv __snapshot/__active __active

__active스냅 샷에서 복원 하지만 하위 볼륨을로 이동합니다 __snapshot/__active.old/{home,opt,var}. 다시 첨부하려면 이제 사용할 수 있습니다

mv __snapshot/__active.old/{home,opt,var} __active/

그리고 당신은 얻을 것이다

ID 257 gen 59804 top level 258 path __snapshot/__active.old
ID 258 gen 59786 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 5 path __active

스냅 샷이 읽기 전용 인 경우 예를 들어

mv __active __snapshot/__active.old
btrfs subvolume snapshot __snapshot/__active __active
mv __snapshot/__active.old/{home,opt,var} __active/


답변