Noticia Anatomía del almacenamiento: Sistema, caché y archivos de usuario

Anatomía del almacenamiento Sistema, caché y archivos de usuario


Cuando hablamos de cómo se guarda y se mueve la información dentro de un ordenador, solemos pensar solo en el disco duro o en la memoria RAM. Pero por debajo hay toda una arquitectura de almacenamiento con niveles, cachés, sistemas de archivos y particiones que determina lo rápido y seguro que trabajamos con los datos. Entender esta anatomía es clave si estudias sistemas, administras equipos o simplemente quieres saber qué está pasando cuando guardas un archivo o se te corrompe un disco.

A lo largo de este artículo vamos a recorrer, paso a paso, cómo se organiza el almacenamiento desde la CPU hasta la memoria secundaria: qué papel juega la memoria caché, cómo funciona la caché del sistema de archivos en Windows, qué es un fichero, cómo se organizan los directorios, qué tipos de sistemas de archivos existen (FAT, NTFS, ext, APFS, etc.) y cómo se dividen los discos duros en particiones usando MBR. Todo con un enfoque práctico y con ejemplos aterrizados al día a día.

Anatomía general del almacenamiento en un sistema informático​


En cualquier ordenador moderno encontramos varios niveles de memoria, cada uno con distinta velocidad, capacidad y función. De arriba a abajo, podemos organizarlos así:

  • Registros del procesador.
  • Memoria caché (L1, L2, L3) integrada o cercana a la CPU.
  • Memoria principal (RAM).
  • Memoria secundaria (discos duros, SSD, etc.).
  • Memoria auxiliar (USB, discos externos, ópticos, etc.).

Los registros son una memoria extremadamente rápida en la que solo cabe un dato o unos pocos por registro. Funcionan como variables internas del procesador: por ejemplo, el Program Counter (PC) almacena la dirección de la siguiente instrucción a ejecutar y va cambiando a cada paso. Se identifican por nombre (PC, RI, AX, etc.), son volátiles y se basan en tecnología de semiconductores.

La memoria principal (RAM) está formada por celdas de igual tamaño llamadas palabras (32, 64, 128 bits, según la arquitectura). Para acceder a una celda se usa su dirección, que llega a través del bus de direcciones. Igual que los registros, la RAM es volátil: si se corta la corriente, el contenido se pierde. Aun así, tiene mucha más capacidad que los registros y es donde se ejecutan programas y se cargan datos en tiempo de ejecución.

Memoria caché y datos en caché: acelerando el acceso​


Entre la CPU y la memoria principal encontramos la memoria caché, diseñada para acercar los datos que más se usan al procesador y reducir la latencia. Usa también tecnología de semiconductores y está dividida en celdas, pero es más rápida que la RAM y bastante más cara, por lo que su capacidad es menor.

La idea de la caché es siempre la misma, tanto si hablamos de memoria caché de la CPU, caché de disco o caché del navegador: guardar temporalmente información que ya se ha consultado, de forma que si se vuelve a necesitar, se pueda recuperar desde un lugar más rápido que el origen original (disco, red, etc.).

El concepto de datos en caché se aplica también a nivel de aplicaciones, servidores y navegadores web. Un navegador, por ejemplo, almacena en caché imágenes, scripts, archivos CSS y HTML la primera vez que visitas una página. Así, cuando entras de nuevo a ese sitio, no necesita descargar todo otra vez, sino que reutiliza los datos locales y solo pide lo que haya cambiado, mejorando mucho el tiempo de carga.

Este mecanismo de almacenamiento temporal también se usa en otros componentes: los servidores DNS guardan en caché los registros de nombres de dominio para hacer las resoluciones más rápidas, y las CDN (redes de distribución de contenido) replican y cachean contenido estático en nodos distribuidos por todo el mundo para reducir la latencia hacia los usuarios finales.

Memoria secundaria: almacenamiento por bloques y sectores​


La memoria principal es rápida pero tiene dos problemas: es volátil y no tiene capacidad suficiente para guardar toda la información que manejamos (documentos, bases de datos, vídeos, copias de seguridad…). Por eso necesitamos memorias secundarias y auxiliares: discos duros, SSD y estándares como UFS, USB, discos ópticos, etc. Son persistentes, más baratas por unidad de almacenamiento y con gran capacidad.

