상호 종속성 및 클론이있는 ZFS 스냅 샷 삭제


9

아래는 ZFS 볼륨 및 스냅 샷과 각각에 대한 원본 및 복제본 목록입니다.

모든 스냅 샷을 삭제하고 싶지만 모든 파일 시스템을 유지하고 싶습니다. 어떻게해야합니까?

나는 시도했다 zfs promote파일 시스템의 여러 가지 조합에 대해 각각의 파일 시스템을 삭제하려고 시도 하였다. 스냅 샷이 "라이브"되는 위치로 이동합니다. 예를 들어 zfs promote tank/containers/six스냅 샷을 F에서 tank/containers/three@F로 이동 합니다 tank/containers/six@F. 파일 시스템의 라이브 데이터는 수정되지 않지만 (원하는 것입니다) 여전히 스냅 샷을 삭제할 수 없습니다 (원하는 것이 아닙니다).

일반적인 zfs destroy시도는 의존 내가 일부 (스냅 샷)의 클론이 나에게 말한다 않는다 있는 (파일 시스템)이 내가 파괴하려는, 그러나 다른 사람 없는 파괴하려는합니다.

예를 들어.

# zfs destroy tank/containers/six@A
cannot destroy 'tank/containers/six@A': snapshot has dependent clones
use '-R' to destroy the following datasets:
tank/containers/five
tank/containers/two@B
tank/containers/two

위의 예에서, 나는 파괴하지 않으 tank/containers/fivetank/containers/two,하지만 난 경우 zfs promote다섯 개의, 나는 아직도 모든 스냅 샷을 파괴 할 수 있습니다. 해결책이 있습니까?

# zfs list -t all -o name,origin,clones
NAME                         ORIGIN                       CLONES
tank                         -                            -
tank/containers              -                            -
tank/containers/five         tank/containers/two@B        -
tank/containers/four         tank/containers/six@C        -
tank/containers/one          -                            -
tank/containers/one@E        -                            tank/containers/three
tank/containers/two          tank/containers/six@A        -
tank/containers/two@B        -                            tank/containers/five
tank/containers/six          tank/containers/three@F      -
tank/containers/six@A        -                            tank/containers/two
tank/containers/six@C        -                            tank/containers/four
tank/containers/three        tank/containers/one@E        -
tank/containers/three@F      -                            tank/containers/six

답변:


9

AFAIK 당신은 그 데이터 셋을 새로운 독립적 인 데이터 셋으로 복사해야합니다. 승격은 데이터 세트가 "부모"대 "자식"인 주변을 전환하기 만하며 둘 다 유지하려는 경우 실제로 종속성을 중단하지 않습니다.

예 :

root@box~# zfs snapshot tank/containers/six@1 
root@box~# zfs send tank/containers/six@1 | pv | zfs receive tank/containers/newsix  
root@box~# zfs destroy -R tank/containers/six  
root@box~# zfs destroy tank/containers/three@F 
root@box~# zfs rename tank/containers/newsix tank/containers/six

시간을내어하고있는 일을 확인하십시오. 특히 실제 삭제와 관련하여.

이 복제는 블록 단위이므로 중요한 데이터가 있으면 시간이 걸립니다. 이 pv부분은 선택 사항이지만 대기하는 동안 볼 수있는 진행률 표시 줄을 제공합니다.

현재와 ​​미래에 복제 작업을 자동화하기 위해 syncoid 를 고려할 수도 있습니다. (필수 사항 : 저는이 도구의 최초 저자이며 GPLv3 라이센스가 있으며 무료로 사용할 수 있습니다.


짐, 동요로 당신의 제휴를 공개하십시오. 사이트 규칙에서 : "좋은 답변, 관련 답변 게시 및 일부 (모두는 아님)가 제품이나 웹 사이트에 관한 것이라면 괜찮습니다. 그러나 귀하의 답변에 귀하의 소속을 공개해야합니다."
Costin Gușă

행복합니다. Costin은 GitHub 리포지토리 프로젝트에 직접 연결하고 컨설팅 서비스에 대해 언급하지 않았기 때문에 그것이 큰 문제라는 것을 몰랐습니다.
Jim Salter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.