refreservation
어떻게 작동하는지 이해할 수 없습니다 . ~에서문서:
데이터 세트(스냅샷 및 클론과 같은 하위 항목 제외)에 보장되는 최소 디스크 공간 크기를 설정합니다. 사용된 디스크 공간의 양이 이 값 아래로 떨어지면 데이터 세트는 재보존에 의해 지정된 공간의 양을 차지하는 것으로 간주됩니다. [...]
내가 이해하는 바로는 refreservation
데이터 세트가 이미 참조하는 공간 위에 있을 때만 작동해야 하고, 반대로 그 아래에서는 아무 작업도 수행해서는 안 됩니다. 예를 들어 ZVOL이 있는 경우추천 60 GB
, 그런 다음 ZVOL 에 refreservation
of 를 추가합니다 50 GB
. 어떻게 해야 합니까? 결국 을 추가하면 refreservation
이 ZVOL이 최소한 참조될 것이라는 점을 보장 50 GB
하지만 이미 참조되었으므로 60 GB
아무 것도 변경되어서는 안 됩니다. 그렇죠?
제 경우에는 해당 작업이 상위 데이터세트의 여유 공간을 차지하고 있었습니다. 다음 명령 및 해당 출력 목록을 고려하십시오(일부 다른 ZVOL 및 데이터 세트에 대한 줄은 주의를 산만하게 하고 동작을 이해하는 데 도움이 되지 않기 때문에 제거했습니다).
root@cerberus:~/qemu-kvm# zfs list -o name,type,creation,volsize,available,used,referenced,reservation,refreservation,usedbydataset,usedbyrefreservation,usedbysnapshots,usedbychildren
NAME TYPE CREATION VOLSIZE AVAIL USED REFER RESERV REFRESERV USEDDS USEDREFRESERV USEDSNAP USEDCHILD
rpool filesystem Mon Jan 16 9:45 2017 - 672G 1.10T 96K none none 96K 0 0 1.10T
rpool/zvol-morn-system volume Tue Sep 15 20:43 2020 72G 722G 113G 63.0G none 50G 63.0G 49.8G 238M 0
root@cerberus:~/qemu-kvm# zfs set refreservation=none rpool/zvol-morn-system
root@cerberus:~/qemu-kvm# zfs list -o name,type,creation,volsize,available,used,referenced,reservation,refreservation,usedbydataset,usedbyrefreservation,usedbysnapshots,usedbychildren
NAME TYPE CREATION VOLSIZE AVAIL USED REFER RESERV REFRESERV USEDDS USEDREFRESERV USEDSNAP USEDCHILD
rpool filesystem Mon Jan 16 9:45 2017 - 722G 1.05T 96K none none 96K 0 0 1.05T
rpool/zvol-morn-system volume Tue Sep 15 20:43 2020 72G 722G 63.2G 63.0G none none 63.0G 0 258M 0
첫 번째 출력에서 rpool/zvol-morn-system
를 참조 63 GB
하고 갖는 refreservation
의 50 GB
전체 사용법이 제공되며 113 GB
(이것이 제가 가장 먼저 이해하지 못한 것입니다) 부모의 여유 공간 rpool
은 입니다 672 GB
. 두 번째 출력에서는 삭제하여 refreservation
상위 항목의 여유 공간이 늘어났습니다. 해당 ZVOL의 실제 참조 공간이 초과되었으므로 왜 아무런 효과가 없어야 하는지 이해할 수 없습니다.rpool
50 GB
50 GB
refreservation
50 GB
누군가 내가 어디로 잘못 가고 있는지 설명해 줄 수 있습니까?
저는 ZFS에 대한 문서와 매뉴얼 페이지를 연구하고 SO 및 관련 사이트에 대한 몇 가지 질문을 살펴보았습니다. ZFS 공간 계산에 대한 많은 정보를 찾았지만 이 특정 이해 문제에 대한 설명을 찾을 수 없었습니다.
답변1
문제는 스냅샷과 데이터세트 자체에서 참조된 블록인 것 같습니다(따라서 파일이 삭제되면 해당 파일이 소비하는 공간은 USEDSNAP 아래에 표시되지만 그 전에는 REFER 아래에 표시됩니다).
하지만 여전히 "스냅샷 및 복제에 의해 소비되는 디스크 공간"에 속하므로 USEDREFRESERV가 줄어들지 않을 것 같습니다. zfs list -t snapshot
설명하신 상황에서 확인 하실 수 있습니다 .
첫 번째 질문에 대한 대답은 더 간단합니다. Refreservation은 어쨌든 "used"의 정의에 속하므로 다른 모든 USED* 열과 마찬가지로 USED가 증가합니다.