Estos dispositivos no se organizan en celdas pequeñas como la RAM, sino en bloques físicos llamados sectores. Tradicionalmente, el tamaño típico de un sector ha sido de 512 bytes. Las operaciones de lectura y escritura se hacen como mínimo a nivel de sector: no se puede leer ni escribir una cantidad de datos inferior a un sector, ni direccionar una fracción de sector.

Con el crecimiento de la capacidad de los discos, se hizo necesario agrupar varios sectores para gestionar mejor el espacio. De ahí nacen los clusters o unidades de asignación, que son grupos de sectores que el sistema de archivos maneja como unidad mínima de asignación a ficheros. Esto simplifica la gestión pero tiene implicaciones de espacio desperdiciado, como veremos más adelante.

Archivos y sistema de archivos: la lógica sobre el disco​


Para poder aprovechar los dispositivos de almacenamiento, el sistema operativo necesita una capa lógica que defina cómo se guarda, organiza y controla la información en esos bloques físicos. Esa capa es el sistema de archivos (filesystem).

Desde el punto de vista lógico, el sistema de archivos se apoya en dos conceptos básicos: el archivo y la carpeta o directorio. Un archivo es una secuencia de bytes almacenada en un medio externo que se considera una unidad lógica: un documento PDF, una imagen, un vídeo, una base de datos, etc. Cada archivo tiene un nombre y, habitualmente, una extensión que ayuda a identificar el tipo de contenido (por ejemplo, .png, .txt, .pdf).

Una carpeta o directorio es simplemente un modo de agrupar archivos y otros directorios según el criterio del usuario o del sistema para facilitar la organización. Internamente, para el propio sistema de archivos, un directorio no deja de ser un archivo especial que almacena información sobre qué elementos contiene y cómo se estructuran.

El sistema de archivos se encarga de tareas críticas como asignar sectores y clusters a los archivos, mantener el control de qué bloques pertenecen a cada fichero, ofrecer operaciones de creación, renombrado, modificación y borrado, mantener la estructura jerárquica de directorios, controlar qué sectores están libres y qué sectores están ocupados y gestionar permisos y seguridad de acceso a los datos.

Es frecuente que cada familia de sistemas operativos tenga sus propios sistemas de archivos nativos, aunque cada vez hay más compatibilidad cruzada o soporte a través de herramientas específicas, incluyendo formas de acceder a servicios de almacenamiento en la nube. Los datos que llegan de una línea de comunicación o de un dispositivo especial también pueden exponerse como archivos, aunque en realidad se generen de forma dinámica (dispositivos en /dev en GNU/Linux, por ejemplo).

Atributos, permisos y ACL en el sistema de archivos​


Para que el sistema operativo pueda controlar quién accede a qué, cada recurso (ficheros, directorios, impresoras, recursos de red, etc.) suele tener asociada una lista de control de acceso (ACL). En esa lista aparecen los usuarios o grupos que pueden acceder y con qué permisos: lectura, escritura, ejecución, etc.

Además de los permisos, un archivo puede tener atributos que describen su naturaleza o su tratamiento especial por parte del sistema: archivo de sistema, oculto, solo lectura, cifrado, directorio, temporal, etc. Estos atributos influyen en cómo se muestra el archivo al usuario y en qué operaciones están permitidas.

Rutas, nombres y comodines​


Casi todos los sistemas de archivos modernos organizan los datos de manera jerárquica en forma de árbol de directorios. Para localizar de forma única un archivo o un directorio se usa su ruta (path), que describe el camino que hay que seguir dentro del árbol: una secuencia de directorios separada por un carácter especial, cuyo último elemento es el propio archivo o carpeta.

En sistemas tipo Unix (GNU/Linux, macOS en su base), la ruta absoluta comienza con una barra inclinada / que representa el directorio raíz. Ejemplo: /home/Alicia/Documentos/informe.odt. En sistemas Microsoft, se antepone la letra de la unidad seguida de : y barras invertidas: C:\Usuarios\Alicia\Documentos\informe.odt.

También podemos usar rutas relativas, que parten del directorio actual del usuario. Por ejemplo, ../../Jacinto/Documentos/memoria.odt indica “subir dos niveles y luego bajar a Jacinto/Documentos/memoria.odt”. En Unix, existen comodines especiales para rutas: . (directorio actual), .. (directorio padre) y ~ (directorio personal del usuario).

