17.11. Cotas de Disco

As cotas de disco podem ser usadas para limitar a quantidade de espaço em disco ou o número de arquivos que um usuário ou membros de um grupo podem alocar em uma base por sistema de arquivos. Isso impede que um usuário ou grupo de usuários consuma todo o espaço em disco disponível.

Esta seção descreve como configurar cotas de disco para o sistema de arquivos UFS. Para configurar cotas no sistema de arquivos ZFS, consulte Seção 19.4.8, “Cotas para Datasets, Usuários e Grupos”

17.11.1. Habilitando Cotas de Disco

Para determinar se o kernel do FreeBSD fornece suporte para cotas de disco:

% sysctl kern.features.ufs_quota
kern.features.ufs_quota: 1

Neste exemplo, o 1 indica suporte à cota. Se o valor for 0, adicione a seguinte linha a um arquivo de configuração de kernel personalizado e reconstrua o kernel usando as instruções em Capítulo 8, Configurando o kernel do FreeBSD:

options QUOTA

Em seguida, habilite as cotas de disco no arquivo /etc/rc.conf:

quota_enable="YES"

Normalmente, na inicialização, a integridade da cota de cada sistema de arquivos é verificada por quotacheck(8). Esse programa garante que os dados no banco de dados de cotas reflitam adequadamente os dados no sistema de arquivos. Este é um processo demorado que afetará significativamente o tempo que o sistema leva para inicializar. Para pular este passo, adicione esta variável ao arquivo /etc/rc.conf:

check_quotas="NO"

Por fim, edite o arquivo /etc/fstab para habilitar as cotas de disco por sistema de arquivos. Para habilitar cotas por usuário em um sistema de arquivos, adicione userquota ao campo de opções na entrada /etc/fstab para o sistema de arquivos ativar as cotas. Por exemplo:

/dev/da1s2g   /home    ufs rw,userquota 1 2

Para ativar cotas de grupo, use groupquota. Para ativar cotas de usuários e grupos, separe as opções com uma vírgula:

/dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2

Por padrão, os arquivos de cota são armazenados no diretório raiz do sistema de arquivos como quota.user e quota.group. Consulte fstab(5) para obter mais informações. Especificar um local alternativo para os arquivos de cotas não é recomendado.

Quando a configuração estiver concluída, reinicialize o sistema e o /etc/rc executará automaticamente os comandos apropriados para criar os arquivos de cotas iniciais para todas as cotas ativadas em /etc/fstab.

No curso normal das operações, não deve haver necessidade de executar manualmente o quotacheck(8), quotaon(8), ou quotaoff(8). No entanto, deve-se ler estas páginas de manual para se familiarizar com sua operação.

17.11.2. Definindo Limites de Cota

Para verificar se as cotas estão ativadas, execute:

# quota -v

Deve haver um resumo de uma linha sobre o uso de disco e limites de cota atuais para cada sistema de arquivos em que as cotas estão ativadas.

O sistema agora está pronto para receber limites de cota com edquota.

Várias opções estão disponíveis para impor limites à quantidade de espaço em disco que um usuário ou grupo pode alocar e quantos arquivos eles podem criar. As alocações podem ser limitadas com base no espaço em disco (cotas de bloco), no número de arquivos (cotas de inode) ou em uma combinação de ambos. Cada limite é subdividido em duas categorias: limites rígidos e flexíveis.

Um limite rígido não pode ser excedido. Quando um usuário atinge um limite rígido, nenhuma outra alocação pode ser feita nesse sistema de arquivos por esse usuário. Por exemplo, se o usuário tiver um limite rígido de 500 kbytes em um sistema de arquivos e estiver usando atualmente 490 kbytes, o usuário poderá alocar apenas 10 kbytes adicionais. A tentativa de alocar 11 kbytes adicionais falhará.

Os limites flexíveis podem ser excedidos por um período de tempo limitado, conhecido como período de tolerância, que é uma semana por padrão. Se um usuário permanecer acima do limite por mais tempo do que o período de carência, o limite flexível se tornará um limite rígido e nenhuma outra alocação será permitida. Quando o usuário cai abaixo do limite flexível, o período de carência é zerado.

No exemplo a seguir, a cota da conta test está sendo editada. Quando edquota é invocado, o editor especificado por EDITOR é aberto para editar os limites de cota. O editor padrão é configurado para vi.

# edquota -u test
Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)

Normalmente, há duas linhas para cada sistema de arquivos com cotas ativadas. Uma linha representa os limites do bloco e a outra representa os limites do inode. Altere o valor para modificar o limite de cota. Por exemplo, para aumentar o limite de blocos em /usr para um limite flexível de 500 e um limite rígido de 600, altere os valores nesse campo. linha da seguinte forma:

/usr: kbytes in use: 65, limits (soft = 500, hard = 600)

Os novos limites de cotas entram em vigor ao sair do editor.

Às vezes, é desejável definir limites de cota em vários usuários. Isso pode ser feito primeiro atribuindo o limite de cota desejado a um usuário. Em seguida, use -p para duplicar essa cota para um intervalo especificado de IDs de usuário (UIDs). O comando a seguir duplicará esses limites de cota para UIDs de 10.000 até 19.999:

# edquota -p test 10000-19999

Para mais informações, consulte edquota(8).

17.11.3. Verificando Limites de Cota e Uso de Disco

Para verificar cotas individuais de usuários ou de grupos e uso de disco, use quota(1). Um usuário só pode examinar sua própria cota e a cota de um grupo do qual é membro. Somente o superusuário pode visualizar todas as cotas de usuários e grupos. Para obter um resumo de todas as cotas e uso de disco para sistemas de arquivos com cotas ativadas, use repquota(8).

Normalmente, os sistemas de arquivos nos quais o usuário não está usando nenhum espaço em disco não serão exibidos na saída de quota, mesmo que o usuário tenha um limite de cota atribuído a esse sistema de arquivos. Use -v para exibir esses sistemas de arquivos. A seguir está a saída de amostra de quota -v para um usuário que possui limites de cota em dois sistemas de arquivos.

Disk quotas for user test (uid 1002):
     Filesystem  usage    quota   limit   grace   files   quota   limit   grace
           /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75               0      50      60

Neste exemplo, o usuário está atualmente 15 kbytes sobre o limite flexível de 50 kbytes em /usr e tem 5 dias de período de carência restante. O asterisco * indica que o usuário está atualmente acima do limite de cota.

17.11.4. Quotas sobre o NFS

As cotas são impostas pelo subsistema de cotas no servidor NFS. O daemon rpc.rquotad(8) disponibiliza informações de quota para quota em clientes NFS, permitindo que os usuários nessas máquinas visualizem suas estatísticas de cota.

No servidor NFS, ative o rpc.rquotad removendo o # desta linha em /etc/inetd.conf:

rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

Em seguida, reinicie o inetd:

# service inetd restart

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.