Relayout LVM Disk

2

Eu tenho um sistema Ubuntu 11.10 com dois discos de 500GB. As tabelas de partições são assim:

/dev/sda1      primary   465.52GB
/dev/sda2      extended  243.17MB
  -> /dev/sda5 logical   243.14MB
/dev/sdb1      primary   465.76GB

sda1 e sdb1 estão em um único grupo de volumes físicos LVM contendo um único volume lógico contendo um único sistema de arquivos lógico que é montado como /. sda5 é montado como / boot.

O problema vem quando eu quero atualizar para o Ubuntu 12.04, que requer pelo menos 247MB livres no / boot. Então eu preciso reduzir o tamanho de sda1 para que eu possa aumentar o tamanho de sda2 e sda5. Como diabos eu faço isso? Eu posso encontrar como reduzir o grupo de volume lógico, mas não estou totalmente claro sobre como limpar a parte final de sda1 para que eu possa reduzir o grupo de volume físico. Pvresize apenas lidar com isso automagicamente? Ou isso é um desejo selvagem?

Eu acho que as alternativas são fazer tudo de volta em algo ou outro e recriar a coisa do zero ou descobrir se o GRUB2 suporta o uso do LVM para / boot.

    
por Tom 02.06.2012 / 13:40

3 respostas

1

Depois de encolher a primeira partição que contém o primeiro volume físico com pvresize , você precisa aumentar a partição /boot .

Para estender a partição /boot você teria que mover seu ponto inicial no primeiro disco. Você pode conseguir isso com parted usando o comando move .

Então você pode redimensionar a partição novamente com parted e finalmente aumentar o sistema de arquivos.

    
por 02.06.2012 / 13:50
1

Em 12.04, habilitar os módulos LVM e raid no GRUB irá torná-lo maior que o tradicional. setores disponíveis para o gerenciador de inicialização . Supostamente, a maioria dos sistemas atualmente possui partições alinhadas à marca de 1MB, então geralmente há muito espaço. Você pode usar um dos fdisk s ou parted para verificar a localização inicial da partição sda1 (eu sei que o instalador do Debian é vago sobre aonde tudo está indo, não tenho certeza se o instalador do Ubuntu é diferente). Certifique-se de verificar antes de tentar, parece haver um monte de relatórios que, se não houver espaço suficiente, o Grub irá reclamar que não há espaço suficiente para trabalhar, mas tente de qualquer maneira e deixe o sistema não inicializável.

Como exemplo para ver como usar o fdisk para contar, aqui está o fdisk /dev/sda no meu sistema Debian que instalei há muito tempo atrás: (Use o comando "u" para mostrar setores, então "p" para imprimir a tabela e "q" para sair sem alterações)

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63     1959929      979933+  83  Linux

Isso mostra que, no meu caso, existem apenas 62 setores antes dele. Eu não seria capaz de inicializar diretamente do LVM.

    
por 02.06.2012 / 17:02
1

Eu descobri isso. Antes de começar, direi que os números abaixo podem não somar - tentei recriar exatamente o que fiz, mas tive que recuar nos números. Meu conselho é fazer tudo que você pode em kilobytes, porque todas as ferramentas concordam em quão grandes elas são. Seja MUITO cuidadoso ao usar o fdisk, que a partição é pelo menos tão grande quanto o volume físico que contém, porque ele não avisará se você tentar fazer algo estúpido.

Primeiro, eu precisava inicializar a partir de um flash stick (porque o sistema de arquivos raiz está no LV). Então verifique se o sistema de arquivos está bem:

e2fsck -f /dev/mapper/root

Em seguida, redimensione o sistema de arquivos:

$ df
Filesystem            1K-blocks      Used Available Use% Mounted on
/dev/mapper/root      935093704 472743436 414857916  54% /

$ resize2fs /dev/mapper/root 934093704k

Em seguida, redimensione o volume lógico:

$ lvresize -L 934093704K /dev/mapper/root

Verifique se o sistema de arquivos ainda está bem:

$ e2fsck -f /dev/mapper/root

Agora, dê uma olhada nos volumes físicos - / dev / sdb1 deve ter algum espaço livre no final:

$ pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda1  toad lvm2 a-   465.76g  4.00m
  /dev/sdb1  toad lvm2 a-   465.76g  1.28g

Precisamos mover este espaço livre para o final de / dev / sdb1. Comece vendo quantas extensões existem em cada unidade:

$ pvs --segments

  PV         VG   Fmt  Attr PSize   PFree  Start  SSize
  /dev/sda1  toad lvm2 a-   465.76g  4.00m      0 119173
  /dev/sdb1  toad lvm2 a-   465.76g  1.28g      0 119141

Em seguida, mova alguns de um para o outro:     $ pvmove / dev / sda1: 118923: 119173 / dev / sdb1

$ pvs --segments

  PV         VG   Fmt  Attr PSize   PFree  Start  SSize
  /dev/sda1  toad lvm2 a-   464.55g  1.00g      0 119141
  /dev/sdb1  toad lvm2 a-   465.76g 284.0m      0 119141
  /dev/sdb1  toad lvm2 a-   465.76g 284.0m 119141 119173

Agora você pode redimensionar o volume físico usando pvresize:

$ pvresize --setphysicalvolumesize 487112704k /dev/sda1

Agora você pode redimensionar a partição usando o fdisk. Um aviso aqui: minhas partições foram configuradas para que o / dev / sda1 começasse no setor 63. Eu supus que esse era o padrão e, portanto, não o anotei. Então o fdisk só me deixava recriar a partição a partir do setor 2048, e eu não sabia que estava errado - agora eu tenho um sistema inutilizável! Felizmente, você pode reexcluir e recriar novamente a partição sem nenhum efeito negativo, mas eu tive que adivinhar onde a partição deveria começar. Então, NOTE BEM ONDE SUA PARTIÇÃO COMEÇA ANTES DE SUPRIMIR!

$ fdisk /dev/sda
Command (m for help): p

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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 identifier: 0x000730a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63   974227455   488113696+  8e  Linux LVM
/dev/sda2       974229504   976771071     1270784    5  Extended
/dev/sda5       974231552   976771071     1269760   83  Linux

Command (m for help): d
Partition number (1-5): 1

Command (m for help): n
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-976773167, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-974229503, default 974229503): +487113696K

Command (m for help): x

Expert command (m for help): b
Partition number (1-5): 1
New beginning of data (1-974229439, default 2048): 63

Eu movi e redimensionei / dev / sda2 e / dev / sda5 usando o GParted, o que me deixa muito menos nervoso. Então, finalmente:

$ mkdir disk
$ mount /dev/sda5 disk
$ grub-install --boot-directory=./disk /dev/sda

para reinstalar o carregador de boot no novo local.

Observe que criei a partição pela primeira vez a partir de 2048 e movi o início para 63.

Os comandos LVM aqui dirão se você está prestes a fazer algo estúpido, como tornar um volume físico menor que as extensões alocadas que ele contém, mas alguns não, especialmente fdisk - é muito fácil acabar redimensionando a partição para cortar o final do volume físico. Isso é uma coisa ruim. Certifique-se de que a partição seja pelo menos tão grande quanto o volume físico!

    
por 05.06.2012 / 09:57