Domingo Noviembre 27 , 2022
Text Size
   

El apasionante mundo del FSTAB

manuales - Linux

En linux se llama fstab, en solaris vfstab... pero en resumidas cuentas es siempre lo mismo.

Aprende a editarlo, descubre sus opciones, adéntrate en sus misterios, y algún día dominarás el mundo... Incluso puede que alguna chica se fije en tí.

Ni de coña xD
El fstab es un fichero de configuración de Unix - y sistemas operativos basados en Unix - que se encuentra en el directorio /etc En dicho fichero es donde se le indica al sistema cómo montar cada dispositivo, dónde, y qué configuración utilizar. fstab son las siglas de filesystem table, así que cuando hablamos de dispositivos está claro que nos referimos a sistemas de ficheros.

A partir de ahora me voy a referir siempre a Linux aunque esto es perfectamente aplicable a Unix ¿ok?

Para trabajar con fstab vamos a usar una potentísima herramienta que no puede faltar nunca en nuestro kit de supervivencia linuxero: el editor VI, porque somos los hijos de la muerte y la consola es nuestro campo de batalla. Y también porque dicho editor se encuentra en cualquier distribución Linux y no necesitamos nada más, así que el que no sepa usar VI que vaya aprendiendo... al final, tarde o temprano, tendrá que vérselas con él.

El fstab se compone de seis columnas separadas por espacios o tabuladores. No hace falta que cada opción vaya rigurosamente debajo del título de la columna correspondiente, de echo es frecuente que este fichero acabe un poco desordenado, así que no hay que volverse loco para cuadrarlo.

Esto es un ejemplo de fstab:
# /etc/fstab: static file system information.
#
#                            
proc                     /proc                proc                defaults                    0           0
/dev/map/root      /                       ext3                errors=remount-ro   0            1
/dev/hda1            /boot                 ext2                defaults                   0            2
/dev/map/home    /home               reiserfs           defaults                    0           2
/dev/map/var       /var                  reiserfs           defaults                    0           2
/dev/map/swap      none                swap               sw                           0           0
/dev/hdc              /media/cdrom0   udf,iso9660     user,noauto              0           0
/dev/fd0              /media/floppy0    auto               rw,user,noauto          0           0

Voy a explicar lo que significa cada columna:

: es el dispositivo, lógicamente hablando, es decir, el fichero dentro de /dev que hace referencia al filesystem que queramos montar.
: es el punto de montaje, el lugar donde lo vamos a montar, ni que decir tiene que el directorio tiene que existir y que la ruta que se le indique debe ser completa.
: es el tipo de sistema de ficheros, que como sabéis, hay para dar y tomar... luego hablaremos de ellos.
: los parámetros que se utilizarán para montar el dispositivo, separados por comas. también hay para dar y tomar.
: en caso de que se vayan a hacer backups del sistema de archivos con dump -cosa que dudo- el valor que tomará esta columna es uno, en caso contrario será cero. lo normal es que esté a cero.
: durante el arranque de nuestro sistema se ejecuta un chequeo de disco (fsck) en busca de errores, aquí se le indica qué filesystems queremos que se chequeen, cuales no, y en qué orden.
  • 0 : el dispositivo no se revisa
  • 1 : es el primer dispositivo en revisarse - en sistemas Linux SIEMPRE ha de ser la partición raíz, y ninguna otra, la que tome este valor. advertidos estáis, luego no vengáis llorando.
  • 2 : se revisan después de 1, si queremos que nuestro filesystem se revise deberemos ponerle un 2.

Vistazo rápido a los dispositivos:

Para saber qué dispositivos están activos (conectados, que no necesariamente montados) en el sistema, usamos el comando fdisk -l : podremos ver cosas como /dev/hda1, /dev/hda2, /dev/sda1, /dev/sdb1 ... etc...

También volúmenes lógicos (LVM): /dev/grupo/volumen que os darán mensajes del tipo: Disk /dev/dm-0 doesn't contain a valid partition table y cosas así.

Los dispositivos IDE suelen ser del tipo /dev/hdXY, y los dispositivos SCSI, SATA, USB son del tipo /dev/sdXY, donde la X (a, b, c...) representa la cantidad de dispositivos y el lugar que ocupa entre ellos, y la Y la partición (1, 2, 3...) dentro de dicho dispositivo.

Es perfectamente normal.

Vistazo rápido a los tipos de filesystems:

ext2, ext3, reiserfs, xfs, jfs, vfat o msdos (para particiones tipo fat16, fat32), ntfs-3g (si estáis usando este módulo para leer y escribir en particiones ntfs), swap (solo se usa parta particiones swap), udf,iso9660 (solo se usa para cd-rom), auto (para que lo detecte automáticamente)

Ponéis el que corresponda.

