Persistent block device naming (Español)
Este artículo describe cómo utilizar nombres permanentes para sus dispositivos de bloques. Esto ha sido posible gracias a la introducción de udev y tiene algunas ventajas sobre los nombres basados en el bus de conexión. Si el equipo tiene más de una controladora de disco SATA, SCSI o IDE, el orden en que se añaden sus correspondientes nodos de dispositivos es arbitraria. Esto puede dar lugar a nombres de dispositivos como /dev/sda
y /dev/sdb
alternando aleatoriamente en cada arranque, que puede terminar en una nominación de los dispositivos que impida el arranque del sistema, en pánico del kernel o en una desaparición del dispositivo de bloque. La nomenclatura permanente resuelve estos problemas.
- La nomenclatura persistente tiene límites que están fuera del alcance de este artículo. Por ejemplo, si bien mkinitcpio tiene soporte para cierto método, systemd puede imponer sus propios límites (por ejemplo, FS#42884) para nombrarlo, puediendo implementarlo durante el arranque.
- Si está usando LVM, este artículo no es relevante, dado que los volúmenes lógicos como
/dev/NombredelGrupodeVolúmenes/NombredelVolumenLógico
, las rutas del dispositivo son persistentes.
Métodos para nombrar los dispositivos de forma permanente
Hay cuatro esquemas diferentes para nombrar de forma permanente los dispositivos: by-label, by-uuid, by-id y by-path. Para aquellos que utilizan discos con tabla de particiones GUID (GPT), pueden usar dos esquemas adicionales by-partlabel y by-partuuid. También puede utilizar #Nombres estáticos de los dispositivos con udev.
Los directorios en /dev/disk/
se crean y destruyen dinámicamente, dependiendo de si hay dispositivos en ellos.
Las siguientes secciones describen lo que son y cómo se utilizan los diferentes métodos de asignación de nombres permanentes.
La orden lsblk se puede utilizar para la visualización gráfica de los primeros esquemas de nombres persistentes:
Para aquellos que utilizan GPT, puede acudir a la orden . Esta última es más eficiente para los scripts, pero más difícil de leer.
# blkid
/dev/sda1: UUID="CBB6-24F2" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="d0d0d110-0a71-4ed6-936a-304969ea36af" /dev/sda2: LABEL="Arch Linux" UUID="0a3407de-014b-458b-b5c1-848e92a327a3" TYPE="ext4" PARTLABEL="GNU/Linux" PARTUUID="98a81274-10f7-40db-872a-03df048df366" /dev/sda3: LABEL="Data" UUID="b411dc99-f0a0-4c87-9e05-184977be8539" TYPE="ext4" PARTLABEL="Home" PARTUUID="7280201c-fc5d-40f2-a9b2-466611d3d49e" /dev/sda4: UUID="f9fe0b69-a280-415d-a03a-a32752370dee" TYPE="swap" PARTLABEL="Swap" PARTUUID="039b6c1c-7553-4455-9537-1befbc9fbc5b" /dev/mmcblk0: PTUUID="0003e1e5" PTTYPE="dos" /dev/mmcblk0p1: UUID="F4CA-5D75" TYPE="vfat" PARTUUID="0003e1e5-01"
by-label
Casi todos los tipos de sistemas de archivos pueden tener una etiqueta. Todos los volúmenes que tienen una se enumeran en el directorio .
$ ls -l /dev/disk/by-label
total 0 lrwxrwxrwx 1 root root 10 May 27 23:31 Data -> ../../sda3 lrwxrwxrwx 1 root root 10 May 27 23:31 Arch\x20Linux -> ../../sda2
La mayoría de los sistemas de archivos admiten la configuración de etiquetas al crear el sistema de archivos, consulte la página de manual de la utilidad . Para algunos sistemas de archivos también es posible cambiar las etiquetas. Los siguientes son algunos métodos para cambiar etiquetas en sistemas de archivos comunes:
- swap
- utilizando
- ext2/3/4
- utilizando
- btrfs
- utilizando btrfs-progs
- reiserfs
- utilizando
- jfs
- utilizando jfsutils
- xfs
- utilizando
- fat/vfat
- utilizando
- utilizando
- exfat
- utilizando exfat-utils
- ntfs
- utilizando
- udf
udflabel /dev/XXX "etiqueta nueva"
utilizando- crypto_LUKS (LUKS2 only)
- utilizando
La etiqueta de un dispositivo se puede obtener con lsblk:
O con blkid:
by-uuid
UUID es un mecanismo para dotar a cada sistema de archivos de un identificador único. Estos identificadores son generados por las utilidades del sistema de archivos (por ejemplo, ) cuando la partición se formatea y se ha diseñado de manera que evite conflictos. Todos los sistemas de archivos de GNU/Linux (incluyendo swap y las cabeceras LUKS de dispositivos cifrados en bruto) soportan UUID. Los sistemas de archivos FAT, exFAT y NTFS no son compatibles con UUID, pero todavía se enumeran en con un UID más corto (identificador único):
$ ls -l /dev/disk/by-uuid/
total 0 lrwxrwxrwx 1 root root 10 May 27 23:31 0a3407de-014b-458b-b5c1-848e92a327a3 -> ../../sda2 lrwxrwxrwx 1 root root 10 May 27 23:31 b411dc99-f0a0-4c87-9e05-184977be8539 -> ../../sda3 lrwxrwxrwx 1 root root 10 May 27 23:31 CBB6-24F2 -> ../../sda1 lrwxrwxrwx 1 root root 10 May 27 23:31 f9fe0b69-a280-415d-a03a-a32752370dee -> ../../sda4 lrwxrwxrwx 1 root root 10 May 27 23:31 F4CA-5D75 -> ../../mmcblk0p1
El UUID de un dispositivo se puede obtener con lsblk:
O con blkid:
La ventaja de usar el método UUID es que es mucho menos probable que se produzcan colisiones de nombres que con las etiquetas. Además, se genera automáticamente en la creación del sistema de archivos. Será, por ejemplo, el único indicador, incluso si el dispositivo está conectado a otro sistema (el cual, tal vez, puede tener un dispositivo con la misma etiqueta).
La desventaja es que UUID hace largas líneas de código difícil de leer y rompe el formato en muchos archivos de configuración (por ejemplo fstab o Dm-crypt (Español)/System configuration (Español)#crypttab|crypttab]]). También, cada vez que un volumen se redimensiona o reformatea, se genera un nuevo UUID y los archivos de configuración tienen que volver a ajustarse manualmente.
by-id y by-path
crea un nombre único en función del número de serie del hardware, crea un nombre único en función de la ruta física más corta (de acuerdo con sysfs). Ambos contienen cadenas para indicar el subsistema al que pertenecen (es decir, para , y para ) de modo que están vinculados al hardware que controla el dispositivo. Esto implica diferentes niveles de persistencia: cambiará cuando el dispositivo se conecte a un puerto diferente del controlador; cambiará cuando se conecte el dispositivo en un puerto de un controlador de hardware sujeto a otro subsistema. Por lo tanto, ninguno de los dos son adecuados para lograr nombres persistentes tolerantes a los cambios de hardware.
Sin embargo, ambos proporcionan información importante para encontrar un dispositivo en particular en una gran infraestructura de hardware. Por ejemplo, si no se asignan manualmente etiquetas persistentes ( o ) y se mantiene un directorio con utilización de puerto de hardware, y pueden ser utilizados para encontrar un dispositivo en particular.
también crea enlaces a nombres a nivel mundial (siglas en inglés World Wide Name) de los dispositivos de almacenamiento que lo admitan. A diferencia de otros enlaces , WWNs son completamente persistentes y no cambiarán al margen del subsistema utilizado.
$ ls -l /dev/disk/by-path/
total 0 lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1 -> ../../sda lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part3 -> ../../sda3 lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part4 -> ../../sda4 lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:07:00.0-platform-rtsx_pci_sdmmc.0 -> ../../mmcblk0 lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:07:00.0-platform-rtsx_pci_sdmmc.0-part1 -> ../../mmcblk0p1
by-partlabel
Las etiquetas de partición GPT se pueden definir en el encabezado de la entrada de la partición en discos GPT.
Este método es muy similar al de las etiquetas de los sistemas de archivos, excepto que las etiquetas de la partición no se ven afectadas si se cambia el sistema de archivos en la partición.
Todas las particiones que tienen etiquetas de partición se enumeran en el directorio /dev/disk/by-partlabel
.
La etiqueta de partición de un dispositivo se puede obtener con lsblk:
O con blkid:
by-partuuid
Al igual que con las etiquetas de particiones GPT, el UUID de la partición se define en la entrada de la partición en discos GPT.
MBR no admite UUID de las particiones, pero Linux y el software que utiliza libblkid (por ejemplo, udev) son capaces de generar pseudo PARTUUID para particiones MBR. El formato es , donde es una firma de disco MBR de 32 bits llena de ceros, y es un número de partición lleno de ceros en formato hexadecimal. A diferencia de un PARTUUID normal de una partición GPT, el pseudo PARTUUID de MBR puede cambiar si cambia el número de la partición.
El directorio dinámico es similar al de los otros métodos y, al igual que con el UUID de los sistemas de archivos, el uso del UUID de las particiones es preferido sobre el de las etiquetas.
ls -l /dev/disk/by-partuuid/
total 0 lrwxrwxrwx 1 root root 10 May 27 23:31 0003e1e5-01 -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 10 May 27 23:31 039b6c1c-7553-4455-9537-1befbc9fbc5b -> ../../sda4 lrwxrwxrwx 1 root root 10 May 27 23:31 7280201c-fc5d-40f2-a9b2-466611d3d49e -> ../../sda3 lrwxrwxrwx 1 root root 10 May 27 23:31 98a81274-10f7-40db-872a-03df048df366 -> ../../sda2 lrwxrwxrwx 1 root root 10 May 27 23:31 d0d0d110-0a71-4ed6-936a-304969ea36af -> ../../sda1
La partición UUID de un dispositivo se puede obtener con lsblk:
O conblkid:
Nombres estáticos de los dispositivos con udev
Véase Udev (Español)#Configurar nombres estáticos para los dispositivos[enlace roto: sección no válida].
Utilizar nomenclatura permanente
Existen varias aplicaciones que se pueden configurar mediante el uso la nomenclatura permanente. Los siguientes son algunos ejemplos de cómo configurarlos.
fstab
Ver el artículo principal: fstab (Español)#Identificación de sistemas de archivos.
Parámetros del kernel
Para usar nombres persistentes en los parámetros del kernel, se deben cumplir los siguientes requisitos previos. En una instalación estándar, que sigue la guía de instalación, se cumplen los dos requisitos previos:
- Está utilizando una imagen de disco RAM inicial de mkinitcpio[enlace roto: sección no válida]
- Tiene activado el hook de udev o de systemd en
La ubicación del sistema de archivos raíz viene dada por el parámetro en la línea de órdenes del kernel. La línea de órdenes del kernel se configura desde el gestor de arranque, consulte Kernel parameters (Español)#Configuración. Para cambiar a nombres de dispositivo persistentes, basta con cambiar los parámetros que identifican los dispositivos de bloque, por ejemplo, y , dejando otros parámetros tal como están. Se admiten varios esquemas de nomenclatura:
El nombre persistente del dispositivo utilizando etiquetas y el formato , en este ejemplo es la ETIQUETA del sistema de archivos raíz.
root="LABEL=Arch Linux"
El nombre persistente del dispositivo utilizando UUID y el formato , en este ejemplo 0a3407de-014b-458b-b5c1-848e92a327a3
, es el UUID del sistema de archivos raíz.
root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3
El nombre persistente del dispositivo utilizando el id del disco y el formato de ruta , en este ejemplo , es el identificador de la partición raíz.
root=/dev/disk/by-id/wwn-0x60015ee0000b237f-part2
El nombre persistente del dispositivo utilizando el UUID de la partición GPT y el formato , en este ejemplo , es el PARTLABEL de la partición raíz.
root=PARTUUID=98a81274-10f7-40db-872a-03df048df366
El nombre persistente del dispositivo utilizando la etiqueta de la partición GPT y el formato , en este ejemplo GNU/Linux
, es el PARTLABEL de la partición raíz.
root="PARTLABEL=GNU/Linux"