Como Fazer Para Criar e Gerenciar um Logical Volume Manager (LVM)

Como fazer para gerenciar volumes lógicos do Linux de forma simples e fácil.

O que é?

O LVM é um gerenciador de disco que trabalha em alto nível fornecendo uma nova visão na forma de trabalhar com partições no sistema.

O LVM trabalha adicionando mais uma camada ao gerenciamento de disco, as partições criadas sobre o LVM podem ser redimencionados, aumentando ou diminuindo o seu tamanho, além de podermos adicionar novos discos fisicos quando o espaço em disco atual acabar, e melhor não teremos que mover os dados de um disco para outro, basta redimencionar as partições atuais.

Você pode usar o LVM em diversos discos ou em apenas um podendo deixar espaço livre para futuras adequações de espaço ou mover o espaço ocioso de uma partição para outra com pouco espaço.

Aonde encontro?

As principais distribuições já trazem o suporte ao LVM instalado e ativado, inclusive as distribuições FC4 e FC5 já possuem em seus instaladores (Anaconda) gráficos suporte a criação de uniades utilizando o LVM já no processo de instalação.

Sistema utilizado nos testes

# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 7
model name      : Pentium III (Katmai)
stepping        : 3
cpu MHz         : 501.194
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
bogomips        : 1004.42
# free
             total       used       free     shared    buffers     cached
Mem:        384156     374924       9232          0      47976     280604
-/+ buffers/cache:      46344     337812
Swap:       524280          0     524280
# cat /etc/fedora-release
Fedora Core release 5 (Bordeaux)

Introdução

Estrutura LVM

Estrutura LVM

Na base de um sistema LVM temos os discos rígidos fisicamente conectados ao computador, depois temos as seguintes camadas.

PV – Physical Volume: Basicamente serve para criar o UUID, o UUID é um identificador unico para cada volume fisico, ao longo desse artigo iremos chamar os PV de volume físico.

VG – Volume Group: Um VG é o agrupamento de vários PVs, você pode ter vários VGs, porém se um VG estiver sem espaço e o outro VG tiver espaço de sobra você não poderá usar o espaço livre de um VG para aumentar o outro, em instalação normais é necessário a criação de apenas um VG, ao longo desse artigo iremos chamar os VG de grupos.

LV – Logical Volume: Os LVs podem ser grosseiramente chamados de partições, aqui você formata e monta o sistema de arquivos no Linux, essa e a única camada que realmente acessível para o usuário, ao longo desse artigo iremos chamar os LV simplismente de volumes.

Os passos para criar um sistema de armazenamento baseados em LVM podem ser divididos nas seguintes etapas lógicas, criação das partições, criação do volume físico, criação do grupo e criação dos volumes.

Criando as partições

Com um ou mais discos conectados ao micro nós podemos criar as partições utilizando para isso o programa fdisk e definindo as partições como sendo do tipo 8e Linux LVM.

# fdisk /dev/hdc

The number of cylinders for this disk is set to 14593.
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): 1
First cylinder (1-14593, default 1):
Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-14593, default 14593):
Using default value 14593

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p

Disk /dev/hdc: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1               1       14593   117218241   8e  Linux LVM

Aqui eu criei apenas uma partição em uma unidade de disco de 120Gb, só é necessário uma única partição já que todo o gerenciamento será feito utilizando o LVM.

Criando Physical Volume (PV)

Agora precisamos criar o volume físico, para cria-lo basta usar o comando pvcreate.

# pvcreate /dev/hdc1
  Physical volume "/dev/hdc1" successfully created

Você pode fazer isso com quantas partições você quiser, pode ser em discos separados ou no mesmo disco, por exemplo.

# pvcreate /dev/hda2
  Physical volume "/dev/hda2" successfully created
# pvcreate /dev/hdd3
  Physical volume "/dev/hdd3" successfully created

Para criar um volume físico você não precisa atribuir nenhum nome para ele, epenas apontar qual o dispositivo que deverá ser usado.

Para ver como ficou o seu volume físico basta usar o comando pvdisplay.

# pvdisplay
  --- NEW Physical volume ---
  PV Name               /dev/hdc1
  VG Name
  PV Size               111.79 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               jC3Yby-Hjbl-0Xc1-akAR-nfeL-PoFw-1mODLa

