Diferencia entre revisiones de «Montaje Sistemas de Archivos»
(Sin diferencias)
|
Revisión actual del 13:25 22 nov 2018
Montaje de Sistemas de Archivos
El siguiente paso en el procedimiento de puesta en marcha de un SA en un sistema GNU/Linux es montar el SA en una ruta o path.
A diferencia de Windows, Linux no utiliza el concepto de “letra de unidad”, todo SA se asocia en el momento de su montaje a una ruta dada en el SA.
Por ejemplo, supongamos el dispositivo /dev/loop0p2 en el que se ha creado un SA de tipo NTFS, podemos montar ese SA asociado a una ruta de directorio, por ejemplo /mnt/ntfs. A esta ruta en la que se monta el SA se le denomina punto de montaje. Una vez montado el SA en esa ruta podremos acceder a los contenidos del mismo trabajando dentro de la ruta del punto de montaje
Montaje manual con el comando mount
Vamos a ejecutar el procedimiento ilustrado, es decir, montar la partición /dev/loop0p2, en la que tenemos creado un SA NTFS, en la ruta /mnt/ntfs.
En primer lugar debemos crear el directorio del punto de montaje
mkdir -p /mnt/ntfs
una vez creado el punto de montaje ya estamos en disposición de “montar” el SA en esa ruta, para ello:
mount /dev/loop0p2 /mnt/ntfs
podemos comprobar como efectivamente es ha efectuado la operación de montaje ejecutando
mount -l | grep /mnt/ntfs
o bien:
lsblk
que muestra los dispositivos de bloque y de ser el caso sus puntos de montaje
ahora estamos en disposición de utilizar el SA NTFS, accesible a través del punto de montaje
cd /mnt/ntfs
crearemos un archivo dentro del SA
dd if=/dev/zero of=./archivo1M bs=1M count=1
vemos como efectivamente se ha creado el archivo:
ls -lh .
debería mostrar una línea para el archivo archivo1M
Desmontar un SA manualmente
Del mismo modo que podemos montar, es decir asociar un SA a una ruta, podemos desmontar, es decir desasociar el acceso al SA a través del punto de montaje. Para ello usaremos el comando umount
NOTA: Para poder desmontar un SA tenemos que estar fuera de la ruta del punto de montaje desde la terminal desde la que se lanza el comando.
Por tanto ejecutamos
cd ..
con esto salimos de la ruta del punto de montaje al directorio padre, en este caso a /mnt
umount /mnt/ntfs
si después de ejecutar el comando anterior ejecutamos de nuevo el comando
ls -lh /mnt/ntfs
veremos como ahora no aparece ninguna línea para el archivo archivo1M creado anteriormente en el SA NTFS. Esto se debe a que ahora el SA no está montado en la ruta indicada, por tanto sus contenidos no son accesibles. Una vez desmontado el SA en la ruta /mnt/ntfs, el contenido de ese directorio hace referencia al SA del sistema principal, es decir al root filesystem, en lugar de al SA NTFS.
Para poder acceder de nuevo a archivo1M tendríamos que volver a montar el SA en una ruta o punto de montaje. Vamos a hacerlo una vez más pero en este caso en una ruta de montaje diferente, de este modo veremos como podremos elegir libremente la ruta del punto de montaje. Ejecutamos:
mkdir /mnt/ntfs2
ahora motamos el SA en esa ruta:
mount /dev/loop0p2 /mnt/ntfs2
listamos el contenido del directorio
ls -lh /mnt/ntfs2
y veremos otra vez el archivo1M accesible a través del nuevo punto de montaje.
Montaje automático en el archivo /etc/fstab
El archivo /etc/fstab se ha venido utilizando tradicionalmente para montar de modo automático SA durante el arranque del sistema. De este modo disponemos un mecanismo simple y bien definido para gestionar este importante aspecto de administración del sistema.
Cada SA que se montará en el arranque tendrá asociada una línea en el archivo /etc/fstab, el cual podemos editar con cualquier editor de textos (como vi o nano), siempre como usuario root.
La entrada que define el montaje de un SA tiene la siguiente sintaxis
<file system><mount point> <type> <options><dump><pass>
(dispositivo)(punto de montaje)(tipo SA)(opciones)(copia)(check)
Los campos file system, mount point y type son autoexplicativas. Los otros:
- options: indica las opciones pasadas al comando mount, por tanto son opciones dependientes del tipo de SA a montar
- dump: habilita o no la utilidad dump (volcado o copia) para ese SA. Si está a 0 está deshabilitado
- pass: indica el número de orden en el cual la utilidad fcsk ejecutará un chequeo para ese SA. Si está a 0 indica deshabilitado
Sería posible definir un punto de montaje para nuestro SA en el dispositivo /dev/loop0p1, correspondiente al SA ext4 que se montara automáticamente en el arranque en el directorio /mnt/ext4. Para ello bastaría con añadir la siguiente línea al archivo /etc/fstab:
/dev/loop0p1 /mnt/ext4 ext4 errors=remount,rw 0 1
Sin embargo no vamos a utilizar este procedimiento por una cuestión técnica: El dispositivo /dev/loop0 es un dispositivo virtual que se crea como dispositivo de bloques sobre un archivo. Sin embargo el kernel durante el arranque no lo identifica como tal, pues el dispositivo no existe realmente sino que se crea con el comando losetup. Por este motivo al arrancar el sistema y procesar la entrada de /etc/fstab anterior, el comando mount no podrá interpretar el dispositivo indicado, ya que éste no existe durante el arranque. Es importante notar que si se tratara de un SA dentro de un dispositivo físico que el kernel pudiese identificar, como por ejemplo una partición de disco /dev/sdXX, el mecanismo de montaje anterior sería perfectamente válido.
A modo de ejemplo para montar el SA ext4 disponible en el dispositivo /dev/sdc1, añadiríamos a /etc/fstab
/dev/sdc1 /mnt/ext4 ext4 errors=remount,rw 0 0
Procedimiento de montaje automático utilizando systemd
Por tanto para poder montar el SA de nuestro dispositivo virtual, primero tendríamos que crear ese dispositivo y luego montarlo. Vamos a hacer el montaje utilizando el mecanismo rc-local que utiliza los comando definidos en el archivo /etc/rc.local, que se ejecuta siempre durante el arranque del sistema. Existe un servicio de nombre rc-local.service, gestionado por systemd y deshabilitado por defecto, que permite activar la ejecución del archivo /etc/rc.local en cada arranque del sistema. Usaremos este método para poder montar automáticamente nuestro SA. Para ello ejecutamos los siguientes pasos:
Creamos el archivo /etc/rc.local
Si no existe lo creamos con un editor de textos y añadimos las siguientes líneas:
#!/bin/bash $(which losetup) -P /dev/loop0 /root/fsraw exit 0
Las líneas anteriores ejecutan el comando que permite crear el dispositivo /dev/loop0 asociado al archivo.
Debemos activar el bit de ejecución del archivo, para ello:
chmod +x /etc/rc.local
Activación del service rc-local
El servicio rc-local de systemd viene deshabilitado por defecto. El motivo es que deberemos definir previamente a su activación un Unit file. Crearemos en primer lugar el Unit file en el archivo /etc/systemd/system/rc-local.service (creándolo si no existe), al que añadiremos lo siguiente:
[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install]</div> WantedBy=multi-user.target
A continuación activamos el servicio rc-local para que se ejecute durante el arranque. Esto causará que se ejecute el contenido del archivo /etc/rc.local durante el arranque del sistema:
systemctl enable rc-local.service
Creación y activación de punto de montaje para el SA con systemd
El siguiente paso es crear un punto de montaje con systemd que monte el SA del dispositivo virtual /dev/loop0p1 en la ruta de montaje /mnt/ext4. Para ello creamos el Unit file en la ruta /etc/systemd/system/mnt-ext4.mount (es necesario que el nombre del Unit file, mnt-ext4 en este caso, refleje la ruta del punto de montaje, /mnt/ext4) al que añadiremos lo siguiente:
[Unit] Description=Monta SA ext4 After=rc-local.service [Mount] What=/dev/loop0p1 Where=/mnt/ext4 Type=ext4 Options=defaults [Install] WantedBy=multi-user.target
Un parámetro importante es la directiva After en la sección Unit. Ésta indica que se invocará al montaje del SA después de la ejecución del servicio rc-local.service, lo cual garantizará que el dispositivo estará listo al momento del montaje.
Por último activamos el Unit file para el punto de montaje:
systemctl enable mnt-ext4.mount
Ahora podemos reiniciar y comprobar como efectivamente al arrancar disponemos del punto de montaje en cuestión
reboot
lsblk
mostrará:
root@debian:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 9,8G 0 loop ├─loop0p1 259:0 0 5G 0 loop /mnt/ext4 └─loop0p2 259:1 0 4,8G 0 loop
JavierFP 18:31 20 nov 2018 (CET)