Como crear una unidad de montaje automático con Systemd en Debian 12

mount-systemd

¿Que es una unidad de montaje automático en Systemd?

Una unidad de montaje de montaje de systemd es un pequeño servicio que se encarga de montar automáticamente un sistema de archivos cuando iniciamos el sistema operativo.

Requisitos

  • Sistema Debian 12 actualizado.
  • Privilegios de root o sudo.
  • Acceso a internet.

Escenario

La unidad de montaje la crearemos en una máquina virtual con Debian 12, la cual tiene 2 discos duros, uno de 9GB (sistema operativo) y otro de 1GB (disco sin usar).

root@mount-systemd:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0     11:0    1  738M  0 rom
vda    254:0    0    9G  0 disk
├─vda1 254:1    0    8G  0 part /
├─vda2 254:2    0    1K  0 part
└─vda5 254:5    0  975M  0 part [SWAP]
vdb    254:16   0    1G  0 disk
└─vdb1 254:17   0 1022M  0 part

Vamos a crear una unidad de montaje para que monte automáticamente el disco de 1GB en la ruta ‘/mnt/vdb1’ cuando iniciemos el sistema operativo.

Creación de la unidad de montaje

Para crear la unidad de montaje, vamos a crear un archivo con extensión ‘.mount’ en el directorio ‘/etc/systemd/system/’.

Nota: El nombre del archivo de la unidad de montaje es muy importante ya que debe tener el mismo nombre que el punto de montaje o dará error.

Voy a poner algunos ejemplos de se nombraría el archivo dependiendo del punto de montaje.

Posible directorio de montaje nombre del archivo de la unidad
/mnt/vdb1 mnt-vdb1.mount
/mnt/smb/usuario mnt-smb-usuario.mount
/mnt/proxmox/backup/vm mnt-proxmox-backup-vm.mount
/home home.mount
/var/logs var-logs.mount

Es bastante sencillo, solo hay que poner el nombre del punto de montaje y añadirle la extensión ‘.mount’. Pero si es la primera vez que creas una unidad de montaje puede resultar un poco confuso.

Ahora continuamos con la creación de la unidad de montaje.

root@mount-systemd:~# nano /etc/systemd/system/mnt-vdb1.mount
[Unit]
Description= Montaje de la partición vdb1 en el directorio /mnt/vdb1
Wants=local-fs.target
After=local-fs.target

[Mount]
What=/dev/vdb1
Where=/mnt/vdb1
Type=ext4

[Install]
WantedBy=multi-user.target
  • Description: Descripción de la unidad de montaje.
  • Wants: Especifica que la unidad de montaje depende de la unidad local-fs.target.
  • After: Especifica que la unidad de montaje se inicia después de la unidad local-fs.target.
  • What: Especifica el dispositivo que se va a montar.
  • Where: Especifica el punto de montaje.
  • Type: Especifica el tipo de sistema de archivos.
  • WantedBy: Especifica que la unidad de montaje se inicia cuando se inicia el sistema operativo.

Guardamos los cambios y salimos del editor de texto.

Reinicimos el demonio de systemd para que reconozca la nueva unidad de montaje.

root@mount-systemd:~# systemctl daemon-reload

Ahora podemos iniciar la unidad de montaje.

root@mount-systemd:~# systemctl start mnt-vdb1.mount

Comprobamos que el servicio se ha iniciado correctamente.

root@mount-systemd:~# systemctl status mnt-vdb1.mount
● mnt-vdb1.mount - Montaje de la partición vdb1 en el directorio /mnt/vdb1
     Loaded: loaded (/proc/self/mountinfo; disabled; preset: enabled)
     Active: active (mounted) since Mon 2023-10-02 12:29:09 CEST; 15min ago
      Where: /mnt/vdb1
       What: /dev/vdb1
      Tasks: 0 (limit: 2306)
     Memory: 28.0K
        CPU: 2ms
     CGroup: /system.slice/mnt-vdb1.mount

oct 02 12:29:09 mount-systemd systemd[1]: Mounting mnt-vdb1.mount - Montaje de la partición vdb1 en el directorio /mnt/vdb1...
oct 02 12:29:09 mount-systemd systemd[1]: Mounted mnt-vdb1.mount - Montaje de la partición vdb1 en el directorio /mnt/vdb1.

Comprobamos que el disco se ha montado correctamente.

root@mount-systemd:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0     11:0    1  738M  0 rom
vda    254:0    0    9G  0 disk
├─vda1 254:1    0    8G  0 part /
├─vda2 254:2    0    1K  0 part
└─vda5 254:5    0  975M  0 part [SWAP]
vdb    254:16   0    1G  0 disk
└─vdb1 254:17   0 1022M  0 part /mnt/vdb1

Como podemos ver, el disco se ha montado correctamente en el directorio ‘/mnt/vdb1’.

Ahora para que la unidad se monte automáticamente cuando iniciemos el sistema operativo, tenemos que habilitar la unidad de montaje.

root@mount-systemd:~# systemctl enable mnt-vdb1.mount
Created symlink /etc/systemd/system/multi-user.target.wants/mnt-vdb1.mount → /etc/systemd/system/mnt-vdb1.mount.

Para comprobar que la unidad se monta automáticamente, reiniciamos la máquina.

root@mount-systemd:~# reboot

Comprobamos que el disco se ha montado automáticamente.

root@mount-systemd:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0     11:0    1  738M  0 rom
vda    254:0    0    9G  0 disk
├─vda1 254:1    0    8G  0 part /
├─vda2 254:2    0    1K  0 part
└─vda5 254:5    0  975M  0 part [SWAP]
vdb    254:16   0    1G  0 disk
└─vdb1 254:17   0 1022M  0 part /mnt/vdb1

Como podemos ver, el disco se ha montado automáticamente en el directorio ‘/mnt/vdb1’ cuando iniciamos el sistema operativo.

Con esto ya hemos creado una unidad de montaje automático con Systemd en Debian 12.