Los sistemas operativos ofrecen caracteres comodín (wildcards) para referirse a uno o varios archivos sin conocer sus nombres completos. El asterisco (*) representa cualquier combinación de caracteres, incluso la ausencia de caracteres; el signo de interrogación (?) representa un único carácter. Por ejemplo, *imagen*.png podría coincidir con Mi_imagen.png, imagen.png, imagen1.png e imagen21.png, mientras que imagen??.png solo casaría con nombres de seis caracteres seguidos de .png, como imagen21.png.

Desde el fichero en RAM al fichero en disco​


Cuando creas un archivo desde una aplicación, al principio los datos viven únicamente en memoria principal. Si abres el Bloc de notas, escribes tu nombre y todavía no has guardado, la información está en la memoria del proceso notepad.exe. No existe ningún fichero en disco asociado a ese contenido.

En el momento en que haces clic en “Guardar” y eliges una ruta, el sistema operativo crea un archivo en el sistema de archivos y asigna uno o varios clusters del dispositivo de almacenamiento para guardar esa información. A partir de ahí, el sistema deberá saber en todo momento qué bloques se han reservado para ese archivo y en qué orden hay que leerlos.

Un detalle curioso: muchas veces el tamaño lógico del fichero (según bytes de datos) es muy inferior al espacio real que ocupa en disco. Por ejemplo, un archivo de texto con la palabra “Javier” en ASCII ocupa 6 bytes de contenido, pero en un sistema donde el cluster sea de 4 KiB, ese archivo ocupará 4096 bytes en el disco, porque el cluster es la unidad mínima asignable (si te preocupa este comportamiento, consulta qué hacer si el almacenamiento interno aparece lleno).

Caché de archivos del sistema en Windows​


Anatomía del almacenamiento sistema, caché y archivos


En Windows, el sistema operativo implementa una caché de archivos del sistema que actúa como intermediario entre las operaciones de E/S y el disco físico. Por defecto, cuando un programa lee o escribe en un archivo, en realidad está leyendo o escribiendo en memoria, en una región gestionada por el administrador de caché.

Cuando se realiza una lectura, los datos se cargan primero desde el disco a una región de la memoria del sistema reservada como caché de archivos. A partir de ahí, los procesos en modo usuario copian esos datos a su propio espacio de direcciones. Si más adelante se vuelve a leer la misma zona del archivo, el sistema puede servirla directamente desde la caché sin acceder de nuevo al disco, acelerando mucho el rendimiento.

En las operaciones de escritura, los datos se almacenan inicialmente en la caché de archivos del sistema en lugar de escribirse inmediatamente en disco. Este mecanismo se conoce como caché de reescritura con escritura diferida. El administrador de caché vacía periódicamente esa memoria, escribiendo los bloques modificados en el disco físico y liberando espacio en la caché. El momento de vaciado depende de cuánto tiempo han permanecido los datos en la caché y de cuánto tiempo hace que se accedió por última vez a ellos.

Esta política de aplazar la escritura al disco tiene ventajas de rendimiento, pero implica un riesgo: si se produce un apagón o fallo repentino antes de vaciar la caché, se pueden perder los datos que aún no se hayan escrito en el disco. Para equilibrar rendimiento y fiabilidad, Windows lanza cada segundo un proceso llamado escritor diferido, que pone en cola una fracción de las páginas pendientes para ser escritas en el disco y ajusta dinámicamente la cantidad de datos que vacía.

Hay aplicaciones (por ejemplo, software antivirus o gestores de bases de datos) que necesitan garantizar que las escrituras se materializan en disco de forma inmediata. Para ello, Windows ofrece el modo write-through: si se abre un archivo con la marca FILE_FLAG_WRITE_THROUGH, los datos se escriben en la caché pero el administrador de caché los empuja al disco sin retrasos. Además, las funciones como FlushFileBuffers permiten forzar un vaciado de los metadatos y el contenido pendiente.

En algunos escenarios de E/S masiva con bloques muy grandes, el almacenamiento en caché puede empeorar el rendimiento. En esos casos, es posible abrir archivos con la marca FILE_FLAG_NO_BUFFERING para que las lecturas y escrituras vayan directamente al disco físico, saltándose la caché de archivos (aunque parte de los metadatos pueden seguir cacheados).

Tipos de sistemas de archivos y características​


Los sistemas de archivos más utilizados están muy ligados a la familia de sistema operativo donde se diseñaron, aunque muchos han acabado siendo casi estándar de facto por compatibilidad. Vamos a ver los más importantes.

