Não é possível remover o volume antigo

1

Eu tenho um disco rígido externo conectado ao meu laptop Ubuntu via USB. Todo o disco rígido é LUKS criptografado. Ao lado da camada de criptografia está um volume LVM que eu montei em /mnt/es . Depois de aberto, lsblk vê tudo como:

sdc                                          8:32   0   2.7T  0 disk  
└─es (dm-6)                                252:6    0   2.7T  0 crypt 
  └─externalstorage-externalstorage (dm-7) 252:7    0   2.7T  0 lvm   /mnt/es

Às vezes, de alguma forma, o disco rígido fica "desconectado" dos volumes e, nesse caso, os dados ficam inacessíveis:

sdc                                        8:32   0   2.7T  0 disk  
es (dm-6)                                252:6    0   2.7T  0 crypt 
└─externalstorage-externalstorage (dm-7) 252:7    0   2.7T  0 lvm

Eu notei que isso geralmente acontece quando o laptop vai dormir.

Agora, o problema é que, uma vez que sdc foi [?] desanexado, não consigo me livrar dos dois volumes obsoletos es e externalstorage-externalstorage para reutilizar seus nomes novamente. A primeira coisa que faço é umount /mnt/es , o que funciona bem. Mas, mesmo que o volume não esteja montado, não consigo removê-lo:

dmsetup remove --force /dev/mapper/externalstorage-externalstorage
device-mapper: resume ioctl on externalstorage-externalstorage failed: Invalid argument
device-mapper: remove ioctl on externalstorage-externalstorage failed: Device or resource busy
Command failed

O comando info mostra que o volume está aberto:

dmsetup info -c /dev/mapper/externalstorage-externalstorage
Name                            Maj Min Stat Open Targ Event  UUID                                                                
externalstorage-externalstorage 252   7 L--w    1    1      0 LVM-R4bAWzxJ8Cy3MBIjmPps60Rd3cFVyBStxTeKaR6gBHdefTYfJNWhHfA8tzqOBHns

Aqui está o que parece estar segurando o volume, mas não me diz muito:

fuser -m /dev/mapper/externalstorage-externalstorage
Cannot stat file /proc/5687/fd/4: Stale file handle
Cannot stat file /proc/5687/fd/5: Stale file handle
Cannot stat file /proc/5687/fd/6: Stale file handle
Cannot stat file /proc/5687/fd/7: Stale file handle
Cannot stat file /proc/5687/fd/11: Stale file handle

Do ponto de vista da LVM, não está acessível:

pvdisplay
  /dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981780979712: Input/output error
  /dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981781037056: Input/output error
  /dev/externalstorage/externalstorage: read failed after 0 of 4096 at 0: Input/output error
  /dev/externalstorage/externalstorage: read failed after 0 of 4096 at 4096: Input/output error

Curiosamente, neste momento, cryptsetup luksClose es pode ser repetido qualquer número de vezes sem qualquer impacto visível ou mensagem de erro.

Então, como posso me livrar desses volumes antigos (além da reinicialização)? E existe alguma maneira de evitar que o problema aconteça em primeiro lugar, ou seja, por que sdc se destaca de vez em quando?

[Ubuntu 14.04.3 LTS, kernel 3.19.0-42-genérico]

Atualizar

vgchange -an gera erros semelhantes como acima:

/dev/mapper/es: read failed after 0 of 4096 at 3000590794752: Input/output error
/dev/mapper/es: read failed after 0 of 4096 at 3000590876672: Input/output error
/dev/mapper/es: read failed after 0 of 4096 at 0: Input/output error
/dev/mapper/es: read failed after 0 of 4096 at 4096: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981780979712: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981781037056: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 0: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 4096: Input/output error
    
por Greendrake 04.01.2016 / 06:21

1 resposta

2

É mais como um trabalho de adivinhação, mas parece que você precisará desativar o lvm antes de poder remover o mapeamento da cripta, basicamente trabalhando de volta por dentro:

Primeiro, você precisa desmontar qualquer fs obsoleto no lvm:

umount -f /mnt/es

Em seguida, desative o lvm que você parece ter no topo do cryptsetup. Mesmo se você tiver outros vgs, o seguinte deve desativar tudo o que puder, sem prejudicar o sistema se ele usar qualquer outro vg:

vgchange -an

Depois disso, você pode usar o dmsetup para remover o mapeamento criado pelo cryptsetup (!)

dmsetup remove externalstorage

(Eu posso ter confundido alguns dos nomes, fique à vontade para corrigi-lo)

Parece que o problema básico é que, durante o sono, o drive USB está caindo do barramento e, quando voltar, o sistema de blocos detecta que o sdb desapareceu, embora haja um sdc agora.

    
por 04.01.2016 / 07:48