¿Cómo extraigo temporalmente una unidad flash o disco duro en Linux?

Supongamos que monté un disco de esta manera:

mount /dev/sdb /mnt/tmp 

Tengo algunos files abiertos en este sistema de files y no quiero desmontarlos. Sin embargo, quiero extraer temporalmente el dispositivo, luego volver a conectarlo más tarde. Quiero que todas las lecturas y escrituras en este sistema de files se realicen solo en caching o se cuelguen hasta que vuelva a conectar el dispositivo.

Si pensé en desconectarme temporalmente por adelantado, habría utilizado el 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 

¿Cómo se puede lograr esto si el dispositivo está montado directamente? ¿Puedo "robar" en el mapeador de dispositivos?

Solutions Collecting From Web of "¿Cómo extraigo temporalmente una unidad flash o disco duro en Linux?"

Hm, eso es genial. No sabía que dmsetup podría hacer eso. 🙂

Mi única respuesta sería suspender / hibernate la máquina, extraer la unidad de memory flash y manipularla en otro lugar, luego volver a colocar la unidad de memory flash antes de reanudar el sistema.

Lamentablemente, es probable que el sistema de files del dispositivo se corrompa al hacer algo como esto. Quizás si todo lo que hace es leer de él (y no se escriben bloques en ninguna parte del dispositivo), esto podría funcionar.

Sin embargo, la mayoría de los dispositivos flash tienen límites de repetición de escritura, por lo que (en algunos dispositivos) el firmware puede cambiar las cosas cuando se produce una escritura, incluso si la escritura contiene exactamente los mismos datos. Esto significaría que devolver el dispositivo al primer sistema probablemente corrompería el sistema de files.

Problema interesante, sin embargo. 🙂