Oracle® Solaris 11.2의 ZFS 파일 시스템 관리

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

ZFS 파일 시스템에 대한 쿼터 설정

ZFS 파일 시스템에서 쿼터는 zfs setzfs 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 listdf 명령의 출력에도 영향을 줍니다. 예를 들면 다음과 같습니다.

# 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/jefftank/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  -

이 시나리오에서 studentArefquota(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 파일 시스템에서 사용자 및 그룹 쿼터 설정

각각 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 권한이 부여된 사용자는 모든 사용자 또는 그룹 디스크 공간 계산 정보에 액세스할 수 있습니다.

  • userquotagroupquota 등록 정보는 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           -      -      -      -           -