Guia de administração do ZFS Oracle Solaris

Definindo cotas em sistemas de arquivos ZFS

As cotas nos sistemas de arquivos ZFS podem ser configuradas e exibidas utilizando os comandos zfs set e zfs get. No exemplo a seguir, uma cota de 10 GB é configurada no tank/home/bonwick:


# zfs set quota=10G tank/home/bonwick
# zfs get quota tank/home/bonwick
NAME              PROPERTY      VALUE                      SOURCE
tank/home/bonwick quota         10.0G                      local

As cotas também afetam a saída dos comandos zfs list e df. Por exemplo:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home             16.5K  33.5G  8.50K  /export/home
tank/home/bonwick     15.0K  10.0G  8.50K  /export/home/bonwick
tank/home/bonwick/ws  6.50K  10.0G  8.50K  /export/home/bonwick/ws
# df -h /export/home/bonwick
Filesystem             size   used  avail capacity  Mounted on
tank/home/bonwick       10G     8K    10G     1%    /export/home/bonwick

Note que, embora tank/home possua 33.5 GB de espaço em disco disponível, tank/home/bonwick e tank/home/bonwick/ws possuem, cada um, somente 10 GB de espaço em disco disponível, devido à cota em tank/home/bonwick.

Não é possível definir uma cota para uma quantidade menor do que a atualmente em uso por um conjunto de dados. Por exemplo:


# zfs set quota=10K tank/home/bonwick
cannot set quota for 'tank/home/bonwick': size is less than current used or 
reserved space

É possível definir uma refquota em um conjunto de dados que limita quantidade montante de espaço em disco que o conjunto de dados pode consumir. Esse limite de disco rígido não inclui o espaço em disco que é utilizado pelos descendentes. Por exemplo:


# zfs set refquota=10g students/studentA
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
profs               106K  33.2G    18K  /profs
students           57.7M  33.2G    19K  /students
students/studentA  57.5M  9.94G  57.5M  /students/studentA
# zfs snapshot students/studentA@today
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                     106K  33.2G    18K  /profs
students                 57.7M  33.2G    19K  /students
students/studentA        57.5M  9.94G  57.5M  /students/studentA
students/studentA@today      0      -  57.5M  -

Para maior comodidade, é possível configurar outra cota no conjunto de dados para ajudar a gerenciar o espaço em disco que é utilizado pelos instantâneos. Por exemplo:


# zfs set quota=20g students/studentA
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                     106K  33.2G    18K  /profs
students                 57.7M  33.2G    19K  /students
students/studentA        57.5M  9.94G  57.5M  /students/studentA
students/studentA@today      0      -  57.5M  -

Nesse cenário, studentA deve alcançar refquota (10 GB) de limite de disco rígido, mas studentA pode remover arquivos para recuperar, mesmo se existirem instantâneos.

No exemplo anterior, a menor das duas cotas (10 GB comparado a 20 GB) é exibida na saída zfs list. Para visualizar o valor de ambas as cotas, utilize o comando zfs get. Por exemplo:


# zfs get refquota,quota students/studentA
NAME               PROPERTY  VALUE              SOURCE
students/studentA  refquota  10G                local
students/studentA  quota     20G                local

Definindo usuário e grupo de cotas em um sistema de arquivos ZFS

É possível definir uma cota de usuário ou de grupo utilizando os comandos zfs userquota ou zfs groupquota, respectivamente. Por exemplo:


# zfs create students/compsci
# zfs set userquota@student1=10G students/compsci
# zfs create students/labstaff
# zfs set groupquota@staff=20GB students/labstaff

Exiba a cota atual do usuário ou grupo como segue:


# zfs get userquota@student1 students/compsci
NAME              PROPERTY            VALUE               SOURCE
students/compsci  userquota@student1  10G                 local
# zfs get groupquota@staff students/labstaff
NAME               PROPERTY          VALUE             SOURCE
students/labstaff  groupquota@staff  20G               local

É possível exibir o usuário geral ou o grupo de espaço em disco consultando as propriedades a seguir:


# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10G  
# zfs groupspace students/labstaff
TYPE         NAME   USED  QUOTA  
POSIX Group  root   217M   none  
POSIX Group  staff  217M    20G  

Para identificar usuários individuais ou de grupo de uso do espaço em disco, consulte as propriedades a seguir:


# zfs get userused@student1 students/compsci
NAME              PROPERTY           VALUE              SOURCE
students/compsci  userused@student1  455M               local
# zfs get groupused@staff students/labstaff
NAME               PROPERTY         VALUE            SOURCE
students/labstaff  groupused@staff  217M             local

As propriedades de cotas de usuário e de grupo não são exibidas utilizando o comando zfs get all conjunto de dados, que exibem uma lista de todas as outras propriedades do sistema de arquivos.

É possível remover uma cota de usuário de grupo da seguinte forma:


# zfs set userquota@user1=none students/compsci
# zfs set groupquota@staff=none students/labstaff

As cotas de usuário e de grupo no sistema de arquivos ZFS fornecem os recursos a seguir:

Aplicação de usuário e cotas de grupos podem ser adiadas por vários segundos. Esta atraso significa que os usuários podem exceder suas cotas antes que o sistema observe que estão acima da cota e recusa gravações adicionais EDQUOT .

Você pode usar o comando quota herdado, para rever as cotas do usuário em um ambiente NFS, por exemplo, onde uma sistema de arquivos ZFS não esteja montado. Sem quaisquer opções, o comando quota somente exibe a saída se a cota do usuário estiver excedida. Por exemplo:


# zfs set userquota@student1=10m students/compsci   
# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10M  
# quota student1
Block limit reached on /students/compsci

Se você predefinir a cota de usuário e o limite de cotas não estiver excedido, é possível utilizar o comando quota -v para visualizar a cota do usuário. Por exemplo:


# zfs set userquota@student1=10GB students/compsci 
# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10G  
# quota student1
# quota -v student1
Disk quotas for student1 (uid 201):
Filesystem     usage  quota  limit    timeleft  files  quota  limit    timeleft
/students/compsci
              466029 10485760 10485760