Sistemas de archivos de la familia Microsoft​


En el mundo Windows podemos distinguir principalmente dos grandes familias: FAT y NTFS. FAT (File Allocation Table) es un diseño simple y muy antiguo, mientras que NTFS (New Technology File System) es más moderno, robusto y rico en funcionalidades.

FAT se apoya en una tabla que indica para cada cluster a qué archivo pertenece y cuál es el siguiente cluster en la cadena del archivo. Sus versiones más destacadas son: FAT12 (primeros años 80, con volúmenes de hasta 32 MB y nombres 8.3), FAT16 (hasta unos 90 GB con clusters de 32 KiB), VFAT (soporte de modo protegido de 32 bits y nombres largos en Windows 3.11/95) y FAT32 (introducida en Windows 95 OSR2, con capacidad teórica de casi 8 TB pero limitada por Microsoft a tamaños menores, y con un tamaño máximo de archivo de 4 GB). Más adelante apareció exFAT, optimizada para memorias USB y flash, con menos limitaciones de tamaño de archivo.

FAT tiene varios inconvenientes: sus estructuras provocan fragmentación con facilidad, no implementa permisos avanzados ni journaling y, para que sea rápida, la tabla FAT suele cargarse completa en RAM, consumiendo bastante memoria. En discos muy grandes, si solo se cachea parte de la tabla, acceder a archivos muy fragmentados puede implicar muchos saltos al disco solo para leer fragmentos de FAT.

NTFS, por su parte, introduce mejoras de rendimiento, seguridad y fiabilidad. Soporta permisos detallados, ACL, cifrado, compresión, journaling y recuperación automática ante ciertos errores. Está basado en HPFS (desarrollado para OS/2) y puede direccionar volúmenes enormes (hasta decenas de terabytes en implementaciones habituales). Se han ido publicando varias versiones: desde NT 3.1 (v1.0) hasta las versiones 3.x utilizadas desde Windows 2000 y XP en adelante.

Sistemas de archivos en Apple​


Los ordenadores de Apple han pasado por varias generaciones de sistemas de archivos, cada una adaptada a la tecnología del momento. Los más representativos son MFS, HFS, HFS+ y APFS.

MFS (Macintosh File System) fue el primer sistema de archivos del Macintosh original de 1984. Permitía nombres de hasta 255 caracteres, aunque solo indexaba los primeros 63, y manejaba volúmenes de hasta 256 MB. Como las capacidades crecieron rápidamente, se sustituyó pronto por HFS (Hierarchical File System), también conocido como Mac OS estándar, que introdujo una organización jerárquica real y soportaba volúmenes de hasta 2 TB (con archivos individuales de hasta 2 GB).

Más adelante llegó HFS Plus (HFS+), o Mac OS extendido, con soporte para journaling, nombres en Unicode y volúmenes de hasta 8 exabytes. Ha sido durante muchos años el sistema principal en Mac. Con la llegada de los SSD y las necesidades de cifrado y snapshots modernos, Apple diseñó APFS (Apple File System), optimizado específicamente para memorias flash y soportado desde macOS Sierra y iOS 10.3. APFS mejora la gestión de espacio, la clonación de archivos y el rendimiento en operaciones intensivas.

Sistemas de archivos en GNU/Linux y Unix​


GNU/Linux soporta una variedad amplia de sistemas de archivos, pero los más habituales son las familias ext (ext2, ext3, ext4), ReiserFS, XFS y ZFS (este último a través de módulos externos).

ext2 se introdujo en 1993 como un sucesor mejorado de ext, con soporte para volúmenes de hasta 16 TB y archivos de hasta 2 TB, y nombres de 256 caracteres. ext3, aparecido en 2001, añadió journaling y se apoyó en estructuras más eficientes como árboles binarios balanceados, manteniendo la compatibilidad con ext2. ext4, publicado en 2006, mejoró la velocidad, el uso de CPU y aumentó las capacidades máximas hasta 1 exabyte de volumen y archivos de hasta 16 TB.

ReiserFS fue uno de los primeros sistemas con journaling soportados por el núcleo Linux, con buen rendimiento en archivos pequeños. XFS, originario de IRIX y portado a Linux, también implementa journaling y destaca por su tamaño máximo de volumen y su rendimiento en entornos de alto rendimiento, pudiendo manejar hasta 16 exabytes.

