«

»

out 05

Extender partição LVM sem down time

E ai pessoal, hoje vou explicar nesse artigo como extender uma partição LVM sem down time (sem precisar reiniciar ou parar o servidor).

Eu nao vou abordar a criacao e funcionamento das particoes LVM, mas sim manipular uma em um servidor de producao. O processo pode variar um pouco dependendo da sua distribuicao.

 

Para esse artigo foi utilizado um servidor virtualizado no VMWare.

 

Ambiente Utilizado:

 

  • VMWare VSphere Client (Em ingles)
  • Debian GNU/Linux 7 (wheezy)
  • LVM version: 2.02.95(2) (2012-03-06)
  • Partições LVM previamente configuradas

 

Adicionando um novo disco ao servidor

 

Nesse primeiro passo eu vou adicionar um novo disco na maquina virtual, Apesar de utilizar VMWare nesse exemplo o mesmo se aplica a qualquer outro virtualizador (VirtualBox, Hyper-V etc).

 

Para adicionar um disco numa nova particao clique com o botao direito em cima da maquina virtual e click em: ‘Edit Settings’ e entao em ‘Add’ e selecione ‘Hard Disk’ e pressione ‘Next’

 

View post on imgur.com

 

Selecione ‘Create new virtual disk’ e clique ‘next’

 

View post on imgur.com

 

Selecione o tamanho do disco e onde ele sera armazenado. Nesse exemplo eu estou adicionando apenas 10Gb.

Clique em avancar e em ‘Advanced Options’ selecione o ‘Virtual Device Node’ (geralmente e a opcao default). Verifique o sumario se esta tudo em ordem e clique em ‘finish’.

 

View post on imgur.com

 

Extendendo a particao LVM no Linux

 

No Linux quando um novo disco e’ adicionado dessa forma ele nao e’ reconhecido automaticamente. Se voce digitar ‘fdisk -l’ voce pode ver que o novo disco nao foi identificado. Se voce reinicar o servidor ele vai ser identificado, Mas nao e’ isso que nos queremos. Abaixo exemplo do resultado do comando ‘fdisk -l’.

 

View post on imgur.com

Para que o novo disco seja visto pelo sistema sem precisar reiniciar o servidor, voce pode forcar os discos para serem escaneados com o seguinte comando:

 

echo “- – -” > /sys/class/scsi_host/host2/scan

 

O ‘host2’ pode variar de acordo com o numero de discos na maquina etc. Voce pode usar o mesmo comando para os outros hosts no mesmo caminho Apos inserir esse comando voce pode checar o resultado com ‘fdisk -l’ novamente.

Se por algum motivo o disco nao aparecer, voce pode checar os seus dispositivos SCSI com o seguinte comando:

ls /sys/class/scsi_device/

E entao reescanear o dispositvo SCSI correto:

echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan

View post on imgur.com

Agora com o novo disco identificado, nos temos que particionar ele como LVM. entao para isso usamos o comando fdisk:

fdisk /dev/sdc

Dentro do fdisk temos que criar a particao. Para isso pressione ‘n’ para criar uma nova particao. Selecione ‘p’ para criar uma particao primaria e nas proximas opcoes como ‘Partition Number’, ‘First Sector’ and ‘Last Sector’ voce pode deixar como padrao (primeira particao, primeiro setor e ultimo setor) para usar o disco inteiro.

View post on imgur.com

Apos criar a particao precisamos mudar o tipo da particao para LVM. Para isso pressione ‘t’ no menu principal e insira o codigo ‘8e’ para mudar o tipo da particao para LVM (se tiver alguma duvida voce pode verificar a lista de tipos de particoes colocando a letra L).

Entao grave a mudanca com a opcao ‘w’.

View post on imgur.com

Agora podemos verificar as mudancas no novo disco com ‘fdisk -l’ novamente

View post on imgur.com

Agora precisamos criar o volume fisico na particao com o comando ‘pvcreate’.

pvcreate /dev/sdc1

View post on imgur.com

Agora verifique o ‘volume group’ que voce quer extender com o comando ‘vgdisplay’. Nesse exemplo o nome do volume group e ‘data’.

vgdisplay

View post on imgur.com

Como podemos ver, o ‘volume group’ data possui 25Gb e nenhum expado para ser expandido.

Entao para expandirmos o volume group utilizamos o comando ‘vgextend’ passando como parametros o nome do volume group e a particao a ser adicionado ao grupo.

vgextend data /dev/sdc1

View post on imgur.com

Agora se voce rodar o comando ‘vgdisplay’ novamente vai ver que o grupo tem 10Gb de espaco livre para ser alocado.

View post on imgur.com

Voce tambem pode utilizar o comando ‘pvscan’ para verificar quais discos estao sendo usados em cada volume group e tamanho/espaco livre de cada um.

pvscan

View post on imgur.com

O proximo passo e extender o volume logico que e a particao final utilizada pelo sistema.

Para isso verifique o nome do volume logico a ser extendido:

lvdisplay

View post on imgur.com

Nesse exemplo o volume logico tambem e chamado ‘data’.

Para extender o volume logico utilizamos o comando ‘lvextend’ passando como parametros o caminho para o volume logico e disco/particao a ser utilizado:

lvextend /dev/data/data /dev/sdc1

View post on imgur.com

Agora se voce utilizar o comando ‘vgdisplay’ novamente voce vai ver que o tamanho do volume foi aumentado e nao tem nenhum espaco mais para ser alocado.

View post on imgur.com

Porem, se voce verificar o tamanho das particoes com o comando ‘df -h’ vai perceber que nada foi alterado ainda.

View post on imgur.com

Por isso precisamos usar o progama ‘resize2fs’ para redimensionar a particao:

resize2fs /dev/data/data

Apos rodar o comando o redimensionamento da particao terminar voce pode verificar novamente com ‘df -h’.

View post on imgur.com

Come voces podem ver a particao foi extendida em tempo real sem precisar reinicar ou parar nenhum servico e o novo espaco alocado ja pode ser utilizado.

Espero que isso ajude voces a resolver o problema de disco cheio quando o seu servidor de monitoramento te informar que os seus discos estao ficando sem espaco.

Quer saber mais sobre servidor de monitoramento e como prevenir isso? Verifique aqui mesmo nos cursos de Nagios e Zabbix =)

 

Ate a proxima.