Note que o VG Name está vazio, isso indica que o nosso volume físico ainda não participa de nenhum grupo, e na última linha podemos ver o PV UUID, esse número é que vai identificar o nosso volume físico dentro da estrutura do LVM.

Criando Volume Group (VG)

Um grupo é a união de um ou mais volumes físicos, o comando para criar um grupo é o vgcreate, obrigatoriamente você deve especificar o nome do grupo e quais os volumes físicos que farão parte deste grupo.

# vgcreate backup /dev/hdc1
  Volume group "backup" successfully created

Você pode especificar mais de um volume físico, por exemplo.

# vgcreate backup /dev/hdc1 /dev/hdc2 /dev/hdc3
  Volume group "backup2" successfully created

Agora que criamos o nosso grupo vamos ver como ele ficou, para isso vamos usar o comando vgdisplay.

# vgdisplay
  --- Volume group ---
  VG Name               backup
  System ID
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               111.79 GB
  PE Size               4.00 MB
  Total PE              28617
  Alloc PE / Size       0 / 0
  Free  PE / Size       28617 / 111.79 GB
  VG UUID               rWTn7n-pZTt-rN5t-0W3e-TzQL-ODyN-xROa3N

Aqui temos diversas informação sobre o grupo, uma informação muito importante é Alloc PE / Size e Free PE / Size que respectivamente mostram quanto do espaço em disco do grupo está em uso e quanto está livre para ser alocado.

Se você executar o comando pvdisplay agora poderá notar algumas mudanças como informações sobre o nome do volume e outras sobre a alocação do volume físico, veja abaixo.

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/hdc1
  VG Name               backup
  PV Size               111.79 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              28617
  Free PE               26057
  Allocated PE          2560
  PV UUID               jC3Yby-Hjbl-0Xc1-akAR-nfeL-PoFw-1mODLa

Criando Logical Volume (LV)

Para criar um volume iremos usar o comando lvcreate.

# lvcreate --name mp3 --size 10g backup
  Logical volume "mp3" created

Aqui criamos um uma “partição” com o nome (–name mp3) mp3 com o tamanho (–size 10g) de 10Gb no grupo backup.

O tamanho pode ser especificado usando g ou G para Gigas, m ou M para Megas, t ou T para Terabytes.

Para ver as informações sobre todos os volumes no seu sistema você pode utilizar o comando lvdisplay sem argumentos ou lvdisplay NOME_DO_GROPO.

# lvdisplay backup
  --- Logical volume ---
  LV Name                /dev/backup/mp3
  VG Name                backup
  LV UUID                pPKBWV-yuCC-g6j3-w9lE-cQxB-DRUq-tYk073
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                10.00 GB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:7

Se você executar o comando vgdisplay poderá ver que o Alloc PE / Size e o Free PE / Size mudaram.

  Alloc PE / Size       2560 / 10.00 GB
  Free  PE / Size       26057 / 101.79 GB

Agora ele informa que estamos usando 10Gb e ainda temos 101.79 Gb para usar.

Utilizando os volumes

Agora que já criamos um volume podemos trabalhar com ele como uma partição normal, a unica diferença e que ao invés de você acessar o /dev/hdc1 você irá acessar o /dev/NOME_DO_GRUPO/NOME_DO_VOLUME, por exemplo.

Aqui eu estou utilizando o ext3 como sistema de arquivo principal, porém eu sito observações sobre como fazer usando o reiserfs, particularmente achei o reiserfs mais pratico nas operações re mudança de tamanho do volume.

# mkfs -t ext3 /dev/backup/mp3
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 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

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Observação: Para criar um volume formatado com reiserfs utilize o comando mkfs com a opção -t reiserfs.

# mkfs -t reiserfs /dev/backup/doc
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
Continuing core development of ReiserFS is  mostly paid for by Hans Reiser from
money made selling licenses  in addition to the GPL to companies who don't want
it known that they use ReiserFS  as a foundation for their proprietary product.
And my lawyer asked 'People pay you money for this?'. Yup. Life is good. If you
buy ReiserFS, you can focus on your value add rather than reinventing an entire
FS.

Alexander  Lyamin  keeps our hardware  running,  and was very  generous  to our
project in many little ways.

