domingo, 16 de dezembro de 2012

Cotas de Disco no Linux

Olá!

Uma funcionalidade do Linux não muito usada, mas bem útil em algumas situações é o controle de cotas em disco.

Um bom exemplo para utilização de cotas em disco é um cenário onde as estações de trabalho usam Linux com uma base de autenticação centralizada e perfil remoto por NFS. 

Certa vez administrei um servidor nesse cenário.
Esse servidor possuia o diretório /home compartilhado via NFS com os Desktops. Isso tornava o ambiente bem flexível mas tinha um limite de espaço em disco. Sem o uso de cotas um usuário poderia encher seu diretório home com arquivos pesados e impedir os demais usuários de gravarem nos seus respectivos diretórios. Para evitar isso, as cotas em disco são uma ótima escolha.

Nesse post, colocarei os passos para habilitar e configurar cotas. Explicarei alguns comandos e no final há um vídeo demonstrando todo o procedimento na prática.

O ambiente consiste em uma máquina virtual (VirtualBox) com um disco de sistema operacional e um segundo disco de 5 GB com LVM. Foi criado um LV de 2 GB para ser usado nos testes de Cotas.
Durante os testes serão usados dois usuários e um grupo:

Usuários: mbsec e mbsec2
Grupo: mbsec

Vamos lá!!

Basicamente, os passos serão os seguintes:
1 - Habilitar recurso de cotas na partição.
2 - Configurar cotas para um determinado usuário.
3 - Fazer testes de cópia e gravação na partição com esse usuário.
4 - Repetir os passos 2 e 3, porém com cotas de grupos.

Seguem os comandos de forma abreviada:
1 - Primeiramente precisamos habilitar os recursos de cotas na partição.

Para isso, abra o arquivo /etc/fstab e adicione as opções usrquota e grpquota nas opções da partiação.
Veja o exemplo:
 /dev/MBSEC/LV1  /mnt/Cotas/LV1 ext4 defaults,usrquota,grpquota  0  0

Após adicionar as opções no /etc/fstab, aplique elas remontando a partição:
# mount -o remount /dev/MBSEC/LV1

Para conferir se as opções foram habilitadas, digite o comando mount e verifique os detalhes da partição.

2 - Como as cotas foram recém habilitadas, precisamos criar os arquivos de configurações de cotas.

São dois arquivos. Um deles armazena configurações de usuários e outro de grupo. 
Seus nomes são aquota.user e aquota.group, respectivamente. Eles são arquivos binários e não podemos editá-los em texto claro com o vi, por exemplo.

Para criação desses arquivos, a melhor forma é executar o comando quotacheck.
Esse comando verifica as configurações de cotas das partições com o recurso habilitado e grava as informações nos arquivos mencionados acima. Caso esses arquivos não existam, ele cria. : )

Então, digite o seguinte comando:
# quotachek -augv

-a : diz para ele checar todas as partições com cotas habilitadas.
-u : verifica as configurações de cotas para os usuários.
-g : verifica as configurações de cotas para os grupos.
-v : modo verbose, para mostrar detalhes do que ele está fazendo.

Após executar o comando, verifique o ponto de montagem da partição. Deverão aparecer os dois arquivos mencionados acima. 
OBS.: Eles sempre são criados na raíz do ponto de montagem da partição.

3 - Agora vamos habilitar o controle de cotas no sistema:
# quotaon -a

OBS.: Se quiser desabilitar é só digitar quotaoff -f

4 - Agora é só editar as cotas e fazer os testes.

O comando para edição de cotas é o edquota. Os principais parâmetros são descritos abaixo:
-u usuário : edita as configurações de cotas de usuário
-g grupo    : edita as configurações de cotas de grupo.
-t               : define as configurações de grace time para os usuários.
-t -g           : define as configurações de grace time para os grupos.
-p usuário1 usuário2 : copia as configurações de cotas de usuário1 para usuário2.

5 - Verificar as cotas de usuários e grupos.

Para ver o status das cotas de usuários e grupos, use o comando repquota. Ele mostra um relatório das configurações de cotas. Abaixo seguem as principais opções:
-a : lista configurações de todas as partições que tenham cotas habilitadas.
-u : lista as configurações de usuários (é a opção default).
-g : lista as configurações de grupos.

OBS.: As cotas são atualizadas de tempos em tempos. Se estiver fazerndo algum teste e precisar forçar a atualização das cotas, execute o comando quotacheck.

Ok. Esses comandos acima são o que precisamos conhecer para gerenciar cotas. Agora temos alguns conceitos de cotas.

Quando editar as cotas de um usuário ou grupo, haverão as seguintes colunas:

Filesystem
Indica a partição onde as cotas serão aplicadas.

blocks
Indica a quantidade de blocos atualmente sendo usada por aquele usuário ou grupo.
Considere 1 bloco = 1 KB

soft
Essa é a cota soft de arquivos, ou seja, os usuários podem usar até esse limite sem problemas. Após esse limite eles terão um tempo (grace time) de tolerância para limpar alguns arquivos e ficar abaixo desse limite. Se eles não limparem nada até o grace time expirar, qualquer cópia será bloqueada até que algo seja apagado.

hard
Esse é o limite absoluto que cada usuário ou grupo tem. Em nenhuma hipótese os usuários conseguirão ocupar mais espaço do que definido aqui.

As próximas 3 colunas (inodes, soft e hard) tem os mesmos conceitos explicados acima, porém para o controle de inodes e não de arquivos.

Ok. Agora já sabemos os comandos e os conceitos. Vamos aos testes práticos para resolver as dúvidas remanescentes:



Tutorial LVM

Olá!

LVM (Logical Volume Management) é uma solução excelente para servidores que mudam com certa frequencia seus requisitos de espaços em discos. Alguns exemplos são servidores de Banco de Dados que de tempos em tempos precisam ser reajustados para comportar o crescimento das databases, servidores de e-mails que precisam disponibilizar espaços para novas contas, etc. Bom, são diversas aplicações que aplicações do dia-a-dia que precisam dessas mudanças e o LVM torma a vida do administrador bem mais fácil.

Nesse post, colocarei os passos para criação de LVM e logo abaixo um vídeo demonstrando todo o procedimento na prática. Vamos lá.

A configuração de LVM, basicamente, consiste dos seguintes passos:

1 - Criar uma partição em um disco destinado à LVM.
2 - Transformar essa partição em uma partição de LVM.
3 - Apresentar a partição ao LVM através do comando pvcreate.
4 - Criar um Volume Group (VG) com essa partição.
5 - Criar um ou mais Logical Volumes (LV).
6 - Formatar esses LVs com um sistema de arquivos de sua preferência.
7 - Criar um ponto de montagem para esse LV.

Para referência, seguem as informações do ambiente:
Disco:                          /dev/sdb
Partição para LVM:     /dev/sdb1
Nome do VG:              MBSEC
Nome do LV:               LV1

Seguem os comandos de forma abreviada:
1 - Criar uma partição destinada à LVM no disco /dev/sdb.
# fdisk /dev/sdb
> n para nova partição.
> t para alterar o ID da partição de Linux (83) para Linux LVM (8e).
> w para salvar e sair.

2 - Transformar essa partição em uma partição de LVM.
# pvcreate /dev/sdb1

3 - Criar um Volume Group (VG) com essa partição. 
# vgcreate MBSEC /dev/sdb1

4 - Criar um ou mais Logical Volumes (LV).
# lvcreate -L 1G -n LV1 MBSEC

5 - Formatar esses LVs com um sistema de arquivos de sua preferência.
# mkfs.ext4 /dev/MBSEC/LV1

Segue o video com os passos na prática: