사람들이 수신 전용 ZFS 데이터 세트를 방해하는 것을 방지하는 방법은 무엇입니까?

사람들이 수신 전용 ZFS 데이터 세트를 방해하는 것을 방지하는 방법은 무엇입니까?

"송신기"와 "수신기"라는 두 개의 기계가 있습니다.

발신자는 매일 밤 다음 명령을 실행합니다.

zfs send -i bpool/backups@2018-09-04 bpool/backups@2018-09-05 | ssh receiver /sbin/zfs receive bpool/backups

발신자에서 수신자로 최신 bpool/백업을 보냅니다. (날짜는 매일 밤 자동으로 생성됩니다.)

누군가(수신자 측)가 다음을 수행하는 경우:

cd /bpool/backups
ls

다음 오류로 인해 야간 백업 작업이 중단됩니다.

root@sender:~# zfs send -i bpool/backups@2018-09-04 bpool/backups@2018-09-05 | ssh recevier /sbin/zfs receive bpool/backups
cannot receive incremental stream: destination bpool/backups has been modified
since most recent snapshot
warning: cannot send 'bpool/backups@2018-09-04': Broken pipe

(atime이 업데이트되었기 때문인 것 같아요.)

이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까? (receiver:/bpool/backups를 읽기 전용으로 설정하면 수신 작업은 어떻게 되나요?)

답변1

물론대상 데이터 세트를 읽기 전용으로 만듭니다( readonly=on대상 데이터 세트 또는 상위 데이터 세트 중 하나에 직접 zfs 등록 정보를 설정하여). 이는 업데이트된 스냅샷 수신을 방해하지 않습니다. 이는 readonly데이터 세트에 포함된 파일(디렉터리, 속성)을 변경할 수 없다는 의미일 뿐입니다.

readonly=on이는 풀을 가져올 때의 설정과 다릅니다. 풀을 사용한다는 것은 readonlyIO가 풀의 백엔드에 아무 것도 쓸 수 없다는 것을 의미합니다.

나는 원칙적으로 어느 누구도 어쨌든 허용되는 데이터 세트를 변경해서는 안 되기 때문에 허용된 답변에 별로 만족하지 않습니다.

제가 전환을 반대하는 또 다른 이유는 증분 스냅샷 데이터( ) -F를 수신하면 전환이 이루어지기 때문입니다.zfs send -i data@older-snap data@newer-snap-F반품원본 데이터 세트에 존재하지 않는 스냅샷이 백업 데이터 세트에서 삭제됩니다(최신 데이터일지라도). 예상치 못한 상황이 발생하면(단순히 오류를 무시하는 것보다) 서비스가 실패하고 오류를 보고하도록 서비스를 설계하는 것이 항상 좋습니다.

atime=off백업 풀/데이터 세트의 경우 목적에 어긋나므로 이를 설정할 수도 있습니다 .

편집: 아, 다음을 사용하여 수신 데이터 세트에서만 이러한 속성을 설정할 수 있다는 점을 추가해야 합니다(이러한 속성은 소스 데이터 세트에서 직접 설정하면 재정의됩니다).zfs receive -o atime=off -o readonly=on

답변2

zfs recv -F수신 데이터 세트를 이전에 수신된 스냅샷으로 강제로 롤백합니다. atime을 끄면 백업 파일을 확인하는 사람들의 문제만 해결되지만 다른 변경 사항이 있는 경우 -F 플래그를 사용해야 합니다.

답변3

액세스 시간 업데이트를 끄는 것만으로도 충분합니다.

zfs set atime=off bpool/backup

답변4

개인적으로 저는 스냅샷을 읽기 전용으로 직접 마운트하는 것을 선호하므로 구성을 통해 스냅샷을 수정하지도 않습니다.

암호화된 데이터 세트를 사용하는 경우 먼저 다음 명령을 실행하여 키를 로드합니다.

$ sudo zfs load-key -a

그런 다음 예를 들어 다음과 같이 마운트합니다( -o ro옵션이 필요하지 않음).

$ mkdir /tmp/zp
$ sudo mount -t zfs zpool_my_passport/backup/2020_Dell_laptop@2021_01_05_-_test_update /tmp/zp/

하지만 수정이 발생하면 정말 실용적입니다 zfs recv -F. (저는 데이터 손실이 조금 걱정되기 -F때문에 이 방법을 선호합니다.)

관련 정보