ZFS : 스냅 샷에서 파일을 제거 하시겠습니까?


10

100 개의 스냅 샷이있는 데이터 세트가 rm -rf있고 모든 스냅 샷에서 "cache"라는 모든 폴더를 원한다고 가정합니다 .

스냅 샷 레이어에 숨기지 않고 실제로 공간을 확보하고 싶습니다. 따라서 복제본을 만들고 제거하고 새 스냅 샷을 찍는 것이 원하는 것을하지 않는 것 같습니다.

반자동 방법이 있습니까? zfs list -t snapshot, zfs clone, zfs promote, zfs snapshot을 감싸는 부분이 있습니까?

( ZFS가 더 많기 때문에 /superuser/313197 에서 교차 게시 )


3
크로스 포스트하지 말고 질문이 마이그레이션 될 때까지 기다리십시오.
Sven

또한 이것이 가능한지 확실하지 않습니다. 스냅 샷은 읽기 전용이며 복제 / 프로모션 페어를 사용하는 경우 복제 된 스냅 샷과 "HEAD"데이터 세트 간의 종속성을 되돌릴 것입니다. 필요. 다음 문서를 참조하십시오 : download.oracle.com/docs/cd/E19253-01/819-5461/gbcxz/index.html
Sven

나는 이주를 기다릴 것이지만 SU에 대한 상당한 양의 ZFS 질문 인 것처럼 보였으므로 자동으로 옮겨 질 것이라고 의심했습니다 ... 두 곳 모두에 적합하므로 크로스에 대해 좋은 방법에 대한 메타 가이드를 따랐습니다. -전기.
티노 Didriksen

@TinoDidriksen 해당 메타 게시물에 대한 참조를 제공해 주시겠습니까? 나는 그것을보고 싶다. 감사.
nhinkle

2
귀하가 참조한 게시물은 공식 정책이 아닙니다. 여러 사이트에 대해 사용자가 생각하는 질문을 처리하는 방법을 설명하는 MSO에 대한 FAQ 가 있습니다. 요약하면 교차 게시가 허용되지 않습니다. 게시 한 후에 다른 곳에서 더 좋을 것이라고 결정하고 좋은 답변을 얻지 못한 경우 마이그레이션하도록 플래그를 지정하거나 삭제하고 다시 요청할 수 있지만 게시 한 사이트에 맞게 게시물을 조정해야합니다 묻습니다. 기다리지 않고 똑같은 단어 별 단어를 다시 게시했습니다. 이로 인해 교차 게시에 대한 두 메타 게시물의 지침이 모두 실패했습니다.
nhinkle

답변:


9

스냅 샷은 읽기 전용입니다. 이 경우 필요 해당 폴더가 다음 사라는 전체 스냅 샷을 삭제해야합니다.

문제가있는 폴더를 제외하고 백업 (tar와 같은 것)을 만든 다음 스냅 샷을 삭제할 수 있습니다. 분명히 백업은 이제 tar 또는 다른 형식으로되어 있습니다. 하지만 최소한 여전히 백업 사본이 있습니다.


2
이 솔루션의 실질적인 문제는 이제 모든 비트의 데이터 를 실제 n 번 저장해야하는 반면 스냅 샷은 수정 된 블록 만 저장한다는 것입니다. 이런 식으로 tar 파일에서 캐시를 삭제하여 저장 한 것보다 훨씬 더 많은 공간이 필요합니다.
Sven

Dedupe가 도움 이 되겠지만 , 당신은 맞습니다. 나는 그가 원하는 방식으로 스냅 샷을 수정하는 방법이 없다고 확신합니다.
Chris S

gzip-1 압축과 중복 제거 기능이 모두 있으므로 동일한 데이터를 복사하면 부기 공간 만 차지합니다. 그러나 물론 복사를 피하는 방법을 원합니다.
티노 Didriksen

거의 동일한 데이터 중복 제거의 tar 파일이 여러 개인 경우 파일 시작 부분에 하나의 바이트 만 추가하거나 빼면 블록이 다른 블록과 동일하지 않아 중복 제거가 쓸모 없게 될 것이므로 많은 도움이 될 것입니다.
Sven

