Removendo vg e lv após a remoção da unidade física

32

Tivemos uma falha no disco em um servidor e o substituímos antes de remover a unidade do LVM.

O servidor possui 4 unidades físicas (PVs), cada uma com seu próprio grupo de volumes (VG). Cada VG possui 2 ou mais volumes lógicos (LVs). Agora, o LVM está reclamando da unidade ausente. Portanto, temos um VG (vg04) com dois LVs que se tornaram órfãos do que precisamos limpar do sistema.

O problema é que toda vez que executamos qualquer comando LVM, obtemos estes erros de 'falha na leitura':

# lvscan
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error

# vgreduce vg04 --removemissing --force
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# vgchange -a n /dev/vg04
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# lvchange -a n /dev/vg04/vz
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found
  Skipping volume group vg04

Os VG e LV ausentes não são importantes, apenas queremos removê-los.

Como você pode ver, tentamos todas as sugestões feitas, até agora sem sorte.

A saída do 'lvm dumpconfig' pode ser verificada em http://pastebin.com/MHiBzrLJ

RCD
fonte

Respostas:

46

A solução foi executar o dmsetup, neste caso os dois comandos

dmsetup remove vg04-vz
dmsetup remove vg04-swap

Antes de fazer isso, verifiquei com o comando 'dmsetup info' que a 'contagem aberta' para os dois LVs era zero.

AVISO: o dmsetup pode causar estragos sérios nos seus discos; portanto, qualquer pessoa que utilize essas informações no futuro, leia a página de manual.

RCD
fonte
3
Isso fez o truque. É uma pena que o LVM seja uma abstração com vazamento, mas acho que isso é o melhor possível.
Navin
11
Boa ligação com esse aviso. Se eu entendi corretamente, o nome semelhante remove_all --force --deferred --retryexplodiria toda unidade gerenciada LVM ao seu alcance. Ele continuaria tentando e não desistir, como o Terminator. Estou super curioso sobre o porquê de uma espingarda como essa ser justificada.
Dan Ross
Há também um único dispositivo "termina com extremo preconceito" (e / ou vingança, se o dispositivo o mantinha ocupado a noite toda): # dmsetup --force --retry --deferred remove <YOURVG>-<YOURLV>isso é especialmente verdade, se, por exemplo, um dispositivo iscsi estava pendurado e você o removeu com# iscsiadm -m node -U all -T <FQDN>
AdamKalisz
9

Eu experimentei semelhante depois de remover um disco do VMware /dev/sdb.

Use lsscsipara determinar qual dispositivo está sendo usado (pode ser necessário instalar o programa) e execute lsscsi:

# lsscsi
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb <== the removed physical disk
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc

Agora escreva o arquivo de exclusão com

# echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/delete

O dispositivo desapareceu imediatamente.

Effendi
fonte
11
Obrigado!! Isso funcionou perfeitamente para mim, eliminando erros como "/ dev / sdb: leitura falhada após 0 de 4096 em 0: erro de entrada / saída" após remover um vg1-xyz obsoleto via dmsetup.
cat pants
11
Apenas este funciona para mim. Você fez meu dia.
21814 odiszapc
2

vgchange -an / dev / vg04

Se você tiver volumes lógicos ainda ativos, poderá ser necessário

lvchange -a n /dev/vg04/swap
lvchange -a n dev/vg04/vz

etc.

Rob Shinn
fonte
2
Infelizmente isso também não corrigi-lo, ele continua lançando o mesmo erro:
RCD
No meu sistema lvchange -a n <VGNAME>funciona perfekt!
Zzeroo 26/01