sexta-feira, 2 de janeiro de 2009

Quotas em Disco

Concerteza é uma das ferramentas que salvam administradores do temido "DISCO CHEIO". Em minha opinião é a melhor forma de evitarmos que usuarios pare nossos serviços. Temos que tratar Servidores de dados como um copo d'agua quanto mais cheio mais perigoso se torna. No linux podemos fazer a configuracao de 2 formas, por inodes e por blocos. Sempre temos que analisar qual é a opção mais viavel porque vejamos, temos uma particao de 100Mb e configuramos nossas cotas por Inodes e cada usuario só pode obter 20inodes em nossa partição, até ai é uma divisão justa mas, se um dos usuarios faz um download de 90Mb, ele já possui 90% da particao com um único Inode, e os outros usuarios terao que dividir 10% da particao entre si.
Temos que efetuar um estudo e uma estrategia para analisar a situação da rede e vincular a melhor configuração com o ambiente. Para evitarmos grandes imprevistos.

Configuracao:

Primeiro temos que instalar o pacote de quotas logo após, configurar o /etc/fstab adicionando as configurações de cotas nas partições desejadas e os arquivos são: usrquota – grpquota.

Ex do fstab:

# vim /etc/fstab

/dev/sdb1 /home ext3

defaults,usrquota,grpquota 0 0

(nesse caso só estamos adicionando as configurações de cota dando suporte a usuarios e grupos do sistema.)

Logo após devemos remontar a partição indicada no fstab, para que as alterações tenham efeito. Comando indicado:
# mount –o remount /home

Aps isso verifique se foi realmente montado com o comando mount

Agora teremos que criar os arquivos de configuração de quotas.
#quotacheck –cugm /home logo após verifique se os arquivos usrquota e grpquota foram criados no local indicado.

Agora veremos se o sistema de quotas está ativo. Execute o comando,
# repquota –a –v A saida do comando, trará a exibirá os usuarios e configuração do sistema de quotas, ainda inexistente.

O proximo passo é configurar as cotas, mas iniciaremos por usuarios.
#edquota –u maicon

Vamos configurar o usuario maicon da seguinte forma, que ele só poderá utilizar apenas 20Mb de Bloco e um limite maximo de 30Mb e criação de 100Inodes e limite maximo de 150.

Indico que utilize o terminal no modo grafico para ter uma melhor visualização de todo o ambiente.


Saida do comando anterior:


Disk quotas for user maicon (uid 1001):

Filesystem Blocks soft hard inodes soft hard
/dev/sdb1 0 20000 30000 0 100 150

Agora vamos entender o que foi feito no arquivo.
Primeiro ele mostra qual usuario está sendo alterado e seu UID, logo após indica a qual filesystem pertence.

O campo blocks não pode ser alterado porque ele indica quantos blocos o usuario utilizou.
O campo soft indica a quota por bloco que no nosso caso é 20mb.
O campo hard indica a quota maxima por bloco que é 30mb.

O campo inodes indica a quantidade de inodes criados aquele usuario possue.
O campo soft indica a quota por Inodes que no nosso caso foi 100.
O campo hard indica a quota maxima por inodes que é 150.

Logo após da configuração efetuada execute novamente o comando # repquota –a –v que exibirá as novas configurações no usuario indicado.

No nosso caso configuração quotas por bloco e por inode, então a primeira que alcançar o valor Soft iniciará o tempo de tolerancia do sistema ao

Usuario para que se libere o espaço e que ele permaneça abaixo do limite indicado.

Para configurar o tempo de tolerancia execute o comando:
# edquota –t

Dentro da configuração do Edquota –t

teremos a possibilidade de definir o tempo de tolerancia que por padao é 7dias.

E com o comando repquota –a –v é exibido nas primeiras linhas o tempo de tolerancia.

Para testarmos se realmente está fucionando devemos logar com o usuario configurado e podemos utilizar um pqno script para lotar disco e criar arquivos.

# echo teste > a; while true; do cat a >> b; cat b >> a; done - (lota disco)

# I=1 ; while true; do touch arq$I; let I++ ; done - (cria arquivos)

Com o comando repquota –a –v vemos o estouro e o tempo de tolerancia ativa, e quando efetuarmos a liberação do espaço em disco automaticamente é liberado no sistema de quotas.

E uma configuração que deixa a administração mao na roda é na hora da adição dos usuarios, pq já pensou fazer isso em todos os usuarios.?

