Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Dica do IBM SmartCloud Enterprise: Configure o Linux Logical Volume Manager

Configure o Linux LVM e o sistema de arquivos para acomodar ofertas de grande volume físico

Mihai Criveti, IT Architect, IBM
Mihai Criveti photo
Mihai Criveti é um IT Architect que trabalha principalmente com computação em nuvem e virtualização. Seus interesses são computação em nuvem, virtualização, arquitetura empresarial, SOA, middleware, perícia digital e sistemas UNIX.

Resumo:  Saiba configurar uma instância de Linux de 64 bits ® (começando com uma oferta de nível Bronze) com o Linux Logical Volume Manager (LVM), capturar uma imagem privada e implementar uma nova instância como uma oferta diferente (nível Platinum) e, em seguida, aumentar os volumes de LVM e sistemas de arquivo para acomodar os novos volumes físicos. Este artigo também mostra como configurar e gerenciar o LVM em volumes físicos usando partições do tipo Linux LVM.

Visualizar mais conteúdo nesta série

Data:  12/Jul/2011
Nível:  Introdutório Também disponível em :   Inglês
Atividade:  2311 visualizações
Comentários:  


Neste artigo, aprenda a:

  • Configurar uma instância de 64 bits (uma oferta de nível Bronze) com o Logical Volume Manager (LVM) de Linux.
  • Capturar uma imagem privada e fornecê-la como uma nova instância Platinum.
  • Aumentar o volume do LVM e o sistema de arquivos para acomodar os novos volumes físicos.
  • Configurar o LVM em volumes físicos usando partições de Linux do tipo LVM.

Contexto sobre o LVM e o cenário de teste

Primeiro, uma descrição dos conceitos de LVM e do cenário de teste para os que talvez não estejam familiarizados com o LVM.

Conceitos do LVM: território perigoso

Observação: Você está prestes a configurar o Linux LVM — território perigoso. Cuidado com o degrau.

O Linux LVM é organizado em physical volumes (PVs), volume groups (VGs) e logical volumes (LVs)

  • Volume físico: HDDs físicas, partições de HDDs físicas (como /dev/vdb1).
  • Extensões: Os PVs são divididos em partes chamadas PEs (physical extents). Os logical extents (LEs) têm uma correspondência de 1:1 com os PEs e são usados para estabelecer a correspondência entre o físico e o lógico.
  • Grupo de volume: um disco virtual formado por volumes físicos agregados. Os VGs podem ser particionados logicamente em LVs.
  • Volume lógico: atua como uma partição de disco virtual. Depois de criar um VG, é possível criar LVs nesse VG. Podem ser usados como dispositivos de blocos brutos, trocar dispositivos ou criar um sistema de arquivos (montável), da mesma forma que as partições de disco.
  • Sistema de arquivos: os LVs podem ser usados como dispositivos brutos ou de troca; entretanto, com maior frequência, são "formatados" com um sistema de arquivos suportado e montados para um ponto de montagem definido. Formatarei o LV como um sistema de arquivos ext3 neste cenário.
  • Tabela de partição: Você usará ferramentas como o fdisk, sfdisk ou cfdisk para manipular a tabela de partição do dispositivo de bloco e criará partições do tipo Linux LVM (8e).

Uma configuração comum para o LVM em instâncias Platinum (atualizadas) seria semelhante ao seguinte diagrama:


Figura 1. Figura 1. A relação do VG local em uma instância Platinum

Essa figura descreve um cenário no qual criamos uma partição adicional no dispositivo de bloco /dev/vdc. Se optássemos por aumentar esse PV, só teríamos uma partição de 500 GB em vdc: /dev/vdc1.

Os discos disponíveis em uma instância Bronze estão indicados em azul e o armazenamento adicional em uma imagem Platinum está indicado em cinza.

Observe também que você não está limitado a um VG ou um LV. Em um ambiente de produção, talvez você veja vários volumes lógicos usados como sistemas de arquivos, dispositivos RAW ou partições de troca de Linux.

Vamos examinar o cenário mais detalhadamente

Um cenário comum na nuvem IBM é o upgrade de instâncias para um nível mais alto de oferta, como Platinum. Isso implica uma mudança nos tamanhos efêmeros de disco.

Neste artigo, é usado um cenário desse tipo, fazendo o upgrade de Bronze 64 para Platinum 64. O fluxo consiste nestas etapas:

  • Aprovisionamento de uma instância de Linux Bronze 64 bits (RHEL 5.5 ou SLES 11 SP1).
  • Configuração do LVM para abranger dispositivos de bloco vazios.
  • Captura de uma imagem privada.
  • Implementação de uma nova instância a partir da imagem capturada como uma instância Platinum.
  • Criação de uma nova partição de LVM a partir do espaço restante do dispositivo de bloco de 500 GB e dos dispositivos de bloco adicionais de 250 GB (anteriormente a capacidade era 350 GB; 150 GB devem ser deslocados) — esta é a alternativa 1.
  • Aumento dos PVs existentes usando pvresize e incluindo os dois dispositivos de bloco adicionais de 500 GB no VG (depois de particionar).
  • Redimensionamento do LV e do sistema de arquivos.

Se você está começando esse processo em uma instância Platinum diretamente ou em qualquer outra oferta, basta adaptar essas etapas para levar em consideração os diferentes dispositivos de bloco.

Para ver detalhes sobre o que o LVM faz e os benefícios do uso do LVM, consulte a seção What is Logical Volume Management do LVM HOWTO. Para ter uma visão geral das ofertas de armazenamento efêmero e detalhes sobre o layout das unidades de disco virtual disponíveis para os sistemas operacionais Linux para cada opção de tamanho de instância na nuvem IBM, consulte A basic understanding of ephemeral storage

Notações, convenções e considerações sobre a configuração do ambiente

Estas são as notações e convenções usadas neste artigo e algumas considerações sobre a configuração do ambiente.

Notações e convenções

  • Comandos executados no sistema como raiz são prefixados com root@host#.
  • Comandos executados no sistema como usuário regular são prefixados com user@host $.
  • A saída dos comandos é delimitada por uma nova linha a partir dos comandos e indentada por uma tabulação à direita (como no bloco de código a seguir):
root@host# 1st command - to be run as root
root@host# 2nd command - to be run as root (previous command has no output)

    output from 2nd command

user@host$ 3rd command - to be run as user

    output from 3rd command
	

Configuração e considerações sobre o ambiente
Use sudo para executar os comandos que requerem privilégios escalados (ou sudo -s). Não use sudo bash , já que isso preserva as definições do ambiente de idcuser. Exemplo: /usr/bin/sudo /usr/sbin/lvmdiskscan.

Há duas questões a ressaltar nesse caso:

  • Esses comandos se aplicam a RHEL 5.5 e imagens de SLES 11 SP1. Imagens mais antigas, como RHEL 5.4, não suportam dispositivos VirtIO e use nomes de dispositivo ATA (como /dev/hda). Além disso, por padrão, as imagens legadas têm um esquema de partição diferente e aumentam o sistema de arquivos no aprovisionamento. Se você quiser configurar o LVM em imagens legadas, leve em conta essas diferenças.
  • Muitos comandos do LVM suportam um sinalizador de teste (-t, --test), um nível de detalhamento (-v, --verbose; repita de uma a três vezes para aumentar o detalhamento) e um sinalizador de depuração (-d, --debug; repita de uma a seis vezes para aumentar o detalhamento das mensagens enviadas a arquivos de log e/ou syslog). Use esses sinalizadores nos comandos depois de ler as suas respectivas man pages para ver quais comandos mudam. O código a seguir mostra um exemplo:
