Jump to content

Mover Partição Root de CentOS 6.x em Produção para RAID 1 via Software


Jaime Silva

Recommended Posts

O presente tutorial ensina como converter a partição root de um servidor CentOS 6.x em produção para RAID 1 via software e já foi usado pelo autor em pelo menos 4 servidores, os quais também tem o cPanel instalado.

Importante: caso use o CloudLinux, será necessário desistalá-lo e em seguida reiniciar o servidor. Após o procedimento de conversão para RAID, você poderá reinstalá-lo.

Este tutorial baseia-se nas seguintes premissas:

1º O sistema operacional não tem uma partição separada para /boot
2º A partição root está em /dev/sda1 e a partição do disco secundário a ser usada para espelhamento é /dev/sdb1
3º Caso use um layout de particionamento diferente, você saberá adaptar este tutorial para as particularidades do seu caso

1. Particione o disco secundário de acordo com sua preferência, porém a partição que será usada como espelho - no nosso caso /dev/sdb1 - deverá ter exatamente o mesmo tamanho em bytes que a partição do sistema - no nosso caso /dev/sda1.
Se quiser copiar o layout do disco primário para o secundário, execute:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb

2. Crie o dispositivo RAID. Certifique-se de usar o parâmetro “--metadata=0.9″ para garantir que o carregador de boot GRUB funcione:
mdadm --create --verbose /dev/md0 --metadata=0.9 --level=1 --raid-devices=2 missing /dev/sdb1

a - Execute cat /proc/mdstat e verifique se a saída do comando será algo como
Personalities : [raid1]
md0 : active raid1 sdb1[1]
      33554368 blocks [2/2] [UU]     
unused devices: <none>

b - Crie um arquivo mdadm.conf com a configuração do RAID atual:
mdadm --examine --scan >> /etc/mdadm.conf

3. Crie o sistema de arquivos no novo dispositivo RAID:
mkfs.ext4 -L 'root' /dev/md0

4. Edite o arquivo /etc/fstab e mude a partição root do sistema operacional (possivelmente a partição atual é /dev/sda1 ou UUID=abcd1234-ef56-ab78-cd12-abcdef123456) para algo como:
/dev/md0    /    ext4    usrjquota=quota.user,jqfmt=vfsv0    1    1

5. Atualize o initrd e reconstrua o initramfs (faremos uma cópia para o caso de termos algum problema):
cp -pf /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bkp
dracut --mdadmconf  --add-drivers "raid1 raid0" --filesystems "ext4 ext3 swap tmpfs devpts sysfs proc" --force /boot/initramfs-$(uname -r).img $(uname -r)

6. Edite o menu de boot do GRUB (/boot/grub/grub.conf ou /boot/grub/menu.lst) e atualize a informação sobre a nova partição root, que deve ficar algo como:

title CentOS (2.6.32-573.1.1.el6.x86_64)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.32-573.1.1.el6.x86_64 ro root=/dev/md0 nomodeset rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rhgb quiet
    initrd /boot/initramfs-2.6.32-573.1.1.el6.x86_64.img

a - Mude a partição root de root=/dev/sda1 ou root=UUID=abcd1234-ef56-ab78-cd12-abcdef123456 para root=/dev/md0
b - Apague qualquer um destes parâmetros de boot: rd_NO_DM  rd_NO_MD rn_NO_DM rn_NO_MD

Possivelmente deve ter mais de um sistema operacional na lista mas você deve editar apenas o primeiro.

7. Monte o nova partição do sistema em RAID e faça cópia dos arquivos do sistema:
mkdir /raid && mount /dev/md0 /raid
rsync -aAxXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/raid"} / /raid

O último comando acima exclui a cópia de arquivos dos diretórios /dev, /sys, /proc, /tmp e do próprio ponto de montagem da partição RAID e não copia arquivos de outras partições. Ele copia permissões, proprietários, links simbólicos, dispositivos, ACLs e atributos extendidos.

Recomendações:
a. Faça cópia de todos os bancos de dados MySQL: mysqldump -u root --all-databases > /backup/todos_bancos_dados.sql
b. Use o rsync no diretório MySQL quando o servidor SQL estiver parado para evitar (?) corrupção de tabelas do tipo InnoDB:
service mysql stop
rsync -av  /var/lib/mysql /raid/var/lib

8. Instale o GRUB na MBR (ou GPT) do disco secundário:
grub
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

9. Reinicie o sistema operacional:
shutdown -r now

10. Se ocorreu tudo bem e o sistema iniciou, adicione a partição do disco primário ao RAID (a antiga partição do sistema):
mdadm --add /dev/md0 /dev/sda1

Antes, porém, recomendo que faça backup. Digamos que esta partição é /dev/sda1 e haja espaço numa outra partição montada em /backup:
mkdir /mnt/sda1 && mount /dev/sda1 /mnt/sda1
rsync -avAX /mnt/sda1
/backup

11. Acompanhe o processo de cópia do disco em RAID e somente siga para o passo final quando o espelhamento estiver completo:
cat /proc/mdstat

12. Recrie o carregador de boot no disco primário:
grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

Importante: Se o sistema operacional não reiniciar,
1. Entre no modo de recuperação (Rescue Mode na OVH e Hetzner)
2. Monte a partição do sistema: /mount /dev/sda1 /media
3. Edite o arquivo /media/etc/fstab e coloque a partição primária como sendo novamente /dev/sda1.
4. Edite também /media/boot/grub/grub.conf e mude:
a. root=/dev/md0 para root=/dev/sda1
b. restaure o arquivo initramfs: mv -vf /media/boot/initramfs-$(uname -r).bkp /media/boot/initramfs-$(uname -r).img
5. Saia do modo de recuperação e inicie o CentOS novamente.
 

Não há bem nem mal que dure para sempre. Um dia tudo acaba.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?