você está aqui: Home  → Arquivo de Mensagens

Migracao sistemas de arquivos EXT3 para RAID-X

Colaboração: Jairo Willian Pereira

Data de Publicação: 17 de Outubro de 2004

Passo 00: Material Necessario

  • Live-CD de reparacao bootavel c/ raidtools (ex. Knoppix 3.x)
  • PC auxiliar para a replicacao dos dados e reconstrucao dos arrays
  • HD adicional
  • raidtools 0.9 (ou posterior) instalado na maquina "em migracao"

Passo 01: Introducao

Dispositivos RAID sao combinacoes de particoes em arrays de algum tipo previamente definido. Significa "Redundant Array of Inexpensive Disks" e foram inicialmente implementados e definidos por pesquisadores da Universidade de Berkeley, Califórnia. Atualmente existem onze onze tipos de RAID (0, 1, 2, 3, 4, 5, 6, 7, 10, 53 e 0+1), sendo os mais comuns:

RAID0 - Stripping Disc. Funciona transformando diversos discos em uma unica unidade. Prove maior velocidade de acesso em funcao de segmentar os dados entre os discos envolvidos no processo. O fator "seguranca" eh prejudicado, nao fornecendo qualquer tipo de redundancia. Minimo de 2 particoes.

RAID1 - Mirror Disc. Trabalha com sistema de espelhamento, onde a informacao gravada em um disco eh duplicada no disco parceiro. Se comparado ao RAID0, perde no quesito velocidade, mas fornece seguranca adicional a partir do clone. Nesse sistema, pode haver utilizacao de discos "Spare" aumentando proporcionalmente a seguranca do sistema. O espaco disponivel e uma das desvantagens, visto que trabalha com duplicacao da informacao. Minimo de 2 particoes.

RAID5 - Parity Disc. Similar ao RAID-0, mas implementa paridade de dados através do funcao logica XOR. Assim, consegue uma camada de seguranca adicional, usando um dos discos como disco de paridade (o RAID4 eh similar, mas grava a informacao de paridade no mesmo disco). Minimo de 3 discos.

Passo 02: Backup das Particoes de Dados

Para maior seguranca durante processo de migracao, eh altamente recomendado o backup do disco origem, seja em midia removivel ou outro dispositivo de armazenamento em massa. Eh altamente recomendado que o usuario leia mesmo que parcialmente a manpage das utilitarios envolvidos nesse processo.

Passo 03: Replicacao dos Dados e Reconstrucao dos Arrays

Como inicialmente voce precisara de mais um disco para o processo de RAID, recomendo que particione e formate o novo disco exatemente igual ao disco origem. Faca um clone do disco origem (leia original, ou o disco principal) para o disco de destino, remove o disco original e execute as operacoes seguintes no disco de destino/clonado. Somente apos o RAID estar completamente em pe, enisra o disco original (que tambem deve ter uma copia reserva) e junte-o ao RAID.

Efetuar o boot do Live-CD de reparacao (Knoppix 3.x). Nesta configuracao, os disposistivos devem ser reconhecidos pelo sistema da seguinte forma:

  /dev/hda - CD-ROM
  /dev/hde - Disco IDE-1 (Promise) - Original
  /dev/hdg - Disco IDe-2 (promise) - Clone

Essa copia pode ser efetuada particao a particao utilizando o tar.

  # mount /dev/hdex /mnt/hdex
  # mount /dev/hdgx /mnt/hdgx
  # (cd /mnt/hdex; tar cpvls --atime-preserve --same-owner -f - .) | (cd /mnt/hdgx; tar xf -)

Recomendo que faca apenas o particionamento, visto que essa "nova particao sera posteriormente formatada". A ideia da copia eh interessante apenas para ter uma "garantia extra" enquanto o processo nao eh finalizado. Se preferir fazer a copia do disco por inteiro, podera utilizar tambem o dd.

  # dd if=/dev/hde of=/dev/hdg bs=1024