root@host# pvcreate -d -v -t /dev/vdc1
    Test mode: Metadata will NOT be updated.
    Set up physical volume for "/dev/vdc1" with 734002353 available sectors
    Zeroing start of device /dev/vdc1
    Physical volume "/dev/vdc1" successfully created
    Test mode: Wiping internal cache
    Wiping internal VG cache
	

No SLES, o local das ferramentas do LVM é /sbin. No RHEL, é /usr/sbin. É necessário incluir esses locais no seu PATH ao chamá-las com o PATH relativo:

user@host$ sudo -s
root@host# export PATH=$PATH:/sbin:/usr/sbin

Recomendo enfaticamente que você faça um backup dos seus dados antes de executar estas etapas.

Este artigo mostra como configurar o LVM usando partições de disco em vez de dispositivos de blocos brutos; usar dispositivos de blocos brutos não é recomendável e dificulta os upgrades e o acompanhamento dos discos usados.

Há várias formas de proceder neste cenário de upgrade. A mais fácil é fazer o backup dos seus dados na instância Bronze e, em seguida, fazer o upgrade para uma instância Platinum e reconfigurar o LVM do zero (incluindo a criação de um novo sistema de arquivos) e depois restaurar os dados.

Aumentar o LVM já existente é um caminho mais rápido, mas mesmo assim, você deve parar para fazer o backup dos dados.

Agora, vamos abordar a configuração da instância pai.


Configuração da instância pai

Ao configurar a instância pai, você deve levar em conta a configuração do LVM na instância. Se você está começando com uma oferta que não seja Bronze de 64 bits, precisa adaptar essas etapas para que correspondam aos dispositivos de bloco de armazenamento efêmero disponíveis na instância. Por exemplo, em instâncias de Bronze de 32 bits, você só tem um bloco de 175 GB disponível para o LVM. Será necessário adaptar o comando vgcreate para que use somente a partição /dev/vdb1.

