lvreduce muito. Posso recuperar isso?

1

Eu estava tentando tirar um disco rígido de um grande grupo de LVM composto por 5 unidades. Ele tinha um sistema de arquivos de 5,5 TB (ext4). O VE foi de 7,5 TB. Eu queria reduzir o LV em 1.82TiB para que eu pudesse encolher o VG e tirar a unidade do grupo.

Eu fiz o seguinte: fsck -f (passed) e lvreduce -L 1.82T /dev/mapper/my_storage_vg-storage_lv

isso produz o aviso:   

Rounding up size to full physical extent 1.82 TiB
  WARNING: Reducing active logical volume to 1.82 TiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage_lv? [y/n]:

Qual é o que eu esperava, então eu disse sim, assumindo que eu tinha espaço para dar.

No entanto, você deve ter notado que eu esqueci o sinal de menos no 1.82T, então ao invés de reduzi-lo em 1.82T, eu o reduzi para 1.82T !!
Meu próximo comando foi um fsck, que falhou e eu disse não para qualquer reparo, imediatamente vendo o erro.
O próximo comando que tentei foi:
lvextend -l +100%FREE /dev/mapper/my_storage_vg-storage_lv

Isso restaurou o tamanho do LV.

Eu tentei então fsck- f
mas desta vez o fsck falhou uma vez que bloqueou as diferenças de bitmap.

Eu suspeito que o comando lvextend colocou os blocos de volta, em uma ordem diferente da que eles estavam quando foram removidos, essencialmente mexendo no sistema de arquivos.

Isso soa correto e, em caso afirmativo, o que posso fazer para desembaralhar o sistema de arquivos ext4? Qualquer coisa?

Toda ajuda muito apreciada ...

Adendo: eu fiz um pvscan em um ponto anterior no processo:

PV /dev/sdf1   VG my_storage_vg   lvm2 [1.82 TiB / 0    free]
PV /dev/sda1   VG my_storage_vg   lvm2 [1.82 TiB / 0    free]
PV /dev/sde1   VG my_storage_vg   lvm2 [1.82 TiB / 0    free]
PV /dev/sdc1   VG my_storage_vg   lvm2 [1.36 TiB / 0    free]
PV /dev/sdd1   VG my_storage_vg   lvm2 [698.63 GiB / 698.63 GiB free]

Eu suspeito que esta é a ordem que as unidades foram adicionadas ao vg originalmente (talvez, não tenho certeza). Estou pensando em levar o LV e o VG para o tamanho 0 e, em seguida, adicionar os drives um de cada vez

vgextend /dev/sda1
lvextend sda1
vg extend sde1
lvextend sde1
etc...

Existe uma maneira melhor de fazer isso?

Melhor ainda:

lvreduce -l 0 /dev/mapper/my_storage_vg-storage_lv
lvextend /dev/mapper/my_storage_vg-storage_lv /dev/sdf1
lvextend /dev/mapper/my_storage_vg-storage_lv /dev/sda1
lvextend /dev/mapper/my_storage_vg-storage_lv /dev/sde1
lvextend /dev/mapper/my_storage_vg-storage_lv /dev/sdc1
fsck -f /dev/mapper/my_storage_vg-storage_lv
    
por Peter 20.09.2013 / 09:10

1 resposta

0

Você não pode estender o LV e esperar acertar o layout correto aleatoriamente. Use vgcfgrestore (eu vou deixar você ler o manual) para restaurar a configuração antes do seu lvreduce . Não use mount ou fsck .

    
por Gabriel 20.09.2013 / 13:44