Configurando quota em disco no Linux – p3

No post anterior, nós habilitamos o suporte a quota no /etc/fstab e criamos os arquivos para gerenciamento das quotas. Agora, vamos fazer a instalação do pacote… mas antes de instalar, primeiro vamos checar se o pacote quota não está instalado:

# dpkg -l | grep -i quota

Caso o comando acima não retorne nada, podemos instalar o pacote:

# apt-get install quota
Lendo listas de pacotes… Pronto
Construindo árvore de dependências
Lendo informação de estado… Pronto
Pacotes sugeridos:
libnet-ldap-perl
Os NOVOS pacotes a seguir serão instalados:
quota
0 pacotes atualizados, 1 pacotes novos instalados, 0 a serem removidos e 34 não atualizados.
É preciso baixar 492kB de arquivos.
Depois desta operação, 1327kB adicionais de espaço em disco serão usados.
Obter:1 http://ftp.debian.org stable/main quota 3.16-7 [492kB]
Baixados 492kB em 13s (37,3kB/s)
Pré-configurando pacotes …
Selecionando pacote previamente não selecionado quota.
(Lendo banco de dados … 53343 arquivos e diretórios atualmente instalados).
Desempacotando quota (de …/archives/quota_3.16-7_i386.deb) …
Processando gatilhos para man-db …
Configurando quota (3.16-7) …

Pacote instalado, vamos levantar o módulo referente a versão de quota que desejamos utilizar. Para isso, vamos no diretório do módulos:

# cd /lib/modules/$(uname -r)/kernel/fs/

No comando acima, substituí a versão do kernel por uma variável; o bash é inteligente para interpretar o que tem dentro dos parênteses e me deixar dentro do diretório do kernel que estou usando no momento!

Ahnn, já falei sobre módulos aqui no blog também. Para relembrar sobre eles, leia o post aqui.

Vamos ver o conteúdo desse diretório:

# pwd
/lib/modules/2.6.26-2-686/kernel/fs

# ls
9p    autofs   binfmt_aout.ko  configfs  efs       ext4      gfs2     isofs  jfs         msdos       nfsd   qnx4         romfs  vfat
adfs  autofs4  binfmt_misc.ko  cramfs    exportfs  fat       hfs      jbd    lockd       ncpfs       nls    quota_v1.ko  sysv   xfs
affs  befs     cifs            dlm       ext2      freevxfs  hfsplus  jbd2   mbcache.ko  nfs         ntfs   quota_v2.ko  udf
afs   bfs      coda            ecryptfs  ext3      fuse      hpfs     jffs2  minix       nfs_common  ocfs2  reiserfs     ufs

Se observarem, acima temos todos módulos para todos filesystems (fs) suportados nessa versão de kernel, incluindo as versões de quota.

Já decidimos que iremos usar quota_v2; para habilitar, basta usar o comando modprobe com o nome do módulo sem a extensão .ko:

# modprobe quota_v2

Checando se o módulo foi habilitado:

# lsmod | grep quota
quota_v2                7968  0

Após o módulo estar no ar, temos que remontar a partição onde aplicamos quota. Isso é necessário pois somente editamos o arquivo /etc/fstab; se não remontarmos a partição, a implementação só fica disponível no próximo reboot. Como temos a sorte de usar um sistema que não precisa reiniciar a cada comando executado, vamos remontar a partição…

E aqui fica um lembrete: não remonte a partição houver pessoas utilizando :D. Para remontar a partição:

# mount -o remount,rw /dev/sda6

Não estou bem lembrada, mas acho que caiu uma pergunta sobre remount na LPI também… fica aí a dica para quem estiver estudando, estudar sobre o comando mount e suas opções de montagem 😉 !

Após o comando acima, podemos checar se o suporte a quota está habilitado na partição; vamos usar de novo o comando mount:

# mount
/dev/sda6 on /home type ext3 (rw,usrquota,grpquota)

Pela saída do comando mount, o suporte foi habilitado com sucesso. Mas para ter certeza, também podemos usar o comando quotacheck, que é um utilitário para checar, criar e reparar arquivos de quota:

# quotacheck -acugv
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sda6 [/home] done
quotacheck: Checked 8 directories and 23 files

Falando sobre as opções do quotacheck e a saída do comando acima:

a => checar todos sistemas de arquivos que tem quota habilitada.
c => criar novos arquivos de gerenciamento de quota.
u => checa os arquivos dos usuários.
g => checa os arquivos dos grupos.
v => modo falante :D; isto é… verbose para mostrar mais detalhes. Os detalhes indicam qual o diretório que foi aplicado quota e também a quantidade de arquivos e diretórios existentes na partição.

