6
Admin Magazine #9 | Março de 2013 53 SOLUÇÕES RAID com Raider Criação de sistemas RAID Juntamente com os backups regulares, um sistema RAID deveria ser uma presença comum em qualquer bom servidor. Este artigo mostra como converter uma instalação Linux existente para um sistema RAID e evitar as armadilhas pelo caminho. por Oliver Frommel S e o leitor estiver em busca de mais desem- penho ou mais segurança, o armazena- mento RAID é sempre uma solução útil. Enquanto o RAID 0 não redundante aumenta a velocidade de acesso aos dados, o RAID 1 duplica os dados e, portanto, fornece mais re- sistência. A combinação dos dois é chamada de RAID nível 10, que oferece ao usuário o melhor do espelhamento e distribuição. Criar um siste- ma RAID em duas partições de um disco rígido faz pouco sentido porque, se o disco falhar, os dois “discos” em seu RAID estarão perdidos. No entanto, podemos criar múltiplas parti- ções em um disco rígido e lhes atribuir arrays RAID diferentes. Forneceremos um exemplo mais adiante neste artigo. Se o usuário estiver instalando um novo sistema Linux, poderá criar um sistema RAID durante o processo de instalação, desde que o sistema possua discos rígidos suficientes. Por exemplo, com a Red Hat ou CentOS, durante a instalação, primei- ro selecione Basic Storage Devices (dispositivos de armazenamento básico) e, em seguida, em Create Custom Layout (criar layout personaliza- do). Quando criar uma nova partição, em vez de escolher um sistema de arquivos, selecione Create Software RAID (criar software RAID). Depois de criar pelo menos duas partições RAID, o instalador fornece uma opção de dis- positivo RAID, onde podemos selecionar as partições que acabamos de criar. O instalador verifica o número mínimo de partições e se recusa, por exemplo, a criar um RAID 6 com apenas duas partições RAID. No entanto, o que o leitor faria se a máqui- na já tiver sido usada por um período de tem- po com um sistema de arquivos simples? Em princípio, não é difícil construir um RAID manualmente a partir de um sistema de ar- quivos convencional, mas há algumas coisas a serem observadas. Um script chamado Rai- der torna o processo mais fácil, ao converter uma simples instalação Linux para RAID. Ele verifica os pré-requisitos, copia os dados, configura uma nova RAID e vincula todas as partições necessárias. Depois de baixar e descompactar o paco- te Raider a partir do site [1], vamos precisar de alguns outros itens antes de instalá-lo: depende do bc, mdadm, parted e dos pacotes rsync, que são todos muito fáceis de instalar com o gerenciador de pacotes: yum install bc mdadm rsync parted Figura 1 O Raider distribui o trabalho a uma série de scripts individuais.

A m aide Criação de sistemas RAID - … em qualquer bom servidor. ... raider -R1 O usuário não precisa declarar os discos e ... a falha de um segundo seria um de-

Embed Size (px)

Citation preview

Page 1: A m aide Criação de sistemas RAID - … em qualquer bom servidor. ... raider -R1 O usuário não precisa declarar os discos e ... a falha de um segundo seria um de-

Admin Magazine #9 | Março de 2013 53

SOLUÇÕES

RAID com Raider

Criação de sistemas RAIDJuntamente com os backups regulares, um sistema RAID deveria ser uma presença comum em qualquer bom servidor. Este artigo mostra como converter uma instalação Linux existente para um sistema RAID e evitar as armadilhas pelo caminho.

por Oliver Frommel

Se o leitor estiver em busca de mais desem-penho ou mais segurança, o armazena-mento RAID é sempre uma solução útil.

Enquanto o RAID 0 não redundante aumenta a velocidade de acesso aos dados, o RAID 1 duplica os dados e, portanto, fornece mais re-sistência. A combinação dos dois é chamada de RAID nível 10, que oferece ao usuário o melhor do espelhamento e distribuição. Criar um siste-ma RAID em duas partições de um disco rígido faz pouco sentido porque, se o disco falhar, os dois “discos” em seu RAID estarão perdidos.

No entanto, podemos criar múltiplas parti-ções em um disco rígido e lhes atribuir arrays RAID diferentes. Forneceremos um exemplo mais adiante neste artigo. Se o usuário estiver instalando um novo sistema Linux, poderá criar um sistema RAID durante o processo de instalação, desde que o sistema possua discos rígidos suficientes. Por exemplo, com a Red Hat ou CentOS, durante a instalação, primei-ro selecione Basic Storage Devices (dispositivos de armazenamento básico) e, em seguida, em Create Custom Layout (criar layout personaliza-do). Quando criar uma nova partição, em vez de escolher um sistema de arquivos, selecione Create Software RAID (criar software RAID).

