Como expandir um sistema de arquivos no meio? (LVM)

0

Eu sei que você pode adicionar espaço ao final de um sistema de arquivos, mas o que dizer do meio? Por exemplo, se o FS estiver em um volume lógico que abrange várias unidades.

[logical-volume]
  |    |    |
[sda][sdb][sdc]

Como se o espaço anteriormente não utilizado se tornasse disponível na unidade sdb?

P.S. Eu acho que isso seria tratado pelo próprio LVM em vez do sistema de arquivos, se é possível.

    
por iPherian 21.08.2016 / 04:41

1 resposta

0

Encontrado.

Versão resumida: use pvmove . Versão longa:

Se a situação como pode ser retornada por lvdisplay --maps é a seguinte:

--- Logical volume ---
  LV Path                /dev/main/data
  Current LE             300
  Segments               3
  (redacted)

  --- Segments ---
  Logical extent 0 to 99:
    Physical volume /dev/sda1
    Physical extents    0 to 99

  Logical extent 100 to 199:
    Physical volume /dev/sdb1
    Physical extents    0 to 99

  Logical extent 200 to 299:
    Physical volume /dev/sdc1
    Physical extents    0 to 99

Então, como você pode ver, um volume lógico está espalhado por três discos e ocupa 100 extensões em cada. 'Extensões' são a versão dos setores da LVM; eles são a menor unidade com a qual geralmente se preocupa.

Mas se olharmos para os volumes físicos abaixo:

pvdisplay

  --- Physical volume ---
  PV Name           /dev/sda1
  Total PE          100
  Free PE           0
  Allocated PE      100

  --- Physical volume ---
  PV Name           /dev/sdb1
  Total PE          300
  Free PE           200
  Allocated PE      100

  --- Physical volume ---
  PV Name           /dev/sdc1
  Total PE          100
  Free PE           0
  Allocated PE      100

... podemos ver que a partição do segundo disco ( /dev/sdb1 ) tem muito espaço extra.

Agora, poderíamos adicionar isso diretamente ao volume lógico e, embora isso provavelmente fosse suficiente para a maioria das situações, ele deixaria o volume em um estado desnecessariamente fragmentado. O final do volume lógico estaria no meio do disco. É aqui que entra o comando pvmove .

pvmove nos permite rearranjar arbitrariamente a configuração de um volume lógico, sem que o sistema de arquivos contido esteja ciente disso.

Aviso: pvmove pode causar perda de dados. Idealmente, faça backup do sistema de arquivos antes de continuar.

Certifique-se de que o volume lógico seja desmontado antes de prosseguir.

sintaxe básica: pvmove SourcePhysicalVolume:PE-PE DestinationPhysicalVolume:PE-PE

Primeiro comando: Recoloque as extensões de sdc1 em sdb1 , tornando tudo contíguo:

pvmove /dev/sdc1:0-99 /dev/sdb1:100-199

Depois, lvdisplay --maps dá:

--- Logical volume ---
  LV Path                /dev/main/data
  Current LE             300
  Segments               2
  (redacted)

  --- Segments ---
  Logical extent 0 to 99:
    Physical volume /dev/sda1
    Physical extents    0 to 99

  Logical extent 100 to 299:
    Physical volume /dev/sdb1
    Physical extents    0 to 199

Agora, é simplesmente uma questão de estender o volume lógico pelo espaço restante em /dev/sdb1 e o agora totalmente vazio /dev/sdc1 . Isso é muito mais simples. O próximo comando diz ao lvm para expandir nosso volume lógico através de todas as extensões livres remanescentes nessas partições.

lvextend -l +100%free /dev/main/data /dev/sdb1 /dev/sdc1

Depois, o volume lógico seria assim:

--- Logical volume ---
  LV Path                /dev/main/data
  Current LE             500
  Segments               2
  (redacted)

  --- Segments ---
  Logical extent 0 to 99:
    Physical volume /dev/sda1
    Physical extents    0 to 99

  Logical extent 100 to 399:
    Physical volume /dev/sdb1
    Physical extents    0 to 299

  Logical extent 400 to 499:
    Physical volume /dev/sdc1
    Physical extents    0 to 99

O que é bonito e o mais simples possível.

Agora podemos estender o sistema de arquivos para o novo espaço.

resize2fs /dev/main/data

Conclusão: O comando pvmove é extremamente poderoso e permite aproveitar todas as ofertas de abstração lvm. Ele permite que você rearranje arbitrariamente o espaço físico no qual um volume lógico fica.

    
por iPherian 21.08.2016 / 12:07