Guessing about desired format.. Kernel 2.6.15-1.2054_FC5 is running.
Format 3.6 with standard journal
Count of blocks on the device: 1310720
Number of blocks consumed by mkreiserfs formatting process: 8251
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: db636798-28d6-48a0-8da8-c33c50e0428c
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
        ALL DATA WILL BE LOST ON '/dev/backup/doc'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.

ReiserFS is successfully created on /dev/backup/doc.

Depois de criado o sistema de arquivos podemos montar e até mesmo adicinar no /etc/fstab.

# vi /etc/fstab
/dev/backup/mp3         /mnt/mp3                ext3    defaults        1 2
# mkdir /mnt/mp3
# mount /mnt/mp3
# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/backup-mp3  9.9G  151M  9.2G   2% /mnt/mp3

Aqui eu editei o /etc/fstab e adicionei uma linha para a nova partição, criei o diretório e montei o diretório, também executei o comand df para mostrar o satus atual da partição, veja que o /dev/backup/mp3 foi automaticamente mapeado para a unidade /dev/mapper/backup-mp3.

Se quiser ter mais partições basta repetir os passos anteriores.

Alterando os tamanhos

Agora que já temos uma partição já criada e funcionando é hora de mexer um pouco nela, vamos mudar o tamanho, aumentando, diminuindo, removendo o nosso volume.

Aumentando um Logical Volume

Como já vimos anteriormente a unidade /dev/backup/mp3 tem um total de 10Gb, vamos adicionar algum conteúdo e depois vamos aumentar para 50Gb.

# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/backup-mp3  9.9G  9.5G     0 100% /mnt/mp3

O disco está completamente cheio, para aumenta o tamanho da unidade primeiro precisamos desmonta-la.

umount /mnt/mp3/

Agora temos que executar o comando lvresize e especificar o novo tamanho da unidade.

# lvresize --size 50g /dev/backup/mp3
  Extending logical volume mp3 to 50.00 GB
  Logical volume mp3 successfully resized

A mensagem mostra que o volume foi modificado com sucesso, agora ele tem 50Gb, será?

Vamos monta-lo e usar o comando df para ver como ficou.

# mount /mnt/mp3/
# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/backup-mp3  9.9G  9.5G     0 100% /mnt/mp3

Nada mudou? será que fizemos alguma coisa errada?

Claro que fizemos, somente executar o comando lvresize não resolve, temos alguns outros passos para executar, vamos fazer os passos que faltaram.

# umount /mnt/mp3/

Novamente desmontamos a unidade, agora famos fazer o que faltou, primeiro execute o fsck com a opção -f para forçar uma verificação da integridade da unidade.

# fsck -f /dev/backup/mp3
fsck 1.38 (30-Jun-2005)
e2fsck 1.38 (30-Jun-2005)
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/backup/mp3: 2305/1310720 files (31.0% non-contiguous), 2512828/2621440 blocks

Se você não usar o -f o fsck não fará nenhuma verificação, agora vamos usar o comando resize2fs para unidades formatadas com o ext2 e ext3 ou o comando resize_reiserfs para unidades com reiserfs.

# resize2fs /dev/backup/mp3
resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/backup/mp3 to 13107200 (4k) blocks.
The filesystem on /dev/backup/mp3 is now 13107200 blocks long.

Observação: Se você estiver usando o sistema de arquivos reiserfs utilize o comando resize_reiserfs, com o reiserfs você não precisa executar o fsck antes de usar o resize_reiserfs.

# resize_reiserfs /dev/backup/doc
resize_reiserfs 3.6.19 (2003 www.namesys.com)

ReiserFS report:
blocksize             4096
block count           1310720 (524288)
free blocks           1302469 (516061)
bitmap block count    40 (16)

Syncing..done

resize_reiserfs: Resizing finished successfully.

Pronto, agora vamos montar a unidade e vamos usar o df para verificar o tamanho que ficou.

# mount /dev/backup/mp3 /mnt/mp3/
# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/backup-mp3  50G  9.5G   38G  21% /mnt/mp3

Agora o nosso volume está com 50Gb, não tivemos nenhuma perda de dados nem problemas, se fosse um servidor essa operação leva poucos minutos e poderia facilmente ser feita no horario de almoço ou após o expediente sem a parada total da maquina.

Vamos agora aumentar em mais 1Gb o volume para mostar o uso da ferramenta lvextend e o que acontece se você executar o resize2fs antes de fazer um fsck.