Então edite o arquivo /etc/adduser.conf, na linha 61 adicione o usuario que você quer ter como exemplo, para que todos os usuarios que seje adicionado replique as configurações para ele.

E para usuarios já existentes é necessario apenas utilizar o seguinte comando edquota –p maicon galileu a interpretação seria a seguinte. Replicar configurações do usuario maicon para o usuario galileu.

A uma grande necessidade de checar o arquivo de quotas de forma periodica então é necessario criar um script basico com os comandos:
quotaoff –v /home quotacheck –vug /home quotaon –v /home

LVM

Logical Volume Maneger, uma solucao bem pratica para usuarios linux.

PV (Physical Volume) - Os volumes físicos são as partições de discos alocadas para o LVM. No Linux é necessário criar a partição e alterar o tipo para "Linux LVM", tipo 8e do fdisk, para que ela possa ser utilizada no LVM.

VG (Volume Group) - Um conjunto de PV pode ser necessário para criar filesystems maiores que a limitação física de um disco rígido. Esses PV são agrupados em um VG.

PE (Physical Extent) - Quando um PV é inserido em um VG o LVM o divide em várias partes de igual tamanho e essas partes são associadas a uma LE (Logical Extent), o menor valor de alocação dentro de um VG (do ponto de vista do LVM). No AIX são conhecidos como PP (Physical Partition) e LP (Logical Partition), respectivamente.

LV (Logical Volume) - Esse elemento é uma área de alocação das LE, na qual criamos o filesystem. Ao criarmos um volume lógico, recebemos um device para referenciarmos, ao criar ou manipular, o sistema de arquivos. O nome do device é /dev/NOME_DO_VG/NOME_DO_LV.

VGDA (Volume Group Descriptor Area) - Numa analogia mais grosseira, essa área é uma tabela de alocação do VG. Nela há todos os dados do VG. É dividida em quatro partes básicas: descritor de PV, descritor de VG, descritor de LV e vários descritores de PE e LE. Os backups automáticos da VGDA são guardados em /etc/lvm-conf/.

Você precisa de pelo menos uma partição com o tipo "Linux LVM", o que não faria sentido se considerarmos que um dos principais objetivos do LVM é concatenar discos, mas em todo caso vamos seguir com esse conceito.


Primeira providência é criar a partição LVM. Vamos usar a hipótese que nossos discos são Sata que estao em diversas controladoras. Assim seu device é /dev/sdb – sdc -sdd.

Execute o cfdisk, como root, apontando o dispositivo acima;

Crie a partição ;

Altere o tipo da partição para 8e Linux LVM;

Saia do fdisk salvando a configuração.

Agora pode conferir as partições criadas com o comando "cfdisk /dev/sdb". Se tudo foi feito corretamente você vai ver que a nova partição vai estar com o tipo "Linux LVM". Neste ponto já podemos começar a configurar o LVM.

Nessa etapa vamos ser pontuais e passaremos os comandos para criação dos PV, VG, LV e filesystems. Vamos imaginar que temos tres discos, /dev/sda1,
/dev/sdb2 e /dev/sdc1.

