Montaje Sistemas de Archivos

De Manuais Informática - IES San Clemente.
Revisión del 13:25 22 nov 2018 de Javierfp (discusión | contribs.) (→‎Creamos el archivo /etc/rc.local)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

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


Aprende.png
NOTA...

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

Volver

JavierFP 18:31 20 nov 2018 (CET)