Depois de criar pelo menos duas partições RAID, o instalador fornece uma opção de dis-positivo RAID, onde podemos selecionar as partições que acabamos de criar. O instalador verifica o número mínimo de partições e se recusa, por exemplo, a criar um RAID 6 com apenas duas partições RAID.

No entanto, o que o leitor faria se a máqui-na já tiver sido usada por um período de tem-po com um sistema de arquivos simples? Em princípio, não é difícil construir um RAID manualmente a partir de um sistema de ar-quivos convencional, mas há algumas coisas a serem observadas. Um script chamado Rai-der torna o processo mais fácil, ao converter uma simples instalação Linux para RAID. Ele verifica os pré-requisitos, copia os dados, configura uma nova RAID e vincula todas as partições necessárias.

Depois de baixar e descompactar o paco-te Raider a partir do site [1], vamos precisar de alguns outros itens antes de instalá-lo: depende do bc, mdadm, parted e dos pacotes rsync, que são todos muito fáceis de instalar com o gerenciador de pacotes:

yum install bc mdadm rsync parted

Figura 1 O Raider distribui o trabalho a uma série de scripts individuais.

Page 2: A m aide Criação de sistemas RAID - … em qualquer bom servidor. ... raider -R1 O usuário não precisa declarar os discos e ... a falha de um segundo seria um de-

54 www.admin-magazine.com.br

RAID com Raider

Outra dependência é um programa que permite criar um disco RAM inicial (por exemplo, dracut, mkinitramfs etc.), que nor-malmente será pré-instalado. Em seguida, podemos executar /install.sh no diretório Raider para copiar os arquivos para o disco rígido. O script instala alguns programas, dos quais apenas raider e raiderl são inte-ressantes para o usuário. O script /usr/bin/raider é apenas um empacotador (wrapper) relativamente curto, que calcula a linha de comando antes de entregar o trabalho real para um dos 23 scripts armazenados abaixo de /usr/lib/raider (figura 1).

Chamar raider --help exibe os parâmetros disponíveis. O comando raider -d fornece uma visão geral das unidades internas de disco rígido e partições. Na figura 2, podemos ver os resultados para um servidor Linux com dois discos rígidos, dos quais o primei-ro contém duas partições, e o segundo está vazio. Para configurar um RAID 1, simples-mente execute o Raider com a opção -R1:

raider -R1

O usuário não precisa declarar os discos e partições aqui, em contraste com a aborda-gem usual, pois o Raider simplesmente toma os dois discos necessários para a array RAID 1. Ele constrói um comando para criar o dis-co de RAM inicial e copiar as informações da partição do primeiro para o segundo disco – criando assim um RAID, então ele copia os dados do primeiro disco para o RAID (que atualmente inclui apenas o segundo disco). O Raider, então, gera o disco RAM e se alte-ra em um ambiente de chroot para escrever o GRUB bootloader para o segundo disco.

O Raider precisa de um disco rígido vazio para fazer isso. Se o disco incluir partições, ele cancela a operação. Uma chamada para:

raider --erase /dev/sdb

apaga os dados. Incidentalmente, definir a opção adicional -t, como em raider -t ‐R1 informa ao Raider que deve executar um tes-te. Quanto tempo vai levar a cópia depende da carga de dados no primeiro disco rígido. Neste exemplo, tínhamos apenas alguns gi-gabytes, por isso a operação foi concluída em poucos minutos.

Neste ponto, o Raider avisa ao usuário que deve trocar os primeiros e últimos discos no servidor; para o RAID 1, isso significa os dois únicos discos existentes. Esta ação destina-se a garantir que todos os dados tenham sido co-

piados para o sistema RAID. Após a troca, o sistema inicializa a partir do que foi anterior-mente o segundo disco, que agora deve ter to-dos os dados do disco root original. Se o SE Li-nux foi habilitado no sistema antigo, o Raider irá marcar a partição para relabeling, o que re-quer outra reinicialização. Após o login, uma rápida olhada na tabela de mount mostra que o sistema de arquivos raiz é agora um RAID:

$ mount /dev/md0 on / type ext4 (rw) ...

A verificação do arquivo de status do ker-nel para RAIDs:

# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda1[0] 310522816 blocks [2/1] [U_]

mostra que temos um RAID 1, e que apenas um dos dois discos necessários está presente, ou seja, temos um RAID degradado. Pode-mos afirmar isso pela leitura do [U_]: um ar-ray RAID completo teria um [UU] aqui. Para mais informações, execute o comando:

mdadm -D /dev/md0

O próximo passo é executar o comando:

raider --run

Depois de trocar os discos rígidos, o Rai-der se recusa a continuar trabalhando. Caso contrário, o programa passa a dividir o se-gundo (anteriormente primeiro) disco rígi-do, se necessário, e o adiciona ao array, que aciona automaticamente uma recompilação (rebuild) do RAID. Como isto acontece por blocos e baseia-se no respectivo algoritmo de RAID, o processo é muito mais lento do que uma cópia normal. Em particular, a partição inteira é copiada e não apenas a área ocupada com os dados. Com o RAID 1 e os discos rígi-dos de 320GB, a operação toda leva uma hora e meia (figura 3). É possível visualizar o arqui-vo de log a qualquer momento com o coman-do raiderl. O Raider escreve a configuração

Figura 2 A situação inicial: um disco rígido com uma raiz e uma partição swap.

Page 3: A m aide Criação de sistemas RAID - … em qualquer bom servidor. ... raider -R1 O usuário não precisa declarar os discos e ... a falha de um segundo seria um de-

Admin Magazine #9 | Março de 2013 55

SOLUÇÕES

RAID com Raider

RAID atual para o arquivo /etc/mdadm.conf. Podemos fazer isto manualmente, digitando:

mdadm --detail --scan > /etc/mdadm.conf

Dada a capacidade em terabytes dos discos rígidos atuais, recompilar um RAID pode levar dias inteiros em determinadas circunstâncias. Durante este tempo, os RAIDs degradados es-tão particularmente em risco. Como um disco já falhou, a falha de um segundo seria um de-sastre. RAIDs com paridade dupla, que salvam os dados de paridade duas vezes, podem lidar com a falha de um segundo disco. Alguns espe-cialistas vêem a necessidade de uma paridade RAID tripla com uma visualização dos volu-mes crescentes de dados e tamanhos de disco correspondentes; isto é implementado em ZFS, que continua a funcionar na eventualidade de uma falha de três discos [2].

LimitadoO Raider trabalha com os sistemas de arqui-vos populares do Linux, como o ext2/3/4, XFS, JFS e ReiserFS, e também pode lidar com volumes lógicos baseados em LVM2. O suporte para Btrfs ainda não existe, nem o su-porte para partições criptografadas. O Raider

pode ler as informações de partição no forma-to MBR legado e nas tabelas GPT. Atualmente não há suporte para informações da partição UEFI, mas isto está previsto para a versão 0.20.

Além disso, o Raider só pode converter ins-talações Linux para sistemas RAID que contêm um disco rígido com sistemas de arquivos Li-nux. Se o usuário também possui uma partição do Windows, o programa não poderá ajudar.

Converter uma partição raiz para o RAID 1 não requer muita habilidade, e é provavel-mente algo que a maioria dos leitores poderia suportar sem a ajuda do Raider. No entanto, o Raider pode fazer mais; por exemplo, pode converter diversos discos e sistemas RAID para níveis 4, 5, 6, e 10, tendo em conta o nú-mero necessário de discos (tabela 1). Além dis-so, o Raider pode lidar com volumes lógicos, que é o modo de instalação padrão no Fedo-ra, Red Hat e CentOS, por exemplo. Criar um RAID a partir deste material original requer algum esforço; contudo, o Raider pode tirar o peso dos ombros do usuário. O ponto de partida para esta instalação é mostrado na lis-tagem 1. O comando:

raider -R5 sda sdb sdc sdd

inicia uma conversão para o RAID 5, com três discos rígidos adicionais. Ele distribui os da-dos sobre os discos e grava informações de paridade para salvaguardá-los, combinando alto desempenho e confiabilidade.

Como uma partição de boot já existe no caso atual, o Raider novamente a conver-te em um RAID. Se o usuário não possuir uma partição de boot, e selecionar um nível de RAID diferente de 0, o Raider mudará o particionamento. Como o bootloader do Linux normalmente pode iniciar apenas a partir do RAID 1 – pelo menos enquanto o RAID estiver degradado – o Raider, então, cria uma partição de boot de 500MB para cada uma das novas unidades de disco rí-

