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
.
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 !!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
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
.