Pertenece a LPI Topic 203: Filesystem and Devices
/etc/fstab/etc/mtab/proc/mountsmount and umountblkidsyncswaponswapoffEl sistema de archivos (filesystem) sirve para organizar un espacio de almacenamiento bruto.
Para poder utilizar (leer y escribir) ese almacenamiento por parte del sistema operativo, debe estar organizado de cierta manera que el sistema pueda entender.
Aunque normalmente se dice que se va a dar formato a un espacio de almacenamiento, en los entornos Linux se dice que se va a crear un sistema de archivos.
Existen muchos tipos de sistemas de archivos, de los cuales los más comunes en entornos Linux son ext y xfs.
El journal es una memoria caché donde las operaciones de escritura se van almacenando antes de realizarse. Si hay un corte de luz, estas operaciones no se perderían.
| Sistema | Tamaño máx. volumen | Tamaño máx. fichero | Journaling | Fecha límite archivo |
|---|---|---|---|---|
| ext2 | 32 TB | 2 TB | No | 2038 |
| ext3 | Sí | 2038 | ||
| ext4 | 1 EB | 16 TB | Sí | 2514 |
Son sistemas de ficheros que se generan en tiempo de ejecución (solo cuando está corriendo el sistema operativo) y permiten acceder a determinadas partes del sistema. Sobre todo trabajan con el kernel y el hardware.
Al acceder a ellos, aunque estén representados como ficheros y directorios, realmente son instrucciones del kernel y del hardware.
/proc/cpuinfo)cat /sys/block/sda/removable. Es una evolución de proc.
El sistema de archivos virtual proc (o procfs), generalmente montado en el directorio /proc, permite la visualización de los elementos del sistema relacionados con la gestión de procesos por parte del núcleo. Además, proc muestra algunos datos sobre el
hardware del sistema.
Mostrar información sobre la CPU:
cat /proc/cpuinfo
Salida:
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Xeon(R) CPU L5420 @ 2.50GHz stepping : 6 microcode : 0x60f cpu MHz : 2003.000 cache size : 6144 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm pti tpr_shadow vnmi flexpriority vpid dtherm vmx flags : vnmi flexpriority tsc_offset vtpr vapic bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit bogomips : 5018.00 clflush size : 64 cache_alignment : 64 address sizes : 38 bits physical, 48 bits virtual power management: (...)
El sistema de archivos virtual sys (o sysfs), generalmente montado en el directorio /sys, permite visualizar elementos de sistema relacionados con los periféricos.
Visualización de capacidades hotplug de un disco duro (1) o no (0):
cat /sys/block/sda/removable
Salida:
0
Para poder utilizar un sistema de ficheros es preciso montarlo primero. Montar significa conectar físicamente la partición con cierto sistema de ficheros con una ruta del sistema.
Para visualizar los sistemas de archivos ya montados tenemos varias posibilidades:
mount (sin argumentos)/etc/mtab. /proc/mounts# cat /etc/mtab sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 udev /dev devtmpfs rw,nosuid,relatime,size=489392k,nr_inodes=122348,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=101088k,mode=755 0 0 /dev/mapper/debian--10--vg-root / ext4 rw,relatime,errors=remount-ro 0 0 securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0 tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0 cgroup2 /sys/fs/cgroup/unified cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0 cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,name=systemd 0 0 pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0 bpf /sys/fs/bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700 0 0 cgroup /sys/fs/cgroup/rdma cgroup rw,nosuid,nodev,noexec,relatime,rdma 0 0 cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0 cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0 cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0 cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0 cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0 cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0 cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0 cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0 cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0 systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9651 0 0 mqueue /dev/mqueue mqueue rw,relatime 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 hugetlbfs /dev/hugepages hugetlbfs rw,relatime,pagesize=2M 0 0 sunrpc /run/rpc_pipefs rpc_pipefs rw,relatime 0 0 /vagrant /vagrant vboxsf rw,nodev,relatime,iocharset=utf8,uid=1000,gid=1000 0 0 /dev/sda1 /boot ext2 rw,relatime 0 0 vagrant /vagrant vboxsf rw,nodev,relatime,iocharset=utf8,uid=1000,gid=1000 0 0 tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=101084k,mode=700,uid=1000,gid=1000 0 0
Para montar un sistemas de archivos también usamos el comando mount:
mount [-t fstype ] [-o options ] [ device ] [mountpoint ]
Ejemplo:
mount –t ext4 –o rw,sync /dev/sdb1 /mnt
Opciones (-o) principales del comando mount:
defaults: Opciones por defecto del sistema de ficheros (normalmente rw y async).loop: Monta un archivo como partición.auto / noauto: Monta o desmonta al arranque. Solo tiene sentido en el /etc/fstab.user / nouser: Permite o deshabilita que un usuario pueda montar esa partición.sync: Realiza escritura síncrona sin pasar por caché (no utilizaría el journal).remount: Vuelve a montar un sistema de ficheros con otras opciones.ro: Montaje solo lectura.rw: Montaje lectura y escritura (opción por defecto).
El montaje con mount no es persistente, es decir, se pierde cuando se reinicia el equipo. Si queremos algo permanente, tendríamos que echar mano del fichero /etc/fstab.
Para desmontar un sistema de archivos usamos el comando umount:
umount [options] <device> | <mountpoint>
Ejemplo usando el dispositivo:
umount /dev/sdb1
Ejemplo usando el punto de montaje/directorio:
umount /mnt
Opciones del comando umount:
-f (force): fuerza el desmontaje (podríamos perder datos si se está utilizando el dispositivo).-l (lazy): realiza el desmontaje cuando los recursos han sido liberados (ya no está en uso).
El archivo /etc/fstab nos permite definir los sistemas de archivos o espacios de swap que se montarán automáticamente en el arranque.
mount -a se invoca en el arranque y realiza el montaje de todos los dispositivos /etc/fstab (excepción noauto)
Formato fichero /etc/fstab:
<file system> <mount point> <type> <options> <dump> <pass>
El chequeo de la integridad de un sistema de ficheros solo se puede hacer con la unidad desmontada. Por eso, podemos hacer esta comprobación en el arranque, antes de que se monten los sistemas de ficheros.
Ejemplo /etc/fstab:
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=3d157584-1e35-40e6-bfdf-2f3359b09809 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 sysfs /sys defaults 0 0 proc /proc proc defaults 0 0
Crea un espacio que ayudará a la memoria RAM a descargar tareas cuando esté muy cargada de transacciones.
Las particiones de paginación o swap utilizan otros sistemas para montar y desmontar sus particiones:
swapon: Activa un espacio de swapswapoff: Desactiva un espacio de swapswapon –s: Visualiza configuración swap
Ejemplo de swapon (sin argumentos):
NAME TYPE SIZE USED PRIO /dev/dm-1 partition 980M 0B -2
Para inicializar una partición swap (o fichero swap) utilizamos la utilidad mkswap:
mkswap [device|file]
Ejemplo usando un fichero:
swapon /swapfile
Ejemplo utilizando una partición:
swapon /dev/sda8
Fuerza la sincronización de los datos almacenados en memoria al dispositivo.
Es llamado automáticamente cuando se realiza un reboot o halt de la maquina.
Este comando también liberaría la memoria swap
UUID (Universal Unique Identifier) permite asociar un dispositivo de almacenamiento a un identificador.
Se crea de forma aleatoria con un tamaño de 128 bits. Con esta longitud es difícil que se repita.
Este identificador estár asociado a una partición hasta que la modifiquemos, es decir, si realizamos algún cambio en la partición (cambiar tamaño), ya no le corresponderá el mismo UUID.
Para conocer el UUID de una partición podemos utilizar el comando blkid:
blkid /dev/sda1
Ejemplo ejecutando blkid sin argumentos:
/dev/sda1: UUID="b5a9d411-1845-4561-aff3-8394f36d60f6" TYPE="ext2" PARTUUID="f770ff77-01" /dev/sda5: UUID="AlN5EK-4anU-JcYE-P2nM-0TB9-FJOe-l61d2Q" TYPE="LVM2_member" PARTUUID="f770ff77-05" /dev/mapper/debian--10--vg-root: UUID="f992327e-e4b9-4034-aa4f-7030e9971903" TYPE="ext4" /dev/mapper/debian--10--vg-swap_1: UUID="8f4bcdd2-4087-43aa-878c-72f1e596e926" TYPE="swap"
Con la incorporación de systemd como sistema de incialización de servicios, ha surgido una nueva manera de montar sistemas de ficheros: las unidades .mount
Estas unidades son archivos de configuración que definen sistemas de ficheros que se montan de manera persistente.
Buscamos las unidades de este tipo que tenemos disponibles en el sistema:
systemctl list-unit-files --type=mount
UNIT FILE STATE -.mount generated boot.mount generated dev-hugepages.mount static dev-mqueue.mount static media-cdrom0.mount generated proc-fs-nfsd.mount static proc-sys-fs-binfmt_misc.mount static run-rpc_pipefs.mount static sys-fs-fuse-connections.mount static sys-kernel-config.mount static sys-kernel-debug.mount static
Ejemplo: mifs.mount:
[Unit] Description=Data for User [Mount] What=/dev/sda2 Where=/home/user/data Type=ext4 Options=defaults [Install] WantedBy=multi-user.target
Imaginemos que tenemos bastante swap consumida por un proceso en concreto. El cliente nos da permiso para parar el proceso y poder ganar swap. ¿Cómo liberamos la swap?
sync
¿Cuál de las siguientes respuestas describe mejor el formato del fichero /etc/fstab?
¿Qué ficheros de sistema se actualizan cuando los dispositivos son montados o desmontados para mostrar información de los dispositivos montados y de las opciones utilizadas?
/etc/mtab/proc/mounts