Vamos começar com as etapas para fornecer uma instância Bronze de 64 bits e configurar o LVM.

  1. Verifique quais dispositivos de bloco podem ser usados para a criação de volumes físicos. Verifique o ring buffer do kernel e as partições usando dmesg; cat /proc/partitions e, em seguida:
    1. Faça uma varredura procurando dispositivos de bloco. É possível ver dois discos sem nenhuma partição: /dev/vdb, /dev/vdc. Ignore os discos de RAM.
      root@host# lvmdiskscan | grep -v ram
      
          /dev/vda1    [      101.94 MB]
          /dev/root    [       59.90 GB]
          /dev/vdb     [      500.00 GB]
          /dev/vdc     [      350.00 GB]
          /dev/vdd1    [        4.00 GB]
          5 disks
          16 partitions
          0 LVM physical volume whole disks
          0 LVM physical volumes
      	

    2. Confirme que os dispositivos de bloco não contêm tabelas de partição.
      root@host# fdisk -l | grep partition
      
          Disk /dev/vdb doesn't contain a valid partition table
          Disk /dev/vdc doesn't contain a valid partition table

  2. Crie partições de Linux do tipo LVM e inicialize-as para usar como volumes físicos de LVM.
    1. Crie um arquivo de resposta de fdisk. Ao executar isso pela primeira vez, você deve fazê-lo manualmente no fdisk.
      root@host# cat > fdisk.lvm.partitions << EOF
      
      n
      p
      1
      
      
      t
      8e
      w
      EOF

    2. Gere o script de configuração que remove as tabelas de partição já existentes, relê a tabela de partição, cria um ID de partição 8e (Linux LVM) no dispositivo de bloco e inicializa as partições do Linux LVM para usá-las como volumes físicos do LVM.

      Já que a configuração de armazenamento da sua imagem pode ser diferente, é importante que você entenda, realize manualmente e corrija essas etapas conforme seja necessário na sua instância. Para ver os detalhes, leia a man page do fdisk digitando man fdisk na sua instância.

      O trecho de código a seguir gera as etapas para criar o tipo de partição do Linux LVM em dispositivos de bloco não designados. Certifique-se de que esses discos sejam os discos corretos que você deseja incluir no LVM.

      root@host# for i in $(fdisk -l 2>&1| awk '/valid/{print $2}')
      do 
      echo "# Partition and initialize LVM PV for device $i"
      echo dd if=/dev/zero of=$i bs=1024 count=1  # Clear partition table
      echo blockdev --rereadpt $i                 # Re-read partition table
      echo fdisk $i \< fdisk.lvm.partitions    # Create Linux LVM partition
      echo pvcreate ${i}1                         # Initialize Physical Volume
      echo -e "\n"
      done

      Estes são os resultados da execução desse script na instância de Bronze:

          # Partition and initialize LVM PV for device /dev/vdb
          dd if=/dev/zero of=/dev/vdb bs=1024 count=1
          blockdev --rereadpt /dev/vdb
          fdisk /dev/vdb < fdisk.lvm.partitions
          pvcreate /dev/vdb1
          
          # Partition and initialize LVM PV for device /dev/vdc
          dd if=/dev/zero of=/dev/vdc bs=1024 count=1
          blockdev --rereadpt /dev/vdc
          fdisk /dev/vdc < fdisk.lvm.partitions
          pvcreate /dev/vdc1

      Você tem que verificar e executar manualmente essas etapas geradas, dependendo dos discos que deseja incluir no lVM. Não se limite a copiar a colar esse resultado na sua instância.

    3. Certifique-se de ter criado as partições do LVM.
      root@host# fdisk -l  | grep LVM
      
          /dev/vdb1               1     1040253   524287480+  8e  Linux LVM
          /dev/vdc1               1      728177   367001176+  8e  Linux LVM

    4. Certifique-se de que os volumes físicos do LVM tenham sido criados.
      root@host# lvmdiskscan | grep -v ram
      
          /dev/vda1    [      101.94 MB]
          /dev/root    [       59.90 GB]
          /dev/vdb1    [      500.00 GB] LVM physical volume
          /dev/vdc1    [      350.00 GB] LVM physical volume
          /dev/vdd1    [        4.00 GB]
          3 disks
          16 partitions
          0 LVM physical volume whole disks
          2 LVM physical volumes

  3. Crie um novo grupo de volumes.
    1. Crie um grupo de volumes (chamado localvg neste exemplo) usando os volumes físicos definidos na etapa anterior e a opção (-A).
      root@host# vgcreate -A y localvg /dev/vdb1 /dev/vdc1
      
          Volume group "localvg" successfully created

    2. Exiba os atributos do grupo de volumes.
      root@host# vgdisplay
      
          --- Volume group ---
          VG Name               localvg
          System ID
          Format                lvm2
          Metadata Areas        2
          Metadata Sequence No  1
          VG Access             read/write
          VG Status             resizable
          MAX LV                0
          Cur LV                0
          Open LV               0
          Max PV                0
          Cur PV                2
          Act PV                2
          VG Size               849.99 GB
          PE Size               4.00 MB
          Total PE              217598
          Alloc PE / Size       0 / 0
          Free  PE / Size       217598 / 849.99 GB
          VG UUID               8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA

  4. Crie um novo volume lógico.
    1. Crie um novo volume lógico linear do tamanho desejado. Consulte as man pages de lvcreate para ver opções adicionais, como a especificação do tamanho (-L 100GB) ou como a porcentagem do VG (-l 20%VG).
      root@host# lvcreate -A y -l 100%VG -n datalv localvg
      
          Logical volume "datalv" created

    2. Exiba os volumes lógicos.
      root@host# lvdisplay -v
      
          Finding all logical volumes
          --- Logical volume ---
          LV Name                /dev/localvg/datalv
          VG Name                localvg
          LV UUID                5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj
          LV Write Access        read/write
          LV Status              available
          # open                 0
          LV Size                849.99 GB
          Current LE             217598
          Segments               2
          Allocation             inherit
          Read ahead sectors     auto
          - currently set to     256
          Block device           252:0

  5. Crie e monte o(s) novo(s) sistema(s) de arquivo(s).
    1. Crie um ponto de montagem para o novo sistema de arquivos.
      root@host# mkdir /data

    2. Formate o volume lógico como ext3. O nome do dispositivo é listado sob LV Name\ na Etapa 4b. Dê a ele um rótulo amigável (-L). Exemplo: swap1, "/datalv".
      root@host# mkfs.ext3 -L datalv /dev/localvg/datalv
                                      
          mke2fs 1.39 (29-May-2006)
          Filesystem label=datalv
          OS type: Linux
          Block size=4096 (log=2)
          Fragment size=4096 (log=2)
          111411200 inodes, 222820352 blocks
          11141017 blocks (5.00%) reserved for the super user
          First data block=0
          Maximum filesystem blocks=4294967296
          6800 block groups
          32768 blocks per group, 32768 fragments per group
          16384 inodes per group
          Superblock backups stored on blocks:
          32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
          4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
          102400000, 214990848
          
          Writing inode tables: done
          Creating journal (32768 blocks): done
          Writing superblocks and filesystem accounting information: done
          
          This filesystem will be automatically checked every 23 mounts or
          180 days, whichever comes first.  Use tune2fs -c or -i to override.

      Talvez seja conveniente alterar o intervalo de execução de fsck . A execução de fsck em sistemas de arquivos muito grandes demora muito. Novamente, a restauração de dados também...

    3. Crie uma entrada de fstab para que possa ser montado automaticamente no boot. Inclua a linha a seguir em /etc/fstab. É possível usar qualquer editor de texto, como o vi:
      /dev/localvg/datalv  /data        ext3    defaults        0 1

      Também é possível usar echo e pipes:

      echo \
      "/dev/localvg/datalv  /data        ext3    defaults        0 1" \
      >> /etc/fstab

      Ao usar 1 na última linha, saiba que fsck pode demorar muito para percorrer um sistema de arquivos muito grande. Além disso, depois de reiniciar a máquina, também se pode usar LABEL=datalv. Por enquanto, use /dev/localvg/datalv.

    4. Monte o sistema de arquivos.
      root@host# mount /data

    5. Verifique se o sistema de arquivos foi montado.
      root@host# mount | grep data
      
          /dev/mapper/localvg-datalv on /data type ext3 (rw)

  6. Configure o serviço de boot do LVM no SLES. Isso não é necessário no RHEL.
    1. Inicie o serviço de boot do LVM.
      root@host# service boot.lvm start
      
          Waiting for udev to settle...
          Scanning for LVM volume groups...
          Reading all physical volumes.  This may take a while...
          Found volume group "localvg" using metadata type lvm2
          Activating LVM volume groups...
          1 logical volume(s) in volume group "localvg" now active

    2. Habilite o serviço do LVM na inicialização.
      root@host# chkconfig --add boot.lvm; chkconfig boot.lvm on
      
          boot.lvm            0:off  1:off  2:off  3:off  4:off  5:off  6:off  B:on

  7. Verifique e documente as definições do LVM.
    1. Liste todos os volumes.
      root@host# vgdisplay --partial --verbose
      
          Partial mode. Incomplete volume groups will be activated read-only.
          Finding all volume groups
          Finding volume group "localvg"
          --- Volume group ---
          VG Name               localvg
          System ID
          Format                lvm2
          Metadata Areas        2
          Metadata Sequence No  2
          VG Access             read/write
          VG Status             resizable
          MAX LV                0
          Cur LV                1
          Open LV               1
          Max PV                0
          Cur PV                2
          Act PV                2
          VG Size               849.99 GB
          PE Size               4.00 MB
          Total PE              217598
          Alloc PE / Size       217598 / 849.99 GB
          Free  PE / Size       0 / 0
          VG UUID               8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA
          
          --- Logical volume ---
          LV Name                /dev/localvg/datalv
          VG Name                localvg
          LV UUID                5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj
          LV Write Access        read/write
          LV Status              available
          # open                 1
          LV Size                849.99 GB
          Current LE             217598
          Segments               2
          Allocation             inherit
          Read ahead sectors     auto
          - currently set to     256
          Block device           252:0
          
          --- Physical volumes ---
          PV Name               /dev/vdb1
          PV UUID               YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36
          PV Status             allocatable
          Total PE / Free PE    127999 / 0
          
          PV Name               /dev/vdc1
          PV UUID               VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls
          PV Status             allocatable
          Total PE / Free PE    89599 / 0

    2. Liste os UUIDs de dispositivo de bloco.
      root@host# blkid -s UUID
      
          /dev/vda1: UUID="2156d173-9113-4157-a8f2-93140013d2a4"
          /dev/vda2: UUID="c72047bf-3508-46f0-939a-4cf505958b92"
          /dev/mapper/localvg-datalv: UUID="c033c8e1-0399-4ba4-9897-62d85cfa36bd"

  8. Faça um teste de fumaça rápido.
    1. Grave alguns arquivos no disco e certifique-se de que pode lê-los Por exemplo, você poderia criar uma cópia de backup do seu diretório inicial e, em seguida, listar o conteúdo do archive. Você deve ver o mesmo resultado.
      root@host# tar zcvvf /data/idcuser.tar.gz /home/idcuser
      root@host# tar ztvvf /data/idcuser.tar.gz

    2. Reinicie a sua máquina e, em seguida, teste para ver se o sistema de arquivos está montado e se você consegue acessar os seus dados.
      root@host# reboot
      root@host# tar ztvvf /data/idcuser.tar.gz

    3. Nesse ponto, também é possível usar a notação LABEL em fstab.
      LABEL=datalv  /data        ext3    defaults        0 1
                                  

    4. Teste a nova notação de dispositivo LABEL desmontando e montando manualmente o sistema de arquivos, reiniciando e fazendo o teste de fumaça.

Configuração da instância filho

Nesta seção, você fará o seguinte:

  • Captura de uma imagem privada e implementar uma nova instância a partir dela.
  • Verificação da configuração do LVM na instância filho.
  • Aumento do LVM na instância filho.
  • Nova verificação da configuração do LVM depois do aumento.

Capture uma imagem privada e implemente uma nova instância a partir dela

Digamos que, depois de usar uma instância Bronze (Silver ou Gold) por algum tempo, você quer fazer um upgrade para uma oferta superior. Para capturar uma imagem privada a partir da sua instância e em seguida implementar uma nova instância a partir da sua imagem capturada, selecione a oferta superior que você quer (nesse caso, Platinum). (Quando você faz isso, acaba tendo um armazenamento adicional que pode ser incluído no seu grupo de volumes.) Isso tem implicações em relação aos seus aplicativos, já que a sua instância é desativada durante a criação da imagem e o nome de host, o endereço IP e a configuração de armazenamento das instâncias implementadas a partir dessa imagem serão diferentes. Leve essas mudanças em consideração ao realizar essa etapa. Além disso, considere a possibilidade de fazer o backup dos seus dados antes de capturar a imagem privada.

Verifique a configuração do LVM na instância filho