ZFS, desarrollado originalmente por Sun Microsystems para Solaris, introduce un enfoque combinado de sistema de archivos y gestor de volúmenes. Permite archivos de hasta 16 exabytes y volúmenes gigantescos, con características avanzadas como snapshots, verificación de integridad mediante checksums, autocomprobación y reparación automática de corrupción silenciosa.

Cómo direccionan los sistemas de archivos los bloques: inodos y extents​


En sistemas tipo Unix, los sistemas de archivos como ext2 y ext3 utilizan una estructura llamada inodo para representar cada archivo. El inodo almacena metadatos (permisos, propietario, tamaño, marcas de tiempo, etc.) y una serie de punteros a bloques de datos.

En ext3, cada inodo contiene 12 punteros directos a bloques de datos, más tres punteros indirectos: uno simple, uno doble y uno triple. Con los punteros directos se puede acceder directamente a 12 bloques de datos. Si el tamaño de bloque es de 4096 bytes, esto equivale a 48 KiB de datos (12 × 4096).

Si el archivo crece más allá de ese límite, entra en juego el puntero indirecto simple, que apunta a un bloque especial que contiene únicamente direcciones de otros bloques de datos. Suponiendo palabras de 32 bits (4 bytes), en un bloque de 4096 bytes caben 1024 direcciones. Esto añade hasta 4 MiB extra (1024 × 4096 bytes). Para archivos aún mayores se usan los punteros dobles e indirectos triples, que encadenan varios niveles de bloques de direcciones, alcanzando capacidades de hasta 4 GiB (doble) y 4 TiB (triple) por archivo.

La suma de las capacidades aportadas por los 12 punteros directos, el indirecto simple, el doble y el triple nos da el tamaño máximo teórico de un archivo en ext3: 48 KiB + 4 MiB + 4 GiB + 4 TiB, aproximadamente.

En ext4 se rediseña esta estructura: los punteros pasan a ser de 48 bits para soportar dispositivos más grandes (hasta 1 EiB) y en lugar de bloques indirectos se usan extents. Un extent describe un rango de bloques contiguos mediante dos valores: bloque inicial y cantidad de bloques. Los 60 bytes que ext3 usaba para las direcciones se reutilizan en ext4 para almacenar varios extents y una cabecera. Si un archivo está muy fragmentado y necesita más extents, se organiza un árbol (HTree) cuya raíz se guarda en el inodo y cuyos nodos hoja contienen los extents adicionales.

Esta estructura basada en extents tiene como objetivo reducir la fragmentación y mejorar el rendimiento, ya que se trabaja con grandes rangos contiguos en lugar de con listas largas de bloques individuales.

Otros sistemas de archivos específicos y virtuales​


Además de los sistemas de archivos de disco y de red, existen sistemas diseñados para propósitos muy concretos o para funcionar en modo virtual. Algunos ejemplos destacados:

  • swap: zona de disco reservada para la memoria virtual, donde se intercambian páginas cuando la RAM se queda corta.
  • archfs: sistema de archivos en espacio de usuario (FUSE) que permite navegar por repositorios rdiff-backup.
  • cdfs: sistema de archivos virtual en Linux para acceder a datos o pistas de audio individuales en discos compactos.
  • udev y devfs: usados en GNU/Linux para manejar archivos de dispositivos bajo /dev.
  • ftpfs y nntpfs: sistemas en espacio de usuario (FUSE) que exponen datos accesibles por FTP o NNTP como si fueran un sistema de archivos local.

FUSE (Filesystem in Userspace), incluido en el núcleo de Linux desde la versión 2.6.14, permite que usuarios no privilegiados desarrollen e instalen sistemas de archivos que se ejecutan en espacio de usuario, mientras un módulo del núcleo actúa de intermediario. Esto incrementa enormemente la variedad de sistemas de archivos disponibles (NTFS, EncFS, etc.), permitiendo incluso montar discos virtuales (como archivos .vdi) como si fueran discos físicos. La desventaja es que el cambio constante entre modo kernel y modo usuario introduce cierta penalización de rendimiento.

Por debajo, todo se apoya en VFS (Virtual File System), una capa de abstracción que unifica el acceso a sistemas de archivos con arquitecturas muy distintas, de forma que las aplicaciones ven una interfaz común independientemente del tipo de sistema concreto que haya debajo.

