Artigos

27 de maio de 2016

Cotas de disco

Mais artigos de »
Escrito por: Leonardo Souza
Tags:

Neste artigo vamos explicar o conceito de cotas de disco, recurso essencial para o administrador que deseja controlar a quantidade de disco que os usuários podem ou não utilizar. Veremos como habilitar o recurso, ativá-lo para diretórios específicos e checar o status destas cotas.

Cotas de disco

Cota de discos é um recurso do sistema operacional que permite a definição de limites na quantidade de espaço em disco e/ou número de arquivos que um determinado usuário ou grupo de usuários podem utilizar. Dessa forma é possível que usuários distintos possuam permissão para utilizar espaços distintos, no disco.




Este recurso é muito utilizado quando se trabalha com compartilhamento de recursos e se deseja limitá-lo para determinados usuários, sem que isso interfira na forma como outros usuários utilizam o disco. Dessa forma evita-se que todo o espaço seja consumido por um usuário em detrimento de outros.

Para utilizar este recurso é necessário que a cota de disco esteja habilitado no kernel do sistema. Se o kernel não tiver suporte a cota de disco precisaremos habilitar.

Existe uma forma de confirmar se o kernel possui suporte à cotas de disco.

Para isso digite o comando “sysctl kern.features.ufs_quota”.

cotas de disco

Se o comando retornar o valor 1, então o kernel possui suporte a cotas habilitado, caso o retorno seja 0, então não há o suporte a este recurso no kernel.

Sendo assim é preciso habilitar o recurso no kernel e recompilá-lo.

Habilitando a cota de disco

Se o recurso não estiver habilitado precisaremos habilitá-lo. Faremo isso inserindo uma linha no arquivo de configuração do kernel GENERIC do FreeBSD e compilando novamente o kernel.

Acesse o arquivo de configuração GENERIC com o editor de textos ee.

cotas de disco

Insira a linha:

options QUOTA

Depois de inserir a linha compile novamente o kernel.

Dependendo da sua versão do sistema o arquivo GENERIC pode estar em outro diretório.

Para mais detalhes sobre compilação do kernel leia o artigo que trata deste tema.

Ativando a cota de disco

Logo depois vamos ativar as cotas de disco por meio do arquivo /etc/rc.conf. Basta para isso inserir a seguinte linha:

enable_quota=”YES”

cotas de disco

A integridade das cotas existentes no sistema é normalmente checada por meio do utilitário quotacheck no momento do boot do sistema. Sendo assim, quando o sistema inicializa este utilitário é carregado e ele realiza toda checagem no sistema de arquivos relacionados as cotas pré-configuradas.

Embora muito útil este procedimento afeta o boot do sistema, podendo torná-lo muito lento. Para acabar com este possível problema de desempenho do sistema é possível desabilitar esta checagem durante o boot do sistema.

Para isso precisamos editar o arquivo /etc/rc.conf adicionando a seguinte linha:

check_quota=”NO”

Dessa forma estamos desabilitando a checagem do sistema nos diretórios no momento do boot.

Como explicamos no artigo arquivo FSTAB, os pontos de montagem do sistema são definidos no arquivo /etc/fstab. Sendo assim, precisamos especificar, neste arquivo, quais são os pontos de montagem do sistema que utilizarão cotas de disco. Em outras palavras, é neste arquivo que ativamos o uso de cotas de disco para usuários e grupos para todo o sistema.

Sendo assim, para ativar o uso de cotas de disco para usuários devemos adicionar a opção userquota no campo de opções na entrada referente ao ponto de montagem que desejamos habilitar o recurso. Por outro lado, para ativar a opção para grupos devemos inserir a opção groupquota no campo opções da entrada referente ao ponto de montagem desejado.

Veja abaixo uma entrada contendo a opção userquota:

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

Desta forma estamos ativando o uso de cota de disco para usuários no dispositivo /dev/das que será montado no diretório /home. Para mais detalhes sobre entradas do arquivo /etc/fstab leia o artigo “arquivo FSTAB”.

Veja abaixo uma entrada contendo a opção groupquota:

/dev/sdb1 /home ufs rw,groupquota 1 2

Desta forma estamos ativando a cota de disco para grupos de usuários no dispositivo /dev/sdb1 que será montado no diretório /home.

É possível também habilitar tanto a cota de discos para usuários quanto para grupos simultaneamente. Veja um exemplo abaixo:

cotas

Neste exemplo o dispositivo /dev/ada0p2 será montado no diretório / (raiz) e nele estará ativado a cota de disco para grupos e usuários do sistema.

Para checar se o recurso está ativado utilizamos o comando “quota -v”.

ativado

Dessa forma o sistema lista todos diretórios que possuem cotas ativas. Neste exemplo o diretório / (raiz).

Arquivos de Cotas