Figura 3 Após adicionar o segundo disco rígido a array do RAID, ocorre a recompilação; sua milhagem pode variar.

Tabela 1 Nível mínimo de configurações RAID.

Nível Número mínimo de discos Velocidade de leitura Velocidade de escrita Capacidade

1 1+1 1x 1x 1x

5 1+2 2x 1/2x 2x

6 1+3 2x 1/3x 2x

10 1+3 1x 1x 2x

Page 4: A m aide Criação de sistemas RAID - … em qualquer bom servidor. ... raider -R1 O usuário não precisa declarar os discos e ... a falha de um segundo seria um de-

56 www.admin-magazine.com.br

RAID com Raider

gido, que mais tarde se combinam para for-mar a array do RAID 1.

Se um disco falhar, o sistema sempre pode iniciar a partir de um dos discos de inicialização restantes. Depois de executar o comando, desligue o computador e, em seguida, troque o primeiro e último disco rígido no barramento; os outros dois po-dem ficar onde estão.

Após reiniciar, o comando a seguir inicia a recompilação do RAID:

raider --run

Como um sistema de execução não pode ter dois grupos de volume com o mesmo nome, o Raider criou um grupo de volume com um nome semelhante no novo RAID (lis-tagem 2). Ele é criado simplesmente acrescen-tando __raider ao nome original. No entanto, podemos mudar isso com a opção de linha de comando -l. Em muitos dos nossos tes-tes com o Raider tudo correu bem, mas uma vez que o programa se recusou a adicionar o disco restante para a nova array do RAID na

segunda fase, ele adicionou um comentário bastante inútil:Failed to add a device in /dev/md1 array

O arquivo de log listado por raiderl tam-bém não fornece detalhes úteis. Para mais informações, precisamos olhar para ou-tros arquivos de log em /var/log/raider. Por exemplo, /var/log/raider/raider_debug_STEP3_.log registra meticulosamente cada comando chamado pelo Raider enquanto tra-balha. Por fim, encontramos esta linha:

mdadm: Cannot open /dev/sdd1: Device or resource busy

Normalmente não é fácil encontrar o mo-tivo para tal mensagem de erro no Linux. O comando mount indicou que a partição não foi montada, e lsof não revelou nada de novo.

Finalmente, swapon -s mostrou que o sis-tema estava usando o disco rígido inteiro para swap por alguma razão estranha (figura 4). Desligar o swap com o comando swapoff/dev/sdd finalmente resolveu o problema.

Listagem 2: Raider LVM# df ‐h File system Size Used Avail Use% Mounted on /dev/mapper/VolGroup__raider‐lv_root 50G 1,9G 45G 4% / tmpfs 3,9G 0 3,9G 0% /dev/shm /dev/md0 485M 61M 399M 14% /boot /dev/mapper/VolGroup__raider‐lv_home 235G 188M 222G 1% /home

Listagem 1: Partições LVM# df ‐h File system Size Used Avail Use% Mounted on /dev/mapper/VolGroup‐lv_root 50G 1,7G 46G 4% / tmpfs 3,9G 0 3,9G 0% /dev/shm /dev/sda1 485M 35M 425M 8% /boot /dev/mapper/VolGroup‐lv_home 235G 188M 222G 1% /home

Figura 4 A última unidade rígido foi erroneamente utilizada como espaço de swap. A desativação manual e adição do disco para o sistema RAID resolveu o problema.

Page 5: A m aide Criação de sistemas RAID - … em qualquer bom servidor. ... raider -R1 O usuário não precisa declarar os discos e ... a falha de um segundo seria um de-

Admin Magazine #9 | Março de 2013 57

SOLUÇÕES

RAID com Raider

Em seguida, podemos adicionar o dis-positivo sdd1 ao array da RAID 1 (md0). Uma rápida olhada em /proc/mdstat mos-trou que o RAID de inicialização sincro-nizou em aproximadamente um minuto. A segunda partição pertencente ao RAID com o grupo de volume foi adicionada uti-lizando o seguinte comando:

mdadm --add /dev/md1 /dev/sdd2