Para verificar a configuração do LVM na instância filho, siga estas etapas:

  1. Certifique-se de que o LVM ainda funcione corretamente na sua nova instância. Primeiro, documente as definições do LVM.
    1. Liste todos os volumes.
      root@host# vgdisplay --partial --verbose
                                      
          Partial mode. Incomplete volume groups will be activated read-only.
          Finding all volume groups
          Finding volume group "localvg"
          --- Volume group ---
          VG Name               localvg
          System ID
          Format                lvm2
          Metadata Areas        2
          Metadata Sequence No  2
          VG Access             read/write
          VG Status             resizable
          MAX LV                0
          Cur LV                1
          Open LV               1
          Max PV                0
          Cur PV                2
          Act PV                2
          VG Size               849.99 GB
          PE Size               4.00 MB
          Total PE              217598
          Alloc PE / Size       217598 / 849.99 GB
          Free  PE / Size       0 / 0
          VG UUID               8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA
          
          --- Logical volume ---
          LV Name                /dev/localvg/datalv
          VG Name                localvg
          LV UUID                5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj
          LV Write Access        read/write
          LV Status              available
          # open                 1
          LV Size                849.99 GB
          Current LE             217598
          Segments               2
          Allocation             inherit
          Read ahead sectors     auto
          - currently set to     256
          Block device           252:0
          
          --- Physical volumes ---
          PV Name               /dev/vdb1
          PV UUID               YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36
          PV Status             allocatable
          Total PE / Free PE    127999 / 0
          
          PV Name               /dev/vdc1
          PV UUID               VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls
          PV Status             allocatable
          Total PE / Free PE    89599 / 0

    2. Liste os UUIDs de dispositivo de bloco.
      root@host# blkid -s UUID
                                      
          /dev/vda1: UUID="2156d173-9113-4157-a8f2-93140013d2a4"
          /dev/vda2: UUID="c72047bf-3508-46f0-939a-4cf505958b92"
          /dev/mapper/localvg-datalv: UUID="c033c8e1-0399-4ba4-9897-62d85cfa36bd"

  2. Faça um teste de fumaça rápido.
    1. Grave alguns arquivos no disco e certifique-se de que pode lê-los Por exemplo, você poderia criar uma cópia de backup do seu diretório inicial e, em seguida, listar o conteúdo do archive. Você deve ver o mesmo resultado. Você também deve ser capaz de ler os arquivos criados na imagem pai original.
      root@host# tar zcvvf /data/idcuser2.tar.gz /home/idcuser
      root@host# tar ztvvf /data/idcuser2.tar.gz
      root@host# tar ztvvf /data/idcuser.tar.gz

    2. Reinicie a sua máquina e, em seguida, teste para ver se o sistema de arquivos está montado e se você consegue acessar os seus dados.
      root@host# reboot
      root@host# tar ztvvf /data/idcuser.tar.gz

Aumente o LVM na instância pai

