나는 zfs 보내기/받기를 사용하여 매일 zfs 파일 시스템을 다른 서버에 복제합니다. 워크플로는 표준 보내기 받기입니다.
# 1. create snapshot on source
zfs snapshot ${source_fs}@${today}
# 2. send incremental update from yesterday to today to target
zfs send -i ${one_day_ago} ${source_fs}@${today} | ssh user@${target_host} "zfs receive ${target_fs}"
# 3. destroy old snapshots from two days ago on source and target
zfs destroy ${source_fs}@${two_days_ago}
ssh user@${target_host} "sudo zfs destroy ${target_fs}@${two_days_ago}"
이것은 한동안 잘 작동했습니다. 그러나 이제 다음에서 이 오류가 발생합니다 zfs receive
.
cannot receive incremental stream: destination pool/filesystem has been modified since most recent snapshot
zfs list -t snapshot
대상의 USED
가장 최근 스냅샷 열에 작은 값(약 100K)이 표시됩니다. 이 값은 0이어야 합니다. 파일 시스템이 대상에 마운트되지 않았습니다.
zpools 및 zfs 할당량을 확인하는 스크립트가 있습니다. 현재 할당량( 포함 zfs userspace $filesystem -pH -o name,used,quota -s used
)에 대한 쿼리가 파일 시스템을 수정하는 것 같습니다. 이게 예상되는 일인가요? 일부 숫자에 대한 쿼리로 인해 파일 시스템이 수정되는 이유를 알 수 없습니다.
Ubuntu 리포지토리의 OpenZFS 0.8.3과 함께 Ubuntu 20.04를 사용합니다.
답변1
마운트 해제된 zfs 파일 시스템은 수신/삭제 및 ....(거의 전부입니다) 요청을 제외하고는 어떤 것도 수정할 수 없습니다. 파일 시스템 통계에 대한 zfs 요청은 fs 내용을 수정해서는 안 됩니다. 결론적으로, 나는 zfs userspace
무언가를 수정하고 있다고 확신합니다(그리고 zfs 데이터세트가 마운트 해제되었는지도 의심됩니다). 그러나 내가 틀렸다면 (약 zfs userspace
) 이것은 분명히 버그이고 엄청난 버그입니다.