일반화하다: ZFS 보내기/수신이 일치하는 데이터 세트 속성을 포함하여 전송된 데이터 세트의 정확한 복사본을 항상 수신하는지 여부 또는 수신된 데이터(체크섬 후)와 다른 속성(레코드 크기, 압축 등)을 가진 새로운 생성을 받을 수 있는지 여부 데이터 세트 유효성 검사 등)에 쓸 수 있습니다.
예를 들어, 원래 객체가 a에 기록된 (비증분) 데이터세트를 받고 recordsize=128K
새로 생성된 데이터세트를 받았지만 zfs receive
데이터세트가 옵션을 지정하거나 -o recordsize=1M
현재 값이 설정된 상위 데이터세트에서 상속받는 경우 recordsize=1M
해당 객체는 내 레코드 크기가 .인 새 데이터세트를 사용합니까 1M
, 아니면 객체를 수신 데이터세트의 정확한 "사본"에 기록해야 합니까?
zfs get recordsize tank/files # returns: 128K
# Set parent of receiving dataset to 1M
zfs set recordsize=1M freezer
# Also set at receive time
zfs send tank/files@transfer | zfs receive -o recordsize=1M freezer/files
내 질문은 본질적으로 다음과 같습니다
# Query recordsize of objects as written in freezer
???
새 데이터세트의 레코드 크기를 확인하는 것은 데이터세트 속성이 무엇인지만 보고하므로 그 자체로는 답이 아니라는 것을 알고 있습니다.지금로 설정되어 있으며 이는 이전에 작성된 레코드의 크기를 자체적으로 고려하지 않습니다. 나는 다음과 같은 것으로 개체를 직접 확인하려고 시도했습니다.
zdb -dd freezer
하지만 내 zfs 버전(FreeBSD 9)에서는 이를 허용하지 않는 것 같습니다.
man zfs
"한 번 설정" 속성만 일치해야 한다고 제안되었지만(대소문자 구분, 정규화, utf8만 해당) 일반적인 경우에 객체가 어떻게 작성되는지는 확실하지 않습니다. 나는 또한 docs/google을 확인했지만 zfs 내부를 조사하지 않고는 이 동작에 대한 명확한 대답을 얻을 수 없는 것 같습니다.
답변1
요컨대 - 아니오. 레코드 크기는 보내기/받기 작업을 통해 변경할 수 없습니다. 일부 다른 옵션은 작동하지만 크기는 작동하지 않습니다.