Para aumentar o LVM na instância pai, siga estas etapas:

  1. Verifique quais dispositivos de bloco podem ser usados para a criação de volumes físicos.
    1. Faça uma varredura procurando dispositivos de bloco. É possível ver dois novos discos sem nenhuma partição: /dev/vdd and /dev/vde. Também se pode ver que a partição vdc1 é de apenas 350 GB, ignorando os discos de RAM.
      root@host# lvmdiskscan | grep -v ram
      
          /dev/localvg/datalv [      849.99 GB]
          /dev/vda1           [      101.94 MB]
          /dev/root           [       59.90 GB]
          /dev/vdb1           [      500.00 GB] LVM physical volume
          /dev/vdc1           [      350.00 GB] LVM physical volume
          /dev/vdd            [      500.00 GB]
          /dev/vde            [      500.00 GB]
          /dev/vdf1           [       15.99 GB]
          6 disks
          16 partitions
          0 LVM physical volume whole disks
          2 LVM physical volumes

    2. Confirme que os dispositivos de bloco não contêm tabelas de partição.
      root@host# fdisk -l | grep partition
      
          Disk /dev/vdd doesn't contain a valid partition table
          Disk /dev/vde doesn't contain a valid partition table

    3. Confirme que não há espaço para outra partição no dispositivo de bloco de vdc.
      root@host# fdisk -l /dev/vdc
      
          Disk /dev/vdc: 536.8 GB, 536870912000 bytes
          16 heads, 63 sectors/track, 1040253 cylinders
          Units = cylinders of 1008 * 512 = 516096 bytes
          
          Device Boot      Start         End      Blocks   Id  System
          /dev/vdc1               1      728177   367001176+  8e  Linux LVM

  2. Crie partições de Linux do tipo LVM e inicialize-as para usar como volumes físicos de LVM.
    1. Verifique o arquivo de resposta do fdisk
      root@host# cat fdisk.lvm.partitions
      
          n
          p
          1
          
          
          t
          8e
          w

    2. Gere o script de configuração que remove as tabelas de partição já existentes, relê a tabela de partição, cria um ID de partição 8e (Linux LVM) no dispositivo de bloco e inicializa as partições do Linux LVM para usá-las como volumes físicos do LVM.

      Eu sugiro que você faça um backup dos blocos excluídos por dd. É possível fazer algo como dd if=device of=backupfile bs=4096 count=1. Leia a man page dodd para ver os detalhes. Também é possível usar sfdisk para fazer o backup da tabela de partição. Consulte a man page para ver os detalhes.

      root@host# for i in $(fdisk -l 2>&1 | awk '/valid/{print $2}')
      do 
      echo "# Partition and initialize LVM PV for device $i"
      echo dd if=/dev/zero of=$i bs=1024 count=1  # Clear partition table
      echo blockdev --rereadpt $i                 # Re-read partition table
      echo fdisk $i \< fdisk.lvm.partitions       # Create Linux LVM partition
      echo pvcreate ${i}1                         # Initialize Physical Volume
      echo -e "\n"
      done

      Esse script gera os comandos a seguir. Certifique-se de verificá-los antes de executar. O fato de não se certificar de que você esteja usando os dispositivos corretos pode provocar perda de dados. Você deve ver os dois dispositivos de bloco indicados que não contêm uma tabela de partição válida.

          # Partition and initialize LVM PV for device /dev/vdd
          dd if=/dev/zero of=/dev/vdd bs=1024 count=1
          blockdev --rereadpt /dev/vdd
          fdisk /dev/vdd < fdisk.lvm.partitions
          pvcreate /dev/vdd1
          
          # Partition and initialize LVM PV for device /dev/vde
          dd if=/dev/zero of=/dev/vde bs=1024 count=1
          blockdev --rereadpt /dev/vde
          fdisk /dev/vde < fdisk.lvm.partitions
          pvcreate /dev/vde1

    3. Certifique-se de ter criado as partições do LVM.
      root@host# fdisk -l  | grep LVM
      
          /dev/vdb1               1     1040253   524287480+  8e  Linux LVM
          /dev/vdc1               1      728177   367001176+  8e  Linux LVM
          /dev/vdd1               1     1040253   524287480+  8e  Linux LVM
          /dev/vde1               1     1040253   524287480+  8e  Linux LVM

    4. Neste ponto, você tem duas opções:
      1. Usar pvresize para aumentar a partição de 350GB.
      2. Criar um novo volume físico.

      O redimensionamento do PV já existente é algo mais complexo e propenso a erros; requer o seguinte:

      • Desmontar os dados: umount/data.
      • Desativar o VG: vgchange -an localvg.
      • Excluir a tabela de partição antiga no disco e criar uma nova partição usando a mesma compensação Start e End padrão (maximizar).
      • Aumentar a partição: pvresize /dev/vdc1
      • Realizar as etapas regulares para redimensionar LV e FS (lvresize, e2fsck, resize2fs, etc).

      O redimensionamento do PV já existente não está dentro do escopo deste documento. Se quiser seguir esse caminho, certifique-se de ter um backup dos seus dados e uma boa noção do que você está prestes a fazer. Também é recomendável fazer um backup da tabela de partição (com dd).

    5. Opção 1: Redimensionar o PV já existente.

      As etapas realizadas para redimensionar o PV já existente são mostradas aqui para sua consideração. Se você escolheu essa opção, certifique-se de entender as implicações e testar os seus comandos usando os sinalizadores depure, verbose e test , testar o resultado e ter um backup atual dos seus dados.

      Se você concluir a Opção 1, passe diretamente para a seção sobre verificar a configuração do LVM

      Caso contrário, vá para a Opção 2 abaixo para criar outra partição de 150 GB, ao lado da partição de 350 GB já existente, e use isso para estender o VG.

      Se você estiver usando instâncias de Linux de 32 bits, terá que adaptar a Opção 1 para aumentar o PV já existente (/dev/vdb1) de 175 para 375 GB. Tenha em mente que o dispositivo de bloco será diferente em imagens de 32 bits. Nos testes que eu fiz para este artigo, foi /dev/vdb. Eu também pulei a etapa do vgextend para as instâncias de 32 bits, já que não havia outros dispositivos de bloco presentes.

      root@host# umount /data
      root@host# vgchange -an localvg
      root@host# fdisk /dev/vdc
          Command (m for help): p
          
          Disk /dev/vdc: 536.8 GB, 536870912000 bytes
          16 heads, 63 sectors/track, 1040253 cylinders
          Units = cylinders of 1008 * 512 = 516096 bytes
          
          Device Boot      Start         End      Blocks   Id  System
          /dev/vdc1               1      728177   367001176+  8e  Linux LVM
          
          Command (m for help): d
          Selected partition 1
          
          Command (m for help): p
          
          Disk /dev/vdc: 536.8 GB, 536870912000 bytes
          16 heads, 63 sectors/track, 1040253 cylinders
          Units = cylinders of 1008 * 512 = 516096 bytes
          
          Device Boot      Start         End      Blocks   Id  System
          
          Command (m for help): n
          Command action
          e   extended
          p   primary partition (1-4)
          p
          Partition number (1-4): 1
          First cylinder (1-1040253, default 1):
          Using default value 1
          Last cylinder or +size or +sizeM or +sizeK (1-1040253, default 1040253):
          Using default value 1040253
          
          Command (m for help): p
          
          Disk /dev/vdc: 536.8 GB, 536870912000 bytes
          16 heads, 63 sectors/track, 1040253 cylinders
          Units = cylinders of 1008 * 512 = 516096 bytes
          
          Device Boot      Start         End      Blocks   Id  System
          /dev/vdc1               1     1040253   524287480+  83  Linux
          
          Command (m for help): n
          The partition table has been altered!
          
          Calling ioctl() to re-read partition table.
          Syncing disks.
      
      root@host# blockdev --rereadpt /dev/vdc
      root@host# partprobe
      root@host# pvresize /dev/vdc1
      root@host# vgextend localvg  /dev/vdd1 /dev/vde1
      root@host# lvresize -l 100%VG localvg/datalv
          Extending logical volume datalv to 1.95 TB
          Logical volume datalv successfully resized
      
      root@host# vgchange -ay localvg
      root@host# e2fsck -f /dev/localvg/datalv
      root@host# resize2fs /dev/localvg/datalv
          Resizing the filesystem on /dev/localvg/datalv to 524283904 (4k) blocks.
          The filesystem on /dev/localvg/datalv is now 524283904 blocks long.
      root@host# e2fsck -f /dev/localvg/datalv
      root@host# mount /data
      root@host# df -h | grep data
          /dev/mapper/localvg-datalv
          2.0T  199M  1.9T   1% /data

    6. Opção 2: Crie outra partição no dispositivo de bloco que contenha apenas um sistema de arquivos de 350 GB. Neste caso, /dev/vdc. Certifique-se de editar a tabela de partição correta. A exclusão da tabela de partição de disco raiz irá provocar perda de dados. Já que a configuração de armazenamento da sua imagem pode ser diferente, é importante que você entenda, realize manualmente e corrija essas etapas conforme o necessário na sua instância. Para ver os detalhes, leia a man page de fdisk ao digitar man fdisk na sua instância.
      root@host# fdisk /dev/vdc
      
          The number of cylinders for this disk is set to 1040253.
          There is nothing wrong with that, but this is larger than 1024,
          and could in certain setups cause problems with:
          1) software that runs at boot time (e.g., old versions of LILO)
          2) booting and partitioning software from other OSs
          (e.g., DOS FDISK, OS/2 FDISK)
          
          Command (m for help): n
          Command action
          e   extended
          p   primary partition (1-4)
          p
          Partition number (1-4): 2
          First cylinder (728178-1040253, default 728178):
          Using default value 728178
          Last cylinder or +size or +sizeM or +sizeK 
          (728178-1040253, default 1040253):
          Using default value 1040253
          
          Command (m for help): t
          Partition number (1-4): 2
          Hex code (type L to list codes): 8e
          Changed system type of partition 2 to 8e (Linux LVM)
          
          Command (m for help): p
          
          Disk /dev/vdc: 536.8 GB, 536870912000 bytes
          16 heads, 63 sectors/track, 1040253 cylinders
          Units = cylinders of 1008 * 512 = 516096 bytes
          
          Device Boot      Start         End      Blocks   Id  System
          /dev/vdc1               1      728177   367001176+  8e  Linux LVM
          /dev/vdc2          728178     1040253   157286304   8e  Linux LVM
          Command (m for help): n
          
          The partition table has been altered!
          
          Calling ioctl() to re-read partition table.
          
          WARNING: Re-reading the partition table failed with error 16: 
          Device or resource busy.
          The kernel still uses the old table.
          The new table is used at the next reboot.
          Syncing disks.

      O arquivo de resposta referente a fdisk nesse caso é:

      n
      p
      2
      
      
      t
      2
      8e
      w

    7. Desmonte a partição, desative o grupo de volumes e releia a tabela de partição; em seguida, ative o VG e monte o FS (ou reinicie).
      root@host# umount /data                  # Umount the filesystem
      root@host# vgchange -an localvg          # Deactivate the volume group
      root@host# blockdev --rereadpt /dev/vdc  # Re-read the partition table
      # Inform OS of partition table changes:
      root@host# partprobe                     
      root@host# sleep 5;                      # Wait for partprobe to finish
      root@host# vgchange -ay localvg          # Activate the volume group
      root@host# mount /data                   # Mount the filesystem

    8. Inicialize o novo volume físico na partição de 150 GB que você criou anteriormente. Essa também é a partição indicada como vazia por lvmdiskscan .
      root@host# pvcreate /dev/vdc2
      
          Physical volume "/dev/vdc2" successfully created

    9. Certifique-se de que os volumes físicos do LVM tenham sido criados. Agora a entrada /dev/vdc2 tem a frase LVM physical volume ao lado.
      root@host# lvmdiskscan | grep -v ram
      
          /dev/localvg/datalv [      849.99 GB]
          /dev/vda1           [      101.94 MB]
          /dev/root           [       59.90 GB]
          /dev/vdb1           [      500.00 GB] LVM physical volume
          /dev/vdc1           [      350.00 GB] LVM physical volume
          /dev/vdc2           [      150.00 GB] LVM physical volume
          /dev/vdd1           [      500.00 GB] LVM physical volume
          /dev/vde1           [      500.00 GB] LVM physical volume
          /dev/vdf1           [       15.99 GB]
          4 disks
          17 partitions
          0 LVM physical volume whole disks
          4 LVM physical volumes

    10. Verifique o status do volume físico. É possível ver três PVs que não são usados no VG localvg.
      root@host# [root@vhost0498 ~]# pvs
      
          PV         VG      Fmt  Attr PSize   PFree
          /dev/vdb1  localvg lvm2 a-   500.00G      0
          /dev/vdc1  localvg lvm2 a-   350.00G      0
          /dev/vdc2          lvm2 --   150.00G 150.00G
          /dev/vdd1          lvm2 --   500.00G 500.00G
          /dev/vde1          lvm2 --   500.00G 500.00G

  3. Estenda o grupo de volumes.
    1. Estenda o volume localvg para incluir os novos volumes físicos, conforme o listado por pvs.
      root@host# vgextend localvg /dev/vdc2 /dev/vdd1 /dev/vde1
      
          Volume group "localvg" successfully extended

    2. Verifique os resultados. É possível ver um VG de 2 TB composto por todos os volumes físicos listados. Além disso, pvs agora listará todos os PVs como usados por localvg; você deve ter cerca de 1.150 GB livres.
      root@host# vgdisplay --partial --verbose
      
          Partial mode. Incomplete volume groups will be activated read-only.
          Finding all volume groups
          Finding volume group "localvg"
          --- Volume group ---
          VG Name               localvg
          System ID
          Format                lvm2
          Metadata Areas        5
          Metadata Sequence No  3
          VG Access             read/write
          VG Status             resizable
          MAX LV                0
          Cur LV                1
          Open LV               1
          Max PV                0
          Cur PV                5
          Act PV                5
          VG Size               1.95 TB
          PE Size               4.00 MB
          Total PE              511995
          Alloc PE / Size       217598 / 849.99 GB
          Free  PE / Size       294397 / 1.12 TB
          VG UUID               8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA
          
          --- Logical volume ---
          LV Name                /dev/localvg/datalv
          VG Name                localvg
          LV UUID                5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj
          LV Write Access        read/write
          LV Status              available
          # open                 1
          LV Size                849.99 GB
          Current LE             217598
          Segments               2
          Allocation             inherit
          Read ahead sectors     auto
          - currently set to     256
          Block device           252:0
          
          --- Physical volumes ---
          PV Name               /dev/vdb1
          PV UUID               YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36
          PV Status             allocatable
          Total PE / Free PE    127999 / 0
          
          PV Name               /dev/vdc1
          PV UUID               VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls
          PV Status             allocatable
          Total PE / Free PE    89599 / 0
          
          PV Name               /dev/vdc2
          PV UUID               cLdGD3-MVIp-sdA7-KGi3-RtBT-xJWI-gobVSl
          PV Status             allocatable
          Total PE / Free PE    38399 / 38399
          
          PV Name               /dev/vdd1
          PV UUID               wFyYax-NCn6-2egW-FiUc-3GTB-u77k-evVsc6
          PV Status             allocatable
          Total PE / Free PE    127999 / 127999
          
          PV Name               /dev/vde1
          PV UUID               ijAwMZ-3Qoc-RPoi-n9EK-vkcM-pd40-9LXlnC
          PV Status             allocatable
          Total PE / Free PE    127999 / 127999

    3. Aumente o volume lógico (neste artigo, ele será aumentado dentro dos limites do VG). Use o sinalizador -L para especificar o tamanho. Também é possível criar um novo volume lógico (recomendado — lembre-se de que o fsck demora muito para fazer a varredura de um sistema de arquivos muito grande).
      root@host# lvresize -l 100%VG localvg/datalv
      
          Extending logical volume datalv to 1.95 TB
          Logical volume datalv successfully resized

    4. Verifique os resultados. Você deve ter um LV de aproximadamente 2 TB.
      root@host# lvdisplay
      
          --- Logical volume ---
          LV Name                /dev/localvg/datalv
          VG Name                localvg
          LV UUID                5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj
          LV Write Access        read/write
          LV Status              available
          # open                 1
          LV Size                1.95 TB
          Current LE             511995
          Segments               5
          Allocation             inherit
          Read ahead sectors     auto
          - currently set to     256
          Block device           252:0

  4. Aumente o sistema de arquivos.
    1. Aumente o sistema de arquivos desmontando e executando fsck e resize2fs.
      root@host# df -h | grep data               # Verify FS size
      
          837G  201M  794G   1% /data
          
      root@host# umount /data                    # Umount the filesystem
      root@host# e2fsck -f /dev/localvg/datalv   # Run a filesystem check
          
          e2fsck 1.39 (29-May-2006)
          Pass 1: Checking inodes, blocks, and sizes
          Pass 2: Checking directory structure
          Pass 3: Checking directory connectivity
          Pass 4: Checking reference counts
          Pass 5: Checking group summary information
          /dev/localvg/datalv: 13/111411200 files (7.7% non-contiguous),
          3547488/222820352 blocks
          
      root@host# resize2fs /dev/localvg/datalv  # Grow filesystem to LV limits
      root@host# e2fsck -f /dev/localvg/datalv  # Run another FS check
      root@host# mount /data                    # Mount filesystem
      
          resize2fs 1.39 (29-May-2006)
          Resizing the filesystem on /dev/localvg/datalv to 524282880 (4k) blocks.
          The filesystem on /dev/localvg/datalv is now 524282880 blocks long.

    2. Verifique o tamanho do novo sistema de arquivos no disco.
      root@host# df -h | grep data
      
          /dev/mapper/localvg-datalv
          2.0T  199M  1.9T   1% /data