Transacciones y journaling en sistemas de archivos​


Una transacción es una secuencia de operaciones que deben ejecutarse de forma atómica: o se completan todas con éxito o, si algo falla, hay que dejar el sistema como si nunca se hubieran empezado. Este concepto se aplica a bases de datos, pero también a sistemas de archivos mediante el journaling.

El journaling o registro por diario consiste en mantener un journal en el que se anotan las modificaciones previstas antes de aplicarlas al sistema de archivos real. Si se produce un corte de luz o fallo inesperado mientras se está escribiendo, al arrancar de nuevo el sistema se revisa el diario: las transacciones incompletas se deshacen o se rehacen según el modo de operación, garantizando que la estructura del sistema de archivos se mantiene coherente y evitando corrupciones graves.

Particiones, MBR y organización lógica del disco​


Un disco duro o unidad SSD rara vez se usa como un bloque monolítico sin dividir. Lo normal es crear particiones, que son segmentos contiguos del disco delimitados entre un sector de inicio y un sector de fin. Cada partición puede contener un sistema de archivos distinto, lo que permite tener, por ejemplo, Windows y Linux en el mismo disco, o separar datos de sistema y datos de usuario.

Desde el punto de vista del sistema operativo, cada partición se puede manejar como una unidad lógica independiente: en Windows, con su propia letra de unidad (C:, D:, etc.); en GNU/Linux, montada en directorios específicos (/home, /var, etc.). Esto aporta flexibilidad y facilita tareas como reinstalar un sistema operativo sin tocar la partición de datos.

En esquemas de particionado MBR clásicos, la información sobre las particiones se guarda en la tabla de particiones almacenada en el sector 0 del disco, conocido precisamente como MBR (Master Boot Record). El MBR incluye tres elementos principales: un pequeño programa de arranque (bootloader, que se encarga de lanzar el sistema operativo o un cargador más complejo), la tabla de particiones (con hasta cuatro entradas) y un “código mágico” de 16 bits, normalmente 0x55AA, que indica que el MBR es válido.

La tabla de particiones MBR solo admite cuatro particiones primarias. Para superar este límite se definieron dos tipos adicionales: la partición extendida y las particiones lógicas. Una partición extendida es en realidad un tipo especial de partición primaria que no contiene datos directamente, sino que aloja dentro de sí múltiples particiones lógicas. Así, podemos tener como máximo cuatro entradas en el MBR (tres primarias y una extendida, por ejemplo) y dentro de la extendida tantas lógicas como necesitemos.

En la práctica, cuando un disco nuevo no tiene MBR inicializado, herramientas como gparted detectan que no hay etiqueta reconocible ni código mágico 0x55AA y muestran avisos. El primer paso suele ser crear una tabla de particiones nueva (por ejemplo, de tipo msdos para MBR). A partir de ahí, se van creando particiones primarias y, si necesitamos más de cuatro sistemas de archivos, una partición extendida para albergar particiones lógicas adicionales.

Durante la planificación conviene decidir de antemano qué tamaño y tipo tendrá cada partición: por ejemplo, una partición primaria grande para datos en NTFS, otra en ext4 para Linux, una FAT32 para intercambio y una extendida con varias lógicas, o convertir tu disco duro para otros usos. Si se agotan las cuatro primarias sin haber reservado una extendida, tendremos que borrar alguna partición para rehacer la estructura correctamente.

En entornos de administración o formación es habitual usar una distribución Live, como SystemRescue, arrancar en modo gráfico (mediante startx) y utilizar herramientas como gparted para crear, redimensionar y formatear particiones con diferentes sistemas de archivos (NTFS, FAT32, ext3, ext4, etc.), comprobando de paso cómo se inicializa un MBR y cómo se reflejan los cambios en la tabla de particiones.

Todo este entramado de registros, cachés, memoria principal, discos, sistemas de archivos, journaling y particiones hace que, cuando pulsas “Guardar”, el dato viaje desde el registro de la CPU hasta un bloque concreto de un disco físico pasando por varias capas de caché y estructuras lógicas. Conocer cómo encajan todas estas piezas permite entender mejor problemas de rendimiento, errores de disco, mensajes de corrupción de archivos o decisiones de diseño como el tamaño de los clusters o la elección de un sistema de archivos para cada uso y también optar por servicios gratuitos de almacenamiento en la nube según las necesidades.

Continúar leyendo...