Un nombre no es un archivo
Detrás de cada nombre hay un inodo, y detrás de cada disco puede haber varios. Al terminar sabrás enlazar archivos y crear un volumen que crezca.
Primero, la idea completa
Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.
Conceptos básicos
Casi todos los sistemas de archivos son jerárquicos: un árbol que empieza en /, con dos tipos de objetos, archivos y directorios, que sirven para organizar y agrupar archivos. Se recorre con ls, cd y pwd. Los sistemas de archivos se implementan normalmente en el kernel, por rendimiento, aunque con FUSE también se pueden implementar en el espacio de usuario.
- Dispositivo: un dispositivo de bloques físico, como un disco duro o un SSD, por ejemplo
/dev/sda. - Partición: una división lógica de un dispositivo. Partir un disco en dos da
/dev/sda1y/dev/sda2. - Volumen: parecido a una partición, pero más flexible: puede unir varios dispositivos.
- Superbloque: una sección especial con los metadatos del sistema de archivos: su tipo, sus inodos, bloques y estado.
- Inodo: guarda los metadatos de un archivo, como su ubicación, tamaño y permisos. El nombre no está en el inodo: está en el directorio, que asocia nombres con números de inodo.
lsblk | lista todos los dispositivos de bloques |
fdisk · parted | manejan las particiones |
blkid | muestra atributos como el UUID |
hwinfo | muestra información del hardware |
file -s | muestra información de sistemas de archivos y particiones |
stat · df -i · ls -i | muestran y listan información de los inodos |
Enlaces duros y simbólicos
Los enlaces son archivos especiales que hacen referencia a otros archivos.
- Un enlace duro (
ln original enlace) es otro nombre para el mismo inodo. Una vez creado se trata como un archivo independiente. No puede apuntar a un directorio ni a otro sistema de archivos. - Un enlace simbólico (
ln -s original enlace) es un archivo especial cuyo contenido es la ruta de otro archivo. Funciona como un acceso directo: si se borra el original, el enlace simbólico deja de funcionar.
A la izquierda, los nombres que guarda el directorio; a la derecha, los inodos. Crea enlaces, borra el original y lee cada nombre.
El sistema de archivos virtual
El VFS (Virtual File System) es una abstracción del kernel que permite acceder a recursos muy distintos como si fueran archivos. Linux no define la estructura de un archivo: es solo una secuencia de bytes que quien lo usa debe interpretar. El VFS hace de intermediario entre las llamadas al sistema de archivos y los recursos reales, que pueden ser:
- Locales, como ext3, XFS, FAT y NTFS: usan controladores para llegar a dispositivos de bloques, como discos duros o SSD.
- En memoria, como tmpfs: viven en la RAM.
- Pseudo, como procfs: también viven en memoria, pero son interfaces del kernel y de los dispositivos.
- De red, como NFS o Samba: también usan un controlador, pero el dispositivo no está en la máquina.
Ejecutas cat sobre cuatro rutas distintas. La orden es la misma; mira por dónde viaja cada read() después del VFS.
LVM
El LVM (Logical Volume Manager) es una capa intermedia entre las piezas físicas (discos o particiones) y el sistema de archivos, para administrarlos de forma más flexible: permite, por ejemplo, ampliar un volumen con poco riesgo y sin apagar nada. Tiene tres componentes:
- Volúmenes físicos (PV): una partición, un disco entero u otro dispositivo.
- Grupos de volúmenes (VG): un conjunto de PV que aportan su espacio en común; el intermediario entre los PV y los LV.
- Volúmenes lógicos (LV): dispositivos de bloques creados a partir de un VG, comparables a una partición. Hay que crearles un sistema de archivos antes de usarlos, y se les puede cambiar el tamaño en uso.
| PV | lvmdiskscan · pvdisplay · pvcreate · pvscan |
| VG | vgs · vgdisplay · vgcreate · vgextend |
| LV | lvs · lvscan · lvcreate · lvextend |
Dos discos vacíos de 10 GB. Arma un volumen de 4 GB y luego hazlo crecer a 12 GB, más de lo que cabe en un solo disco.
Crear, montar y organizar
- Crear un sistema de archivos, lo que en otros sistemas se llama formatear, sobre una partición o un volumen lógico:
mkfs -t ext4 /dev/some_vg/some_lv. - Montarlo es hacerlo disponible en el árbol:
mountmonta o lista los montajes, y para que un montaje sea permanente se agrega a/etc/fstab.
Para organizar los archivos existe el FHS (Filesystem Hierarchy Standard), que define los directorios, su estructura y su contenido. Lo mantiene la Linux Foundation, aunque cada distribución decide qué estructura usar.
| /bin · /sbin | programas y órdenes del sistema (casi siempre enlaces a /usr/bin y /usr/sbin) |
| /boot | las imágenes del kernel y lo necesario para arrancar |
| /dev | los dispositivos: terminales, discos… |
| /etc | los archivos de configuración del sistema |
| /home | las carpetas personales |
| /lib | las bibliotecas compartidas |
| /mnt · /media | puntos de montaje, por ejemplo de memorias USB |
| /opt | depende de la distribución; puede tener archivos de los gestores de paquetes |
| /proc · /sys | interfaces del kernel |
| /tmp | archivos temporales |
| /usr | programas de usuario, normalmente de solo lectura |
| /var | datos que cambian: registros, respaldos, cachés de red |
Antes de leer la respuesta
Tu turno: enlaza y monta
Primero, enlaces: crea un enlace duro y uno simbólico a notas.txt, compara sus inodos y borra el original para ver cuál sobrevive. Después, discos: con los dos discos vacíos de la máquina arma un volumen lógico, dale un sistema de archivos y móntalo.
Comprueba lo que entendiste
Cada respuesta incorrecta explica por qué parece correcta y en qué falla.