Finalizado o processo, os discos ja estao particionados e operacionais. Removeremos o disco original, colocaremos o disco clonado na posicao do original, faremos um novo reboot com o Live-CD e alteraremos a definicao do tipo para cada particao participante do RAID. Veremos como inicialmente encontram-se as atuais particoes do disco CLONADO.

  # fdisk -l /dev/hde
  
  Disk /dev/hde: 255 heads, 63 sectors, 9729 cylinders
  Units = cylinders of 16065 * 512 bytes
  
     Device Boot    Start       End    Blocks   Id  System
  /dev/hde1             1      1913  15366141   83  Linux
  /dev/hde2          1914      3188  10241437+  83  Linux
  /dev/hde3          3189      3316   1028160   83  Linux
  /dev/hde4          3317      9729  51512422+   5  Extended
  /dev/hde5          3317      3447   1052226   82  Linux swap
  /dev/hde6          3448      4340   7172991   83  Linux

Efetuando as alteracoes, o fdisk devera apresentar:

  # fdisk -l /dev/hde
  
  Disk /dev/hde: 255 heads, 63 sectors, 9729 cylinders
  Units = cylinders of 16065 * 512 bytes
  
     Device Boot    Start       End    Blocks   Id  System
  /dev/hde1             1      1913  15366141   fd  Linux raid autodetect
  /dev/hde2          1914      3188  10241437+  fd  Linux raid autodetect
  /dev/hde3          3189      3316   1028160   fd  Linux raid autodetect
  /dev/hde4          3317      9729  51512422+   5  Extended
  /dev/hde5          3317      3447   1052226   82  Linux swap
  /dev/hde6          3448      4340   7172991   fd  Linux raid autodetect

A snn informacoes sobre os dispositivos RAID, ficam armazenadas em /etc/raidtab. O arquivo eh o mesmo utilizado para qualquer tipo de RAID, alterando apenas opcoes especificas para cada tipo. Nesse exemplo (RAID1), nao ha presenca de "spare-disk" e tenho o indicador de falha de disco comentado. Vamos contruir o arquivo (esse arquivo devera ser gerado no disco de original, visto que posteriormente sera copiado para o HD destino).

  #Partition 1 - /home
  raiddev             /dev/md0
  raid-level                  1
  nr-raid-disks               2
  persistent-superblock       1
  chunk-size                  64k
  nr-spare-disks              0
      device          /dev/hde1
  #   failed-disk   0
      raid-disk     0
      device          /dev/hdg1
      raid-disk     1
  
  #Partition 2 - /var
  raiddev             /dev/md1
  raid-level                  1
  nr-raid-disks               2
  persistent-superblock       1
  chunk-size                  64k
  nr-spare-disks              0
      device          /dev/hde2
      raid-disk     0
      device          /dev/hdg2
      raid-disk     1
  
  # Partiion 3 - /other
  raiddev             /dev/mdX
  raid-level                  1
  nr-raid-disks               2
  persistent-superblock       1
  nr-spare-disks              0
      device          /dev/hdeY
      raid-disk     0
      device          /dev/hdgY
      raid-disk     1

Esse arquivo so vai entrar em funcionamento, quando as aplicacoes RAID (raidtools) estiverem operacionais, os dispositivos RAID completamente inicializados e adicionados alem de /etc/fstab estar apontado para os novos dispositivos (/dev/mdx). Esse processo sera posteriormente apresentado.

Para melhor ilustrar a disposicao dos arrays, no caso do arquivo anteriormente apresentado, temos:

  md0 - formado por hde1 e hdg1  (/home)
  md1 - formado por hde2 e hdg2  (/var)

E assim sucessivamente para as demais particoes. Vale mencionar, que a particao de SWAP nao foi adicionada para participar do RAID. Um truque interessante esta em definir no arquivo /etc/fstab ambas as particoes de SWAP (hde5 e hdg5) com a mesma prioridade (pri=3).

Apos todas as definicoes, efetuaremos a construcao em background dos arrays. Para cada dispositivo raid (mdX), executar:

  # mkraid /dev/mdX

Todo progresso da criacao dos arrays podera ser visulizada atraves do arquivo /proc/mdstat e poderao ser imediatamente utilizados apos a insercao do comando (nao ha necessidade de esperar a finalizacao). Caso deseje acompanha-lo, constantemente:

  # while true; do clear; cat /proc/mdstat; sleep 5; done

Feito a inicializacao dos dispositivos RAID, refaremos a formatacao das particoes do disco (esse passo eh destrutivo e necessitara das informacoes do Backup oriundas do disco origem). Para cada dispositivo raid (mdX):

  # mkfs -j -m0 -L <label> /dev/mdX

(onde <label> sera o nome da particao destino, e.g. /home, /var, etc...)

  # fsck -f /dev/mdX

