segunda-feira, 12 de outubro de 2009

Como adicionar Suporte a XFS no RHEL 5.1

Curiosamente, apesar do sistema de arquivos XFS ser robusto, rápido e confiável (desde que você tenha um bom no-break, é claro), o Red Hat Enterprise Linux não o suporta por padrão. É preciso instalar as ferramentas de nível de usuário e o módulo do kernel para prover esse suporte.

Instalar as ferramentas a nível de usuário é a parte mais simples, basta pegar em qualquer buscador de rpm (http://rpm.pbone.net, por exemplo), e procurar por "xfsprogs". Basta tomar cuidado nas versões do RHEL e se você está utilizando 32 ou 64 bits. No meu exemplo estarei utilizando o RHEL 5.1 64 bits.

Para instalar o módulo do kernel, já é um pouco mais complicado. Caso você tiver a opção de compilar o kernel vanilla, é mais simples, mas muitas vezes o kernel que vem junto com o Red hat deve ser utilizado, devido a dependências de alguns módulos do kernel (se você estiver conectando o servidor a um storage, e o fornecedor do storage só suporta a versão X do kernel, por exemplo). A versão do kernel do RHEL 5.1 é o 2.6.18-53.el5, então basta seguir os seguintes passos:

# uname –r
# mkdir /usr/src/sources
# cd /usr/src/sources
Pegue o RPM fonte de ftp://ftp.redhat.com/pub/redhat/linux/enterprise/[VERSION DIRECTORY]/en/os/SRPMS/kernel-2.6.X.X-EL.src.rpm
# rpm -ivh kernel-2.6.X.X-EL.src.rpm
# cd /usr/src/redhat
# rpmbuild -bp SPECS/kernel-2.6.spec
# cp -r /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18/fs/xfs/. /lib/modules/$(uname -r)/build/fs/xfs/
# cd /lib/modules/$(uname -r)/build

# make menuconfig
ADICIONE O SUPORTE A XFS AQUI

# cd /lib/modules/$(uname -r)/build
# make SUBDIRS=fs/xfs/ modules
# cd /lib/modules/$(uname -r)
# mkdir kernel/fs/xfs
# cp build/fs/xfs/xfs.ko kernel/fs/xfs/
# chmod 744 kernel/fs/xs/xfs.ko
# depmodPublicar postagem
# modprobe xfs


Pronto, agora poderá utilizar o sistema de arquivos XFS.

Mas não sem usar um bom no-break - Experiência própria.

domingo, 6 de setembro de 2009

Partições e Sistemas de Arquivos

Resolvi colocar essa postagem afim de esclarer e desenvolver conceitos sobre partições e filesystems num ambiente Linux. Esses conceitos em primeira instância não estariam em nada relacionados com segurança de tráfego de dados, mas estariam fortemente ligados com segurança de dados. Nada pior do que perder um arquivo importante. As maiores preocupações desse post vão ser sobre planejamento de espaço em disco, partições, swap, qual o tamanho ideial para uma partição swap, tipos de partições, como planejar suas partições, etc, etc...

A maior parte vai ser conceitual, afim de ensinar conceitos importantes para você ter base na hora de tomar atitudes seguras quando for instalar ou fazer manutenção de um sistema.


--------------------------------------------------------------------------------

As partições foram inventadas para permitir que os usuários dos computadores pudessem dividir seus Hard Disks em partes, afim de poder instalar diversos sistemas operacionais. Esse mecanismo permite você dividir um único HD físico, em diversos drivers lógicos. Uma partição pode ser encarada como uma continuidade de blocos no seu HD. Uma partição não pode ser redefinida sem que haja perda de dados. Uma ferramenta para manipulação da tabela de partições é o 'fdisk'. Caso você tenha mais de um HD instalado, você deve usar: 'fdisk '.

A tabela de partições foi criada como parte do boot sector, e só possui espaço para 4 partições primárias. Se você precisar de mais partições você pode usar as extendidas. As partições extendidas ficam dentro de uma primária. O número de partições lógicas não é limitado. Elas são associadas como uma lista encadeada de partições. Logo, você pode ter 3 partições primárias usáveis, e mais suas partições lógicas. No Linux, você acessa as partições pelo arquivo device. As partições primárias tem terminação: 1, 2, 3 e 4, e as lógicas de 5 adiante. Logo, /dev/hda1 é a primeira partição primária do primeiro HD IDE.

Cada partição reserva um código que qualifica o seu tipo. No Linux, o código 0x82 para swap e 0x83 para 'native' Linux (native Linux é hoje em dia o ext2 para quase todas as distribuições). Quando você vai formatar a sua partição, é requisitado o tamanho que você quer para cada inode. Uma tabela de inodes é criada quando você formata a sua partição. Um inode é um identificador único que cada arquivo/diretório recebe no sistema. Usando o comando: 'ls -ila' você pode ver o inode de cada arquivo. Para entender a árvore de arquivos que o Linux possui, o Linux atribui '1' para o inode do diretório da raiz '/'. E dentro dele todos os arquivos e diretórios possuem um inode. Assim qualquer arquivo pode ser encontrado, usando essa corrente que começa na raiz e vai descendo de nível. Um exemplo para entender melhor:

vulcan:~$ ls -lai /
1 drwxr-xr-x 22 root root 2048 Mar 31 12:26 ./
1 drwxr-xr-x 22 root root 2048 Mar 31 12:26 ../
12289 drwxr-xr-x 4 root root 27648 May 12 19:56 dev/
284673 drwxr-xr-x 13 root root 3072 May 19 11:34 etc/
276481 drwxr-xr-x 8 root root 1024 May 18 12:52
home/

Inode de /home é 276481.

vulcan:~$ ls -lai /home

276481 drwxr-xr-x 8 root root 1024 May 18 12:52 ./
1 drwxr-xr-x 22 root root 2048 Mar 31 12:26 ../
440512 drwxrwx--x 25 cox admin 2048 May 17 00:52 cox/


Note que os '..', significa o diretório pai, com inode '1' (raiz) e o '.', significa o diretório corrente, com inode 276481.

Definir inodes altos (4Kb) significa transferência de dados para grandes blocos mais rápido, em contrapartida você perde com o que se chama 'fragmentação interna'. Fragmentação interna é o processo que se da quando um arquivo é gravado no seu computador. O último bloco de dados é gravado e como arquivos vem em diferentes tamanhos, algumas unidades de blocos vão ficar sem ser usadas. Se você usa inodes altos essa perda pode ser grande. O recomendado é usar 2048 bytes.

Partição Swap

No Linux, a partição swap é uma extensão da sua memória RAM. Se você tem 16 Mb de RAM e 16 MB de Swap, você possui 32 Mb de memória virtual. Uma partição swap única pode ter no máximo 128Mb. Na verdade ela pode até ser maior, mas o espaço extra não será usado. Se você planeja ter mais do que 128 Mb de swap, crie partições múltiplas de swap. O tamanho da sua swap você tem que decidir, essa decisão vai depender do que pretende rodar no seu computador. Para uma utilização doméstica recomenda-se o dobro da sua memória RAM.

Para grandes servidores com troca de arquivos (emails, news, arquivos temporários) grande, são recomendados uma série de cuidados para criação da tabela de partições. Sempre tendo em mente que memória RAM é rápida e swap é muito mais lento. É usado uma partição para os arquivos binários do Linux, os diretorios /bin, /sbin/, /usr/bin/, /usr/sbin e outros. Arquivos que raramente (ou nunca) são alterados. Coloca-se a partição SWAP no meio do disco. E o restante para arquivos que irão sair tão rápido como chegaram, como: /var/spool/mail, /var, /var/spool/lpd.

A partição SWAP no meio do Disco é recomendado para que a distancia entre qualquer parte do disco até ela seja rápido. Então, se o ponteiro do HD estiver na última track do Disco vai andar até a metade para ler a SWAP. Assim como se estiver no inicio, vai andar até a metade.

Partições pequenas, facilitam na hora do backup. Principalmente na hora de tomar decisões como backups diários, e semanais. Algumas partições podem ser diárias, outras semanais e outras mensais.

Em resumo, mantenha arquivos que tenham grande vida útil no sistema juntos na mesma partição, e os que tenham vida curta em outra

quinta-feira, 13 de agosto de 2009

Tecnologia de Virtualização Red Hat

Recentemente usei este documento para virtualizar um servidor INTEL da HP com redhat 5. Este Guia contém informação sobre configuração, criação e monitoração de sistemas operacionais no Red Hat Enterprise Linux 5, usando virsh, xm, vmm e xend.

http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/pt-BR/Virtualization/index.html

segunda-feira, 27 de julho de 2009

Configurando KDUMP no RH 5

KEXEC é um mecamisno de fast boot que permite iniciar um kernel Linux a partir de um kernel já em execução sem passar pela BIOS.

KDUMP é um novo mecanismo de kernel crash dump, capturando o dump utilizando o kexec inicializando em um segundo kernel sempre que o sistema falha, inicializa com pouca memória e captura o dump image.

Instalando KDUMP

# yum install kexec-tools
ou
# rpm -ivh kexec-tools-1.102pre-56.el5_3.2.x86_64.rpm

Para configurar o KUMP, basta editar o arquivo /etc/kdump.conf

Salvando o dump diretamento no device

raw devicename

Salvando o dump em arquivo

ext3 /dev/sda1

Isto fará com que o kdump monte do device /dev/sda1 em /var/crash com file system ext3

Podemos utilizar também um dump pela rede através de um device NFS

net server:/nfs/mount/point

E por último pode ser feito um dump através da rede utilizando o SSH

net user@server

Para esta opção é necessário configurar uma chave pública para o acesso via SSH, utilizando o comando abaixo:

service kdump propagate

Especificando páginas de seleção e compressão

Em sistemas de grande memórias é necessário descartar páginas que não são necessárias e comprimir as páginas restantes, isto é definido no kdump.conf conforme configuração abaixo:

zero pages = 1
cache pages = 2
cache private = 4
user pages = 8
free pages = 16

#core_collector makedumpfile -d 1 # throw out zero pages (containing no data)
#core_collector makedumpfile -d 31 # throw out all trival pages
#core_collector makedumpfile -c # compress all pages, but leave them all
core_collector makedumpfile -d 31 -c # throw out trival pages and compress (recommended)

NOTA: Utilizando as opções -d e -c aumenta o tempo necessário para reunir as cores.

Alterando parâmetros de boot

Faz-se necessário para reservar uma quantidade de memória para captura do kernel.
Para arquiteturas i386 and x86_64 editamos o /etc/grub.conf e adicionamos o parâmetro crashkernel=128M@16M no final da linha do kernel.

Exemplo:


default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Client (2.6.17-1.2519.4.21.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.17-1.2519.4.21.el5 ro root=LABEL=/ rhgb quiet crashkernel=128M@16M
initrd /boot/initrd-2.6.17-1.2519.4.21.el5.img


Testes de funcionalidade

Inicializamos o kdump

# chkconfig kdump on
# service kdump start

Forçando um crash do sistema via sysrq

# echo “c” > /proc/sysrq-trigger

Será gerado um kernel panic e logo após reiniciando o sistema no kdump kernel, copiando o vmcore para o local especificado no /etc/kdump.conf.

OBS.:

Console frame-buffers e X serão trucados quando o kernel for iniciado através do kexec, isto se aplicar para configurações como por exemplo “vga=791″ na linha de configuração do kernel.
Quando o sistema reiniciar o video deverá ser ser restabelecido a normalidade.

quarta-feira, 15 de julho de 2009

Aumentando área de swap no Linux com LVM

Primeiro precisamos desabilitar a área de swap

# swapoff -v /dev/rootvg/swaplv

Agora aumentamos a nossa área de swap em 512M

# lvextend -L +512M /dev/rootvg/swaplv

É necessário formatar a nova área de swap

# mkswap /dev/rootvg/swaplv

Finalizando habilitamos a nova área de swap

# swapon -va /dev/rootvg/swaplv

Para verificar a nova área utilize:

# cat /proc/swaps

ou

# free

sábado, 11 de julho de 2009

Red Hat 5: Missing ext2online

No RHEL 5 a funcionalidade do comando ext2online foi migrada para o comando resize2fs.

Portanto, ainda podemos realizar o aumento dos file systems on-line, conforme abaixo:

resize2fs /dev/rootvg/tmplv

OBS.:

Porém, reduzir file system que encontra-se em uso apenas off-line.

segunda-feira, 6 de julho de 2009

Alterando velocidade e comunicação da placa Ethernet em RedHat

Primeiro verificamos se temos os seguintes pacotes instalados.

server:~ # rpm -q ethtool
server:~ # rpm -q net-tools

Depois temos que verificar as caracteristicas da nossa placa Ethernet

server:~ # ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 10Mb/s
Duplex: Half
Port: MII
PHYAD: 30
Transceiver: internal
Auto-negotiation: on
Current message level: 0×00000007 (7)
Link detected: no

server:~#mii-tool eth0
eth0: no autonegotiation, 10baseT-HD, link ok

Agora que sabemos que a placa Ethernet aceita velocidade de 100 e full duplex, base adicionar a seguinte entrada em /etc/sysconfig/network-scripts/ifcfg-etho

vi /etc/sysconfig/network-scripts/ifcfg-eth0
ETHTOOL_OPTS=”speed 100 duplex full autoneg off”

Mas para que esta configuração fique permanente é necessário adicionar a seguinte entrada em /etc/rc.local

vi /etc/rc.local
ethtool -s eth0 speed 100 duplex full autoneg off
touch /var/lock/subsys/local

OBS.:
Caso a placa Ethernet não suporte o “ethtool”, pode-se utilizar a mesma configuração com o “mii-tool”, digitando o comando abaixo.

mii-tool -F 100baseTx-FD eth0