# lvextend --size +1g /dev/backup/mp3
  Extending logical volume mp3 to 51.00 GB
  Logical volume mp3 successfully resized
# resize2fs /dev/backup/mp3
resize2fs 1.38 (30-Jun-2005)
/dev/backup/mp3 is mounted; can't resize a mounted filesystem!

Esqueci de desmontar para poder redimencionar.

# umount /dev/backup/mp3
# resize2fs /dev/backup/mp3
resize2fs 1.38 (30-Jun-2005)
Please run 'e2fsck -f /dev/backup/mp3' first.

Não executei o fsck, vamos executa-lo conforme ele manda.

# e2fsck -f /dev/backup/mp3
e2fsck 1.38 (30-Jun-2005)
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/backup/mp3: 2305/6553600 files (31.0% non-contiguous), 2679872/13107200 blocks

Agora o volume está com 51Gb, bastante espaço, agora vamos voltar o tamanho dele para 50Gb.

Diminuindo um Logical Volume

Para dimuir um volume vamos usar as ferramentas lvresize, resize2fs e fsck, só que em ordem um pouco diferente.

Primeiro vamos desmontar o volume.

Agora vamos usar o comando resize2fs só que de forma um pouco diferente.

# resize2fs /dev/backup/mp3 30G
resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/backup/mp3 to 7864320 (4k) blocks.
The filesystem on /dev/backup/mp3 is now 7864320 blocks long.

Depois de informar o dispositivo precisamos colocar o novo tamanho da unidade.

Observação: Se você estiver usando reiserfs você deve usar o comand resize_reiserfs, porém não precisa executar o fsck antes de fazer a redução do tamanho do volume.

# resize_reiserfs -s 3G /dev/backup/doc
resize_reiserfs 3.6.19 (2003 www.namesys.com)

You are running BETA version of reiserfs shrinker.
This version is only for testing or VERY CAREFUL use.
Backup of you data is recommended.

Do you want to continue? [y/N]:y
Processing the tree: 0%....20%....40%....60%....80%....100%           left 0, 7891 /sec

nodes processed (moved):
int        3 (0),
leaves     178 (0),
unfm       7710 (0),
total      7891 (0).

check for used blocks in truncated region

ReiserFS report:
blocksize             4096
block count           786432 (1310720)
free blocks           770307 (1294579)
bitmap block count    24 (40)

Syncing..done

resize_reiserfs: Resizing finished successfully.

O volume já foi reduzido só que o espaço liberado não foi devolvido para o grupo para que possa ser usado em outro volume, se voce executar o comando vgdisplay verá que ainda aparece como sendo utilizados 51Gb.

# vgdisplay
  Alloc PE / Size       13056 / 51.00 GB
# lvdisplay backup
  --- Logical volume ---
  LV Name                /dev/backup/mp3
  VG Name                backup
  LV UUID                pPKBWV-yuCC-g6j3-w9lE-cQxB-DRUq-tYk073
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                51.00 GB
  Current LE             13056
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:7

Para devolver o espaço para que ele possa ser usado novamente você vai precisar usar o comando lvresize e especificar o tamanho que o volume deve ter.

# lvresize --size 30G /dev/backup/mp3
  WARNING: Reducing active logical volume to 30.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mp3? [y/n]: y
  Reducing logical volume mp3 to 30.00 GB
  Logical volume mp3 successfully resized

Pronto agora o espaço estará disponivel para uso.

# lvdisplay backup
  --- Logical volume ---
  LV Name                /dev/backup/mp3
  VG Name                backup
  LV UUID                pPKBWV-yuCC-g6j3-w9lE-cQxB-DRUq-tYk073
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                30.00 GB
  Current LE             7680
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:7

Vamos montar a unidade e verifica o tamanho que ela tem agora.

# mount /dev/backup/mp3 /mnt/mp3/
# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/backup-mp3  30G  9.5G   19G  34% /mnt/mp3

Informação importante, todas as vezes que tentei reduzir o tamanho de um volume usando o lvreduce ou o lvresize antes do resize2fs não fiquei muito contente, tive perda total dos dados, veja o que acontece.

# lvreduce --size -10G /dev/backup/mp3
  WARNING: Reducing active logical volume to 20.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mp3? [y/n]: y
  Reducing logical volume mp3 to 20.00 GB
  Logical volume mp3 successfully resized
