Como excluir o dispositivo de partição do dispositivo de loop?

1

Eu montei imagem de disco via dispositivo de loop (losetup -f image.img). Ele contém a tabela de partições e forço o kernel a lê-lo: partprobe / dev / loop1.

Monte / dev / loop1p1, corrija as coisas que quero consertar, desmonte o sistema de arquivos. Eu removo o arquivo do dispositivo de loopback (losetup -d / dev / loop1). Mas / dev / loop1p1 não desapareceu.

Eu até tentei recriar o lodispositivo, adicionar e remover a tabela de partições via fdisk. Mas todas as minhas tentativas falharam:

A tabela de partições foi alterada!

Chamando ioctl () para reler a tabela de partições.

AVISO: A leitura da tabela de partições falhou com o erro 22: argumento inválido. O kernel ainda usa a tabela antiga. A nova tabela será usada em a próxima reinicialização ou depois de executar partprobe (8) ou kpartx (8) Sincronizando discos.

A partição não está em uso de qualquer forma, mas não consigo liberá-la. Existe alguma maneira de removê-lo sem reiniciar?

Eu vejo no dmesg alguns registros:

[4649002.505727] loop1: rw = 0, desejado = 211812300, limite = 62914560 [4649002.505753] Erro de E / S de buffer no dispositivo loop1p1, bloco lógico 52952562 [4649002.505870] tentativa de acessar além do fim do dispositivo

E eles estão incomodando meus nagios.

    
por George Shuklin 01.09.2014 / 13:14

1 resposta

1

A reinicialização deve corrigir seu kernel. E, da próxima vez, em vez de executar losetup e partprobe manualmente, use kpartx :

kpartx -v -a image.img

e para derrubá-lo:

kpartx -d image.img
    
por 01.09.2014 / 13:33