저는 루트를 구성하고 백업에 스내퍼를 사용하도록 시스템을 구성하기 위한 파일 시스템으로 btrfs를 사용하고 있습니다.
하위 볼륨 /@arch-root/@.snapshots/
에는 여러 개의 하위 디렉터리가 포함되어 있고 각 하위 디렉터리에는 여러 개의 하위 볼륨이 포함되어 있으며 이러한 하위 디렉터리는 모두 내 스냅샷입니다.체계루트( /@arch-root/
, 자체 하위 볼륨). 이제 @.snapshots
실제 상황으로 넘어가고 싶습니다파일 시스템/
전체 롤백 프로세스를 원활하게 하려면 루트를 사용하세요 . 어떻게 움직일 수 있나요?
(분명히 내가 옮기는 중이야~에동일한 파일 시스템/파티션. )
특히 mv
하위 볼륨(내부 하위 볼륨 포함)을 이동하는 것이 가능할 것으로 보이지만 이 경우 효과는 확실하지 않습니다(특히 디스크 소비/CoW/파일 블록 간의 내부 링크 관련). 파일이 작으면 간단히 이것을 사용하지만 제 시나리오에서는 스냅샷이 많고 크기도 큽니다.
자세한 내용이 도움이 될 경우를 대비해 전체 상황에 대한 설명은 다음과 같습니다(없을 경우를 대비해).
전체 사례 설명
처음에는 다음과 같이 이상적이지 않은 파일 시스템 레이아웃을 사용했습니다(여기서 로 시작하는 모든 항목은 @
하위 볼륨을 의미함).
/
@arch-root/
@.snapshots/
1234/
@snapshot/
var/
@log/
여기서는 /
내 Archlinux(부팅 중에 설치됨)의 시스템 루트인 파일 시스템의 루트를 나타내고 @arch-root
snapper가 생성한 시스템 루트의 스냅샷을 저장하는 곳입니다./
@.snapshots
Snapper에 의해 관리 되므로 @.snapshots
내부 하위 디렉터리가 포함되어 있으며 각 디렉터리에는 설명자 파일과 @arch-root
내 시스템 루트 디렉터리의 스냅샷( )이 포함되어 있습니다.
지금 돌이켜보면 이것이 이상적이지 않았다는 것을 깨달았습니다. 이전 버전으로 롤백해야 하는 경우 쉽게 할 수 없습니다. 유사한 디렉터리는 var/log
스냅샷에 올바르게 마운트되지 않습니다. docker가 관리하는 다른 일부 디렉터리에도 비슷한 문제가 있습니다.
따라서 가장 좋은 방법은 모든 중요한 디렉토리를 아래로 이동 /
하고 fstab
부팅 중에 올바른 위치에 마운트되도록 구성하는 것입니다. 새로운 파일 시스템 레이아웃은 다음과 같습니다:
/
@arch-root/
@.snapshots/
1234/
@snapshot/
@var-log/
그리고 fstab
파일 시스템은 다음과 같이 마운트됩니다(실제 파일 시스템에서는 a == b
마운트됨을 의미함).b
a
/ == /@arch-root/
.snapshots/ == /@.snapshots/
var/
log/ == /@var-log/
하지만 이렇게 하려면 이를 이동하는 올바른 방법을 찾아야 합니다. 여기에는 내부 하위 볼륨(스냅샷 포함)이 포함되어 있으므로 이동으로 인해 데이터의 중복 복사본이 생성되어서는 안 됩니다. 질문으로 이어집니다.