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
pvresizee 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.
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.
- 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/partitionse, em seguida: - 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
- 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
- Crie partições de Linux do tipo LVM e inicialize-as para usar como volumes físicos de LVM.
- 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
- 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 fdiskna 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.
- 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
- 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
- Crie um novo grupo de volumes.
- 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
- 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
- Crie um grupo de volumes (chamado localvg neste exemplo) usando os volumes físicos definidos na etapa anterior e a opção (
- Crie um novo volume lógico.
- Crie um novo volume lógico linear do tamanho desejado.
Consulte as man pages de
lvcreatepara 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
- 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
- Crie e monte o(s) novo(s) sistema(s) de arquivo(s).
- Crie um ponto de montagem para o novo sistema de arquivos.
root@host# mkdir /data
- 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 defsckem sistemas de arquivos muito grandes demora muito. Novamente, a restauração de dados também... - Crie uma entrada de
fstabpara que possa ser montado automaticamente no boot. Inclua a linha a seguir em/etc/fstab. É possível usar qualquer editor de texto, como ovi:/dev/localvg/datalv /data ext3 defaults 0 1
Também é possível usar
echoe pipes:echo \ "/dev/localvg/datalv /data ext3 defaults 0 1" \ >> /etc/fstab
Ao usar
1na última linha, saiba quefsckpode demorar muito para percorrer um sistema de arquivos muito grande. Além disso, depois de reiniciar a máquina, também se pode usarLABEL=datalv. Por enquanto, use /dev/localvg/datalv. - Monte o sistema de arquivos.
root@host# mount /data
- Verifique se o sistema de arquivos foi montado.
root@host# mount | grep data /dev/mapper/localvg-datalv on /data type ext3 (rw)
- Crie um ponto de montagem para o novo sistema de arquivos.
- Configure o serviço de boot do LVM no SLES. Isso não é necessário no RHEL.
- 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
- 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
- Inicie o serviço de boot do LVM.
- Verifique e documente as definições do LVM.
- 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
- 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"
- Liste todos os volumes.
- Faça um teste de fumaça rápido.
- 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
- 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
- Nesse ponto, também é possível usar a notação
LABELemfstab.LABEL=datalv /data ext3 defaults 0 1
- Teste a nova notação de dispositivo
LABELdesmontando e montando manualmente o sistema de arquivos, reiniciando e fazendo o teste de fumaça.
- 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.
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:
- Certifique-se de que o LVM ainda funcione corretamente na sua nova instância. Primeiro, documente as definições do LVM.
- 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
- 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"
- Liste todos os volumes.
- Faça um teste de fumaça rápido.
- 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
- 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
- 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.
Aumente o LVM na instância pai
Para aumentar o LVM na instância pai, siga estas etapas:
- Verifique quais dispositivos de bloco podem ser usados para a criação de volumes físicos.
- 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
- 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
- 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
- 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.
- Crie partições de Linux do tipo LVM e inicialize-as para usar como volumes físicos de LVM.
- Verifique o arquivo de resposta do fdisk
root@host# cat fdisk.lvm.partitions n p 1 t 8e w
- 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 comodd if=device of=backupfile bs=4096 count=1. Leia a man page doddpara ver os detalhes. Também é possível usarsfdiskpara 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
- 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
- Neste ponto, você tem duas opções:
- Usar
pvresizepara aumentar a partição de 350GB. - 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
StarteEnd 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). - Usar
- 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,verboseetest, 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 dovgextendpara 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
- 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
fdiskao digitarman fdiskna 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
fdisknesse caso é:n p 2 t 2 8e w
- 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
- 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
- Certifique-se de que os volumes físicos do LVM tenham sido criados. Agora a entrada /dev/vdc2 tem a frase
LVM physical volumeao 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
- 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
- Verifique o arquivo de resposta do fdisk
- Estenda o grupo de volumes.
- Estenda o volume
localvgpara incluir os novos volumes físicos, conforme o listado porpvs.root@host# vgextend localvg /dev/vdc2 /dev/vdd1 /dev/vde1 Volume group "localvg" successfully extended
- Verifique os resultados. É possível ver um VG de 2 TB composto por todos os volumes físicos listados.
Além disso,
pvsagora listará todos os PVs como usados porlocalvg; 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
- Aumente o volume lógico (neste artigo, ele será aumentado dentro dos limites do VG).
Use o sinalizador
-Lpara especificar o tamanho. Também é possível criar um novo volume lógico (recomendado — lembre-se de que ofsckdemora 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
- 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
- Estenda o volume
- Aumente o sistema de arquivos.
- Aumente o sistema de arquivos desmontando e executando
fsckeresize2fs.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.
- 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
- Aumente o sistema de arquivos desmontando e executando
Verifique a configuração do LVM
Para verificar a configuração do LVM, realize as etapas a seguir:
- 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
- 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
- Reinicie para se certificar de que tudo ainda está funcionando bem.
- Reinicie.
- 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.
- 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.
pvck- Verifica os metadados do volume físico.vgck- Verifica os metadados do grupo de volumes.
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,verboseetest. - 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.
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".
- Verifique os metadados:
root@host# vgck -dvvv
- Desative o VG:
root@host# vgchange -an localvg
- 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 - Restaure a configuração a partir do backup:
root@host# vgcfgrestore --file /etc/lvm/backup/localvg localvg
- Ative o VG
root@host# vgchange -ay localvg
- 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".
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
Ao seguir estas etapas, agora é possível configurar um LVM usando armazenamento efêmero nas imagens do Linux. Eu:
- 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) esystem-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.
Aprender
-
O Red Hat Enterprise Linux - Logical Volume Manager Administration Guide descreve a configuração do LVM no Red Hat Linux.
-
O Red Hat Enterprise Linux - Storage Administration Guide descreve a configuração do LVM usando system-config-lvm no Red Hat Linux.
-
O Novell SuSE Linux Enterprise Server - Storage Administration Guide descreve a configuração do LVM no SuSE Linux.
-
A basic understanding of ephemeral storage detalha 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.
-
O wiki do Linux Documentation Project - LVM HOWTO é a principal fonte sobre o LVM.
- O texto
Recovering a Lost LVM Volume Disk detalha algumas experiências e fornece uma qualificação importante.
- O texto
Device-mapper and LVM2 Wiki contém documentação de design e para o usuário final e uma página de FAQ.
- A página da Wikipédia
Linux Logical Volume Manager lista recursos e detalhes de implementação.
-
Para saber mais sobre como realizar tarefas na nuvem IBM, visite estes recursos:
- Faça upload e download de arquivos a partir de uma instância do Windows.
- Instalar o servidor da Web IIS no Windows 2008 R2.
- Crie uma instância da nuvem IBM com a linha de comando do Linux.
- Crie uma instância da nuvem IBM com a linha de comando do Windows.
- Estenda a sua rede corporativa com a nuvem IBM.
- Aplicativos de Alta Disponibilidade no IBM Cloud.
- Parametrize imagens de nuvem para instâncias customizadas dinamicamente.
- Abordagens focadas no Windows para fornecimento na nuvem IBM.
- Implemente produtos usando o serviço de implementação rápida.
- Integre a política de autenticação usando um proxy.
-
Nos recursos para desenvolvedores de nuvem do developerWorks, descubra e compartilhe o conhecimento e a experiência dos desenvolvedores de aplicativos e serviços que estão desenvolvendo os seus projetos de implementação de nuvem.
-
As próximas etapas: Descubra como acessar o IBM SmartCloud Enterprise.
Obter produtos e tecnologias
-
Veja as imagens do produto disponíveis no IBM SmartCloud Enterprise.
Discutir
-
Participe de um grupo de computação em nuvem da comunidade do developerWorks.
-
Leia todos os ótimos blogs sobre nuvem no developerWorks.
-
Participe da comunidade do developerWorks, uma rede profissional e conjunto de ferramentas comunitárias para conectar, compartilhar e colaborar.
