• Retrointernet
Retrointernet
Cómo almacena los datos el sistema operativo Linux

Cómo almacena los datos el sistema operativo Linux

  • 8 de noviembre de 2018

Linux tiene sistemas y herramientas muy potentes para administrar dispositivos de hardware, incluidas unidades de almacenamiento. En este artículo cubriremos cómo Linux maneja estos dispositivos y cómo el almacenamiento se convierte en espacio utilizable por el servidor.


¿Qué son los bloques de almacenamiento?

Un bloque de almacenamiento, también llamado dispositivo de almacenamiento, es una pieza de hardware que se usa para almacenar datos, como una unidad de disco duro (HDD) tradicional, una unidad de estado sólido (SSD), una memoria flash, etc. Se le llama dispositivo de bloque porque las interfaces del kernel con el hardware hacen referencia a bloques de tamaño fijo, o trozos de espacio.

Básicamente, el almacenamiento en bloque es lo que se considera un almacenamiento en disco normal de un ordenador. Una vez que se configura, actúa como una extensión del árbol del sistema de archivos, se y puede escribir o leer información de la unidad sin problemas.


¿Qué son las particiones de disco?

Las particiones de disco son una forma de dividir una unidad de almacenamiento en unidades utilizables más pequeñas. Una partición es una sección de una unidad de almacenamiento que se puede tratar de la misma manera que una unidad.

La partición permite segmentar el espacio disponible y usar cada partición para un propósito diferente. Esto brinda al usuario una gran flexibilidad que permite segmentar potencialmente la instalación para una fácil actualización, múltiples sistemas operativos, espacio de intercambio o sistemas de archivos especializados.

Si bien los discos se pueden formatear y usar sin particiones, algunos sistemas operativos necesitan una tabla de particiones, incluso si solo hay una partición escrita en el disco. En general, se recomienda particionar las unidades de disco nuevas para una mayor flexibilidad.


MBR vs GPT

Al particionar un disco, es importante saber qué formato de partición se utilizará. Esto generalmente se reduce a una elección entre MBR (registro de arranque maestro) y GPT (tabla de particiones GUID).

MBR es el sistema de partición tradicional, que ha estado en uso por más de 30 años. Debido a su edad, tiene algunas limitaciones. Por ejemplo, no se puede usar para discos de más de 2 TB y solo puede tener un máximo de cuatro particiones primarias. Debido a esto, la cuarta partición se configura normalmente como una "partición extendida", en la que se pueden crear "particiones lógicas". Esto permite subdividir la última partición para permitir efectivamente particiones adicionales.

GPT es un esquema de partición más moderno que intenta resolver algunos de los problemas inherentes con MBR. Los sistemas que ejecutan GPT pueden tener muchas más particiones por disco. Esto generalmente solo está limitado por las restricciones impuestas por el propio sistema operativo. Además, la limitación del tamaño del disco no existe con GPT y la información de la tabla de partición está disponible en varias ubicaciones para evitar daños. GPT también puede escribir un "MBR de protección".

En la mayoría de los casos, GPT es la mejor opción a menos que el sistema operativo o herramientas impidan utilizarlo.


Formateo y sistemas de archivos

Si bien el kernel de Linux puede reconocer un disco duro, la unidad no se puede usar hasta que sea formateada. El formateo es el proceso de escribir un sistema de archivos en el disco y prepararlo para que se puedan manipular los archivos. Un sistema de archivos es el sistema que estructura los datos y controla cómo se escribe y recupera la información desde el disco. Sin un sistema de archivos, no se podría utilizar el dispositivo de almacenamiento para ninguna operación relacionada con los archivos.

Hay muchos formatos diferentes de sistemas de archivos, cada uno con diferentes características, incluida la compatibilidad con el sistema operativo. En un nivel básico, todos presentan al usuario una representación similar del disco, pero las características que cada uno admite y los mecanismos utilizados para habilitar las operaciones de mantenimiento y acceso a los ficheros pueden ser muy diferentes.


Cómo maneja Linux los dispositivos de almacenamiento

Archivos de dispositivos en /dev

En Linux, casi todo está representado por un archivo. Esto incluye hardware como unidades de almacenamiento, que se representan en el sistema como archivos en el directorio /dev. Normalmente, los archivos que representan los dispositivos de almacenamiento comienzan con sd o hd seguido de una letra. Por ejemplo, la primera unidad en un servidor suele ser algo como /dev/sda.

Las particiones de estas unidades también tienen archivos dentro de /dev, añadiendo un número de partición al final del nombre de la unidad. Por ejemplo, la primera partición en la unidad del ejemplo anterior sería /dev/sda1.