1. Criar os PV (Physical Volumes), com o comando:
# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
(aqui estamos criando as Pv's apontando as partiçoes escolhidas para criacao da VG logo após execute o comando pvs

ou pvscan para a exibicao das Pv's criadas)


2. Criar o VG (Volume Group):
# vgcreate vg001 /dev/sdb1 /dev/sdc1 /dev/sdd1 (aqui estamos indicando as Pv's que farão parte da VG vg001 logo após execute o comando vgs

ou vgscan para a exibicao das Vg's criadas)

3. Criar o LV (Logical Volume):
# lvcreate -L 5G -n lv001 vg001 (aqui estamos criando as Lv's indicando com –L (Size) o tamanho da particao e com –n o nome da Lv (lv001) e indaca a qual Vg ela pertence (vg001)
logo após execute o comando lvs

ou lvscan para a exibicao das Pv's criadas

OBS: o tamanho do Logical Volume deve ser informado acompanhado da ordem de grandeza em bytes, ex.: 100M, 10G, 1T.

5. Criar o filesystem:
# mkfs –t ext3 /dev/vg001/lv001 (aqui estamos aplicando o File System no formato ext3)

opos tudo isso devemos montar a particao criada no local desejado.

Um fato interessante do LVM é redimensionar a particao sem necessidade de formata-la. A indicacao no proprio manual do LVM é que sempre faça redimensionamento para valores acima do indicado. Como por exemplo estender uma particao de 512mb para 1Gb. Mas isso é indicado em partições que contenha arquivo pois o risco de perda de arquivo é muito grande. Caso contrario, fique avontade para fazer o gerenciamento da melhor forma.

Para redimensionar uma Lv usamos os seguintes comandos.

# lvextend –L +512mb /dev/vg001/lv001 (neste caso vemos que estendemos a particao para mais 512mb entao está particao ficará com 5,5Gb seguindo os exemplos anteriores.) E para fazer a reducao da particao seria os mesmos parametros só que com o comando lvreduce –L -512Mb /dev/vg001/lv001.

# e2fsck –f /dev/vg001/lv001 (com esse comando executaremos um teste na Lv redimensionada para verificacao de erros existentes, caso a saida do comando seje negativa devemos usar o comando resize2fs /dev/vg001/lv001

E para a remoção das LVs VGs e PVs basta executar os comandos na seguinte ordem;

# lvremove /dev/vg001/lv001

#vgremove vg001

#pvremove /dev/sdb1


Compilacao de Progamas no Linux

Para todo iniciante esse é o grande marco, Instalar um Programa.

Mas é bem simples, o essencial é conhecer a estrutura do Sistema Operacional, assim tudo fica "Facin, Facin...". Não existe muita teoria em relacao a compilacao de programas. A instalacao é bem automatizada atraves de Scripts existentes no pacote do programa MAKEFILE neles vem com padrao com tres ações INSTALL CLEAN e DEFAULT. Mas o indicado é sempre ler a documentacao do programa INSTALL e README.

Entao vamos entrar em ação!

Primeiro vamos instalar os pacotes de compilacao. (Make - gcc - g++)

# aptitude install make gcc g++

Agora vamos executar o Script de execução.

# ./configure

# make

# make install

Logo após a instalacao vamos efetuar a limpeza dos arquivos ultilizados pelo make.

# make clean

E para remover o programa é simples. É só ultilizar o inverso.

# make uninstall (ProGraMa)

É bem simples a instalacao e sem segredos.

Mas sempre na duvida leia a documentacao do programa, ele tem todas as informações contidas aqui.

terça-feira, 30 de dezembro de 2008

SCRIPT DE BACKUP LINUX

Esse eh um script simples para backup. Ele esta bem explicativo e modestia a parte bem eficaz. achei interessante postar pois como eu, existem muitas pessoas ainda deficiente nessa area de script. Esse foi o meu primeiro que funcionou da forma que eu queria...
Espero ajudar os outros que sentem a msm dificuldade...

_____________________________________________
#!/bin/bash
#backup dos seguintes diretorios /etc /file_shared/administrativo /var/log
#Variareis
localorg1='/etc/'
localorg2='/var/log/'
localorg3='/file_shared/administrativo/'
localdest='/backup'
log='/var/log/backup.log'
data=$(date)

#Entrada do Backup
echo "_________INICIO do BACKUP________" >> $log
echo "$data" >> $log

# BACkUP ETC
while [ true ] ; do
echo "backup do diretorio /ETC" >> $log
echo
echo "excluindo backup anterior..." >> $log
rm $localdest/bkpetc.tgz
echo "Efetuando Empacotamento e Compactacao..." >> $log
tar czf $localdest/bkpetc.tgz $localorg1
if
echo "Efetuando teste no Arquivo..." >> $log
tar ztf $localdest/bkpetc.tgz >> /dev/null 2>&1; then
echo "Arquivo OK..." >> $log
ls -lah $localdest grep bkpetc.tgz >> $log
echo
echo
break

else
echo "erro no arquivo...compactando novamente" $localdest $data >> $log
echo
echo
continue
fi
done

echo "...backup geral realizado com sucesso..."
echo "backup geral realizado com sucesso..." $data >> $log

echo "_______FIM do BACKUP______" >> $log
______________________________________________


Simples nao?!

Para que as etapas sejam exibidas no terminal, é só criar mais uma saida de comando como;
echo "Empacotando e Compactando..." Essa saida ira ser exibida no terminal
echo "Empacotando e Compactando..." >>
$log Essa Saida será enviada para o LOG


Ai conforme a necessidade, coloque no agendamento do Cron. e Beleza. Você terá um backup automatizado e eficar.