SkillGridAprende informática practicando

Archivos y sistema de archivos

Qué ocurre realmente al guardar un archivo y por qué un inodo no es el nombre del archivo.

12 min · 36 XP

Un sistema de archivos organiza bloques de un dispositivo en archivos y directorios con nombre. Un directorio es a su vez un archivo que asocia nombres a números de inodo. El nombre no es el archivo: es una etiqueta que apunta a él.

Un inodo guarda los metadatos del archivo y dónde están sus bloques de datos: tamaño, permisos, marcas de tiempo, punteros a bloques. No guarda el nombre. Por eso un archivo puede tener varios nombres (enlaces duros) y ninguno es «el real».

AppKernel (VFS)Page cacheDiskopen("/etc/hosts")walk directories, find inode 42file descriptor 3read(fd, buf, 4096)is block already cached?no — read it from diskhere is the blockcopy into your buffer

Leer de disco es miles de veces más lento que la memoria, así que el núcleo mantiene los datos usados recientemente en la caché de páginas. Una lectura repetida puede no tocar el disco en absoluto.

# Путь — это просто имена каталогов, которые ядро проходит шаг за шагом.
# Конкретный ФАЙЛ живёт в inode, а не в имени.

$ ls -i /etc/hosts
42 /etc/hosts          # 42 — номер inode

$ ln /etc/hosts /tmp/alias     # жёсткая ссылка: +1 имя у ТОГО ЖЕ inode
$ ln -s /etc/hosts /tmp/soft    # симлинк: отдельный файл со ссылкой

# Место на диске занимают ДАННЫЕ, а не имя файла.

Práctica

  1. Escribes en un archivo y la llamada retorna con éxito. ¿Están los datos en el disco?

    Pistas
    • ¿Dónde coloca el núcleo las escrituras antes de que lleguen al disco?
    • ¿Qué sentido tiene fsync si las escrituras ya llegaran al disco?

    12 XP

  2. Ordena los pasos de la lectura de un archivo.

    Pistas
    • Una ruta es una secuencia de nombres, cada uno resuelto por turno.
    • Comprueba el camino rápido antes que el lento.

    13 XP

  3. Explica por qué borrar un archivo que otro proceso tiene abierto no libera necesariamente su espacio en disco.

    Pistas
    • ¿Qué mantiene vivo al inodo: el nombre o algo más?
    • Cuenta las referencias, no las entradas del directorio.

    13 XP