Una Introducción a la Terminología y los Conceptos de Almacenamiento en Linux.
Introducción
Una Introducción a la Terminología y los Conceptos de Almacenamiento en Linux. Linux cuenta con sistemas y herramientas robustas para administrar dispositivos de hardware, incluidas unidades de almacenamiento. En este videoturorial cubriremos, en un alto nivel, cómo Linux representa estos dispositivos y cómo se convierte el almacenamiento en bruto en espacio utilizable en el servidor.
¿Qué es Block Storage?
El almacenamiento en bloque es otro nombre para lo que el kernel de Linux llama un dispositivo de bloque. Un dispositivo de bloque es una pieza de hardware que se puede usar para almacenar datos, como una unidad de disco duro giratoria tradicional (HDD), unidad de estado sólido (SSD), memoria flash, etc. Se llama un dispositivo de bloque porque el kernel interactúa con el hardware al hacer referencia a bloques de tamaño fijo o trozos de espacio.
Entonces, básicamente, el almacenamiento en bloque es lo que piensas como un almacenamiento de disco normal en una computadora. Una vez que se configura, básicamente actúa como una extensión del árbol del sistema de archivos actual, 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 forma muy parecida a un disco en sí mismo.
La partición le permite segmentar el espacio disponible y usar cada partición para un propósito diferente. Esto le brinda al usuario mucha flexibilidad que les permite potencialmente segmentar su instalación para una fácil actualización, sistemas operativos múltiples, espacio de intercambio o sistemas de archivos especializados.
Aunque los discos pueden formatearse y usarse sin particionar, algunos sistemas operativos esperan encontrar una tabla de partición, incluso si solo hay una sola partición grabada en el disco. Generalmente se recomienda particionar nuevas unidades para una mayor flexibilidad en el futuro.
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 (Master Boot Record) y GPT (GUID Partition Table).
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 serias. Por ejemplo, no se puede usar para discos de más de 2 TB de tamaño y solo puede tener un máximo de cuatro particiones primarias. Debido a esto, la cuarta partición normalmente se configura como una "partición extendida", en la que se pueden crear "particiones lógicas". Esto le 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 a 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 sistema operativo en sí. Además, la limitación del tamaño del disco no existe con GPT y la información de la tabla de particiones está disponible en varias ubicaciones para protegerse contra la corrupción. GPT también puede escribir un "MBR protector" que le dice a las herramientas solo MBR que el disco está siendo utilizado.
En la mayoría de los casos, GPT es la mejor opción a menos que su sistema operativo o herramientas le impidan usarlo.
Formateo y Sistemas de Archivos
Mientras que el kernel de Linux puede reconocer un disco sin procesar, la unidad no se puede usar tal como está. Para usarlo, debe formatearse. El formateo es el proceso de escribir un sistema de archivos en el disco y prepararlo para las operaciones de archivos. Un sistema de archivos es el sistema que estructura los datos y controla cómo se escribe y recupera la información del disco subyacente. Sin un sistema de archivos, no podría usar el dispositivo de almacenamiento para ninguna operación relacionada con archivos.
Existen muchos formatos diferentes de sistemas de archivos, cada uno con intercambios en varias dimensiones diferentes, incluido el soporte del 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 usuario y mantenimiento pueden ser muy diferentes.
Algunos de los sistemas de archivos más populares para Linux son:
- >
- Ext4. El sistema de archivos predeterminado más popular es Ext4, o la cuarta versión del sistema de archivos extendido. El sistema de archivos Ext4 está registrado en un diario, es compatible con versiones anteriores de sistemas tradicionales, es increíblemente estable y tiene soporte y herramientas maduros. Es una buena opción si no tiene necesidades especializadas.
- XFS : XFS se especializa en rendimiento y grandes archivos de datos. Se formatea rápidamente y tiene buenas características de rendimiento al manipular archivos de gran tamaño y al trabajar con discos grandes. También tiene funciones instantáneas en vivo. XFS utiliza el registro de metadatos en lugar de registrar tanto los metadatos como los datos. Esto conduce a un rendimiento rápido, pero puede conducir a la corrupción de datos en el caso de una pérdida brusca de potencia.
- Btrfs : Btrfs es un sistema de archivos de copiado y escritura rico en características. Esta arquitectura permite integrar algunas funcionalidades de gestión de volumen dentro de la capa del sistema de archivos, incluidas instantáneas, clonación, volúmenes, etc. Btrfs todavía se encuentra con algunos problemas cuando se trata con discos completos. Existe cierto debate sobre su disponibilidad para las cargas de trabajo de producción y muchos administradores de sistemas están esperando que el sistema de archivos alcance una mayor madurez.
- ZFS : ZFS es un sistema de archivos de copia en escritura y administrador de volúmenes con un conjunto de características robusto y maduro. Tiene excelentes funciones de integridad de datos, puede manejar grandes tamaños de sistemas de archivos, tiene funciones de volumen típicas como instantáneas y clonación, y puede organizar volúmenes en arreglos RAID y similares a RAID para fines de redundancia y rendimiento. En términos de uso en Linux, ZFS tiene una historia controvertida debido a problemas de licencia. Ubuntu ahora está enviando un módulo de kernel binario para él, y Debian incluye el código fuente en sus repositorios. El soporte a través de otras distribuciones todavía no se ha determinado.
Cómo Linux Administra los Dispositivos de Almacenamiento
Archivos de dispositivo 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 dispositivos de almacenamiento comienzan con sd
o hd
seguido de una letra. Por ejemplo, la primera unidad en un servidor suele ser algo así como /dev/sda
.
Las particiones en estas unidades también tienen archivos dentro de /dev
, representados al agregar el número de partición al final del nombre de la unidad. Por ejemplo, la primera partición en el disco del ejemplo anterior sería /dev/sda1
.
Mientras que los archivos del dispositivo /dev/sd*
y /dev/hd*
representan la forma tradicional de referirse a unidades y particiones, existe una desventaja significativa al usar estos valores por sí mismos. El kernel de Linux decide qué dispositivo obtiene qué nombre en cada arranque, por lo que esto puede generar escenarios confusos en los que los dispositivos cambian los nodos del dispositivo.
Para evitar este problema, el directorio /dev/disk
contiene subdirectorios correspondientes con formas diferentes y más persistentes para identificar discos y particiones en el sistema. Estos contienen enlaces simbólicos que se crean en el inicio de los archivos correctos /dev/[sh]da*
. Los enlaces se nombran de acuerdo con el rasgo de identificación del directorio (por ejemplo, mediante la etiqueta de partición en el directorio /dev/disk/by-partlabel
). Estos enlaces siempre apuntan a los dispositivos correctos, por lo que pueden usarse como identificadores estáticos para espacios de almacenamiento.
Algunos / 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 una partición. Este directorio consta de enlaces que llevan el nombre de estas etiquetas proporcionadas por el usuario.by-uuid
: los UUID, o identificadores únicos universales, son una cadena larga y única de letras y números que se pueden usar como ID para un recurso de almacenamiento. Por lo general, no son muy legibles para los humanos, pero casi siempre se garantiza que son únicos, incluso en todos los sistemas. Como tal, puede ser una buena idea usar UUID para hacer referencia al almacenamiento que puede migrar entre sistemas, ya que las colisiones de nombres son menos probables.by-partlabel
yby-partuuid
: Las tablas GPT ofrecen su propio conjunto de etiquetas y UUID, que también pueden usarse para la identificación. Esto funciona de la misma manera que los dos directorios anteriores, pero utiliza identificadores específicos de GPT.by-id
: Este directorio contiene enlaces generados por los propios números de serie del hardware y el hardware al que están conectados. Esto no es completamente persistente, ya que la forma en que el dispositivo está conectado al sistema puede cambiar su nombreby-id
.by-path
: comoby-id
, este directorio se basa en la conexión de los dispositivos de almacenamiento al sistema mismo. Los enlaces aquí se construyen utilizando la interpretación del sistema del hardware utilizado para acceder al dispositivo. Esto tiene los mismos inconvenientes queby-id
que conectar un dispositivo a un puerto diferente puede alterar este valor.
Por lo general, by-label
o el by-uuid
son las mejores opciones para la identificación persistente de dispositivos específicos.
Montaje del Dispositivos de Bloque
El archivo del dispositivo dentro de /dev
se usa para comunicarse con el controlador del kernel para el dispositivo en cuestión. 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 cuántos dispositivos físicos estén involucrados, está representado por un único árbol de archivos unificado. Como tal, cuando se va a usar un sistema de archivos en una unidad o partición, debe engancharse en el árbol existente. El montaje es el proceso de adjuntar una partición o unidad formateada a un directorio dentro del sistema de archivos de Linux. A continuación, se puede acceder al contenido de la unidad desde ese directorio.
Las unidades casi siempre se montan en directorios vacíos dedicados (montar en un directorio no vacío significa que los contenidos habituales del directorio serán inaccesibles hasta que se desmonte el disco). Existen muchas opciones de montaje diferentes que se pueden configurar para alterar el comportamiento del dispositivo montado. Por ejemplo, la unidad puede montarse en modo de solo lectura para garantizar que su contenido no se modifique.
El Estándar de jerarquía del sistema de archivos recomienda utilizar /mnt
o un subdirectorio debajo para los sistemas de archivos montados temporalmente. Si esto coincide con su caso de uso, este es probablemente el mejor lugar para montarlo. No hace recomendaciones sobre dónde montar más almacenamiento permanente, por lo que puede elegir el esquema que desee. En muchos casos, los subdirectorios /mnt
o /mnt
se utilizan para un almacenamiento más permanente también.
Hacer Montajes Permanentes con / etc / fstab
Los sistemas Linux miran un archivo llamado /etc/fstab
(tabla del sistema de archivos) para determinar qué sistemas de archivos 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 unidad de sistema .mount
, aunque estos no son comunes en este momento).
El /etc/fstab
es bastante simple. Cada línea representa un sistema de archivos diferente que debe montarse. Esta línea especifica el dispositivo de bloque, el punto de montaje para adjuntarlo, el formato de la unidad, y las opciones de montaje, así como algunas otras piezas de información.
Gestión de Almacenamiento
Si bien la mayoría de los casos de uso simple no necesitan estructuras de gestión adicionales, se pueden obtener más rendimiento, redundancia o flexibilidad mediante paradigmas de gestión más complejos.
¿Qué es RAID?
RAID significa r edundant un RRay de i ndependent isks d. RAID es una tecnología de gestión de almacenamiento y virtualización que le permite agrupar unidades y administrarlas como una sola unidad con capacidades adicionales.
Las características de una matriz RAID dependen de su nivel RAID, que básicamente define cómo se relacionan entre sí los discos de la matriz. El nivel elegido tiene un impacto en el rendimiento y la redundancia del conjunto. Algunos de los niveles más comunes son:
- RAID 0 : este nivel indica el rayado de la unidad. Esto significa que a medida que los datos se escriben en la matriz, se divide y distribuye entre los discos del conjunto. Esto ofrece un aumento de rendimiento ya que se pueden escribir o leer discos múltiples simultáneamente. La desventaja es que una sola falla de la unidad puede perder todos los datos en toda la matriz, ya que ningún disco contiene suficiente información sobre los contenidos para reconstruir.
- RAID 1 : RAID 1 es básicamente reflejo de unidad. Todo lo que está escrito en una matriz RAID 1 se escribe en varios discos. La principal ventaja es la redundancia de datos, que permite que los datos sobreviven al disco duro, pierden en cualquier lado del espejo. Dado que las unidades múltiples contienen los mismos datos, la capacidad utilizable se reduce a la mitad.
- RAID 5 : RAID 5 graba datos en varias unidades, similar a RAID 0. Sin embargo, este nivel también implementa una paridad distribuida en las unidades. Esto básicamente significa que si la unidad falla, las unidades restantes pueden reconstruir la matriz usando la información de paridad compartida entre ellas. La información de paridad es suficiente para reconstruir cualquier disco, lo que significa que la matriz puede sobrevivir a cualquier pérdida de disco. La información de paridad reduce el espacio disponible en la matriz por la capacidad de un disco.
- RAID 6 : RAID 6 tiene las mismas propiedades que RAID 5, pero proporciona doble paridad. Esto significa que los arreglos RAID 6 pueden resistir la pérdida de 2 unidades. La capacidad de la matriz se ve nuevamente afectada por la cantidad de paridad, lo que significa que la capacidad utilizable se reduce por dos discos que valen espacio.
- RAID 10 : RAID 10 es una combinación de niveles 1 y 0. Primero, se hacen dos conjuntos de arreglos duplicados. Luego, los datos se muestran a través de ellos. Esto crea una matriz que tiene algunas características de redundancia a la vez que proporciona un buen rendimiento. Sin embargo, esto requiere bastantes unidades, y la capacidad total es la mitad del espacio de disco combinado.
¿Qué es LVM?
LVM, o L gico V olumen GESTIÓN, es un sistema que abstrae las características físicas de los dispositivos de almacenamiento subyacentes con el fin de proporcionar una mayor flexibilidad y potencia. LVM le permite crear grupos de dispositivos físicos y administrarlos como si fuera un solo bloque de espacio. A continuación, puede segmentar el espacio según sea necesario en volúmenes lógicos, que funcionan como particiones.
LVM se implementa además de las particiones normales, y funciona en torno a muchas de las limitaciones inherentes a las particiones clásicas. Por ejemplo, al usar volúmenes LVM, puede expandir particiones fácilmente, crear particiones que abarcan múltiples unidades, tomar instantáneas en vivo de particiones y mover volúmenes a diferentes discos físicos. LVM se puede usar junto con RAID para proporcionar una gestión flexible con características de rendimiento RAID tradicionales.
¿A dónde ir?
Si tiene un nuevo dispositivo de almacenamiento que desea usar en su sistema Linux, este artículo lo guiará a través del proceso básico de partición, formateo y montaje de su nuevo sistema de archivos. Esto debería ser suficiente para la mayoría de los casos de uso en los que está principalmente interesado en agregar capacidad adicional.
Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian