Linux Brasil

Substituição de Discos em LVM

Para substituição de discos em LVM, o processo não é tão simples quanto desconectar o HD com problemas e substituí-lo que tudo volta ao normal. Precisa-se seguir algumas etapas, para garantir a integridade dos dados.
Irei ao longo deste post, mostrar esses processos e explicar os comandos executados.

Vou criar um ambiente para explicar melhor o processo.

Vamos imaginar o seguinte ambiente: Temos um servidor Linux (qualquer distro. O processo é igual para todas), contendo 4 discos.

Teremos um Volume Group (VG) com nome vg00, e um Logical Volume (LV) com nome lv_root

Disco 0: /dev/sda = 500 GB
Disco 1: /dev/sdb = 3 TB
Disco 2: /dev/sdc = 3 TB
Disco 3: /dev/sdd = 3 TB

Os discos vão estar formatados assim:

———————————————————

Disco 0: /dev/sda

  • Partição -> /dev/sda1 128 MB
      /boot -> ext2
  • Partição -> /dev/sda2 4 GB
      swap
  • Partição -> /dev/sda3 495 GB
      / -> ext3
  • ———————————————————

    Disco 1: /dev/sdb

  • Partição -> /dev/sdb1 3 TB
      LVM Type
  • ———————————————————

    Disco 2: /dev/sdc

  • Partição -> /dev/sdc1 3 TB
      LVM Type
  • ———————————————————

    Disco 3: /dev/sdd

  • Partição -> /dev/sdd1 3 TB
      LVM Type
  • ———————————————————

    Com essa configuração, Teremos o nosso VG e LVM com aproximadamente 9 TB

    Vamos imaginar que o nosso disco /dev/sdd esteja apresentando problemas e com isso, não conseguimos mais montar a nossa LVM.

    Iremos precisar substitur o disco /dev/sdd por um disco novo. Portanto para tal, iremos executar o seguinte processo:

    # Executaremos o fsck para assegurarmos que o LVM ficará integro
    # para executarmos o resize do Filesystem.
    e2fsck -f /dev/vg00/lv_root
    # O comando e2fsck, deverá demorar um pouco para terminar
    # Mas, depois que o comando terminar a execução, será hora de
    # executarmos o resize do filesystem
    
    resize2fs -p /dev/vg00/lv_root 5800G
    # O resize, vai diminuir o Filesystem de 9000G para 5800G
    # Lembrando que, o Filesystem sempre deverá ficar menor que o
    # Volume Lógico do disco para não correr o risco de corromper
    # o Sistema de Arquivos
    
    # Agora é hora de diminuirmos o Volume Lógico com o seguinte 
    # comando.
    lvreduce -L 5900G /dev/vg00/lv_root
    # Esse comando não demorará muito para terminar
    
    # Agora, iremos retirar qualquer dado que esteja no disco
    # /dev/sdd1 com o seguinte comando:
    pvmove -v /dev/sdd1
    # Com a execução desse comando, pode ir tomar um café,
    # assistir ao jornal nacional, etc, pq ele vai demorar
    # Muuuuuito para terminar
    
    # No dia seguinte... rsssss Brincadeira
    # Depois que terminar a execução, vamos dar uma olhada em como 
    # ficou. Execute o comando
    pvs -o+pv_used
    
    # teremos algo parecido com o seguinte:
      PV         VG   Fmt  Attr PSize   PFree  Used
      /dev/sdb1  vg00 lvm2 a-     2,82T     0    2,82T
      /dev/sdc1  vg00 lvm2 a-     2,82T     0    2,82T
      /dev/sdd1  vg00 lvm2 a-     2,82T 2,82T    0
      
    # Pronto, o disco está vazio. Chegou a hora de removermos ele do
    # VG com o comando:
    vgreduce vg00 /dev/sdd1
    
    # Ao executar o comando:
    pvs
    # O disco /dev/sdd1, não irá mais aparecer.
    # Pode desligar a máquina e substituir o disco com problema.
    

    Agora chegou a hora de adicionar o disco ao LVM já existente. O processo, é simples. É o mesmo processo de retirada, só que ao contrário. Mudam-se alguns comandos, mas, o processo é praticamente o mesmo. Vamos dar uma olhada.

    # Com o novo disco colocado, instalado e reconhecido pela BIOS
    # do equipamento, iremos fazer o seguinte
    fdisk /dev/sdd
    # O comando acima, abre o utilitario fdisk para criarmos partições
    # no novo disco.
    # No final de cada linha apresentada, deixei a letra/número da opção
    # Para criarmos uma partição no disco novo do tipo LVM.
    
    # Nessa tela, utilizamos a letra "N"
    Command (m for help): N
    
    # Nessa tela, utilizamos a letra "P"
    Command action
       e   extended
       p   primary partition (1-4) P
       
    # Nessa tela, utilizamos o número "1"
    Partition number (1-4): 1
    
    # Aqui, entraremos com o valor Default, teclando ENTER
    First cylinder (1-10443, default 1): <ENTER>
     
    Using default value 1
    
    # Aqui, entraremos com o tamanho que queremos que a partição tenha como
    # no exemplo
    Last cylinder or +size or +sizeM or +sizeK (1-10443, default 10443): Tamanho desejado. Ex: +2820G
    
    # Aqui entraremos com a tecla "T" para entrarmos no menu do tipo
    # de partições.
    Command (m for help): T
    
    # Aqui, entraremos com a letra "L" para listarmos todas as opções
    # disponíveis
    Selected partition 1
    Hex code (type L to list codes): L
    
     0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
     1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
     2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
     3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
     4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
     5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
     6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
     7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
     8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
     9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
     a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
     b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
     c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
     e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
     f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
    10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
    11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
    12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
    14  Hidden FAT16 ❤ 61  SpeedStor       a9  NetBSD          f4  SpeedStor
    16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
    17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
    18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
    1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
    1c  Hidden W95 FAT3 75  PC/IX
    # Aqui, utilizaremos partição do tipo Linux LVM com valor
    # Hexadecimal "8E"
    Hex code (type L to list codes): 8E
    
    Changed system type of partition 1 to 8e (Linux LVM)
    
    # Aqui, entraremos com a tecla "W" para gravarmos as alterações
    # no disco.
    Command (m for help): W
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # Com as partições criadas, é hora de darmos continuidade no processo
    # para adicionarmos o novo disco à LVM.
    # O comando abaixo irá criar um Physical Volume na partição /dev/sdd1
    pvcreate /dev/sdd1
    
    # Com o Physical Volume criado, iremos expandir o nosso VG
    vgextend vg00 /dev/sdd1
    
    # Podemos ver, que o novo disco, já aparece no vg00
    # Podemos ver com o comando
    pvs -p+pv_used
    
    # Teremos algo, parecido com o quadro a seguir.
      PV         VG   Fmt  Attr PSize   PFree  Used
      /dev/sdb1  vg00 lvm2 a-     2,82T     0    2,82T
      /dev/sdc1  vg00 lvm2 a-     2,82T     0    2,82T
      /dev/sdd1  vg00 lvm2 a-     2,82T     0    2,82T
    
    # Agora, chegou a hora de aumentarmos o Logival Volume
    # com o comando
    lvextend -L+2820G /dev/vg00/lv_root
    
    # Estamos com o processo quase completo. Falta apenas aumentarmos
    # o filesystem com o comando:
    resize2fs /dev/vg00/lv_root
    

    O processo está finalizado e agora, temos o LVM com o tamanho total novamente, conforme estava antes de iniciarmos o processo.

    Qualquer coisa, deixem comentários que eu responderei assim que possível

    Valeu Galera!!!

    Anúncios

    2 Respostas

    1. Diego Motta

      Parabéns pelo blog.
      Obrigado pelo tutorial.
      Sou estudante de sistema linux pelo curso adv, http://www.cursoadv.com.br.
      Tenho usado suas dicas como material complementar para meus estudos, e elas tem me ajudado muito.
      Grato

      15 de setembro de 2014 às 16:10

      • Diego,

        Obrigado.
        Estou com algumas idéias para próximos posts, mas, se alguém tiver sugestão, eu agradeço.

        Abraço

        16 de setembro de 2014 às 14:48

    Deixe um comentário

    Preencha os seus dados abaixo ou clique em um ícone para log in:

    Logotipo do WordPress.com

    Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

    Foto do Google

    Você está comentando utilizando sua conta Google. Sair /  Alterar )

    Imagem do Twitter

    Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

    Foto do Facebook

    Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

    Conectando a %s