Si estás siguiendo el tutorial de cómo montar un nas con raspberry pi o con una máquina en linux que va a trabajar con unidades usb, te estarás preguntando qué pasará si el sistema no reconoce los discos por orden. Hay una manera de montar discos usb por id en linux y así evitar que tus scripts dejen de funcionar.
Normalmente cuando montas unidades en linux lo haces revisando con fdisk -l y luego ejecutando el comando de montaje con por ejemplo mount /dev/sda1 /var/hdd, lo que monta una partición en una carpeta existente. Pero los usbs no siempre son predecibles y en ocasiones nos pueden dar problemas si se cambian de orden, o si el equipo reconoce uno antes que otro de forma diferente entre reinicios.
Puedes pensar que esto es un problema grave, y que puede hacer que tus scripts, servidores nas, puntos de montaje o demás dejen de funcionar, pero nada más lejos de la realidad.
Ver el identificador de una unidad usb en linux
Por suerte, al igual que pasa con las MAC de las tarjetas de red, los dispositivos usb, así como las memorias flash y los discos duros, tienen cada uno un identificador único que nos indica exactamente una unidad, independientemente de cuando la conectemos al equipo. Para eso simplemente tendremos que conectar una unidad a nuestro equipo de ejecutar este comando:
ls -l /dev/disk/by-uuid/
Esto nos dará una lista con las unidades conectadas, por ejemplo:
root@raspberrypi:~# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 15 mar 31 13:17 947B-B89A -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 10 abr 1 13:19 C42ED50E25D4F9FE -> ../../sdb1 lrwxrwxrwx 1 root root 15 mar 31 13:17 eda95d8a-9cdd-4224-96d0-890b4791600c -> ../../mmcblk0p2
Como puedes ver en este caso la unidad que he conectado tiene la id C42ED50E25D4F9FE, y como nunca cambiará no importa en el orden que la conecte, ya que hará referencia siempre al disco sdX al que vaya asociado. Para cada unidad que conectemos podemos apuntarnos por ejemplo las 3 o 4 primeras letras para identificarla dentro de un archivo de texto.
Cómo montar unidades usb por uuid en linux
Ahora que sabes la uuid de tu disco usb simplemente tienes que montarla como haces siempre pero con la ruta a su identificador. Sería ejecutar un comando similar a este en mi caso:
mount /dev/disk/by-uuid/C42ED50E2ED4F9FE /var/hdd
En este caso este comando es lo mismo que si ejecuto mount /dev/sdb1 /var/hdd, ya que este uuid va asociado a dicha partición. Con esto puedes hacer muchas cosas, como por ejemplo tener un script que detecte cuando conectas una memoria usb en concreto y que haga de llave para desbloquear algo, o que se copie automáticamente el contenido de un disco duro específico, o en mi caso gestionar un sistema de backups que guardan las copias en discos duros determinados.
Cómo montar por uuid en fstab
Si lo que prefieres es que el montaje de la unidad sea permanente, ya bien por que sea un disco que vas a dejar conectado, o por que necesitas que se intente montar después de cada arranque, lo ideal es usar fstab. En lugar de echar mano de scripts que se ejecuten al inicio, fstab monta las unidades que le indiques. Para hacerlo por UUID, una vez las tengas localizadas debes configurarlas de la siguiente forma:
UUID=81df2f43-8d5a-4508-98bb-7e06b033702d /media/233gb ext4 defaults,errors=remount-ro 0 1 UUID=C42ED50E2ED4F9FE /media/500gb ntfs defaults 0 2
Como puedes ver te dejo el ejemplo en ext4 y ntfs, pero para otros ext sería similar. Recuerda instalar ntfs-3g para montar discos ntfs.
¿Para qué estas usando el montaje de unidades con uuid? Déjame tus ideas.