# e2fsck -f /dev/backup/mp3
e2fsck 1.38 (30-Jun-2005)
The filesystem size (according to the superblock) is 7864320 blocks
The physical size of the device is 5242880 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? no

Pass 1: Checking inodes, blocks, and sizes
Error reading block 5242882 (Invalid argument) while doing inode scan.  Ignore error<y>? no

Error while scanning inodes (2621440): Can't read next inode
e2fsck: aborted

O mais importante é que você backup antes de efetuar essas operações.

Excluindo um Logical Volume

Essa operação é a mais simples de todas, usaremos apenas o comando lvremove.

# lvremove /dev/backup/mp3
Do you really want to remove active logical volume "mp3"? [y/n]: y
  Logical volume "mp3" successfully removed

Adicionando outro disco no Volume Group

Agora vamos adicionar um outro disco ao nosso volume backup que já existe, para essa operação vamos utilizar o comando pvcreate para criar o volume fisico e o vgextend para extender o nosso volume backup.

Criando o Phisical Volume

Vamos criar a partição em nosso outro disco.

# fdisk /dev/hdd

The number of cylinders for this disk is set to 14593.
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): p

Disk /dev/hdd: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 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-14593, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-14593, default 14593): 14593
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p

Disk /dev/hdd: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdd1               1       14593   117218241   8e  Linux LVM
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Agora vamos criar o volume físico.

# pvcreate /dev/hdd1
  Physical volume "/dev/hdd1" successfully created

Depois que volume for criado podemos ver todos os volumes físicos com o comando pvdisplay.

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/hdc1
  VG Name               backup
  PV Size               111.79 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              28617
  Free PE               28617
  Allocated PE          0
  PV UUID               jC3Yby-Hjbl-0Xc1-akAR-nfeL-PoFw-1mODLa

  --- NEW Physical volume ---
  PV Name               /dev/hdd1
  VG Name
  PV Size               111.79 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               5R1YzH-sbUP-y2Jn-E2DX-OF97-Opsm-tSMT2k

Adicionando o novo Physical Volume no Volume Group já existente

Depois que o volume físico estiver criado você vai precisar adiciona-lo ao grupo já existente.

Mas primeiro vamos utilizar o comando vgdisplay para ver a situação atual o grupo

# vgdisplay
  --- Volume group ---
  VG Name               backup
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  13
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               111.79 GB
  PE Size               4.00 MB
  Total PE              28617
  Alloc PE / Size       0 / 0
  Free  PE / Size       28617 / 111.79 GB
  VG UUID               rWTn7n-pZTt-rN5t-0W3e-TzQL-ODyN-xROa3N

Agora vamos usar o comando vgextend para adicionar o novo disco ao volume já existente.

# vgextend backup /dev/hdd1
  Volume group "backup" successfully extended

A operação é bem rápida e fácil, vamos ver como ficou.

# vgdisplay backup
  --- Volume group ---
  VG Name               backup
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  14
  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               223.57 GB
  PE Size               4.00 MB
  Total PE              57234
  Alloc PE / Size       0 / 0
  Free  PE / Size       57234 / 223.57 GB
  VG UUID               rWTn7n-pZTt-rN5t-0W3e-TzQL-ODyN-xROa3N

Pronto, agora você já sabe as operações básicas para manutenção de volumes utilizando LVM.

Removendo um disco do volume

Para remover um disco do nosso volume já existe a operação tambem é bem simples, basta usar o comand vgreduce e informar qual a unidade que deve ser removida.

# vgreduce backup /dev/hdd1
  Removed "/dev/hdd1" from volume group "backup"

Agora vamos remover as informações do volume físico do disco, para fazer isso vamos utilizar o comando pvremove.

# pvremove /dev/hdd1
  Labels on physical volume "/dev/hdd1" successfully wiped

Agora é só remover a partição utilizando o fdisk.

Outros comandos úteis

Vamos mostrar apenas alguns comandos uteis para obter informações sobre a estrutura do LVM, existem muitos outros comando porém seria inviavel explicar todos eles aqui.

pvscan

# pvscan
  PV /dev/hda2   VG vol0     lvm2 [18.53 GB / 10.28 GB free]
  PV /dev/hdc1   VG backup   lvm2 [111.79 GB / 61.79 GB free]
  PV /dev/hdd1               lvm2 [111.79 GB]
  Total: 3 [242.10 GB] / in use: 2 [130.32 GB] / in no VG: 1 [111.79 GB]