Quando executei o comando quotacheck, apareceu o seguinte warning (aviso):

quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.

Isso não chega ser um erro, a quota que você definir para os usuários vai funcionar normalmente. “Mas”, é um aviso que não deve ser ignorado, pois está dizendo que o kernel provavelmente tem suporte a quota em journal, mas isso não está sendo usado e que é bacana considerar mudar para quota journal para evitar rodar o quotacheck depois que o sistema desligou inadequadamente.

Mas o que ser isso, Nix!!!! Vamos la decifrar essa mensagem. Na verdade, estamos usando o filesystem ext3 que tem suporte a journaling. O journaling, nada mais é do que uma técnica implementada no filesystem onde, caso haja queda de energia, a checagem de erros na partição é feita mais rapidamente.

Sendo assim, apenas precisamos habilitar o journaling para as quotas também… e não é difícil!  Para isso, vamos editar o fstab para incluir as opções usrjquota (para usuário) e grpjquota (para grupo). Diferença para as opções que já estão no arquivo:

✔ Vamos colocar um j, para indicar journaling, e também falar os nomes dos arquivos aquota.user e aquota.group

✔ Também precisamos especificar que o formato de quota utilizado é quota_v2, com a opção jqfmt (journaling quota format) usando o valor vfsv0.

Atualmente nosso /etc/fstab está assim:

# vim /etc/fstab
/dev/sda6       /home           ext3    defaults,usrquota,grpquota        0       2

Vamos fazer a alteração e a linha acima deve ficar assim:

/dev/sda6 /home ext3 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 2

Checando se realmente o que fizemos vai funcionar… vamos executar de novo o quotacheck:

# quotacheck -acugv
quotacheck: Scanning /dev/sda6 [/home] done
quotacheck: Checked 8 directories and 23 files

Opa! Sem warning 😀 ! Vamos finalmente definir quota para os usuários no próximo post! Até lá! 🙂

Configurando quota em disco no Linux – p2

Para entender melhor a questão de quotas, vamos ver as figuras abaixo. Na primeira, temos o hd particionado, mas sem o sistema de quotas. Separamos tudo, até a partição /home, pois sabemos que quanto maior for o espaço, mais os usuário vão querer gravar coisas:

HD particionado

Até aqui, tudo como manda o figurino… Mas o nosso HD está apenas particionado, então vejam como está o /home:

/home sem quotaBem… na figura acima, o home esta uma folia so. Usuários podem gravar eternamente ate o espaço da partição acabar. Mas isso não e bom… imagine se a Familia grava um arquivo que ocupe a partição inteira? Imediatamente a Nix, a Vana e o Nene vão ficar sem espaço para escrever nada…

Entra aí, então as quotas, para organizar as coisas e fazer com que cada usuário grave até o limite permitido. O desenho que ilustra é basicamente o mesmo, o que muda agora, é que cada usuário tem sua ‘caixinha’, isto é, tem o seu espaço em disco reservado para gravar… e não vai impedir que outro usuário grave também, pois o limite dele é a quota que vamos implementar. Vejam:

/home com quota

Colocando a mão na massa

Definimos a partição, vamos editar o arquivo /etc/fstab que contém as tabelas de partições e falar que a partir de agora ele terá quota!

Eu ja falei sobre o fstab aqui no blog, é uma boa idéia dar uma lida no post pra entender como ele é organizado antes de editar ele 😉 !

Só que antes de editar o arquivo, vamos ter aquele cuidado em fazer uma cópia de segurança… eu já tenho o meu diretório de backup que fica no meu /root/backup:

# cd /root/backup/

# cp /etc/fstab fstab.original

# ls -l fstab.original
-rw-r–r– 1 root root 521 Out 23 19:14 fstab.original

Cópia feita, vamos editar o arquivo:

# vim /etc/fstab

A linha do /home atualmente está assim:

/dev/sda6       /home           ext3    defaults        0       2

Acima, a opção de montagem do /home e a defaults que engloba as opções rw, suid, dev, exec, auto, nouser, e async. Vamos acrescentar duas opções, usrquota (para usuário) e grpquota (para grupo):

/dev/sda6  /home  ext3    defaults,usrquota,grpquota        0  2

E é vírgula ( , ) depois da opção defaults e não pode ter espaços entre as opções 😉 .

Depois de habilitarmos o suporte, vamos criar os arquivos de gerenciamento de quota. Como são arquivos que o próprio quota irá gerenciar, podemos criá-los usando o comando touch.

Os arquivos devem ser criados no diretório da partição que será aplicada quota; no nosso caso, o /home:

# cd /home/

# touch aquota.user aquota.group

Após criar os arquivos, mudamos a permissão para leitura somente para o root:

# chmod 600 aquota.*

# ls -l aquota.*
-rw——- 1 root root 0 Out 24 04:42 aquota.group
-rw——- 1 root root 0 Out 24 04:42 aquota.user

Suporte habilitado, arquivos criados… no próximo post, vou falar sobre a instalação do pacote quota e a configuração.

Até lá 🙂 !

Configurando quota em disco no Linux – p1

Nos próximos posts vou falar sobre quotas em disco. A vantagem das quotas está no controle do espaço em disco. Se você possui um HD não particionado, não tem esse controle… os usuários vão gravando, gravando até que um dia o espaço acaba. Tudo bem, hoje em dia o tamanho dos HDs aumentou e o preço caiu bastante; mas ainda assim é importante manter o controle quanto ao uso do espaço em disco.

Antes de colocar a mão na massa, achei legal fazer um checklist do que vamos fazer para implementar quotas, depois abaixo vou colocando mais detalhes:

1) Saber qual a versão do kernel para checar se este tem suporte a quota e aplicar a versão correta da mesma;

2) Saber o filesystem utilizado e se este possui suporte nativo a quota ou precisa aplicar algum patch, ou depende da instalação de algum pacote para funcionar;

3) Definir qual partição será aplicada quota;

4) Editar o arquivo /etc/fstab para indicar que a partição irá usar quota;

5) Criar os arquivos de gerenciamento de quota;

6) Instalar o pacote quota;

7) Habilitar módulos se necessário;

8) Remontar a partição onde foi aplicado quota;

9) Definir as quotas para os usuários;

10) Testar 😀 .

Checklist na mão, é importante dizer que atualmente, existem duas versões de quotas:

✔ quota_v1 (vfsold) – utilizada somente no  kernel da série 2.4

✔ quota_v2 (vfsv0) – utilizada no kernel da série 2.6

Aliás, o kernel 2.6 traz as duas versões (quota_v1 e quota_v2); o administrador escolhe qual versão deseja utilizar e habilita o módulo no kernel.

Além da questão do kernel, é importante falar que a principal diferença entre as versões de quota, são os arquivos criados para gerenciar a quota na partição.

Se você optar por usar quota_v1, os arquivos de gerenciamento são o quota.user e quota.group; se optar por usar quota_v2, os arquivos são aquota.user e aquota.group.

Uma vantagem de se usar quota_v2 é que esta versão checa os arquivos de dados de quota corrompidos e trabalha mais rápido mesmo em grandes partições.

Na LPI costuma cair perguntas sobre quotas e com certeza esses arquivos são uma pegadinha… é bom ficar atento aos nomes e às versões de quota para não errar na prova 😉 !

O meu kernel é 2.6, então vou trabalhar com quota_v2; lembrando que o comando para checar a versão do kernel é o uname:

# uname  -r
2.6.26-2-686

Também é bom saber é que o sistema de quotas é uma funcionalidade que deve ser suportada pelo filesystem e pelo kernel; ou seja… para que você possa aplicar quota em uma partição, tanto o sistema de arquivos dela (ext3, reiserfs, xfs, etc) quanto o kernel devem oferecer esse suporte.

Então, antes de sair limitando o quanto um usuário pode escrever em disco, é boa idéia verificar o filesystem da partição. Isso pode ser verificado com o comando mount:

# mount
/dev/sda6 on /home type ext3 (rw)

No meu caso, o filesystem é o ext3… ele possui suporte a quotas – humm… eu não achei o site oficial do ext3 listando todas as features incluindo quotas… mas tem uma apresentação do Dr. Stephen Tweedie que fala sobre o suporte a quotas no ext3 – então significa que posso aplicar quotas ai!

E para saber se o kernel possui suporte a quota:

# grep CONFIG_QUOTA /boot/config-2.6.26-2-686
CONFIG_QUOTA=y

Lembrando que se a opção não estiver habilitada, a solução é recompilar o kernel para oferecer suporte a quota!

Um outro filesystem que também permite aplicar quotas é o ReiserFS; o serviço não vem como padrão, para ter o suporte é necessário aplicar um patch. Depois que aplicar o patch, os procedimentos para instalação e configuração de quotas é o mesmo que está sendo descrito para o ext3.

Vamos definir também em qual partição será aplicado a quota. Com um HD particionado, estamos limitando o usuário escrever somente até o tamanho da partição; configurando quotas, garantimos também que o espaço não seja ocupado por apenas um usuário.

Podemos configurar quota para qualquer partição, mas como estamos falando de usuários, o ideal é que a quota seja aplicado na partição /home.

No próximo post, continuo a falar sobre quota em um HD particionado.

Até lá 😉 !