Verifique a configuração do LVM

Para verificar a configuração do LVM, realize as etapas a seguir:

  1. Faça o teste de fumaça. Para fazer um teste mais completo, preencha o sistema de arquivos até o limite ou use um benchmark de sistema de arquivos. Adapte o tamanho do arquivo de teste de acordo com a sua instância. Por exemplo, você só usaria um arquivo de teste de 300 GB (definindo count=307200) em uma instância Gold de 32 bits.
    root@host# tar zcvvf /data/idcuser3.tar.gz /home/idcuser
    root@host# tar ztvvf /data/idcuser3.tar.gz
    root@host# tar ztvvf /data/idcuser.tar.gz
    # Create a 800GB test file:
    root@host# nohup dd if=/dev/zero of=/data/800GBtestfile bs=1M \
        count=819200 > nohup.out 2>nohup.err &
    # Monitor file growth
    root@host# while :; do ls -lha /data/800GBtestfile ; sleep 10; done 
    
    -rw-r--r-- 1 root root 800G 2011-03-28 18:09 /data/800GBtestfile

  2. Verifique a configuração do LVM.
    root@host# vgdisplay --partial --verbose
    
        Partial mode. Incomplete volume groups will be activated read-only.
        Finding all volume groups
        Finding volume group "localvg"
        --- Volume group ---
        VG Name               localvg
        System ID
        Format                lvm2
        Metadata Areas        5
        Metadata Sequence No  4
        VG Access             read/write
        VG Status             resizable
        MAX LV                0
        Cur LV                1
        Open LV               1
        Max PV                0
        Cur PV                5
        Act PV                5
        VG Size               1.95 TB
        PE Size               4.00 MB
        Total PE              511995
        Alloc PE / Size       511995 / 1.95 TB
        Free  PE / Size       0 / 0
        VG UUID               8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA
        
        --- Logical volume ---
        LV Name                /dev/localvg/datalv
        VG Name                localvg
        LV UUID                5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj
        LV Write Access        read/write
        LV Status              available
        # open                 1
        LV Size                1.95 TB
        Current LE             511995
        Segments               5
        Allocation             inherit
        Read ahead sectors     auto
        - currently set to     256
        Block device           252:0
        
        --- Physical volumes ---
        PV Name               /dev/vdb1
        PV UUID               YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36
        PV Status             allocatable
        Total PE / Free PE    127999 / 0
        
        PV Name               /dev/vdc1
        PV UUID               VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls
        PV Status             allocatable
        Total PE / Free PE    89599 / 0
        
        PV Name               /dev/vdc2
        PV UUID               cLdGD3-MVIp-sdA7-KGi3-RtBT-xJWI-gobVSl
        PV Status             allocatable
        Total PE / Free PE    38399 / 0
        
        PV Name               /dev/vdd1
        PV UUID               wFyYax-NCn6-2egW-FiUc-3GTB-u77k-evVsc6
        PV Status             allocatable
        Total PE / Free PE    127999 / 0
        PV Name               /dev/vde1
        PV UUID               ijAwMZ-3Qoc-RPoi-n9EK-vkcM-pd40-9LXlnC
        PV Status             allocatable
        Total PE / Free PE    127999 / 0

  3. Reinicie para se certificar de que tudo ainda está funcionando bem.
    1. Reinicie.
    2. Desmonte, fsck, monte, teste o acesso de leitura/gravação.

