Como faço para extrair temporariamente uma unidade flash ou HDD no Linux?

5

Suponha que eu montei um disco desta maneira:

mount /dev/sdb /mnt/tmp

Eu tenho alguns arquivos abertos neste sistema de arquivos e não quero desmontá-lo. No entanto, quero extrair o dispositivo temporariamente e, depois, reconectá-lo mais tarde. Eu quero que todas as leituras e gravações neste sistema de arquivos sejam executadas apenas no cache ou sejam interrompidas até que eu reconecte o dispositivo.

Se eu pensasse em separar-me temporariamente, eu teria usado o mapeador de dispositivos:

# ls -lh /dev/sdb
brw-rw---- 1 root floppy 8, 16 Sep 12 17:38 /dev/sdb
# blockdev --getsize /dev/sdb
2211840
# dmsetup create sdb_detachable --table '0 2211840 linear 8:16 0'
# mount /dev/mapper/sdb_detachable /mnt/tmp
(start working with the filesystem)
(suddenly need to detach the device)
# dmsetup suspend sdb_detachable
# dmsetup load sdb_detachable --table '0 2211840 error'
# blockdev --flushbufs /dev/sdb
(eject the device)
(maybe even use the cached part of the filesystem)
(reattach the device, now it appears as /dev/sdc)
# ls -lh /dev/sdc && blockdev --getsize /dev/sdc
brw-rw---- 1 root floppy 8, 32 Sep 12 17:51 /dev/sdc
2211840
# dmsetup load sdb_detachable --table '0 2211840 linear 8:32 0'
# dmsetup resume sdb_detachable
(filesystem is usable again)
(finished using it, now need to clean up)
# umount /mnt/tmp/
# dmsetup remove sdb_detachable
# eject /dev/sdc

Como isso pode ser feito se o dispositivo for montado diretamente? Posso "roubá-lo" para o mapeador de dispositivos?

    
por Vi. 12.09.2014 / 16:57

1 resposta

0

Hm, isso é legal. Eu não sabia que dmsetup poderia fazer isso. :)

Minha única resposta seria suspender / hibernar a máquina, puxar a unidade flash e fazer sua manipulação em outro lugar, em seguida, colocar a unidade flash de volta antes de retomar o sistema.

Infelizmente, é provável que o sistema de arquivos do dispositivo esteja corrompido fazendo algo assim. Talvez se tudo que você faz é ler a partir dele (e nenhum bloco é escrito em qualquer lugar no dispositivo), isso poderia funcionar.

No entanto, a maioria dos dispositivos flash reescreve os limites de iteração, de modo que (em alguns dispositivos) o firmware pode mover coisas quando ocorre uma gravação, mesmo que a gravação contenha exatamente os mesmos dados. Isso significaria que devolver o dispositivo ao primeiro sistema provavelmente corromperia o sistema de arquivos.

Problema interessante, no entanto. :)

    
por 06.05.2015 / 01:44