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 |
É 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:
Uma cota de usuário ou de grupo definida no sistema de arquivos pai que não é automaticamente herdada por um sistema de arquivos descendente.
No entanto, a cota do usuário ou grupo é aplicada quando um clone ou um instantâneo é criado a partir de um sistema de arquivos que tenha uma cota do usuário ou grupo. Do mesmo modo, uma cota de usuário ou de grupo que está incluída com o sistema de arquivos quando um fluxo é criado utilizando o comando zfs send, mesmo sem a opção -R.
Usuários sem privilégio só podem acessar seu próprio espaço em disco. O usuário raiz ou um usuário a quem foi concedido o privilégio de userused ou groupused, pode acessar a informação de contabilidade do espaço em disco de um grupo ou usuário de todos.
As propriedades userquota e groupquota não podem ser definidas nos volumes ZFS, em um sistema de arquivos anterior a versão 4, ou em um pool anterior a versão 15 do pool.
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 |