Finalizado esse processo, devemos montar os sistemas de arquivos backupeados e tranferi-los para a nova particao. Idealmente devemos criar para cada particao, uma diretorio dentro do respectivo destino (velho para disco backup e novo para disco RAID).

  # cd /mnt; mkdir velho novo
  # cd /mnt/velho;
  # cd /mnt/novo;

Para cada particao, executaremos:

  # mount -t ext3 /dev/hdVelho /mnt/velho/[home|root|var|...]
  # mount -t ext3 /dev/mdNovo /mnt/novo/[home|root|var|...]

Executando a copia dos dados das particoes antigas para as novas particoes.

  # (cd /mnt/velho/xxx; tar cpvls --atime-preserve --same-owner -f - .) | (cd /mnt/novo/xxx; tar xf -)

Apos conferido a perfeita copia dos discos, remover os discos de backup, e rebootar a maquina. Obs: muita atencao com a posicao dos discos na controladora IDE. Outro detalhe, diz respeito a sobreposicao de arquivos. Lembre-se que voce devera ter as copias dos arquivos editados atualizadas no disco de origem!

Finalizado a copia, chegou a hora das alteracoes dos arquivos previamente editados. Boot a maquina com o Live-CD e monte a particao onde se encontra o diretorio root.

Edite os arquivos de configuracao para refletir as alteracoes na nomenclatura do disco no sistema, caso haja alguma mudanca (hde -> hdc ou outra alteracao).

Em sistemas Linux, a definicao & distribuicao do sistema de arquivos fica armazenado em /etc/fstab. O arquivo apresentado, inicialmente ainda esta usando o esquema de particoes antigo.

  # /etc/fstab: static file system information.
  #
  # <file system> <mount point>   <type>    <options>               <dump>  <pass>
  /dev/hde1       /home           ext3      defaults                0       2
  /dev/hde2       /var            ext3      defaults                0       2
  /dev/hde3       /               ext3      errors=remount-ro       0       1
  /dev/hde5       none            swap      sw,pri=3                0       0
  /dev/hdg5       none            swap      sw,pri=3                0       0
  /dev/hde6       /usr            ext3      defaults                0       2
  proc            /proc           proc      defaults                0       0
  /dev/fd0        /floppy         auto      user,noauto             0       0
  /dev/cdrom      /cdrom          iso9660   ro,user,noauto          0       0

A nova versao devera comportar sua nova estrutura de dispositivos RAID, ficando:

  # /etc/fstab: static file system information.
  #
  # <file system> <mount point>   <type>    <options>               <dump>  <pass>
  /dev/md0	/home		ext3	  defaults		  0       2
  /dev/md1	/var		ext3	  defaults		  0       2
  /dev/md2        /               ext3      errors=remount-ro       0       1
  /dev/hde5       none            swap      sw,pri=3                0       0
  /dev/hdg5       none            swap      sw,pri=3                0       0
  /dev/md3        /usr            ext3      defaults                0       2
  proc            /proc           proc      defaults                0       0
  /dev/fd0        /floppy         auto      user,noauto             0       0
  /dev/cdrom      /cdrom          iso9660   ro,user,noauto          0       0

Feito as alteracoes, os arquivos do BootLoader deverao ser atualizados para refletir as modificacoes. Nesse exemplo (usando Grub), o arquivo grub.conf foi modificado para apontar para as identificaoes RAID.

  kernel /boot/vmlinuz-2.4.20-13.7 ro root=/dev/md2 hda=ide-scsi

Obs: O Lilo oferece opcoes mais interessantes para lidar com boot alternativo em dispositivos RAID em caso de falhas. Segue exemplo de uma bem interessante. Consulte a manpage do programa para informacoes sobre compatibilidade e outros recursos.

  boot=/dev/md2
  raid-extra-boot="/dev/hde,/dev/hdg"

Passo 04: Ajustes Finais

Nesse ponto, reinstalar o grub, alterando antes para ambiente chroot apontando para a nova instalacao.

  # chroot /mnt/novo /bin/bash
  # grub
  ...
  grub> root (hd0,0)
  grub> setup (hd0)
  grub> quit

Bootar o servidor e verificar se todo o sistema monta da maneira desejada.

Passo 05: Leitura Complementar & Links Interessantes



Veja a relação completa dos artigos de Jairo Willian Pereira

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script