O pvscan mostra informações sobre os diversos volumes físicos existentes no sistema, informa o dispositivo o nome do grupo o espaço utilizado o espaço livre e o total de todos os volumes.

O dispositivo /dev/hdd1 do exemplo acima não pertence a nenhum grupo.

vgscan

# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vol0" using metadata type lvm2
  Found volume group "backup" using metadata type lvm2

Obtem informações sobre os grupos existentes no sistema.

lvscan

# lvscan
  ACTIVE            '/dev/vol0/root' [992.00 MB] inherit
  ACTIVE            '/dev/vol0/tmp' [992.00 MB] inherit
  ACTIVE            '/dev/vol0/usr' [2.91 GB] inherit
  ACTIVE            '/dev/vol0/src' [992.00 MB] inherit
  ACTIVE            '/dev/vol0/var' [992.00 MB] inherit
  ACTIVE            '/dev/vol0/log' [992.00 MB] inherit
  ACTIVE            '/dev/vol0/swap' [512.00 MB] inherit
  ACTIVE            '/dev/backup/mp3' [1.00 GB] inherit
  ACTIVE            '/dev/backup/docs' [2.00 GB] inherit

Obtem informações sobre todos os volumes logicos existentes no sistema e exibe de forma resumida para você.

Referências

Rodrigo Luis Silva

Gestor de equipes especialista em sistemas GNU/Linux com vasta experiência em gerenciamento de storage, virtualização, network, desenvolvimento e outros.

More Posts - Website

Follow Me:
Twitter

