APLICANDO SOLUÇÕES INTELIGENTES
Como diminuir EBS root drive de servidores LINUX na AWS

É muito comum, na hora de dimensionar um servidor para uma nova aplicação, os administradores alocarem muito mais recursos do que realmente é necessário e depois de deixar a aplicação rodando por determinado tempo muitas vezes nota-se que o servidor foi superdimensionado.
Como você já deve saber, com as facilidades da virtualização é muito fácil alterar o tamanho de memória e CPU de um servidor, mas você já pensou sobre diminuir tamanho de um volume?
Quando essa pergunta vem à tona eu sempre ouço coisas do tipo : Aumentar dá mas diminuir não, não da pra garantir a integridade dos dados, tem que ter coragem pra fazer isso, não é possível.. e mais algumas desculpas...
Hoje eu quero mostrar pra vocês como reduzir um volume EBS dentro da AWS. Mas não um simples volume de dados que qualquer cp e rsync resolve, mas sim o volume do sistema operacional... Então vamos lá !
1- Primeiro de tudo gere um snapshot do seu EBS root drive que você deseja reduzir (/dev/xvda1 ou /dev/sda1)
2 - Quando seu snapshot estiver criado gere um volume EBS do snapshot, isso será necessário para você mover os dados sem editar o volume de produção.
3 - Quando o volume estiver criado, anexe ele no seu servidor. Mas anexe ele como um volume adicional. No meu exemplo ele será o /dev/xvdf.
** Não é obrigado ser no mesmo servidor, mas ele será necessário na hora de reinstalar o grub no volume. Caso você faça esse procedimento em outro servidor ele pode instalar módulos e configurações diferentes no seu volume. E isso fará com que o servidor não ligue! **
4- Monte seu volume de backup no /dev/xvdf :
4.1 mkdir /volume_original
4.2 mount /dev/xvdf1 /volume_original
5 - Agora crie um novo volume com o tamanho novo que você quer, lembrando que o tamanho será inferior. Se for pra ser superior nada desse post é necessário!
6 - Anexe o volume novo no servidor que você anexou o volume do item 3. No meu caso esse volume novo foi anexado como /dev/xvdg
7 - Formate seu volume novo. Eu vou usar ext4 pois meu servidor é ubuntu, porém ext4 já irá funcionar e todas versões. Minha sugestão é seguir a mesma versão do seu SO. caso você não saiba o comando "cat /etc/fstab" irá mostrar.
7.1 mkfs.ext4 /dev/xvdg
8 - Monte o volume no seu sistema operacional:
8.1 mkdir /volume_novo
8.2 mount /dev/xvdg /volume_novo
9 - Execute uma cópia dos dados. Eu não conheco ferramenta melhor que o rsync pra fazer isso. ele já é nativo e irá te ajudar.
9.1 rsync -avx /volume_original/ /volume_novo/
10 - Dependendo o tipo de volume que você estiver usando pode demorar MUITO para finalizar o rsync.. então utilize o seguinte script pra te ajudar a ter uma estimativa de quanto tempo isso vai levar :
11 - Quando finalizar a cópia . Copie o LABEL do volume backup para o novo.
11.1 - e2label /dev/xvdf1 #copie o label que ele mostrar. por exemplo : cloudimg-rootfs
11.2 - e2label /dev/xvdg <label_do_11.1>
12 - Reinstale o grub no seu novo volume.
12.1 - grub-install --root-directory=/volume_novo/ --force /dev/xvdf
12.2 - dependendo a sua versão de SO ele pode falhar, se for o caso execute : grub-install --root-directory=/volume_novo/ /dev/xvdg
13.1 - umount /volume_novo
14 - Altere o UUID do seu volume_novo igual o volume_original:
14.1 - blkid | grep -i /dev/xvdf #Pegue o UUID do volume_original
14.2 - tune2fs -U <uuid_do_passo_14.1> /dev/xvdg
15 - Pronto seu volume está pronto. Agora você precisa desatachar ele da instância atual e anexar onde você quizer como root drive! Lembre-se ele precisa ser o /dev/sda1 ou /dev/xvda1 da sua futura instância.
Quer aprender mais sobre AWS e SHELL Scripting ? visite mugnos-it.com/treinamentos
Posts Recentes
Procurar por tags
