탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris ZFS 관리 설명서 Oracle Solaris 10 8/11 Information Library (한국어) |
1. Oracle Solaris ZFS 파일 시스템(소개)
3. Oracle Solaris ZFS와 전통적인 파일 시스템의 차이
4. Oracle Solaris ZFS 저장소 풀 관리
5. Oracle Solaris ZFS 루트 파일 시스템 설치 및 부트
6. Oracle Solaris ZFS 파일 시스템 관리
7. Oracle Solaris ZFS 스냅샷 및 복제 작업
8. ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호
quota 등록 정보를 사용하여 파일 시스템이 사용할 수 있는 디스크 공간에 대한 한도를 설정할 수 있습니다. 또한 reservation 등록 정보를 사용하여 지정된 디스크 공간을 파일 시스템에 사용할 수 있도록 보장할 수 있습니다. 두 가지 등록 정보 모두 등록 정보가 설정된 데이터 집합 및 해당 데이터 집합의 모든 종속 항목에 적용됩니다.
즉, 쿼터가 tank/home 데이터 집합에 설정된 경우, tank/home 및 모든 종속 항목에서 사용되는 총 디스크 공간은 쿼터를 초과할 수 없습니다. 이와 비슷하게 tank/home에 예약이 제공된 경우 tank/home 및 모든 종속 항목은 해당 예약으로부터 공간을 가져옵니다. 데이터 집합 및 모든 종속 항목에서 사용되는 디스크 공간은 used 등록 정보로 보고됩니다.
refquota 및 refreservation 등록 정보는 스냅샷 및 복제본과 같은 종속 항목에서 소비되는 디스크 공간을 고려하지 않고 파일 시스템 공간을 관리하는 데 사용됩니다.
이 Solaris 릴리스에서는 특정 사용자 또는 그룹이 소유하는 파일에서 소비되는 디스크 공간에 대해 사용자 또는 그룹 쿼터를 설정할 수 있습니다. 사용자 및 그룹 쿼터 등록 정보는 볼륨, 파일 시스템 버전 4 이전의 파일 시스템, 풀 버전 15 이전의 풀에 설정할 수 없습니다.
파일 시스템 관리에 가장 효과적인 쿼터 및 예약 기능을 결정할 때는 다음과 같은 사항을 고려하십시오.
quota 및 reservation 등록 정보는 데이터 집합 및 해당 종속 항목에서 소비되는 디스크 공간을 관리하는 데 편리합니다.
refquota 및 refreservation 등록 정보는 데이터 집합에서 소비되는 디스크 공간을 관리하는 데 적합합니다.
refquota 또는 refreservation 등록 정보는 quota 또는 reservation 등록 정보보다 높게 설정해도 효과가 없습니다. quota 또는 refquota 등록 정보를 설정할 경우 어느 하나의 값을 초과하는 작업이 시도될 경우 작업이 실패합니다. refquota보다 큰 quota에서 초과가 발생할 수 있습니다. 예를 들어 일부 스냅샷 블록이 수정된 경우 refquota가 초과되기 전에 quota가 실제로 초과될 수 있습니다.
사용자 및 그룹 쿼터를 사용하면 대학 환경과 같이 사용자 계정이 많은 디스크 공간을 보다 쉽게 관리할 수 있습니다.
쿼터 및 예약 설정에 대한 자세한 내용은 ZFS 파일 시스템에 대한 쿼터 설정 및 ZFS 파일 시스템에 대한 예약 설정을 참조하십시오.
ZFS 파일 시스템에서 쿼터는 zfs set 및 zfs get 명령을 사용하여 설정하고 표시할 수 있습니다. 다음 예제에서는 tank/home/jeff에 10GB 쿼터를 설정합니다.
# 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의 디스크 공간만 사용할 수 있습니다.
데이터 집합에서 현재 사용 중인 공간보다 적은 양으로는 쿼터를 설정할 수 없습니다. 예를 들면 다음과 같습니다.
# zfs set quota=10K tank/home/jeff cannot set property for 'tank/home/jeff': size is less than current used or reserved space
데이터 집합에서 데이터 집합이 소비할 수 있는 디스크 공간을 제한하는 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 - - - - -
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이 설정된 경우에는 이 예약 외에도 데이터 집합에서 현재 참조되는 바이트 수를 수용할 수 있도록 예약되지 않은 충분한 풀 공간이 존재하는 경우에만 스냅샷이 허용됩니다.