A recompilação automática subsequente demorou então cerca de uma hora e meia. O Raider armazena todas as variáveis e dados de trabalho no diretório /var/lib/raider e subdiretórios, como o DB, onde administra-dores experientes podem intervir manual-mente, se necessário. Este exemplo já mos-tra como substituir discos falhos no RAID, enquanto o mesmo estiver em operação – isto é, desde que possua o número mínimo de discos. Se um disco falhar, o subsistema RAID automaticamente o remove da array. No entanto, é preciso monitorar o RAID com uma ferramenta de monitoramento como o Nagios para detectar tal falha; caso contrário, o RAID continuará a executar com um disco falho em uma configuração mínima, e o usuário pode aguardar por um desastre iminente.

Se o usuário quiser substituir um disco rígido antes de ocorrer uma perda total – por exemplo, por conta de erros relatados pelo SMART – poderá simular a falha de um componente RAID, e mdadm fornece um comando para isso:

mdadm --fail /dev/md0 /dev/sda1

Tabela 2 Comandos RAID .

Comando Função

mdadm --fail RAID device partition Muda uma partição para o estado fail

mdadm --add RAID device partition Adiciona uma partição ao RAID

mdadm --remove RAID device partition Remove uma partição

mdadm --stop RAID device Interrompe o RAID

mdadm --query device Informação no dispositivo ou no RAID

mdadmin --examine device Mais detalhes

mdadm -D RAID-device Mostra informações detalhadas

O RAID agora informa que o disco está com defeito. O comando que permite ao usu-ário retirá-lo da array é:mdadm --remove

Depois de instalar um novo disco, pode-mos usar --add de novo, como mostrado an-teriormente, e a recompilação começará auto-maticamente. A tabela 2 apresenta um resumo dos comandos mdadm mais importantes.

Feito à mãoResumidamente, aqui está o procedimento para criação de uma nova RAID que pode ser utilizada, por exemplo, para armazenar da-dos do usuário em um servidor de arquivos sem afetar a partição de root. Para começar, defina as partições apropriadas, o que otimi-za a abrangência de todo o disco e será do mesmo tamanho em todos eles.

Nos vários níveis da RAID, partições de tamanhos diferentes também podem funcio-nar, mas a array usaria, então, o menor deno-minador comum, o que desperdiçaria espaço. Discos do mesmo tipo simplificam a configu-ração. Por outro lado, administradores expe-rientes também recomendam usar discos de diferentes fornecedores, ou em série, para mi-nimizar a probabilidade de que todos os dis-cos possam sofrer do mesmo erro de fábrica.

Podemos usar as ferramentas de particiona-mento (fdisk, sfdisk etc.) para definir o tipo de partição para Linux raid autodetect, que pos-sui um código de FD. É possível transferir os dados da partição de um disco usando sfdisk:

sfdisk -d /dev/sda | sfdisk /dev/sdd

Page 6: A m aide Criação de sistemas RAID - … em qualquer bom servidor. ... raider -R1 O usuário não precisa declarar os discos e ... a falha de um segundo seria um de-

58 www.admin-magazine.com.br

RAID com Raider

Para criar o RAID, utilize o comando mdadm --create com o nível de RAID desejado e as partições necessárias:

mdadm --create /dev/md0--level=5--raid--devices=3/dev/sdb1 /dev/sdc1 /dev/sdd1

Alternativamente, o usuário pode criar um RAID com menos discos do que o neces-sário, se reduzir --devices adequadamente ou especificar a falta, ao invés de uma partição. Depois de atingir o número predefinido de dispositivos, o subsistema RAID sincroniza a nova array, mesmo que o usuário ainda não tenha memorizado todos os dados sobre ela.

Agora podemos criar um sistema de arquivos ou volumes lógicos. Para mais informações sobre como criar volumes lógicos, consulte o artigo “Fundamentos LVM” por Charly Kuhnast [3].

ConclusãoO Raider ajuda administradores a converter partições Linux convencionais para sistemas

RAID. Ele suporta um elevado número de sistemas de arquivos – RAID nível 1, 4, 5, 6 e 10 – bem como as tabelas de partição nos formatos MBR e GPT. A ferramenta é confiá-vel e pede ao usuário que faça o swap de dois discos para garantir que um sistema viável seja criado e permitir o restabelecimento em segurança do estado inicial.

Gostou deste artigo?Veja este artigo em nosso site:http://www.lnm.com.br/admin/article/8429

Queremos ouvir sua opinião. Fale conosco em:[email protected]

Mais informações[1] Raider: http://raider.sourceforge.net/[2] Paridade tripla do RAID Z por Adam Le-venthal: https://blogs.oracle.com/ahl/en-try/triple_parity_raid_z[3] O básico do LVM, por Charly Kühnast, ADMIN 7