@SvenW 질문을 다시 읽은 후에 그는 공간을 절약하려고 노력하고 있습니다. tar 파일을 컴퓨터에서 옮기지 않으면 스냅 샷을 내보낼 수 있습니다. 그가 모든 곳에 붙어있는 것 같습니다.
Chris S

14

다음을 시도해 볼 수 있습니다.

  1. 가장 오래된 스냅 샷을 새 파일 시스템으로 복제하십시오 (호출 fsnew).
  2. fsnew파일 시스템이 기반으로하는 스냅 샷을 제거 할 수 있도록 복제본 ( )을 승격하십시오 .
  3. 문제가되는 파일을 제거하십시오.
  4. 의 스냅 샷을 만듭니다 fsnew.

이제 foreach는 스냅 샷, 후 rsync--inplace스냅 샷에서 플래그 원하지 않는 파일을 스킵 fsnew합니다. --inplace플래그는 쓰기의 수를 줄이고 작은 스냅 샷 수 있습니다.

  1. 의 스냅 샷을 만듭니다 fsnew.
  2. 원본 스냅 샷을 삭제하십시오.

이 작업이 완료되면 문제가 fsnew되는 파일이 제거 된 원래 파일 시스템의 스냅 샷에 해당하는 스냅 샷이 있어야합니다 .

드라이브에 공간이 있으면 스크립트가 제대로 작동 할 때까지 "destroy"명령을 건너 뛰어도됩니다.


--delete옵션 을 전달해야합니다 rsync. 그렇지 않으면 스냅 샷간에 삭제가 손실됩니다. 그렇지 않으면 이것은 좋은 생각입니다.
Tobia

1
  1. 원본 스냅 샷을 삭제하십시오.

승격 조치 후 오리지널 스냅 샷을 삭제할 수 없습니다. 부모 데이터 세트를 파기하는 경우에만 가능합니다.

예 (복제 촉진 후).

zfs는 미디어를 파괴합니다 1 / 건배 / 백업-자동 -20190530.2105-2y-clone@auto-20190530.2105-2y

'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y'를 파괴 할 수 없음 : 스냅 샷에 종속 클론이 있음

'-R'을 사용하여 다음 데이터 세트를 제거하십시오.

media1/media/backup@auto-20190531.1622-2y

미디어 1 / 미디어 / 백업

zfs destroy media1/media/backup@auto-20190531.1622-2y

zfs는 미디어를 파괴합니다 1 / 건배 / 백업-자동 -20190530.2105-2y-clone@auto-20190530.2105-2y

'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y'를 파괴 할 수 없음 : 스냅 샷에 종속 클론이 있음

'-R'을 사용하여 다음 데이터 세트를 제거하십시오.

미디어 1 / 미디어 / 백업

그 "재미있는"작업 후에, 나는 다음을 만들어야합니다

zfs 스냅 샷 media1 / media / backup @ 1

zfs send media1 / media / backup @ 1 | pv | zfs는 media1 / media / backup을받습니다

zfs destroy media1 / media / backup @ 1

zfs destroy -R media1 / media / backup

zfs는 media1 / media / backup의 이름을 바꿉니다.

또는 하나를 승격 시키십시오. zfs는 media1 / media / backup을 승격시키고 src 장소에 큰 스냅 샷이 있기 때문에 clone anuway를 삭제 한 후))

rsync / backup 만 도움이 될 수 있습니다.


-3

특정 ZFS 파일 시스템에 대한 ZFS 스냅 샷 .zfs/snapshots은 파일 시스템 루트의 디렉토리에서 찾을 수 있습니다 . 이 폴더와 rm필요한 파일을 가로 지르는 스크립트를 작성 하여 스냅 샷 자체에서 삭제해야합니다.


3
ZFS 스냅 샷은 읽기 전용입니다. 그것들에서 삭제할 수 없습니다.
Sven

내 나쁜, 내가 어디에서 당신이 할 수있는 인상을 받았는지 확실하지 않습니다 :(
growse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.