하위 볼륨 세트가있는 BTRFS 파일 시스템이 있습니다. 여태까지는 그런대로 잘됐다. 하위 볼륨의 이름을 변경해야합니다. 불행히도 btrfs
프로그램에서 하위 볼륨의 이름을 바꿀 수 없습니다. 구글 검색으로 몇 가지 결과가 나왔다. 하나는 내가 할 수 있다고 말했고, 다른 하나는 새로운 이름으로 이전 하위 볼륨을 삭제할 mv
수 있다고 말했다 snapshot
. 파티션을 크래시하고 백업에서 다시로드해야하기 전에 (꽤 큰) 내 질문은 다음과 같습니다.
- 하위 볼륨의 이름을 바꾸는 가장 좋은 방법은 무엇입니까?
- 그냥 괜찮
mv
습니까, 아니면 일부 내부 구조를 무효화합니까? - 새로운 스냅 샷을 만들고 기존 하위 볼륨을 제거하는 방법이 있습니까? 아니면 몇 가지 단점이 있습니까?
나는 모든 것이 여전히 실험적이라는 것을 알고 있지만, 내 목적 상 꽤 잘 작동했습니다 (지금까지는 매일 증분 백업이 있습니다).
답변
그냥 mv
그것. 이것이 우분투 커뮤니티 문서 에서 권장되는 방법입니다 .
그리고 이것이 왜 올바른 방법인지 더 명확하게 설명하기 위해 btrfs sysadmin 안내서의 인용문은 다음과 같습니다.
스냅 샷
스냅 샷은 단순히 btrfs의 COW 기능을 사용하여 데이터 및 메타 데이터를 다른 하위 볼륨과 공유하는 하위 볼륨입니다. [쓰기 가능] 스냅 샷이 만들어지면 원래 하위 볼륨과 새 스냅 샷 하위 볼륨의 상태에는 차이가 없습니다. 스냅 샷으로 롤백하려면 수정 된 원본 하위 볼륨을 마운트 해제하고 그 자리에 스냅 샷을 마운트하십시오. 이 시점에서 원 서브 볼륨은 삭제 될 수 있습니다. 스냅 샷은 하위 볼륨이므로 스냅 샷의 스냅 샷도 가능합니다.
답변
주의해야 할 몇 가지 중요한 사항이 있습니다. 명명 :
btrfs 서브 볼륨-독립 데이터 컨테이너 inside
파일 시스템. 기존 FS의 디렉토리 로 표시됩니다 . 새로운 하위 볼륨을 만들면 파일 시스템 내에서 논리 데이터 블록을 사용할 수 있도록 비어 있습니다. 데이터를 논리적으로 분리해야하는 곳 (예 : 다른 VM 또는 다른 하위 볼륨의 다른 클라이언트)에서 사용하는 것이 매우 편리합니다. 이것은 단지 subvolume delete 명령 very fast
으로 모든 논리 데이터 블록을 제거 할 수있게 합니다.
btrfs Snapshot- existing
os 스냅 샷이 수행되는 순간 모든 데이터 가 포함 된 하위 볼륨 의 사본입니다 . 일부 유예 기간이 스냅 샷을 제거한 후 하위 볼륨 스냅 샷 생성, 변경 (VM 또는 데이터), 모든 것이 정상인지 테스트하는 등 설정 또는 변경 사항을 되돌리기위한 운영 백업으로 사용할 수 있습니다. 중요 사항 : 스냅 샷은 읽기 전용 ( -r
스위치) 일 수 있으므로 FS 변경 증분 블록으로 사용될 수 있으며 절대적으로 다른 BTRFS로 전송할 수 있습니다!
현재 (2016-12-30) BTRFS 제한 :
하위 볼륨간에 데이터를 복사하거나 이동하는 경우, 예를 들어 mv dir1/dataset1 dir_subvolume1/
데이터를 다른 하위 볼륨에 복사하고 이동하는 경우 원래 볼륨에서 제거하는 모든 실제 io가 생성됩니다. 그리고 매우 단지 참조를 만들기 때문에 BTRFS의 COW 기능을 사용하여 데이터 톤의 복사 효율 :
cp -a --reflink=always dir1/dataset1 dir_subvolume1/
그리고 필요한 경우 :
rm -rf dir1/dataset1
읽기 전용 하위 볼륨 스냅 샷은 mv
기존 디렉토리 레벨에서 이름을 바꾸거나 (로 이동) 다른 서브 디렉토리 레벨로 이름을 바꾸거나 이동할 수는 없습니다. 예를 들어 mv /btrfs/subvol_snap1 /btrfs/.snaphots
불가능하다 mv: cannot move 'subvol_snap1' to '.snapshots/subvol_snap1': Read-only file system
. 설명이 잘되지 않은 오류가 발생한다 . 이러한 스냅 샷을 이동하려면 기존 읽기 전용 스냅 샷의 새로운 읽기 전용 스냅 샷을 새로운 기본 위치로 만든 다음 이전 위치를 제거해야합니다.
btrfs sub snap -r /btrfs/subvol_snap1 /btrfs/.snaphots/subvol_snap1
btrfs sub del /btrfs/subvol_snap1
더 쉬운 라이브를 위해 :
btrfs sub list /btrfs
나는 이것이 모든 새로운 btrfs 팬들에게 많은 시간을 절약하기를 바랍니다 🙂
답변
루트 볼륨의 이름을 중첩 된 하위 볼륨으로 바꾸려면 스냅 샷을 만든 다음 find $ROOT_VOL -xdev -delete
루트 볼륨의 이전 내용을 제거 해야합니다 . 하위 볼륨을 루트 볼륨으로 이름을 바꾸는 반대 조작은 불가능합니다.