Comandos usados frequentemente para gerenciar o LVM

Agora vamos ver alguns comandos usados frequentemente para gerenciar o LVM.

Exibir atributos

  • Volume físico
    • pvdisplay - Exibe os atributos de um volume físico.
    • pvs - Relata informações sobre volumes físicos.
  • Grupo de volumes
    • vgdisplay - Exibe atributos de grupos de volume.
    • vgs - Relata informações sobre grupos de volume.
  • Volume lógico
    • lvdisplay - Exibe atributos de um volume lógico.
    • lvs - Relata informações sobre volumes lógicos.

Verificar metadados

  • pvck - Verifica os metadados do volume físico.
  • vgck - Verifica os metadados do grupo de volumes.

Renomear VGs e LVs

  • vgrename - Renomeia um grupo de volumes.
  • lvrename - Renomeia um volume lógico.

Redimensionar discos ou partições, LVs, sistemas de arquivos

Deve-se tomar um cuidado especial ao redimensionar, especialmente ao encolher sistemas de arquivos e volumes lógicos.

  • Tome cuidado com erros de digitação, erros nas ferramentas de redimensionamento de sistemas de arquivos, LVM, diferenças nos padrões do parâmetro de tamanho (GiB x GB) e até com erros neste artigo.
  • Use unidades de tamanho consistente (como setores de 512 bytes).
  • Deixe espaço para a margem de erro.
  • Teste os comandos do LVM usando os sinalizadores depure, verbose e test .
  • Teste o novo sistema de arquivos antes de colocar dados nele.
  • Tenha à mão um backup recente e testado.
  • Certifique-se de estar familiarizado com o LVM e as ferramentas de sistema de arquivos. Experimente-as primeiro em uma máquina de teste com configuração semelhante.

Comandos usados frequentemente para redimensionar o LVM e sistemas de arquivo ext2/3/4:

  • pvresize - Redimensiona um disco ou uma partição usado pelo LVM2.
  • lvextend - Estende o tamanho de um volume lógico.
  • lvreduce - Reduz o tamanho de um volume lógico.
  • lvresize - Redimensiona um volume lógico.
  • e2fsck - Verifique um sistema de arquivos Linux ext2/ext3/ext4.
  • resize2fs - Redimensiona sistemas de arquivos ext2/ext3/ext4.

Já ilustrei o uso de lvresize, e2fsck e resize2fs neste artigo.

Se você reduz o LV para um tamanho menor do que o tamanho para o qual o sistema de arquivos foi redimensionado, a perda de dados ocorrerá (de forma súbita e irreversível). Você não quer que isso aconteça. Um fluxo de trabalho para reduzir um LV é ilustrado aqui para sua consideração.

  • Desmonte o sistema de arquivos.
  • Execute a verificação do sistema de arquivos.
  • Reduza o sistema de arquivos.
  • Reduza o LV.

Este é um exemplo de redução de um sistema de arquivos e do LV associado para abrir espaço para outro LV:

# Umount the FS
root@host# umount /data
# Check the FS
root@host# e2fsck -f /dev/localvg/datalv
# Shrink the FS first
root@host# resize2fs -p /dev/localvg/datalv 900G
# Shrink the LV to match the FS size
root@host# lvresize /dev/localvg/datalv --size 900G
# Check the FS
root@host# e2fsck -f /dev/localvg/datalv
# Create a new LV and FS
root@host# lvcreate -A y -L 500GB -n backuplv localvg
root@host# mkfs.ext3 -L backuplv /dev/localvg/backuplv
root@host# mkdir /backup; mount /dev/localvg/backuplv /backup
root@host# mount /data
root@host# df -h | egrep "backup|data"
    /dev/mapper/localvg-backuplv
        493G  198M  467G   1% /backup
    /dev/mapper/localvg-datalv
    886G   37G  823G   5% /data

Considere isso apenas como exemplo: não copie e cole no seu projeto, esperando manter os seus dados. Também é conveniente consultar outros tópicos na documentação do LVM, como a remoção de PVs de um VG.

Faça o backup dos metadados do LVM e restaure-os

É possível fazer backup dos dados do LVM e restaurá-los; por padrão, é/etc/lvm/backup. Estes são os comandos usados para gerenciar o backup/restauração dos metadados do LVM:

  • vgcfgbackup - Backup da área do descritor do grupo de volumes.
  • vgcfgrestore - Restauração da área de descritor do grupo de volumes.

Obter instantâneos do LVM

Para ver detalhes sobre o uso de instantâneos, consulte a seção Taking a Backup Using Snapshots do LVM HOWTO. Estes são os comandos usados para trabalhar com instantâneos:

  • lvcreate - Cria um volume lógico em um grupo de volumes já existente. Também cria instantâneos de LV com o sinalizador -s .
  • lvconvert - Converte um volume lógico de linear para espelho ou instantâneo.

Os instantâneos do LVM são usados para capturar o sistema de arquivos em um estado congelado. Quando você toma um instantâneo, é alocado um novo LV no qual as mudanças no sistema de arquivos são registradas.

Se o volume do instantâneo fica cheio, ele será eliminado (ficará instável). É necessário liberar o instantâneo para que o LV original volte a ficar on-line.

O volume de instantâneo deve ser maior que a quantidade de mudanças esperadas.

Se você cria um volume de instantâneo com o mesmo tamanho do LV original, ele nunca ficará cheio.

Normalmente os instantâneos são usados para obter backups consistentes.

Um fluxo de trabalho comum que é usado ao trabalhar com instantâneos é apresentado aqui para a sua consideração:

# Make sure your filesystem is in a consistent state at this point.
# You may want to use something like "lsof | grep /data" or umount the filesystem, etc.

# Create the snapshot
root@host# lvcreate -L50G -s -n dbbkp /dev/localvg/datalv

# Verify the snapshot
root@host# lvdisplay

# You can restart work on your original FS.

# Mount the snapshot
root@host# mkdir -p /mnt/localvg/dbbkp
root@host# mount /dev/localvg/dbbkp /mnt/localvg/dbbkp

