ZFS 예약은 데이터 세트에 사용할 수 있도록 보장되었고 풀에서 할당된 디스크 공간입니다. 따라서 풀에서 현재 사용할 수 있는 공간이 없으면 데이터 세트에 대한 디스크 공간을 예약할 수 없습니다. 모든 미해결된 미소비 예약의 총량은 풀에서 사용되지 않은 디스크 공간을 초과할 수 없습니다. ZFS 예약은 zfs set 및 zfs get 명령을 사용하여 설정 및 표시할 수 있습니다. 예를 들면 다음과 같습니다.
# zfs set reservation=5G tank/home/bill # zfs get reservation tank/home/bill NAME PROPERTY VALUE SOURCE tank/home/bill reservation 5G local
예약은 zfs list 명령의 출력 결과에 영향을 줄 수 있습니다. 예를 들면 다음과 같습니다.
# zfs list -r tank/home NAME USED AVAIL REFER MOUNTPOINT tank/home 5.00G 61.9G 37K /tank/home tank/home/bill 31K 66.9G 31K /tank/home/bill tank/home/jeff 337K 10.0G 306K /tank/home/jeff tank/home/lori 547K 61.9G 547K /tank/home/lori tank/home/mark 31K 61.9G 31K /tank/home/mark
tank/home 및 해당 종속 항목에서 참조하는 총 디스크 공간이 5GB보다 훨씬 적지만 tank/home에서는 5GB의 디스크 공간을 사용하는 중입니다. used 공간은 tank/home/bill에 대해 예약된 공간을 나타냅니다. 예약은 부모 파일 시스템에서 사용된 디스크 공간 계산에 포함되며 해당 쿼터, 예약 또는 두 항목 모두에서 공제됩니다.
# zfs set quota=5G pool/filesystem # zfs set reservation=10G pool/filesystem/user1 cannot set reservation for 'pool/filesystem/user1': size is greater than available space
풀에서 사용 가능한 예약되지 않은 공간이 있고 데이터 세트의 현재 사용량이 해당 쿼터 미만인 경우 데이터 세트는 해당 예약보다 많은 디스크 공간을 사용할 수 있습니다. 데이터 세트는 다른 데이터 세트에 대해 예약된 디스크 공간을 소비할 수 없습니다.
예약은 누적되지 않습니다. 즉, 예약을 설정하기 위해 zfs set를 두번째로 호출해도 해당 예약이 기존 예약에 추가되지 않습니다. 그 대신 첫번째 예약이 두번째 예약으로 대체됩니다. 예를 들면 다음과 같습니다.
# zfs set reservation=10G tank/home/bill # zfs set reservation=5G tank/home/bill # zfs get reservation tank/home/bill NAME PROPERTY VALUE SOURCE tank/home/bill reservation 5G local
refreservation 예약을 설정하여 스냅샷 및 복제본이 소비하는 디스크 공간을 포함하지 않는 데이터 세트에 대한 디스크 공간을 보장할 수 있습니다. 이 예약은 부모 데이터 세트의 used 공간 계산에 포함되며 부모 데이터 세트의 쿼터 및 예약에서 공제됩니다. 예를 들면 다음과 같습니다.
# zfs set refreservation=10g profs/prof1 # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 10.0G 23.2G 19K /profs profs/prof1 10G 33.2G 18K /profs/prof1
또한 데이터 세트 공간과 스냅샷 공간을 보장할 수 있도록 동일한 데이터 세트에서 예약을 설정할 수도 있습니다. 예를 들면 다음과 같습니다.
# zfs set reservation=20g profs/prof1 # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 20.0G 13.2G 19K /profs profs/prof1 10G 33.2G 18K /profs/prof1
일반 예약은 부모의 used 공간 계산에 포함됩니다.
앞의 예제에서는 두 쿼터(10GB와 20GB) 중 작은 쿼터가 zfs list 출력 결과에 표시되었습니다. 두 쿼터의 값을 보려면 zfs get 명령을 사용합니다. 예를 들면 다음과 같습니다.
# zfs get reservation,refreserv profs/prof1 NAME PROPERTY VALUE SOURCE profs/prof1 reservation 20G local profs/prof1 refreservation 10G local
refreservation이 설정된 경우에는 이 예약 외에도 데이터 세트에서 현재 참조되는 바이트 수를 수용할 수 있도록 예약되지 않은 충분한 풀 공간이 존재하는 경우에만 스냅샷이 허용됩니다.