ZFS 파일 시스템에서 쿼터는 zfs set 및 zfs get 명령을 사용하여 설정하고 표시할 수 있습니다. 다음 예에서는 10GB의 쿼터가 tank/home/jeff에 설정됩니다.
# zfs set quota=10G tank/home/jeff # zfs get quota tank/home/jeff NAME PROPERTY VALUE SOURCE tank/home/jeff quota 10G local
쿼터는 zfs list 및 df 명령의 출력에도 영향을 줍니다. 예를 들면 다음과 같습니다.
# zfs list -r tank/home NAME USED AVAIL REFER MOUNTPOINT tank/home 1.45M 66.9G 36K /tank/home tank/home/eric 547K 66.9G 547K /tank/home/eric tank/home/jeff 322K 10.0G 291K /tank/home/jeff tank/home/jeff/ws 31K 10.0G 31K /tank/home/jeff/ws tank/home/lori 547K 66.9G 547K /tank/home/lori tank/home/mark 31K 66.9G 31K /tank/home/mark # df -h /tank/home/jeff Filesystem Size Used Avail Use% Mounted on tank/home/jeff 10G 306K 10G 1% /tank/home/jeff
tank/home에서 66.9GB의 디스크 공간을 사용할 수 있더라도 tank/home/jeff에 대한 쿼터로 인해 tank/home/jeff 및 tank/home/jeff/ws에는 각각 10GB의 디스크 공간만 사용할 수 있습니다.
파일 시스템에서 파일 시스템이 사용할 수 있는 디스크 공간을 제한하는 refquota를 설정할 수 있습니다. 이러한 하드 한계에는 종속 항목에서 소비되는 디스크 공간이 포함되지 않습니다. 예를 들어, studentA의 10GB 쿼터는 스냅샷에서 소비되는 공간의 영향을 받지 않습니다.
# zfs set refquota=10g students/studentA # zfs list -t all -r students NAME USED AVAIL REFER MOUNTPOINT students 150M 66.8G 32K /students students/studentA 150M 9.85G 150M /students/studentA students/studentA@yesterday 0 - 150M - # zfs snapshot students/studentA@today # zfs list -t all -r students students 150M 66.8G 32K /students students/studentA 150M 9.90G 100M /students/studentA students/studentA@yesterday 50.0M - 150M - students/studentA@today 0 - 100M -
추가 편의를 위해 스냅샷에서 사용되는 디스크 공간을 쉽게 관리할 수 있도록 파일 시스템에 또 다른 쿼터를 설정할 수 있습니다. 예를 들면 다음과 같습니다.
# zfs set quota=20g students/studentA # zfs list -t all -r students NAME USED AVAIL REFER MOUNTPOINT students 150M 66.8G 32K /students students/studentA 150M 9.90G 100M /students/studentA students/studentA@yesterday 50.0M - 150M - students/studentA@today 0 - 100M -
이 시나리오에서 studentA는 refquota(10GB) 하드 한계에 도달할 수 있지만 스냅샷이 존재하더라도 studentA가 파일을 제거하여 공간을 복구할 수 있습니다.
앞의 예제에서는 두 쿼터(10GB와 20GB) 중 작은 쿼터가 zfs list 출력 결과에 표시되었습니다. 두 쿼터의 값을 보려면 zfs get 명령을 사용합니다. 예를 들면 다음과 같습니다.
# zfs get refquota,quota students/studentA NAME PROPERTY VALUE SOURCE students/studentA refquota 10G local students/studentA quota 20G local
각각 zfs userquota 또는 zfs groupquota 명령을 사용하여 사용자 쿼터 또는 그룹 쿼터를 설정할 수 있습니다. 예를 들면 다음과 같습니다.
# zfs create students/compsci # zfs set userquota@student1=10G students/compsci # zfs create students/labstaff # zfs set groupquota@labstaff=20GB students/labstaff
현재 사용자 쿼터 또는 그룹 쿼터를 다음과 같이 표시합니다.
# zfs get userquota@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userquota@student1 10G local # zfs get groupquota@labstaff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupquota@labstaff 20G local
다음 등록 정보를 질의하여 일반적인 사용자 디스크 공간 사용량 또는 그룹 디스크 공간 사용량을 표시할 수 있습니다.
# zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 350M none POSIX User student1 426M 10G # zfs groupspace students/labstaff TYPE NAME USED QUOTA POSIX Group labstaff 250M 20G POSIX Group root 350M none
개별 사용자 또는 그룹 디스크 공간 사용량을 식별하려면 다음 등록 정보를 질의합니다.
# zfs get userused@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userused@student1 550M local # zfs get groupused@labstaff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupused@labstaff 250 local
사용자 및 그룹 쿼터 등록 정보는 다른 모든 파일 시스템 등록 정보의 목록을 표시하는 zfs get all dataset 명령을 사용하여 표시되지 않습니다.
다음과 같이 사용자 쿼터 또는 그룹 쿼터를 제거할 수 있습니다.
# zfs set userquota@student1=none students/compsci # zfs set groupquota@labstaff=none students/labstaff
ZFS 파일 시스템에서 사용자 및 그룹 쿼터는 다음과 같은 기능을 제공합니다.
부모 파일 시스템에 설정된 사용자 쿼터 또는 그룹 쿼터는 종속된 파일 시스템에 의해 자동으로 상속되지 않습니다.
하지만 사용자 또는 그룹 쿼터는 사용자 또는 그룹 쿼터가 포함된 파일 시스템에서 복제본 또는 스냅샷을 만들 때 적용됩니다. 마찬가지로 –R 옵션이 없더라도 zfs send 명령을 사용하여 스트림을 만들면 사용자 또는 그룹 쿼터가 파일 시스템에 포함됩니다.
권한이 없는 사용자는 자신의 고유 디스크 공간 사용량만 액세스할 수 있습니다. 루트 사용자나 userused 또는 groupused 권한이 부여된 사용자는 모든 사용자 또는 그룹 디스크 공간 계산 정보에 액세스할 수 있습니다.
userquota 및 groupquota 등록 정보는 ZFS 볼륨, 파일 시스템 버전 4 이전의 파일 시스템, 풀 버전 15 이전의 풀에 설정할 수 없습니다.
사용자 및 그룹 쿼터를 강제 적용하면 몇 초간 작업이 지연될 수 있습니다. 이러한 지연은 사용자가 사용자 쿼터를 초과한 후 시스템에서 사용자가 쿼터를 초과했음을 감지하여 EDQUOT 오류 메시지와 함께 추가 쓰기 작업을 거부하기 때문에 발생할 수 있습니다.
ZFS 파일 시스템이 마운트된 것과 같은 NFS 환경에서 레거시 quota 명령을 사용하여 사용자 쿼터를 검토할 수 있습니다. 아무 옵션도 사용하지 않고 quota 명령을 실행하면 사용자의 쿼터가 초과되었는지를 나타내는 출력 결과만 표시됩니다. 예를 들면 다음과 같습니다.
# zfs set userquota@student1=10m students/compsci # zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 350M none POSIX User student1 550M 10M # quota student1 Block limit reached on /students/compsci
사용자 쿼터를 재설정할 때 쿼터 한도가 더 이상 초과되지 않으면 quota –v 명령을 사용하여 사용자의 쿼터를 검토할 수 있습니다. 예를 들면 다음과 같습니다.
# zfs set userquota@student1=10GB students/compsci # zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 350M none POSIX User student1 550M 10G # quota student1 # quota -v student1 Disk quotas for student1 (uid 102): Filesystem usage quota limit timeleft files quota limit timeleft /students/compsci 563287 10485760 10485760 - - - - -