/etc/fstab
En la mayoría de sistemas GNU/Linux se usan varias particiones además de la partición que se montará en el directorio raíz y que son necesarias que se monten en el arranque. Estas particiones se especifican en el fichero /etc/fstab que contiene las informaciones que conciernen al montaje de las particiones que hay en el sistema, tanto las que se montarán en el arranque, como las que se montarán en otro momento de forma simplificada a petición del root u otro usuario.
Este archivo es leído por la orden mount para determinar qué opciones utilizar al montar un dispositivo específico o una partición. Las columnas se separan por un espacio o un carácter de tabulación. (En los ejemplos se ha formateado la salida para que se vea bien el contenido del fichero)
$ cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sda1 / ext4 errors=remount-ro 0 1
/dev/sda2 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
La primera línea del fichero empieza con el signo #, lo cual indica que es una línea de comentario (algo habitual en los ficheros de configuración) y en este caso, la línea sirve como cabecera de las distintas columnas que definen el contenido del fichero.
Cada una de estas columnas tiene el siguiente significado:
- file system: Partición cuyo montaje se define en la línea.
- mount point: Directorio de montaje de la partición (punto de montaje).
- type: Tipo de sistema de ficheros que contiene la partición. Si se pone auto, permitimos a la orden mount determinar qué tipo de sistema de ficheros utiliza la partición. Esta opción es útil para proporcionar soporte a unidades ópticas (CD/DVD).
- options: Opciones de montaje de la partición.
- dump: Utilizado por el programa dump (volcado) para decidir cuándo hacer una copia de seguridad. El comando dump comprueba la entrada en el archivo /etc/fstab y el número de la misma le indica si un sistema de archivos debe ser respaldado o no. La entradas posibles son 0 y 1. Si es 0, dump ignorará el sistema de archivos, mientras que si el valor es 1, dump hará una copia de seguridad. Lo normal es no tener dump instalado, por lo que el valor 0 será lo habitual.
- pass: Utilizado por la orden fsck para decidir el orden en el que los sistemas de archivos serán comprobados. Las entradas posibles son 0, 1 y 2. El sistema de archivos raíz debe tener la prioridad más alta, por lo que se le pondrá un 1, y todos los demás sistemas de archivos que queramos que se comprueben deben tener un 2. La utilidad fsck no comprobará los sistemas de ficheros con valor 0 en pass. Las particiones situadas sobre un mismo disco serán verificadas de manera secuencial, pero si están situadas en discos diferentes el chequeo se hará en paralelo.
Opciones de montaje hay muchas, en la página del manual del comando mount podemos verlas todas. Algunas de las más importantes son las siguientes:
- auto - El sistema de archivos será montado automáticamente durante el arranque, o cuando la orden mount -a se invoque.
- noauto - El sistema de archivos no será montado automáticamente, solo cuando se le ordene manualmente.
- exec - Permite la ejecución de binarios residentes en el sistema de archivos.
- noexec - No permite la ejecución de binarios que se encuentren en el sistema de archivos.
- ro - Monta el sistema de archivos en modo solo lectura.
- rw - Monta el sistema de archivos en modo lectura-escritura.
- user - Permite a cualquier usuario montar el sistema de archivos. Esta opción incluye noexec, nosuid, nodev, a menos que se indique lo contrario.
- users - Permite montar el sistema de archivos a cualquier usuario perteneciente al grupo users.
- nouser - Solo el usuario root puede montar el sistema de archivos.
- suid - Permite las operaciones con los bits suid y sgid. Se utiliza principalmente para permitir a los usuarios comunes ejecutar binarios con privilegios concedidos temporalmente con el fin de realizar una tarea específica.
- nosuid - Bloquea el funcionamiento de los bits suid y sgid.
- noatime - No actualiza el nodo-i de los ficheros con el tiempo de acceso. Puede aumentar las prestaciones del sistema al acceder menos al disco.
- nodiratime - No actualiza el nodo-i de los directorios con el tiempo de acceso. Puede aumentar las prestaciones del sistema al acceder menos al disco.
- defaults - Asigna las opciones de montaje predeterminadas que serán utilizadas para el sistema de archivos. Las opciones predeterminadas son: rw, suid, dev, exec, auto, nouser, async.
Hay tres maneras de nombrar una partición o un dispositivo de almacenamiento en /etc/fstab:
- Por el nombre descriptivo del kernel. Es el que se utilizó en el ejemplo anterior.
- Por la etiqueta.
- Por el UUID.
La ventaja de usar etiquetas o UUID, es que no dependen del orden en el que las unidades son (físicamente) conectadas a la máquina. Esto es útil si se cambia el orden de los dispositivos de almacenamiento en la BIOS, o si se cambia el cableado de conexión de los dispositivos de almacenamiento (Persistent block device naming).
Para mostrar información básica acerca de las particiones se utiliza el comando lsblk:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 14G 0 part /
└─sda2 8:2 0 1G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
sdb 8:16 1 7,4G 0 disk
├─sdb1 8:17 1 3,7G 0 part /media/5C06-DD25
└─sdb2 8:18 1 3,7G 0 part /media/1e08d06c-f028-4f3b-af85-5a7c67991fd4
# lsblk -m
NAME SIZE OWNER GROUP MODE
sda 15G root disk brw-rw---T
├─sda1 14G root disk brw-rw---T
└─sda2 1G root disk brw-rw---T
sr0 1024M root cdrom brw-rw---T
sdb 7,4G root floppy brw-rw---T
├─sdb1 3,7G root floppy brw-rw---T
└─sdb2 3,7G root floppy brw-rw---T
# lsblk -f
NAME FSTYPE LABEL MOUNTPOINT
sda
├─sda1 ext4 /
└─sda2 swap [SWAP]
sr0
sdb
├─sdb1 vfat /media/5C06-DD25
└─sdb2 ext4 /media/1e08d06c-f028-4f3b-af85-5a7c67991fd4
# lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16106127360 0 disk
├─sda1 8:1 0 14998831104 0 part /
└─sda2 8:2 0 1105199104 0 part [SWAP]
sr0 11:0 1 1073741312 0 rom
sdb 8:16 1 7933526016 0 disk
├─sdb1 8:17 1 3997490176 0 part /media/5C06-DD25
└─sdb2 8:18 1 3936004096 0 part /media/1e08d06c-f028-4f3b-af85-5a7c67991fd4
En un vídeo anterior ejecutamos el comando mount para ver qué nombre le había asignado el sistema a un lápiz USB; lo mismo podemos conseguir con lsblk.
Casi todos los tipos de sistemas de ficheros pueden tener una etiqueta. Todas las particiones que tengan una etiqueta están listadas en el directorio /dev/disk/by-label. Este directorio se crea y se destruye dinámicamente, dependiendo de si hay particiones con etiquetas en el sistema.
En el ejemplo siguiente se muestra un sistema con dos particiones a las que se les ha puesto etiquetas (Intercambio y raiz):
$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 oct 8 10:32 Intercambio -> ../../sda2
lrwxrwxrwx 1 root root 10 oct 8 10:32 raiz -> ../../sda1
También se puede descubrir la etiqueta de una partición con el comando lsblk -f, por ejemplo:
# lsblk -f
NAME FSTYPE LABEL MOUNTPOINT
sr0
sda
├─sda1 ext4 /
└─sda2 swap [SWAP]
sdb
└─sdb1 vfat L4-16GB /media/usb0
Las etiquetas de los sistemas de ficheros pueden cambiarse, pero hay que asegurarse de que no se repitan. Los comandos para poner las etiquetas según los tipos de sistemas de ficheros son:
Sistema de ficheros |
Comando | Paquete |
swap | swaplabel -L etiqueta /dev/XXX | util-linux |
ext2/3/4 | e2label /dev/XXX etiqueta | e2fsprogs |
fat/vfat | dosfslabel /dev/XXX etiqueta | dosfstools |
ntfs | ntfslabel /dev/XXX etiqueta | ntfs-3g |
También puede cambiarse la etiqueta con gparted, pero la partición tiene que estar desmontada.
Las etiquetas pueden tener un máximo de 16 caracteres.
Si le pusiéramos la etiqueta Intercambio a la partición swap (/dev/sda2), en el fichero /etc/fstab anterior podríamos utilizarla así:
$ cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sda1 / ext4 errors=remount-ro 0 1
LABEL=Intercambio none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Todas las particiones tienen un UUID único (no hay que asegurarse de que sean únicos como ocurre con las etiquetas). Los UUID son generados por las utilidades de creación del sistema de ficheros (por ejemplo, mkfs.ext3) al formatear una partición. Podemos ver los UUID de las particiones que hay en nuestro sistema mediante el directorio /dev/disk/by-uuid:
$ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 ago 28 14:00 104ab5f2-859a-47d3-9bdc-e10234380668 -> ../../sda2
lrwxrwxrwx 1 root root 10 ago 28 12:21 1e08d06c-f028-4f3b-af85-5a7c67991fd4 -> ../../sdb2
lrwxrwxrwx 1 root root 10 ago 28 12:21 5C06-DD25 -> ../../sdb1
lrwxrwxrwx 1 root root 10 ago 28 13:55 d3b43aab-0c44-4e05-a771-a3dfb3398ce1 -> ../../sda1
O bien:
# lsblk -o NAME,UUID
NAME UUID
sda
├─sda1 d3b43aab-0c44-4e05-a771-a3dfb3398ce1
└─sda2 104ab5f2-859a-47d3-9bdc-e10234380668
sr0
sdb
├─sdb1 5C06-DD25
└─sdb2 1e08d06c-f028-4f3b-af85-5a7c67991fd4
Si quisiéramos hacer referencia a la partición raiz (/dev/sda1) en /etc/fstab con el UUID, el fichero nos quedaría así:
$ cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=d3b43aab-0c44-4e05-a771-a3dfb3398ce1
/ ext4 errors=remount-ro 0 1
LABEL=Intercambio none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
La ventaja de usar los UUID es que es menos probable que se produzcan conflictos de nombres que con las etiquetas. La desventaja es que los UUID hacen que las líneas sean largas y difíciles de leer y rompen el formato en muchos archivos de configuración. También, cada vez que se cambia el tamaño de una partición o se formatea, se genera un nuevo UUID y hay que ajustar manualmente las configuraciones.
Si algún punto de montaje contiene espacios en el nombre, usaremos para emular el espacio la barra invertida (\) seguido por el código de tres dígitos 040:
UUID=47FA-4071 /home/usuaro/Mis\040fotos vfat defaults,noatime 0 0
Por otro lado, es interesante repasar las opciones de la siguiente línea del fichero /etc/fstab que estamos utilizando como ejemplo:
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
El dispositivo /dev/sr0 se corresponde con la unidad de DVD (la primera, y única en este caso), y como es normal, el usuario debería poder utilizarla para ver sus DVDs; precisamente ese es el motivo de la opción user para que cualquier usuario pueda montar la unidad y noauto para que no se monte automáticamente al arrancar el sistema, solo cuando el usuario lo solicite.
Es importante observar cómo se han especificado dos sistemas de ficheros separados por una coma (udf,iso9660); esto quiere decir que será la orden mount la que irá probando secuencialmente cuál es el sistema de ficheros del DVD en concreto.
Por último, en el primero de los párrafos de este apartado se habló sucintamente de que las líneas del fichero /etc/fstab pueden utilizarse para montar particiones de forma simplificada; esto quiere decir que podemos usar la orden mount con menos datos de los normales, por ejemplo, simplemente especificando el punto de montaje y, el resto de los datos (tipo de sistema de ficheros y dispositivo) se cogerán de la línea del fichero /etc/fstab donde aparece dicho punto de montaje.
Por ejemplo, para montar la unidad de DVD ejecutaríamos:
$ mount -t iso9660 /dev/sr0 /media/cdrom0
Pero al tener este dispositivo una línea de montaje en /etc/fstab podemos simplificar la orden mount, poniendo menos datos pues el resto se cogerán de dicha línea. Así, las dos ordenes siguientes harían lo mismo que la anterior:
$ mount /dev/sr0
$ mount /media/cdrom0
Si en /etc/fstab se utiliza una etiqueta para identificar a un dispositivo, se puede usar la opción -L para montarlo:
$ mount -L etiqueta
Y si se usa UUID la opción -U:
$ mount -U uuid
NOTA:
Otro comando que podemos usar para conocer la etiqueta o el UUID de un disco es blkid:
# blkid
/dev/sda1: LABEL="Reservado para el sistema" UUID="02F4249BF42492C9" TYPE="ntfs" PARTUUID="fe337e85-01"
/dev/sda2: UUID="AE2635D226359BF1" TYPE="ntfs" PARTUUID="fe337e85-02"
/dev/sda3: UUID="f99eddd1-fd9e-4323-b4c4-8321d9e3a1d2" TYPE="ext4" PARTUUID="fe337e85-03"
/dev/sda4: UUID="9df93d11-625f-42c5-b3e5-f5b86dceb21c" TYPE="swap" PARTUUID="fe337e85-04"
/dev/sdb1: UUID="ACEE-7637" TYPE="vfat" PARTUUID="29fe0864-01"
Licencia: licencia de software libre GPL