13 Respostas

  1. Meus parabéns pelo post, eu estava aqui tentando sobreviver a mais uma noite contra uma migração de maquinas físicas para maquinas virtuais.

    Muito obrigado pela inciativa.

      (Citar)

  2. Obrigado Wesley.

    Se tiver alguma dúvida pode postar que tentaremos ajudar.

    Rodrigo

      (Citar)

  3. Para criar um volume e usar todo o espaço livre disponível no seu Volume Group use o seguinte comando:

    # lvcreate --name nome_novo_volume -l 100%FREE nome_do_grupo
    

    Note o FREE após o %, ele é necessário.

    Abs,

    Rodrigo

      (Citar)

  4. Thiago Abreu

    Muito obrigado pelo post.
    Está sendo muito útil.
    Mandou muito bem….

    Abraços

      (Citar)

  5. root

    Obrigado Thiago.

      (Citar)

  6. Nely Gonçalves

    Sou iniciante em linux, estou fazendo curso, mas o material didatico não é o suficiente, quando chego no curso tudo já esta preparado, volto para casa estudar no meu notebook e me deparo com os problemas e tenho que buscar na internet.
    Estou precisando estudar a aula de LVM e graças a Deus encontrei esse documento que vai ajudar no meu desafio com o linux.
    Que Deus dê sabedoria aos incentivadores e nos iniciantes possamos nos incentivar e não desistir do linux.

    obrigada ! valeu !!

      (Citar)

  7. É sempre um prazer ajudar.

    Comentários como o seu só me incentivam a continuar escrevendo.

    Obrigado

      (Citar)

  8. Jose Henrique Fonseca

    Gosto muito do seus posts, tem me ajudado bastante.

    Mas estou com uma dúvida, tenho uma maquina que foi montada utilizando LVM´s, o “/” esta com 100% de uso e não consigo encontrar onde foi consumido todo esse espaço, preciso liberar mais espaço para ele, como fazer ?!

    Tentei desmontar o volume e realizar os comandos do seu post mas o linux não permite desmontar esse volume, ele fica dizendo que está em uso e com certeza está mesmo, pois trata-se do volume principal do sistema. Abaixo coletei algumas informações para vc entender melhor meu problema.

    df -h

    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/VolGroup_ID_17049-LogVol4
    39G 39G 0 100% /
    /dev/sda3 99M 13M 82M 13% /boot
    none 4.0G 0 4.0G 0% /dev/shm
    /dev/mapper/VolGroup_ID_17049-LogVol5
    9.8G 55M 9.3G 1% /tmp
    /dev/mapper/VolGroup_ID_17049-LogVol8
    35G 3.0G 30G 10% /usr
    /dev/mapper/VolGroup_ID_17049-LogVol7
    39G 242M 37G 1% /var
    /dev/mapper/VolGroup_ID_17049-LogVolHome
    4.9G 451M 4.2G 10% /home
    /dev/sdb1 268G 61G 194G 24% /dados
    //10.0.0.11/datasul_producao
    60G 54G 6.9G 89% /mnt/windows
    //10.0.0.10/srvprogress
    50G 16G 35G 32% /mnt/dcnetapp01

    lvdisplay /dev/VolGroup_ID_17049/LogVol4

    — Logical volume —
    LV Name /dev/VolGroup_ID_17049/LogVol4
    VG Name VolGroup_ID_17049
    LV UUID 7E6PX8-YP15-FV9M-kcK8-unU3-aS3d-8ITGhX
    LV Write Access read/write
    LV Status available
    # open 1
    LV Size 39.38 GB
    Current LE 1260
    Segments 1
    Allocation inherit
    Read ahead sectors 0
    Block device 253:0

    pvdisplay
    — Physical volume —
    PV Name /dev/sda5
    VG Name VolGroup_ID_17049
    PV Size 131.03 GB / not usable 0
    Allocatable yes (but full)
    PE Size (KByte) 32768
    Total PE 4193
    Free PE 0
    Allocated PE 4193
    PV UUID ZAjtav-y931-kIWL-n7fs-t2Ea-ZUpP-xbrX9J

    — Physical volume —
    PV Name /dev/sda2
    VG Name VolGroup_ID_17049
    PV Size 4.94 GB / not usable 0
    Allocatable yes
    PE Size (KByte) 32768
    Total PE 158
    Free PE 4
    Allocated PE 154
    PV UUID C1ob6L-oO6D-tcMl-Udfi-OBsh-Y1mv-M2homj

    grato pela ajuda.

    José Henrique.

      (Citar)

  9. Que bom que os meus posts estão te ajudando.

    Bom vamos ao seu problema.

    Desmontar o / realmente você não consegue, pra mexer no tamanho dele você tem que usar um cd de boot ou live cd.

    Para descobrir qual diretório está consumindo mais espaço eu gosto de usar o seguinte comando

    # du –max-depth=1 -hx /

    Ele vai mostrar o tamanho de cada diretório, eu acredito que o problema seja o /opt.

    Para resolver o problema de espaço eu recomendo os seguintes passos:

    1 – Identificar o mais diretório
    2 – Criar um novo volume lógico com o espaço suficiente para esses arquivos
    3 – Mover os arquivos para a nova partição
    4 – Montar o volume lógico no diretório poblematico.

    Não se esqueça de parar as aplicações que usam os arquivos que você vai mover, de preferencia entre em modo single user ou use um live cd.

    abs,

    Rodrigo

      (Citar)

  10. Jose Henrique Fonseca

    Rodrigo, boa tarde!!

    Com ajuda do seu scritp consegui detectar o problema, por algum motivo copiamos arquivos para dentro do “diretório” onde o linux utiliza para montar um volume que usamos, então os arquivos ficavam escondidos nesse volume. No momento que desmontei os volumes notei que não reduziu o tamanho do diretório com seu scritp, então foi fácil resolver.

    Muito obrigado pela ajuda e continue postando novas coisas, com certeza outros também utilizam suas informações para facilitar a vida no dia a dia.

    Grato,

    José Henrique.

      (Citar)

  11. Tiago Oliveira

    Passando somente para lhe agradecer pela material publicada, foi de grande utilidade aqui na minha empresa. Seguirei seu exemplo e irei documentar o que faço e postar para quem quer aprender. Parabéns mesmo.

    abraço!

      (Citar)

  12. Diego Silva

    Tá de parabéns, estou começando a aprender Linux, e isso caiu no curso mas não entendi direito, com esse tutorial ficou tudo mais claro.
    Obrigado.
    abraço

      (Citar)

  13. Jefferson

    Meu amigo achei ótimo a sua abordagem e explicação do LVM, tava precisando mui-to de um tuto assim pra dar uma luz no meu TCC pra resolver um erro que tava dando, vlw mesmo, muito bom.

      (Citar)

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Home Linux Como Fazer Para Criar e Gerenciar um Logical Volume Manager (LVM)