Por padrão os arquivos de cota são armazenadas no diretório raiz do ponto de montagem configurado no arquivo /etc/fstab e se chamam quota.user e quota.group. Sendo assim, se ativarmos a cota de disco no diretório /home os estes arquivos serão criados dentro deste diretório.

É possível definir outro lugar para estes arquivos, porém não é recomendado que eles sejam armazenados em outro diretório diferente do especificado, pois pode causar problemas nas definições de uso das cotas.

Na imagem abaixo vemos os arquivos dentro do diretório / (raiz).

arq

Não é necessário criar estes arquivos manualmente, basta que após a ativação do recurso o sistema seja reiniciado. Dessa forma o sistema executará os comandos necessários para criar os arquivos de cotas segundo o especificado no arquivo /etc/fstab.

Tipos de Cotas

Existem várias formas de estabelecer cotas de disco para os usuário e/ou grupos, e quantos arquivos estes podem criar no sistema. Esta limitação pode ser definida por espaço em disco (cotas de bloco), número de arquivos (cotas de inodes), ou uma combinação de ambos. Existem ainda duas categorias para estas limitações: limites físicos, conhecido também como limites rígidos e limites lógicos, também chamados de limites flexíveis.

O limite físico não pode ser excedido. Sendo assim, quando o usuário atinge seu limite físico não conseguirá utilizar mais nenhum byte a mais neste sistema de arquivo. Por exemplo, se um usuário tem um limite físico de 100 Mb em um sistema de arquivo e já consumiu 90 Mb, o usuário só pode alocar um 10 Mb que lhe resta.

Por outro lado, o limite lógico pode ser excedido por uma quantidade específica de tempo. Este período é conhecido como período de favor (grace time),  que é, por padrão, uma semana. Se este usuário estiver utilizando espaço superior ao seu limite lógico por tempo superior ao período de favor, suas cotas se tornarão limites físicos e nenhuma outra alocação será permitida.

Este limite retorna ao status de limite lógico quando o usuário apagar os arquivos excedentes liberando assim espaço no disco, ficando abaixo do limite que está configurado para ele.

Definido Cotas de Uso

Para se definir cotas utilizamos o comando “edquota -u usuario”.

# edquota -u usuario

definindo-cotas

Este comando abre o editor padrão do sistema definido na variável de ambiente EDITOR, que na maioria por padrão é o editor “vi”.

Se quiser saber qual o editor definido na variável EDITOR utilize o comando echo.

# echo $EDITOR

echo EDITOR

Como podemos ver, nosso sistema está realmente utilizando o editor “vi”.

Voltando ao “edquota”, podemos ver que esta opção exibe duas linhas para cada sistema de arquivo (pontos de montagem) que tenha contas ativas, sendo uma para limites de blocos,  quantidade de armazenamento definidos em kbytes,  e outra que representa os limites de inodes (quantidade de arquivos).

Vamos definir o limite de 50k como limite lógico e 70k como limite físico para o usuário leo, que já está utilizando 36k do diretório especificado.

definido-cotas2

Basta salvar a alteração ela entrará em vigor no mesmo momento.

Existe também a possibilidade de atribuir limites de cota para vários usuário ao mesmo tempo. Para isso utiliza-se o UID de usuário, ou seja, seu código de identificação no sistema.

Dessa forma usaremos o parâmetro -p.

# edquota -p leo 10000-10500

Dessa forma estou atribuindo as configurações de cota de disco do usuário leo para todos os usuários que possuam UID nesta faixa, ou seja, de 10000 até 10500.

Checando limites de cotas

É possível realizar uma checagem e descobrir quais são as cotas de disco definidas no sistema, para isso utiliza-se o comando quota. Um usuário consegue visualizar apenas suas próprias cotas e as cotas do grupo a que ele pertence.

Veja a imagem abaixo.

cota-user

Perceba que o usuário comum que digitou o comando pode visualizar as cotas de disco configurados para ele, incluído o limite já utilizado.

Por outro lado, o usuário root possui permissão para visualizar as cotas de outros usuário e grupos. Basta para isso digitar o nome do usuário ou grupo após o comando.

cota-root

Conclusão

A configuração de cotas de disco é um recurso muito útil e fácil de ser implementado. Ideal para evitar que determinados usuários consumam mais recursos do sistema que o permitido. Dessa forma temos um maior controle por parte do administrador do sistema e os recursos distribuídos de forma mais organizada.

Espero que o conteúdo tenha sido útil.






Sobre o Autor

Foto de perfil de Leonardo Souza
Leonardo Souza
Bacharel em Informática, pós graduado em Segurança de Redes de Computadores e analista de Segurança da Informação. Entusiasta de Segurança da Informação e usuário FreeBSD, porém sem xiismo.




0 Comments


Seja o Primeiro a Comentar!


You must be logged in to post a comment.