# Persistent block device naming (Español)

Artículos relacionados

- fstab (Español)
- udev (Español)
- LVM (Español)

En este artículo se 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` conmutando 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.

Nota: Si está usando LVM2, este artículo no es relevante, dado que LVM se encarga de esto automáticamente.

## 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 dispositivos utilizando udev[broken link: invalid section].

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 -f` se puede utilizar para la visualización gráfica de los primeros esquemas nombres persistentes:

    $ lsblk -f

    NAME   FSTYPE LABEL  UUID                                 MOUNTPOINT
    sda
    ├─sda1 vfat          CBB6-24F2                            /boot
    ├─sda2 ext4   SYSTEM 0a3407de-014b-458b-b5c1-848e92a327a3 /
    ├─sda3 ext4   DATA   b411dc99-f0a0-4c87-9e05-184977be8539 /home
    └─sda4 swap          f9fe0b69-a280-415d-a03a-a32752370dee [SWAP]

Para aquellos que utilizan GPT, utilice la orden `blkid`. Este último 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="SYSTEM" 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"

### by-label

Casi todos los tipos de sistemas de archivos pueden tener una etiqueta. Todas las particiones que tienen una se enumeran en el directorio `/dev/disk/by-label`. Este directorio se crea y se destruye de forma dinámica, en función de si tiene particiones con etiquetas adjuntas.

    $ 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 SYSTEM -> ../../sda2

Las etiquetas de los sistemas de archivos se pueden cambiar. Los siguientes son algunos métodos para cambiar las etiquetas de los sistemas de archivos comunes:

swap
  `swaplabel -L <etiqueta> /dev/XXX` usando util-linux
ext2/3/4
  `e2label /dev/XXX <etiqueta>` usando e2fsprogs
btrfs
  `btrfs filesystem label /dev/XXX <etiqueta>` usando btrfs-progs
reiserfs
  `reiserfstune -l <etiqueta> /dev/XXX` usando reiserfsprogs
jfs
  `jfs_tune -L <etiqueta> /dev/XXX` usando jfsutils
xfs
  `xfs_admin -L <etiqueta> /dev/XXX` usando xfsprogs
fat/vfat
  `dosfslabel /dev/XXX <etiqueta>` usando dosfstools
fat/vfat
  `mlabel -i /dev/XXX ::<etiqueta>` usando mtools
ntfs
  `ntfslabel /dev/XXX <etiqueta>` usando ntfs-3g

Nota:

- El cambio de etiqueta de un sistema de archivos de la partición raíz tiene que ser hecho desde una distribución GNU/Linux «live», ya que dicha partición necesita ser desmontada primero.
- Las etiquetas tienen que ser inequívocas (sin ambigüedades) para evitar posibles conflictos.
- Las etiquetas pueden tener una longitud de hasta 16 caracteres.

### 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, `mkfs.*`) 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 y NTFS (fat y etiqueta windows del ejemplo de abajo) no son compatibles con UUID, pero todavía se enumeran en `/dev/disk/by-uuid` 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

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 crypttab). También, cada vez que una partición se redimensiona o reformatea, se genera un nuevo UUID y las configuraciones tienen que volver a ajustarse (manualmente).

Sugerencia: En caso de que su partición de intercambio no tenga un UUID asignado, tendrá que restablecer la partición de swap usando la utilidad mkswap.

### by-id y by-path

The factual accuracy of this article or section is disputed.

Reason: Elements provided in the Talk page (since 2011) seems to clearly indicate that `by-id` and `by-path` are valid ways to state persistent device names. Were they not, this section should be marked for deletion so as to not bring up confusion in this page dedicated to persistent device naming. (Discuss in Talk:Persistent block device naming (Español)#by-path and by-id unsuitable?)

`by-id` crea un nombre único en función del número de serie del hardware, `by-path` 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, `-ide-` para `by-path`, y `-ata-` para `by-id`) y, por lo tanto, no son adecuados para la solución de los problemas mencionados al comienzo de este artículo. Estos problemas no son objeto de discusión aquí.

### by-partlabel

Nota: Este método solo se refiere a los discos con tabla de particiones GUID (GPT).

Las etiquetas de las particiones se pueden definir en la cabecera de la entrada de la partición en discos GPT.

Véase también Wikipedia:GUID Partition Table#Partition entries.

Este método es muy similar al de las etiquetas de los sistemas de archivos, excepto en que el directorio dinámico es `/dev/disk/by-partlabel`.

    ls -l /dev/disk/by-partlabel/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 EFI\x20SYSTEM\x20PARTITION -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 GNU\x2fLINUX -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 HOME -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 SWAP -> ../../sda4

Nota:

- Las etiquetas de las particiones GPT también tienen que ser diferentes para evitar conflictos. Para cambiar la etiqueta de una partición, puede utilizar `gdisk` o la versión basada en ncurse `cgdisk`. Ambas utilidades están disponibles en el paquete gptfdisk. Vea Partitioning (Español)#Herramientas de particionado.
- De acuerdo con la especificación, las etiquetas de las particiones GPT pueden tener hasta 72 caracteres de longitud.

### by-partuuid

Nota: Este método solo se refiere a los discos con tabla de particiones GUID (GPT).

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.

Véase también Wikipedia:GUID Partition Table#Partition entries.

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 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

### Nombres estáticos de los dispositivos con udev

Véase Udev (Español)#Configurar nombres estáticos para los dispositivos.

## Usar 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)#UUID

### Gestores de arranque

Para utilizar nombres permanentes en su gestor de arranque, deben cumplirse los siguientes requisitos:

- estar utilizando mkinitcpio para generar la imagen de disco RAM inicial;
- tener el hook udev activado en el archivo `/etc/mkinitcpio.conf`.

En el ejemplo anterior, `/dev/sda1` es la partición raíz. En el archivo `grub.cfg` de GRUB (Español), la línea linux se parecerá a esto:

    linux /boot/vmlinuz-linux root=/dev/sda1 rw quiet

Dependiendo de qué esquema de nombres prefiera, cambie a uno de los siguientes:

    linux /boot/vmlinuz-linux root=/dev/disk/by-label/root_myhost rw quiet

o:

    linux /boot/vmlinuz-linux root=UUID=2d781b26-0285-421a-b9d0-d4a0d3b55680 rw quiet

Si está usando LILO (Español), entonces no intente esto con la opción de configuración `root=...`; no va a funcionar. Utilice `append="root=..."` o `addappend="root=..."` en su lugar. Lea la página de manual de LILO para más información sobre `append` y `addappend`.

Hay una forma alternativa de utilizar la etiqueta incrustada en el sistema de archivos. Por ejemplo, si (como el anterior) el sistema de archivos en `/dev/sda1` se etiqueta `root_myhost`, daría como resultado esta línea en GRUB:

    linux /boot/vmlinuz-linux root=LABEL=root_myhost rw quiet

Categories:

- Boot process (Español)
- File systems (Español)
- Hardware detection and troubleshooting (Español)

Hidden categories:

- Pages with broken section links
- Pages or sections flagged with Template:Accuracy