Opciones (to lo gordo):

  • defaults : utiliza las opciones por defecto: rw,suid,dev,exec,auto,nouser,async.
  • auto / noauto : el dispositivo será montado automáticamente durante el arranque. Si no se desea que el dispositivo se monte automáticamente, se deberá sustituir por noauto.
  • dev / nodev : interpretar / no interpretar dispositivos especiales de bloques en el sistema de archivos. no lo vais a usar, y si alguna vez lo usáis, será porque sabéis lo que es.
  • exec / noexec : exec permite ejecutar binarios que están en la partición, mientras que noexec lo impide.
  • ro : montar para sólo lectura.
  • rw : montar el sistema de archivos para lectura/esctritura.
  • sync / async : indica la manera en que se debe realizar la entrada y salida del sistema de archivos: síncrona o asíncrona, por defecto es siempre asíncrona, no escribe en los dispositivos cuando se lo indicas sino cuando le viene en gana, esto proporciona mayor rendimiento. en los diskettes suele ser síncrona... y todos ¿o casi todos? recordamos lo lentos que son...
  • suid / nosuid : permite / bloquea la operación sobre los bits suid y sgid.
  • user / nouser : permite a cualquier usuario montar el sistema de archivos. user implica directamente las opciones noexec, nosuid y nodev a menos que se especifiquen otras. Si se utiliza la opción nouser, solo root podrá montar el sistema de archivos.

Hay más opciones en función del sistema de archivos que se esté montando, tenéis unas cuantas en la wikipedia, y como siempre toda la información se encuentra en el man sobre mount, pero si nos fijamos con esto que acabamos de ver no nos costaría averiguar qué significa la opción de mi partición /root : errors=remount-ro (en caso de error montar como solo lectura)

Ahora un ejemplo, vamos a montar un pendrive.

Conecto el pendrive a mi equipo y al hacer fdisk -l, entre todos los dispositivos que se muestran veo lo siguiente:

Device Boot      Start       End      Blocks   Id  System
/dev/sda1               1         122      978894    b  W95 FAT32
Partition 1 has different physical/logical endings:
phys=(1023, 254, 63) logical=(121, 221, 63)


Pues va a ser ese, porque el dispositivo es del tipo /dev/sdXY, el tipo de filesystem es FAT32, y además por el númer de bloques yo calculo que el tamaño de este disco es de 1Gb (como mi pendrive).

Si quisiera montarlo cada vez que lo enchufara tendría que hacer aquello de mount /dev/sda1 /media/usbdisk y soy vago, sería más sencillo si solo tuviera que escribir mount /media/usbdisk así que voy a añadirlo al fstab

¿Cómo? así:

/dev/sda1     /media/usbdisk     msdos    rw,user,noauto     0     0

Mi dispositivo, en /dev/sda1 ahora se montará en /media/usbdisk. el tipo de partición es msdos, y sus opciones son: lectura y escritura, puede ser montado por un usuario (no hace falta ser root) y además no quiero que trate de montarlo cada vez que reinicio, solo cuando yo decida montarlo. por supuesto, como no voy a hacer respaldos con dump le casco un cero, y como tampoco va a estar conectado cuando arranque el sistema no necesito que se le hagan chequeos, también un cero.

¿Cómo nos aseguramos de que funciona? con mount -a

La opción -a de mount carga la configuración de fstab, de manera que no es necesario reiniciar, lo que según fstab deba montarse se montará y lo que no, si está montado, se desmontará.

Ahora ya podemos hacer un mount /media/usbdisk y usar nuestro pendrive. Pero no os olvidéis de desmontarlo cuando acabéis o los datos se os irán a hacer gárgaras muy probablemente (salvo que uséis la opción sync)

Fácil ¿no? :)

Ahora ya podéis añadir vuestros filesystems, particiones, discos usb, etc... al fstab.
Suerte, y recordad:

1.- Si funciona no lo toques
2.- Ten siempre a mano el teléfono del que sabe.

Comentarios  

 
0 # 29-03-2013 02:02
Hola, me ha sido utilísimo tu artículo y te doy las gracias por ello además de felicitarte por escribir tan claro y sencillo.

Sé que el artículo es antiguo, pero igual puedes ayudarme de todos modos:
He compartido un disco duro USB externo con una partición NTFS en red. Aquí tengo un almacén, que uso desde los otros ordenadores.

Pues bien. He metido en el FSTAB local (uso Debian) esta línea de montaje:
# /dev/sdb2
UUID=0BA518A058CEE922 /mnt/2TB ntfs rw,user,auto 0 0
Pero no sé cómo hacer para que el disco pueda desmontarse aún cuando se esté usando en la red. ¿Hay alguna opción que dé preferencia al montaje/desmontaje local sobre el remoto?

Gracias de antemano :)
 
 
0 # Dr. Arroyo 31-03-2013 19:27
hola!!

has probado umount -f /mnt/2TB

Un abrazo!
 
Usar puntuación: / 1
MaloBueno