jueves, 10 de marzo de 2016

Determinando los nombres de los dispositivos

A veces es difícil determinar el nombre de un dispositivo. En los viejos tiempos, no era muy difícil. Un dispositivo siempre estaba en el mismo sitio y no cambiaba. A los sistemas tipo Unix les gusta esa manera de proceder. Volviendo a cuando Unix se desarrolló, “cambiar una unidad de disco” implicaba usar un montacargas para retirar un dispositivo del tamaño de una lavadora de la sala de ordenadores. En los últimos años, la configuración del hardware de escritorio se ha vuelto algo más dinámica y Linux ha evolucionado para hacerse más flexible que sus antepasados.

En los ejemplos siguientes aprovecharemos la capacidad de los escritorios modernos de Linux para montar los dispositivos “automágicamente” y después, determinar el nombre. Pero ¿qué pasa si estamos administrando un servidor o algún otro entorno donde esto no ocurre? ¿cómo podemos resolverlo?

Primero, veamos cómo el sistema nombra los dispositivos. Si listamos el contenido del directorio /dev (donde viven todos los dispositivos), podemos ver que hay montones y montones de dispositivos:

[me@linuxbox ~]$ ls /dev

El contenido del listado revela algunos patrones en el nombrado de los dispositivos. Aquí tenemos unos pocos:

Tabla 15-2: Nombres de los dispositivos de almacenamiento en Linux
Patrón
Dispositivo
/dev/fd*
Disquetes
/dev/hd*
Discos IDE (PATA) en sistemas antiguos. Las placas base típicas contienen dos conectores IDE o canales, cada uno con un cable con dos puntos de conexión para unidades. La primera unidad del cable se llama dispositivo maestro y la segunda se llama dispositivo esclavo. Los nombres de dispositivos se ordenan de tal forma que /dev/hda se refiere al dispositivo maestro del primer canal, /dev/hdb es el dispositivo esclavo del primer canal; /dev/hdc, el dispositivo maestro del segundo canal, etc. Un dígito al final indica el número de partición en el dispositivo. Por ejemplo, /dev/hda1 se refiere a la primera partición del primer disco duro del sistema mientras que /dev/hda se refiere al disco completo.
/dev/lp*
Impresoras
/dev/sd*
Discos SCSI. En sistemas Linux recientes, el kernel trata todos los dispositivos que sirven de disco (incluyendo discos duros PATA/SATA, unidades flash, dispositivos de almacenamiento USB como reproductores de música portátiles y cámaras digitales) como discos SCSI. El resto del sistema de nombres es similar al antiguo esquema de nombres /dev/hd* descrito arriba.
/dev/sr*
Discos ópticos (lectores y grabadores de CD/DVD).

Además, vemos a menudo enlaces simbólicos como /dev/cdrom, /dev/dvd y /dev/floppy que apuntan a los archivos de los dispositivos reales, proporcionados para una mayor comodidad.

Si estás trabajando en un sistema que no monta automáticamente los dispositivos extraíbles, puedes usar la siguiente técnica para determinar cómo son nombrados los dispositivos extraíbles cuando son conectados. Primero, arranca una vista en tiempo real del archivo /var/log/messages o /var/log/syslog (puedes necesitar privilegios de superusuario para ello):

[me@linuxbox ~]$ sudo tail -f /var/log/messages

Las últimas líneas del archivo se mostrarán y luego se pausarán. A continuación, conecta el dispositivo removible. En este ejemplo, usaremos una memoria flash de 16MB. Casi inmediatamente, el kernel detectará el dispositivo y lo probará:

Jul 23 10:07:53 linuxbox kernel: usb 3-2: new full speed USB device using uhci_hcd and address 2
Jul 23 10:07:53 linuxbox kernel: usb 3-2: configuration #1 chosen from 1 choice
Jul 23 10:07:53 linuxbox kernel: scsi3 : SCSI emulation for USB Mass Storage devices
Jul 23 10:07:58 linuxbox kernel: scsi scan: INQUIRY result too short (5), using 36
Jul 23 10:07:58 linuxbox kernel: scsi 3:0:0:0: Direct-Access Easy Disk 1.00 PQ: 0 ANSI: 2
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] 31263 512-byte hardware sectors (16 MB)
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Write Protect is off
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Assuming drive cache: write through
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] 31263 512-byte hardware sectors (16 MB)
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Write Protect is off
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Assuming drive cache: write through
Jul 23 10:07:59 linuxbox kernel: sdb: sdb1
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Attached SCSI removable disk
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: Attached scsi generic sg3 type 0

Después de que la pantalla se pare de nuevo, pulsa Ctrl-C para volver al prompt. Las partes interesantes de la salida son las referencias repetidas a “[sdb]” que coinciden con nuestra expectativa de un nombre de dispositivo de un disco SCSI. Sabiendo esto, dos líneas pasan a ser particularmente esclarecedoras:

Jul 23 10:07:59 linuxbox kernel: sdb: sdb1
Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Attached SCSI removable disk

Esto nos dice que el nombre del dispositivo es /dev/sdb para el dispositivo completo y /dev/sdb1 para la primera partición del dispositivo. Como hemos visto, ¡trabajar con Linux está lleno de interesantes trabajos detectivescos!

Consejo: usar la técnica tail -f /var/log/messages es una excelente manera de ver lo que el sistema está haciendo casi en tiempo real.

Con nuestro nombre de dispositivo en la mano, podemos montar la unidad flash:

[me@linuxbox ~]$ sudo mkdir /mnt/flash
[me@linuxbox ~]$ sudo mount /dev/sdb1 /mnt/flash
[me@linuxbox ~]$ df
Filesystem  1K-blocks     Used  Available  Use% Mounted on
/dev/sda2    15115452  5186944    9775164   35% /
/dev/sda5    59631908 31777376   24776480   57% /home
/dev/sda1      147764    17277     122858   13% /boot
tmpfs          776808        0     776808    0% /dev/shm
/dev/sdb1       15560        0      15560    0% /mnt/flash

El nombre del dispositivo permanecerá igual mientras que permanezca físicamente conectado al ordenador y este no sea reiniciado.

No hay comentarios:

Publicar un comentario