Si bien los archivos de los dispositivos /dev/sd* y /dev/hd* representan la forma tradicional de referirse a unidades y particiones, existe una desventaja importante en el uso de estos valores por sí mismos. El kernel de Linux decide qué dispositivo obtiene qué nombre en cada inicio, por lo que esto puede llevar a escenarios confusos.

Para solucionar este problema, el directorio /dev/disk contiene subdirectorios que accesos más fáciles de identificar discos. Estos contienen enlaces simbólicos que se crean al reiniciar los archivos /dev/da*. Los enlaces se nombran de acuerdo con el rasgo de identificación del directorio (por ejemplo, por etiqueta de partición para el directorio /dev/disk/by-partlabel. Estos enlaces siempre apuntarán a los dispositivos correctos, por lo que se pueden usar como identificadores estáticos para espacios de almacenamiento.

Algunos o todos los siguientes subdirectorios pueden existir en /dev/disk:

  • by-label: la mayoría de los sistemas de archivos tienen un mecanismo de etiquetado que permite la asignación de nombres arbitrarios especificados por el usuario para un disco o partición. Este directorio consta de enlaces que llevan el nombre de estas etiquetas proporcionadas por el usuario.
  • By-uuid: UUID, o identificadores universalmente únicos, son una cadena larga y única de letras que se pueden usar como una identificación para un recursos de almacenamiento. En general, estos no son muy legibles para los humanos, pero están garantizados para ser únicos, incluso en todos los sistemas. Como tal, podría ser una buena idea usar los UUID para hacer referencia al almacenamiento que puede cambiar entre sistemas.
  • by-partlabel y by-partuuid: las tablas GPT ofrecen su propio conjunto de etiquetas y UUID, que también se pueden utilizar para la identificación. Esto funciona de la misma manera que los dos directorios anteriores, pero usa identificadores específicos de GPT.
  • by-id: este directorio contiene enlaces generados por los números de serie propios del hardware y el hardware al que están conectados. Esto no es del todo persistente, ya que la forma en que el dispositivo está conectado al sistema puede cambiar su nombre de by-id.
  • by-path: al igual que by-id, este directorio se basa en la conexión de los dispositivos de almacenamiento al propio sistema. Los enlaces se construyen utilizando la interpretación del sistema del hardware utilizado para acceder al dispositivo. Esto tiene los mismos inconvenientes que el by-id, ya que la conexión de un dispositivo a un puerto diferente puede alterar este valor.

Por lo general, by-label o by-uuid son las mejores opciones para la identificación persistente de dispositivos.


Montar los dispositivos

El archivo de dispositivo dentro de /dev se utiliza para comunicarse con el controlador del Kernel del dispositivo, por ejemplo, una unidad de disco. Sin embargo, se necesita una abstracción más útil para tratar el dispositivo como un segmento de espacio disponible.

En Linux y otros sistemas operativos similares a Unix, todo el sistema, independientemente de la cantidad de dispositivos físicos involucrados, está representado por un único árbol de archivos. Como tal, cuando se va a utilizar un sistema de archivos en una unidad o partición, debe estar conectado al árbol existente. El montaje es el proceso de añadir una partición o unidad formateada a un directorio dentro del sistema de archivos de Linux. Se puede acceder al contenido del disco desde ese directorio.

Las unidades casi siempre se montan en directorios vacíos dedicados. Hay muchas opciones para montar una unidad. Por ejemplo, la unidad se puede montar en modo de solo lectura para garantizar que su contenido no se pueda modificar.

El estándar de jerarquía del sistema de archivos recomienda usar /mnt o un subdirectorio debajo de él para los sistemas de archivos montados temporalmente. En muchos casos, los subdirectorios /mnt también se utiliza para un almacenamiento más permanente.

Montajes permanentes con /etc/fstab

Los sistemas Linux tienen un archivo llamado /etc/fstab (tabla del sistema de archivos) para determinar qué sistemas de archivos se deben montar durante el proceso de arranque. Los sistemas de archivos que no tienen una entrada en este archivo no se montarán automáticamente (la excepción son los definidos por los archivos de la unidad .mount del sistema).

El archivo /etc/fstab es bastante simple. Cada línea representa un sistema de archivo diferente que debe ser montado. Esta línea especifica el dispositivo de bloque, el punto de montaje al que se adjunta, el formato de la unidad y las opciones de montaje, así como algunas otras informaciones.


¿Qué es LVM?

LVM, o Logical Volume Management, es un sistema que abstrae las características físicas de los dispositivos de almacenamiento para proporcionar mayor flexibilidad y potencia. LVM permite crear grupos de dispositivos físicos y administrarlos como si fueran un solo bloque de espacio. Luego se puede segmentar el espacio según sea necesario en volúmenes lógicos.

Vídeo relacionado