# Perform your backup. While you're backing up,
# your database is already back up and running.
# Hopefully you have something better than:
root@host# cd /mnt/localvg/dbbkp; tar zcvpf ~/backup.tar.gz .

# Release the snapshot
root@host# umount /mnt/localvg/dbbkp
root@host# lvremove /dev/localvg/dbbkp
root@host# lvdisplay

Não se sinta tentado a substituir backups adequados por instantâneos do LVM. Eles tendem a ficar cheios muito rapidamente.

Restaurando UUIDs de disco e backups de LVM

Em algumas situações de corrupção dos metadados do LVM, talvez seja necessário restaurar o UUID do disco. Tenha em mente que é necessário ter um backup dos seus discos independentemente da de restauração de UUIDs que você planeja usar. Se eu estivesse fazendo isso em um sistema de produção real como parte dos procedimentos de recuperação de dados, provavelmente eu reservaria um tempo para clonar a parte de dispositivos de bloco do VG como algo semelhante ao armazenamento externo (caso não tivesse um backup recente à mão).

É apresentado um fluxo de trabalho para restaurar um UUID de disco, para sua consideração. É necessário adaptá-lo e testá-lo (usando os sinalizadores depure, test e verbose ). Para testar esse cenário, eu corrompi intencionalmente os metadados da seguinte forma: root@host# pvchange -v -u $(uuidgen) /dev/vdb1 e, em seguida, tentei restaurá-los usando o UUID a partir dos arquivos de backup em /etc/lvm/backup. Depois de corromper os metadados, o pvscan emitiu a mensagem "Couldn't find device with uuid IffYl-9cfa-BYhZ-Wt5h-7UOi-YWLx-US8wJ3".

  1. Verifique os metadados:
    root@host# vgck -dvvv

  2. Desative o VG:
    root@host# vgchange -an localvg

  3. Restaure os UUIDs de disco corretos com a ajuda do backup do LVM. Use os UUIDs corretos
    root@host# pvcreate -ff --restorefile /etc/lvm/backup/localvg \
        --uuid 1IffYl-9cfa-BYhZ-Wt5h-7UOi-YWLx-US8wJ3 /dev/vdb1

  4. Restaure a configuração a partir do backup:
    root@host# vgcfgrestore --file /etc/lvm/backup/localvg localvg

  5. Ative o VG
    root@host# vgchange -ay localvg

  6. Execute uma verificação do sistema de arquivos e verifique a integridade dos dados.

Ferramentas gráficas system-config-lvm e yast2

O LVM também pode ser gerenciado por meio de ferramentas gráficas. Consulte o Guia do Usuário para ver detalhes sobre a conexão à sua instância usando o VNC ou configurando o encaminhamento do SSH X11 para executar a exportação da exibição na sua estação de trabalho. Tenha em mente que as portas que o VNC usa são protegidas por firewall por padrão; isso está documento no Guia do Usuário. Na época em que este artigo foi escrito sobre o CC V1.4, o nome dessa seção do documento era "Connecting to your Linux instance with VNC".

SuSE Linux e yast

Conecte-se à sua instância por meio do VNC, inicie o yast2, vá para System > Partitioner e expanda Volume Management na System View. Pode-se usar o YaST 2 Expert Partitioner para criar, excluir, expandir, etc. VGs, LVs, criar sistemas de arquivos, etc.: yast2


Figura 2. Figura 2. YaST 2 Expert Partitioner

Para ver mais detalhes sobre o uso do YaST 2 Expert Partitioner, consulte o Novell SUSE Linux Enterprise Server Storage Administration Guide.

Red Hat Linux e system-config-lvm

No Red Hat, é possível realizar o Logical Volume Management a partir da interface gráfica usando system-config-lvm


Figura 3. Figura 3. Logical Volume Management do Red Hat com system-config-lvm


Conclusão

Ao seguir estas etapas, agora é possível configurar um LVM usando armazenamento efêmero nas imagens do Linux. Eu:

Próximas etapas: mais tópicos de nuvem

Nesta coleção de artigos de nuvem, especialistas em tecnologia do IBM® SmartCloud Enterprise compartilham o seu conhecimento sobre a realização de tarefas na nuvem. As tarefas vão desde as mais surpreendentemente fáceis até as mais complexas e difíceis, assim, designers, desenvolvedores e implementadores de todos os níveis de qualificação podem aprender. Ao seguir esta coleção, é possível melhorar as suas qualificações em diversos tópicos da nuvem IBM, tais como:

  • Instalação de um servidor da Web IIS.
  • Uso da linha de comando na nuvem.
  • Extensão da rede corporativa com a nuvem IBM.
  • Fornecimento de aplicativos de alta disponibilidade na nuvem IBM.
  • Parametrização de imagens na nuvem para instâncias customizadas dinamicamente.
  • Descoberta de uma série de abordagens ao aprovisionamento na nuvem IBM.

É possível encontrar links para todos esses tópicos e muito mais em Recursos.

  • Apresentei o contexto dos componentes e do uso do LVM; expliquei a notação usada neste artigo e a configuração do ambiente de teste.
  • Esbocei o fluxo do cenário que eu usei que demonstra o upgrade de instâncias Bronze 64 a instâncias Platinum 64. O fluxo incluiu o conhecimento de:
    • Aprovisionamento de uma instância de Linux Bronze 64 bits (RHEL 5.5 ou SLES 11 SP1).
    • Configuração do LVM para abranger dispositivos de bloco vazios
    • Captura de uma imagem privada
    • Implementação de uma nova instância a partir da imagem capturada como uma instância Platinum.
    • Criação de uma nova partição de LVM a partir do espaço restante do dispositivo de bloco de 500 GB e dos dispositivos de bloco adicionais de 250 GB.
    • Aumento dos PVs já existentes usando pvresize e incluindo os dois dispositivos de bloco de 500 GB adicionais no VG (depois do particionamento) como uma alternativa à etapa anterior.
    • Redimensionamento do LV e do sistema de arquivos.
  • Expliquei de forma aprofundada as etapas detalhadas da configuração do LVM na imagem filho de nível mais baixo.
  • Apresentei as etapas detalhadas da configuração do LVM na instância filho atualizada, incluindo
    • Captura de uma imagem privada.
    • Implementação de uma nova instância a partir da imagem capturada.
    • Verificação da configuração do LVM na instância filho.
    • Aumento do LVM na instância filho.
    • "Teste de fumaça" da configuração do LVM depois do aumento.
  • Forneci uma lista dos comandos usados frequentemente para gerenciar o LVM.
  • E expliquei rapidamente o uso dos comandos gráficos yast2 (para o SLES) e system-config-lvm (para o RHEL) para gerenciar o LVM.

Para continuar a explorar esse tópico, acesse os recursos de Linux no developerWorks; para saber mais sobre o uso efetivo do IBM SmartCloud Enterprise, explore os tópicos mencionados na barra lateral e na seção Recursos deste artigo.


Recursos

Aprender

Obter produtos e tecnologias

Discutir

Sobre o autor

Mihai Criveti photo

Mihai Criveti é um IT Architect que trabalha principalmente com computação em nuvem e virtualização. Seus interesses são computação em nuvem, virtualização, arquitetura empresarial, SOA, middleware, perícia digital e sistemas UNIX.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux, Cloud computing
ArticleID=732245
ArticleTitle=Dica do IBM SmartCloud Enterprise: Configure o Linux Logical Volume Manager
publish-date=07122011
author1-email=mihai.criveti@ro.ibm.com
author1-email-cc=aimeed@us.ibm.com