Las unidades de disco y los dispositivos de disco son "tontos". Si le solicita un LBA, le devuelve los 512, 2048 o 4096 bytes que contiene; viceversa para escribir.
Una capa de sistema de archivos le permite decir "Quiero c: \ users \ public \ documents \ whatever.doc" y realizar operaciones de transmisión en ese sentido (abrir, leer, escribir, buscar, cerrar): se traduce de ubicaciones direccionables por nombre a una serie de solicitudes para leer / escribir LBA.
Por lo tanto, la capa del sistema de archivos tiene dos lados, uno que se comunica con el dispositivo de disco (o bloque) y el otro lado que se comunica con el sistema operativo. Aquí es donde entra en juego la especificidad del sistema operativo. Por lo general, el lado del dispositivo de bloque del sistema de archivos es un controlador de dispositivo, y el lado del sistema operativo es una API utilizable por las aplicaciones. Pero estas son solo interfaces y realmente no tienen que afectar la operación subyacente de la capa del sistema de archivos.
Todos los sistemas de archivos hacen que se escriban y lean datos adicionales fuera de los datos de los archivos, a fin de realizar un seguimiento de la información sobre los archivos, es decir, registrar permisos, atributos, etc.
Hay un pequeño problema de gallina y huevo con el arranque, ya que los archivos del sistema operativo se almacenan en el sistema de archivos, pero ¿cómo se cargan si la capa del sistema de archivos aún no está activa? Linux resuelve este problema con un disco RAM inicial o incorporando el código del sistema de archivos como parte del núcleo. Windows resuelve este problema dándole al gestor de arranque de Windows la capacidad de leer particiones FAT y NTFS. Los cargadores de arranque pueden ser tontos, como la mayoría de los cargadores de arranque de BIOS clásicos que solo cargan LBA 0 y lo ejecutan y esperan que el código se recupere después, o bastante inteligente y con pequeñas capas de sistema de archivos propias, como UEFI, U-boot, etc.
LVM no es un sistema de archivos. Toma uno o más dispositivos de bloque y lo resume en otro dispositivo de bloque "virtual" (en /dev/mapper
- cualquier cosa en /dev/mapper
es un dispositivo de bloque virtual). Pones un sistema de archivos "encima" de un LVM de la misma manera que pondrías un sistema de archivos "encima" de una partición. LVM es otra capa entre uno o más controladores de dispositivo y el sistema de archivos, que convierte lecturas y escrituras en LBA en el dispositivo de bloque virtual en uno o más dispositivos de bloque. Sí, un LVM puede ser un dispositivo de bloque virtual y puede tener una cascada de ellos.