Use Case I - partição de boot "estourada"
Prosseguindo com nossa série sobre LVM, nesse artigo iremos mostrar uma caso real, que pretende responder a essa pergunta: Como resolver a falta de espaço na partição de boot? Ocasionada por esse problema: Partição do /boot cheia e não consegue fazer atualização!
Para resolver este problema, adotamos uma estratégia que vai servir para lhes mostrar como resolver duas situações que podem ocorrer na vida de um administrador de servidores ou desktops:
Como substituir um HD, sendo que este HD é por onde o sistema faz o BOOT e ainda contém a partição root?
Não faz ideia do quanto isso é (ou era) complicado? Então talvez não seja nem a hora para você estar lendo esse artigo! (a não ser que seja por mera curiosidade :-)
Se você é um curioso, ou está começando a aprender essas coisas, siga em frente, pois nosso estilo é Tutorial Mesmo, tipo aquela série de livros "Para leigos"...
Cenário
Uma pessoa decidiu que usaria máquina virtual para acesso ao seu Internet Banking. E por razões de versão e compatibilidade, ele teve que "optar" por usar o Ubuntu! É que o sistema de segurança adotado pela Caixa Econômica Federal só é homologado para o Ubuntu Linux!
Esse assunto, o Internet Banking da CEF, já foi alvo de um artigo em nosso Blog: Internet Banking Caixa Econômica Federal.
Qual a raiz do problema?
A raiz do problema reside no fato de que a partição de boot, que foi automaticamente configurada pelo Ubuntu durante a instalação, tem apenas 256 MB de espaço e, após algumas atualizações de Kernel, está lotada!
Claro que existem várias soluções "paliativas" para isso, sempre dependendo muito de alguns hacks no sistema, como remover os arquivos binários das versões anteriores do Kernel que, ao serem atualizadas, foram deixadas na partição. Mas como o assunto do momento é o LVM e suas maravilhas, e por sabermos que o Ubuntu já vem adotando de modo default o uso de LVM para montagem do sistema, decidimos fazer uma abordagem até então nova para resolver esse problema.
Decidimos que iríamos usar uma das "soluções mágicas" de LVM para resolver de forma definitiva a falta de espaço na partição root!
As It
Antes de mais nada, precisamos ver e entender o cenário atual, ou seja, como a máquina Ubuntu está configurada, para podermos traçar uma estratégia.
Mas, antes de prosseguirmos, lembrem-se que se trata de uma máquina virtual, suportada pelo VirtualBox. Se quiserem entender melhor as vantagens de usar máquinas virtuais, já escrevemos aqui no Blog alguns artigos sobre esse assunto. Fiquem à vontade para ler todos eles, a começar por esse: Máquinas virtuais 1: Computadores dentro de computadores.
- Particionamento
Como podemos ver na figura acima, o sistema atualmente possui um HD de 12 GB que foi particionando da seguinte forma pelo instalador do Ubuntu:
- /dev/sda1: Partição de 243 MB montada em /boot
- /dev/sda2: Partição estendida(!) usando todo o restante possível do HD
- /dev/sda5: Partição única, do tipo LVM v2, e utilizada como um Physical Volume para o sistema como um todo. O "ponto de montagem" é, na verdade, um Volume Group, que foi nomeado como ubuntu-vg. É de se esperar que todos os Logical Volumes que efetivamente compõem o sistema estejam alocados aqui!
A partição de boot (/dev/sda1)
Olhando mais de perto /dev/sda1, podemos ver o seguinte:
A partição de boot tem 243.00 MB e foi formatada como ext2(!). As informações importantes aqui são:
É do tipo ext2;
Seu UUID é 5c59feb9-04ff-4ac6-bf1e-7ab339631b7e;
Montada em /boot.
O conteúdo dessa partição é o seguinte:
root@MinhaCaixa:/boot# ls -l
total 51243
total 51243
-rw-r--r-- 1 root root 1246311 Mai 17 2017 abi-4.4.0-79-generic
-rw-r--r-- 1 root root 190356 Mai 17 2017 config-4.4.0-79-generic
drwxr-xr-x 5 root root 1024 Jul 24 2017 grub
-rw-r--r-- 1 root root 39280107 Jun 8 2017 initrd.img-4.4.0-79-generic
drwx------ 2 root root 12288 Abr 9 2016 lost+found
-rw-r--r-- 1 root root 182704 Jan 28 2016 memtest86+.bin
-rw-r--r-- 1 root root 184380 Jan 28 2016 memtest86+.elf
-rw-r--r-- 1 root root 184840 Jan 28 2016 memtest86+_multiboot.bin
-rw------- 1 root root 3883279 Mai 17 2017 System.map-4.4.0-79-generic
-rw------- 1 root root 7091696 Mai 17 2017 vmlinuz-4.4.0-79-generic
root@MinhaCaixa:/boot#
-rw-r--r-- 1 root root 190356 Mai 17 2017 config-4.4.0-79-generic
drwxr-xr-x 5 root root 1024 Jul 24 2017 grub
-rw-r--r-- 1 root root 39280107 Jun 8 2017 initrd.img-4.4.0-79-generic
drwx------ 2 root root 12288 Abr 9 2016 lost+found
-rw-r--r-- 1 root root 182704 Jan 28 2016 memtest86+.bin
-rw-r--r-- 1 root root 184380 Jan 28 2016 memtest86+.elf
-rw-r--r-- 1 root root 184840 Jan 28 2016 memtest86+_multiboot.bin
-rw------- 1 root root 3883279 Mai 17 2017 System.map-4.4.0-79-generic
-rw------- 1 root root 7091696 Mai 17 2017 vmlinuz-4.4.0-79-generic
root@MinhaCaixa:/boot#
Podemos ver que na partição boot, como era de se esperar, encontramos os binários do Kernel do Linux e a pasta grub, contendo os arquivos necessários para o GRUB conseguir fazer boot no sistema.
Se dermos uma olhada em /etc/fstab, vamos ver que /dev/sda1 está montada da seguinte forma:
# /boot was on /dev/sda1 during installation
UUID=5c59feb9-04ff-4ac6-bf1e-7ab339631b7e /boot ext2 defaults 0 2
UUID=5c59feb9-04ff-4ac6-bf1e-7ab339631b7e /boot ext2 defaults 0 2
Observem que a partição está sendo montada pelo seu UUID, e não pelo seu "nome" /dev/sda1!
Relembrando: o "nome" dos HDs mudam quando eles mudam de "posição" dentro das portas de conexão (SATA e Etc...). Assim, quem um dia foi sda pode se tornar sdb, e vice-versa! Dá para imaginar a bagunça que isso pode se tornar, quando existem arquivos de configuração apontando para um lugar esperando que ali exista uma coisa e, de uma hora para outra, aparece outra coisa?! Ao usar os UUID nas configurações, os HDs podem mudar de "nome" à vontade, que isso não vai causar nenhum problema, pois seus UUID permanecem sempre os mesmos.
O Physical Volume /dev/sda5
Agora é a vez de /dev/sda5! Olhando ela mais de perto, podemos ver o seguinte:
A partição /dev/sda5 ocupa (quase) tudo o que sobrou do HD e tem 11.76 GB. Foi "formatada" como lvm2. As informações importantes aqui são:
Trata-se de um Physical Volume;
Está sendo utilizada pelas Unidades lógicas (Logical Volumes) root e swap_1.
- LVM
No que diz respeito ao LVM, as coisas estão da seguinte forma (informações obtidas com pvdisplay, vgdisplay e lvdisplay):
pvdisplay
root@MinhaCaixa:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name ubuntu-vg
PV Size 11,76 GiB / not usable 2,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 3010
Free PE 7
Allocated PE 3003
PV UUID GAomfq-RhwF-kJvc-3UTg-7feS-0fTS-8weluJ
--- Physical volume ---
PV Name /dev/sda5
VG Name ubuntu-vg
PV Size 11,76 GiB / not usable 2,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 3010
Free PE 7
Allocated PE 3003
PV UUID GAomfq-RhwF-kJvc-3UTg-7feS-0fTS-8weluJ
> Existe apenas um Physical Volume (/dev/sda5).
vgdisplay
root@MinhaCaixa:~# vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 11,76 GiB
PE Size 4,00 MiB
Total PE 3010
Alloc PE / Size 3003 / 11,73 GiB
Free PE / Size 7 / 28,00 MiB
VG UUID YkKz4X-Kv9v-29un-Jw1D-pgIh-eX12-eCwZVH
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 11,76 GiB
PE Size 4,00 MiB
Total PE 3010
Alloc PE / Size 3003 / 11,73 GiB
Free PE / Size 7 / 28,00 MiB
VG UUID YkKz4X-Kv9v-29un-Jw1D-pgIh-eX12-eCwZVH
> Existe apenas um Volume Group (ubuntu-vg).
lvdisplay
root@MinhaCaixa:~# lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu-vg/root
LV Name root
VG Name ubuntu-vg
LV UUID b33P5l-BZV1-QHF4-udEv-067h-P8eX-Bps01k
LV Write Access read/write
LV Creation host, time ubuntu, 2016-04-09 12:15:05 -0300
LV Status available
# open 1
LV Size 9,73 GiB
Current LE 2492
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/ubuntu-vg/swap_1
LV Name swap_1
VG Name ubuntu-vg
LV UUID GnOfzd-SIn6-MmMh-88Ai-iDy9-vwi1-FlbeV2
LV Write Access read/write
LV Creation host, time ubuntu, 2016-04-09 12:15:06 -0300
LV Status available
# open 2
LV Size 2,00 GiB
Current LE 511
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
> Existem dois Logical Volumes: root e swap_1, com os respectivos caminhos /dev/ubuntu-vg/root e /dev/ubuntu-vg/swap_1.
--- Logical volume ---
LV Path /dev/ubuntu-vg/root
LV Name root
VG Name ubuntu-vg
LV UUID b33P5l-BZV1-QHF4-udEv-067h-P8eX-Bps01k
LV Write Access read/write
LV Creation host, time ubuntu, 2016-04-09 12:15:05 -0300
LV Status available
# open 1
LV Size 9,73 GiB
Current LE 2492
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/ubuntu-vg/swap_1
LV Name swap_1
VG Name ubuntu-vg
LV UUID GnOfzd-SIn6-MmMh-88Ai-iDy9-vwi1-FlbeV2
LV Write Access read/write
LV Creation host, time ubuntu, 2016-04-09 12:15:06 -0300
LV Status available
# open 2
LV Size 2,00 GiB
Current LE 511
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
> Existem dois Logical Volumes: root e swap_1, com os respectivos caminhos /dev/ubuntu-vg/root e /dev/ubuntu-vg/swap_1.
To Be
Bem, agora que sabemos como as coisas são (As It), vamos definir como elas devem ser (To Be)!
- Particionamento
Sem mais delongas, queremos que as coisas fiquem como mostradas na figura abaixo:
Podemos que agora as configurações de HD mudaram para:
- /dev/sda tem 16.00 GB;
- /dev/sda1 tem 1.00 GB;
- /dev/sda2 partição primária de 15.00 GB, que é o novo Physical Volume. (subistitui /dev/sda2 estendida -> /dev/sda5)
Na verdade, /dev/sda agora é outro HD! Como nosso ambiente é baseado no VirtualBox, achamos mais "simples" inserir um segundo HD de 16.00 GB e "transferir" tudo para ele, excluindo o antigo de 12.00 GB após a "transferência".
Vale dizer também que, em algum momento desse processo, teremos dois HDs: /dev/sda e /dev/sdb. E depois que terminarmos tudo, /dev/sdb passará a ser /dev/sda. Daí a importância de configurar onde for necessário usando UUID, ao invés de nomes que podem mudar!...
Estratégia
Agora que definimos como as coisas devem ser, precisamos montar uma estratégia que, com LVM, será um pouco mais simples! Aliás, só não será totalmente simples porque vamos ter que "transferir" o boot de /dev/sda para /dev/sdb, ou seja, fazer o sistema conseguir dar boot no novo HD. Claro que estamos falando do GRUB e suas configurações exotéricas e quase cabalísticas!
Basicamente, a estratégia é a seguinte:
- Criar e inserir um novo HD no sistema;
- "Transferir" TUDO para ele;
- Remover o HD antigo.
Aplicando a técnica de refinamento sucessivo no item 2, temos o seguinte:
- 2.1 - Criar uma partição de (*) boot maior, com 1.00 GB, como /dev/sdb1 (temporariamente);
- 2.2 - Criar uma segunda partição (primária dessa vez) ocupando todo o restante do HD, como /dev/sdb2 (temporariamente);
- 2.3 - Copiar tudo de /dev/sda1 para /dev/sdb1 (estamos tratando da partição de boot);
- 2.4 - Criar um novo Physical Volume (PV) usando /dev/sdb2 e estender o Volume Group ubuntu-vg;
- 2.5 - MOVER INTEIRO o PV /dev/sda5, preparando para o item 3 (quem faz esse mover para nós é o LVM, com um simples comando pvmove!);
- 2.6 - Remover o PV /dev/sda5 do VG ubuntu-vg e da lista de PVs disponíveis;
- 2.7 - Usar o GRUB e preparar o novo HD para que o sistema consiga dar boot por ele;
(*) Não esquecer de setar essa partição como partição de boot!
OBS.: Colocamos (temporariamente) quando citamos /dev/sdb1 e /dev/sdb2 por quê? Lembram que quando /dev/sda "sumir", /dev/sdb vai virar /dev/sda?!
Execução do Plano
Para a execução do nosso plano, vamos colocar aqui no Blog uma versão para iniciantes. Para aqueles que estão começando a se aventurar nesses assuntos. Para os mais apressados, tem uma versão Ninja lá no final do artigo!
1. Criar e inserir um novo HD no sistema
Usando a ferramenta de configuração do VirtualBox, criamos o novo HD, mais ou menos da seguinte forma:
Deixando o sistema provisoriamente com dois HDs:
Naturalmente, quando o sistema for reiniciado, o antigo HD continuará sendo reconhecido /dev/sda e o novo HD será reconhecido como /dev/sdb. Isso só será desse forma por causa da ordem em que eles estão na lista da Controladora SATA!
Após a reinicialização do sistema, podemos usar fdisk para nos mostrar como as coisas ficaram após a inclusão do novo HD:
root@MinhaCaixa:~# fdisk -l
Disk /dev/sda: 12 GiB, 12884901888 bytes, 25165824 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x32c84e4c
Dispositivo Inicializar Start Fim Setores Size Id Tipo
/dev/sda1 * 2048 499711 497664 243M 83 Linux
/dev/sda2 501758 25163775 24662018 11,8G 5 Estendida
/dev/sda5 501760 25163775 24662016 11,8G 8e Linux LVM
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 12 GiB, 12884901888 bytes, 25165824 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x32c84e4c
Dispositivo Inicializar Start Fim Setores Size Id Tipo
/dev/sda1 * 2048 499711 497664 243M 83 Linux
/dev/sda2 501758 25163775 24662018 11,8G 5 Estendida
/dev/sda5 501760 25163775 24662016 11,8G 8e Linux LVM
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Como podemos ver, o HD antigo continua como /dev/sda e o novo foi reconhecido como /dev/sdb!
2. "Transferir" TUDO para ele (o novo HD)
Toda as etapas a seguir serão executadas em linha de comando, como o usuário root! Então, antes de prosseguir, abra um Terminal diretamente na VM (Virtual Machine) ou qualquer outro meio, e mude para o usuário root através do seguinte comando:
sudo su -
( Lembrando que /dev/sda1 está montado em /boot! )
Physical volume "/dev/sdb2" successfully created
root@MinhaCaixa:~# vgextend ubuntu-vg /dev/sdb2
Volume group "ubuntu-vg" successfully extended
- 2.1 e 2.2 ( criar uma partição de boot maior e nova partição LVM )
root@MinhaCaixa:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x76f6ee13.
Comando (m para ajuda): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Número da partição (1-4, default 1):
First sector (2048-33554431, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-33554431, default 33554431): +1G
Created a new partition 1 of type 'Linux' and of size 1 GiB.
Comando (m para ajuda): a
Selected partition 1
The bootable flag on partition 1 is enabled now.
Comando (m para ajuda): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Número da partição (2-4, default 2):
First sector (2099200-33554431, default 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-33554431, default 33554431):
Created a new partition 2 of type 'Linux' and of size 15 GiB.
Comando (m para ajuda): t
Número da partição (1,2, default 2):
Partition type (type L to list all types): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Comando (m para ajuda): p
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd6499185
Dispositivo Inicializar Start Fim Setores Size Id Tipo
/dev/sdb1 * 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 33554431 31455232 15G 8e Linux LVM
Comando (m para ajuda): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x76f6ee13.
Comando (m para ajuda): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Número da partição (1-4, default 1):
First sector (2048-33554431, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-33554431, default 33554431): +1G
Created a new partition 1 of type 'Linux' and of size 1 GiB.
Comando (m para ajuda): a
Selected partition 1
The bootable flag on partition 1 is enabled now.
Comando (m para ajuda): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Número da partição (2-4, default 2):
First sector (2099200-33554431, default 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-33554431, default 33554431):
Created a new partition 2 of type 'Linux' and of size 15 GiB.
Comando (m para ajuda): t
Número da partição (1,2, default 2):
Partition type (type L to list all types): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Comando (m para ajuda): p
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd6499185
Dispositivo Inicializar Start Fim Setores Size Id Tipo
/dev/sdb1 * 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 33554431 31455232 15G 8e Linux LVM
Comando (m para ajuda): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
- 2.3 ( copiar tudo de /dev/sda1 para /dev/sdb1 )
Antes de mais nada, precisamos formatar a recém criada /dev/sdb1 como ext2 (porque afinal de contas /dev/sda1 é ext2!):
Formatando /dev/sdb1
root@MinhaCaixa:~# mkfs.ext2 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 606dde40-24b9-41ee-b4a0-ccd1b7868842
Cópias de segurança de superblocos gravadas em blocos:
32768, 98304, 163840, 229376
Allocating group tables: pronto
Gravando tabelas inode: pronto
Escrevendo superblocos e informações de contabilidade de sistema de arquivos: concluído
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 606dde40-24b9-41ee-b4a0-ccd1b7868842
Cópias de segurança de superblocos gravadas em blocos:
32768, 98304, 163840, 229376
Allocating group tables: pronto
Gravando tabelas inode: pronto
Escrevendo superblocos e informações de contabilidade de sistema de arquivos: concluído
Montando /dev/sdb1 em um ponto temporário
root@MinhaCaixa:~# mount /dev/sdb1 /mnt
Copiando tudo de /dev/sda1 para /dev/sdb1
root@MinhaCaixa:~# cp -R /boot/* /mnt/
root@MinhaCaixa:~# sync; umount /mnt
- 2.4 - criar um novo PV usando /dev/sdb2 e estender o Volume Group ubuntu-vg
Physical volume "/dev/sdb2" successfully created
root@MinhaCaixa:~# vgextend ubuntu-vg /dev/sdb2
Volume group "ubuntu-vg" successfully extended
- 2.5 - MOVER o PV /dev/sda5 para o novo PV /dev/sdb2
root@MinhaCaixa:~# pvmove /dev/sda5 /dev/sdb2
/dev/sda5: Moved: 0,0%
/dev/sda5: Moved: 9,2%
/dev/sda5: Moved: 18,3%
/dev/sda5: Moved: 27,1%
/dev/sda5: Moved: 35,8%
/dev/sda5: Moved: 44,7%
/dev/sda5: Moved: 54,0%
/dev/sda5: Moved: 62,6%
/dev/sda5: Moved: 71,5%
/dev/sda5: Moved: 80,7%
/dev/sda5: Moved: 83,0%
/dev/sda5: Moved: 100,0%
root@MinhaCaixa:~# vgreduce ubuntu-vg /dev/sda5
Removed "/dev/sda5" from volume group "ubuntu-vg"
root@MinhaCaixa:~# pvremove /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped
ATENÇÃO! Duas coisas são fundamentais nessa etapa:
/dev/sda5: Moved: 0,0%
/dev/sda5: Moved: 9,2%
/dev/sda5: Moved: 18,3%
/dev/sda5: Moved: 27,1%
/dev/sda5: Moved: 35,8%
/dev/sda5: Moved: 44,7%
/dev/sda5: Moved: 54,0%
/dev/sda5: Moved: 62,6%
/dev/sda5: Moved: 71,5%
/dev/sda5: Moved: 80,7%
/dev/sda5: Moved: 83,0%
/dev/sda5: Moved: 100,0%
- 2.6 - Remover o PV /dev/sda5 do VG ubuntu-vg e da lista de PVs disponíveis;
root@MinhaCaixa:~# vgreduce ubuntu-vg /dev/sda5
Removed "/dev/sda5" from volume group "ubuntu-vg"
root@MinhaCaixa:~# pvremove /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped
- 2.7 - Usar o GRUB e preparar o novo HD para que o sistema consiga dar boot por ele
ATENÇÃO! Duas coisas são fundamentais nessa etapa:
- Editar /etc/fstab e substituir o UUID de /dev/sda1 pelo UUID de /dev/sdb1;
- Por detalhes "exotéricos" do GRUB, executar grub-mkconfig antes de grub-install.
root@MinhaCaixa:~# umount /dev/sda1
# ...colocando /dev/sdb1 no lugar
# ...colocando /dev/sdb1 no lugar
root@MinhaCaixa:~# mount /dev/sdb1 /boot
# obtendo o UUID de /dev/sdb1
root@MinhaCaixa:~# blkid /dev/sdb1
/dev/sdb1: UUID="428014dd-2258-42a6-b34b-3d96dd0c107a"(...)
/dev/sdb1: UUID="
root@MinhaCaixa:~#
root@MinhaCaixa:~# nano /etc/fstab
# OBS.: ao editar /etc/fstab, use o UUID obtido eu sua tela!
root@MinhaCaixa:~# nano /etc/fstab
# OBS.: ao editar /etc/fstab, use o UUID obtido eu sua tela!
root@MinhaCaixa:~# grub-mkconfig -o /boot/grub/grub.cfg
3. Remover o HD antigo
root@MinhaCaixa:~# shutdown -h now
Removido o HD antigo!
Sistema reiniciado normalmente. Hora de atualizar sem medo!
4. Troubleshuting!
Pode ser que, um belo dia, após uma atualização, você veja a seguinte mensagem:
Não se apavore! Afinal de contas, você está usando o sistema normalmente, não é mesmo? Até está fazendo uma atualização!
É muito provável que isso ocorra porque, quando instalamos o GRUB no novo HD ele se chamava no momento /dev/sdb. E agora ele é /dev/sda!
Tomamos todas as precauções para que o sistema pudesse iniciar, quando substituímos as informações essenciais onde eram necessárias. Como, por exemplo, quando executamos grub-mkconfig antes de grub-install. Quando fizemos isso, todos os UUID que precisavam ser trocados dentro de grub.cfg (que não deve ser mexido manualmente!) foram trocados. Fizemos isso também em fstab, mas de forma "manual".
Porém, existem outros lugares onde essas informações estão presentes e que, embora não impeçam um boot, fazem com que o GRUB fique "nervoso".
Poderíamos experimentar executar mais uma vez os comandos de instalação do GRUB após a reinicialização sem o HD antigo, pois agora sdb se tornou sda. Não esquecendo, claro, de substituir /dev/sdb por /dev/sda na segundo comando:
root@MinhaCaixa:~# grub-mkconfig -o /boot/grub/grub.cfg
Execução do Plano, no estilo Ninja
Como prometemos, aqui está a versão Ninja:
sudo su -
# Criar as partições
root@MinhaCaixa:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xd6499185.
Comando (m para ajuda): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Número da partição (1-4, default 1):
First sector (2048-33554431, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-33554431, default 33554431): +1G
Created a new partition 1 of type 'Linux' and of size 1 GiB.
Comando (m para ajuda): a
Selected partition 1
The bootable flag on partition 1 is enabled now.
Comando (m para ajuda): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Número da partição (2-4, default 2):
First sector (2099200-33554431, default 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-33554431, default 33554431):
Created a new partition 2 of type 'Linux' and of size 15 GiB.
Comando (m para ajuda): t
Número da partição (1,2, default 2):
Partition type (type L to list all types): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Comando (m para ajuda): p
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd6499185
Dispositivo Inicializar Start Fim Setores Size Id Tipo
/dev/sdb1 * 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 33554431 31455232 15G 8e Linux LVM
Comando (m para ajuda): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
# Copiar tudo de /dev/sda1 para /dev/sdb1
## Formatar /dev/sdb1
root@MinhaCaixa:~# mkfs.ext2 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 0207a9c1-2075-49da-850a-a703ca771ef5
Cópias de segurança de superblocos gravadas em blocos:
32768, 98304, 163840, 229376
Allocating group tables: pronto
Gravando tabelas inode: pronto
Escrevendo superblocos e informações de contabilidade de sistema de arquivos: concluído
## Montando /dev/sdb1 em um ponto temporário
root@MinhaCaixa:~# mount /dev/sdb1 /mnt
## Copiando tudo de /dev/sda1 para /dev/sdb1
root@MinhaCaixa:~# cp -R /boot/* /mnt/
root@MinhaCaixa:~# sync; umount /mnt
## Criar um novo Physical Volume (PV) usando /dev/sdb2 e estender o Volume Group ubuntu-vg;
root@MinhaCaixa:~# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created
root@MinhaCaixa:~# vgextend ubuntu-vg /dev/sdb2
Volume group "ubuntu-vg" successfully extended
## MOVER INTEIRO o PV /dev/sda5
root@MinhaCaixa:~# pvmove /dev/sda5 /dev/sdb2
/dev/sda5: Moved: 0,0%
/dev/sda5: Moved: 9,2%
/dev/sda5: Moved: 18,3%
/dev/sda5: Moved: 27,1%
/dev/sda5: Moved: 35,8%
/dev/sda5: Moved: 44,7%
/dev/sda5: Moved: 54,0%
/dev/sda5: Moved: 62,6%
/dev/sda5: Moved: 71,5%
/dev/sda5: Moved: 80,7%
/dev/sda5: Moved: 83,0%
/dev/sda5: Moved: 100,0%
## Remover /dev/sda5 do Volume Group ubuntu-vg e da lista de PVs
root@MinhaCaixa:~# vgreduce ubuntu-vg /dev/sda5
Removed "/dev/sda5" from volume group "ubuntu-vg"
root@MinhaCaixa:~# pvremove /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped
## Usar o GRUB e preparar o novo HD para que o sistema consiga dar boot por ele
root@MinhaCaixa:~# umount /dev/sda1
root@MinhaCaixa:~# mount /dev/sdb1 /boot
root@MinhaCaixa:~# blkid /dev/sdb1
/dev/sdb1: UUID="2e690658-8d2a-4cf8-8cd3-445c7d071806"(...)
## Editar o ponto de montagem /boot, informando o novo UUID
## Veja qual é o seu UUID! o listado aqui era o nosso :-)
root@MinhaCaixa:~# nano /etc/fstab
## Recompilando o menu do GRUB, com as novas configurações
root@MinhaCaixa:~# grub-mkconfig -o /boot/grub/grub.cfg
## Instalando o GRUB no novo HD
root@MinhaCaixa:~# grub-install --target=i386-pc --debug --boot-directory=/boot /dev/sdb
# Remover o HD antigo e reiniciar depois!
root@MinhaCaixa:~# shutdown -h now
Até o próximo...
Nenhum comentário:
Postar um comentário