Discos y sistemas de archivos
Introducción
Nota preliminar: las unidades de medida de almacenamiento utilizadas en este capítulo y a lo largo de este libro emplean la representación del uso tradicional en kilobytes, según la regla 1 kb = 1024 bytes, salvo que se especifique lo contrario.
1. Nomenclatura
Dependiendo del tipo de controladores e interfaces a los que estén conectados los discos, Linux da diferentes nombres a los archivos especiales de los periféricos de disco. Cada disco está representado por un archivo especial de tipo bloque. Lo mismo ocurre con cada partición.
a. IDE
Los discos conectados a las controladoras IDE se denominan hdx:
-
hda: IDE0, Master
-
hdb: IDE0, Slave
-
hdc: IDE1, Master
-
hdd: IDE1, Slave
Linux utiliza una API llamada libata para acceder a todos los discos IDE, SCSI, USB, FireWire, etc. En este caso, el sistema de nomenclatura utiliza el de los discos SCSI, que se analiza en la siguiente sección. Por ello, la representación de los discos en el sistema de nomenclatura hdx se ha vuelto rara.
b. SCSI, SATA, USB, FireWire, etc.
Los discos conectados a este tipo de controladores se denominan sdx. La enumeración de los discos se realiza en el mismo orden en que se detectan las tarjetas y adaptadores SCSI:
-
sda: primer disco SCSI.
-
sdb: segundo disco SCSI.
-
sdc: tercer disco SCSI.
2. Funcionamiento de un sistema de archivos
a. Principio
El formateo de un disco, llave o cualquier otro soporte de datos consiste...
Particionar
1. División lógica
Un disco puede representarse por una larga franja de espacio de almacenamiento dividida en casillas que pueden contener una determinada cantidad de información. La partición es una división lógica del disco. El disco físico, real, se divide en varios discos virtuales o lógicos: las particiones. Cada partición se ve como un disco independiente y contiene su propio sistema de archivos.
2. Organización de un disco
a. El MBR
El primer sector es el MBR (Master Boot Record) o zona de arranque. Con un tamaño de 512 bytes, contiene en sus primeros 446 bytes una rutina que inicia el cargador de arranque (GRUB). Los siguientes 64 bytes contienen la tabla de las cuatro particiones primarias.
El MBR se limita a cuatro particiones con un tamaño máximo de 2,2 TB cada una. Solo es compatible con máquinas del tipo BIOS (Basic Input Output System).
Un disco MBR se identifica como MSDOS con el comando parted -l (usuario root).
b. El GPT
GPT (GUID Partition Table) es un nuevo formato de tabla de particiones que intenta sustituir al vetusto MBR. El formato GPT forma parte del nuevo tipo de microprograma UEFI (Unified Extensible Firmware Interface), que sustituye a la BIOS, pero que, sin embargo, puede seguir utilizándose en plataformas BIOS.
GPT permite gestionar hasta 128 particiones de 256 TB cada una. Como UEFI, solo es compatible con sistemas operativos de 64 bits; el par UEFI/GPT solo funcionará con este tipo de sistemas.
Como parte de un sistema BIOS/GPT, el lanzador Grub se instalará en una partición dedicada llamada Bios Boot Partition (con un tamaño mínimo de 31 kB, siendo mejor 1 MB, de tipo bios_grub o 0xEF02).
En un sistema UEFI/GPT, una partición EFI (ESP, EFI System Partition) será creada automáticamente por el sistema UEFI.
Un disco GPT se identifica como gpt con el comando parted -l (usuario root).
c. Las particiones
Una partición es una división lógica del disco. Hay tres tipos de particiones para un disco MBR:
-
las particiones primarias, cuatro por disco,
-
particiones extendidas (primarias extendidas), una por disco (aunque, teóricamente, es posible crear particiones extendidas dentro de otras particiones extendidas),
-
particiones lógicas o unidades lógicas. Son particiones dentro de la partición extendida....
Manipular los sistemas de archivos
1. Crear un sistema de archivos
Una vez que las particiones han sido creadas, hace falta formatearlas. Para ello se utiliza el comando mkfs (make filessystem) con el fin de crear un sistema de archivos en un soporte de almacenaje (disco, partición, llave USB, etc.). Este comando llama a otros programas en función del tipo del sistema de archivos seleccionado.
# mkfs -t typefs options periférico
Es typefs el que determina el tipo de sistema de archivos y, por lo tanto, el programa al que se ha de llamar. Existe un programa para cada tipo de sistema de archivos:
-
btrfs: mkfs.btrfs,
-
ext2: mkfs.ext2,
-
ext3: mkfs.ext3,
-
ext4: mkfs.ext4,
-
ntfs: mkfs.ntfs,
-
reiserfs: mkfs.reiserfs,
-
vfat: mkfs.vfat (para todos los formatos FAT).
Las opciones de cada sistema de archivos son idénticas DESPUÉS de precisar el sistema de archivos. Si se indican antes, corresponden a las opciones de mkfs.
Puede usar directamente los programas correspondientes al tipo de sistema de archivos que desea escribir.
Los sistemas de archivos ext2, ext3 y ext4 aceptan un conjunto de parámetros comunes:
Parámetro |
Significado |
-b |
Tamaño del bloque en bytes, múltiplo de 512. Si no se especifica, se determinará por el tamaño de la partición. Cualquier archivo creado en el disco ocupa al menos un bloque, por lo que, si manipula un gran número de archivos pequeños, debe establecer un valor bajo (por ejemplo, 1024). |
-c |
Verificación de posibles bloques defectuosos antes de crear el sistema de archivos. También puede utilizar el comando badblocks. |
-i |
Proporción bytes/nodo-i. El tamaño de la tabla de nodos-i se calcula en función del tamaño total del sistema de archivos. Un nodo-i ocupa 128 bytes. Poner menos limita el número de archivos posibles, pero ahorra espacio. -i 4096: un nodo-i por cada 4 kB. |
-j |
Creación de un registro de eventos ext3; por lo tanto, crea un sistema de archivos ext3. |
-L |
Label, etiqueta (nombre) del sistema de archivos, útil para el montaje. |
-m |
Porcentaje reservado para el superusuario, predefinido al 5 %. Ponerlo a cero ahorra espacio y el root podrá seguir trabajando en él. |
La siguiente línea de comando crea un sistema de archivos con registro de eventos ext4 con un tamaño de bloque de 2048 bytes y un nodo-i por cada 16 kB. Los usuarios pueden usar...
Las cuotas de discos
1. Definiciones
Las cuotas permiten establecer límites de utilización del sistema de archivos. Estos límites son de dos tipos:
-
nodos-i: limita el número de archivos.
-
bloques: limita el tamaño en disco.
Las cuotas se implementan por sistema de archivos individual y no para todos los sistemas de archivos. Cada usuario puede gestionarse de forma totalmente independiente. Lo mismo ocurre con los grupos. Para cada uso (nodo-i o bloque), se pueden establecer tres límites de tiempo:
-
Límite duro (hard): cantidad máxima de nodos-i o bloques utilizados que el usuario o grupo no puede superar en absoluto. En este caso, no será posible excederlo de ningún modo (crear un archivo o fichero cuyo tamaño supere el límite).
-
Límite suave (soft): cantidad máxima de nodos-i o bloques en uso que el usuario o grupo puede superar temporalmente. En este caso, las creaciones y modificaciones serán posibles solo hasta cierto punto: no se puede sobrepasar el límite duro ni el período de gracia.
-
Período de gracia: durante este tiempo, el usuario puede seguir trabajando en el sistema de archivos. El objetivo es que acabe por regresar al límite suave. Una vez superado el límite, el límite suave se convierte en el límite duro. Pase lo que pase, el usuario nunca podrá superar el límite duro.
2. Puesta en marcha
Implemente...
RAID
El principio de RAID fue abordado en el capítulo Instalación, en la sección Instalaciones específicas. Una vez instalado el sistema, a continuación, se explica cómo gestionar sus volúmenes RAID por software y solucionar los posibles fallos.
Casi todas las operaciones utilizan el comando mdadm. Se instala a través de apt o de Ubuntu Software. Los volúmenes RAID se denominan md0, md1... (Multiple Devices).
Debe disponer de discos de la misma capacidad.
1. Creación de un RAID
Los volúmenes RAID ya han sido creados durante la instalación. Pero puede decidir añadir dos discos adicionales para crear un RAID0 o un RAID1 para sus directorios personales. Para esta presentación rápida, vamos a empezar con la siguiente suposición: tiene dos discos /dev/sdc y /dev/sdd para incluir en el RAID.
Puede utilizar los discos completos o crear particiones de tipo fd. Se obtienen dos particiones /dev/sdc1 y /dev/sdd1.
a. RAID0
Recuerde que este nivel de RAID no cuenta con redundancia: los datos se pierden en caso de fallo porque sus segmentos están dispersos en ambos discos:
# mdadm --create /dev/md0 --level=raid0 --raid-devices=2 /dev/sdc1
/dev/sdd1
La sintaxis habla por sí misma y los parámetros también se utilizarán para los otros tipos de RAID.
b. RAID1
La creación de un RAID1 no presenta ninguna dificultad....
LVM
Al igual que RAID, LVM se presentó en Instalaciones específicas del capítulo Instalación. A continuación, se explica cómo manipular los volúmenes después de su instalación. Se utiliza un nuevo volumen físico /dev/sdc1 que se añadirá o eliminará de un grupo vg01 y de un volumen lógico data01.
1. Volúmenes físicos (PV)
a. Crear un volumen físico
Un volumen físico puede ser un disco completo o una partición convencional dentro de un disco. En este caso, la partición debe ser del tipo 0x8e. Utilice el comando pvcreate para crear uno o más volúmenes físicos:
# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
b. Detalles de un volumen físico
El comando pvdisplay permite ver todos los volúmenes físicos accesibles en su sistema. También puede tomar un nombre de volumen específico.
# pvdisplay /dev/sdc1
"/dev/sdc1" is a new physical volume of "10,00 GB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 10,00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID KwfJuL-wBmv-ecD1-u1Wt-Ba3d-KK2b-iryDra
PE significa Physical Extend, extensión física. En cada VG (Volume Group), y por lo tanto PV, el componente se divide en partes llamadas PE. El PE es la unidad básica de trabajo del LVM. Si un PE tiene 4 MB, significa que el espacio puede cortarse dentro del grupo de volúmenes en franjas de 4 MB. PE se encarga de asignarlas: la creación de un volumen lógico...
Caso particular del ZFS
1. Presentación del ZFS
Se habrá dado cuenta, sin duda, durante la instalación de la distribución Ubuntu Desktop, que es posible formatear el disco como ZFS (experimental). ZFS (Zettabyte File System) es una combinación de un sistema de archivos, un gestor de volúmenes lógicos (como LVM) y un RAID (0, 1, 5 y 6). Permite la compresión sobre la marcha, ofrece altas capacidades de almacenamiento (16 exabytes, o sea: 16 000 millones de miles de millones de bytes o ¡16 000 millones de gigabytes!), tiene un mecanismo de autorreparación y ¡crea instantáneas (snapshots) de su sistema! Lo que hace que este sistema de archivos sea especialmente interesante…
Lamentablemente, ZFS no está integrado en el kernel de Linux por razones de licencia. Además, consume muchos recursos y puede que no sea útil para todas las configuraciones. Probablemente seguirá reservado al mundo de los servidores de almacenamiento.
Sin embargo, es posible formatear el sistema Ubuntu Desktop con este sistema de archivos desde su instalación, a partir la versión 19.10, y así probar ZFS. También es posible instalar los paquetes para gestionarlo posteriormente (zfs-dkms zfsutils-linux).
El vínculo con grub está actualmente asegurado por el servicio zsys.
2. Creación de pools
ZFS utiliza pools, conjuntos...
Puesta en práctica
Caso de estudio
Preguntas
1/ Refiriéndose a la captura de pantalla anterior, ¿cuántos discos físicos tiene esta máquina?
2/ ¿Cuántas particiones tiene para cada disco?
3/ ¿Se utiliza LVM en estos discos?
4/ ¿Con qué comando se podría conocer el destino de /dev/sda2 y /dev/sda5?
5/ ¿Gracias a qué comandos se puede obtener información sobre los volúmenes bajo LVM?
Respuestas
1/ La máquina dispone de tres discos: sda, sdb y sdc.
2/ Tres particiones en sda, una en sdb y ninguna en sdc.
3/ Es imposible determinarlo usando solamente los comandos.
4/ fdisk -l /dev/sda mostrará la información de partición de ese disco:
En este caso, /dev/sda1 es la partición del sistema de arranque montada en /; /dev/sda2 es una partición extendida que contiene /dev/sda5, la partición de intercambio del sistema (swap).
5/ Los comandos pvdisplay, vgdisplay y lvdisplay permiten listar, respectivamente, los volúmenes físicos, grupos de volúmenes y volúmenes lógicos. A continuación, el resultado del comando lvdisplay.
Preguntas
1/ ¿Qué comando debe utilizarse para ampliar el tamaño del volumen lógico anterior en 2 GB?
2/ ¿Cuál fue el impacto de esta extensión en el sistema de archivos correspondiente?
3/ ¿Cómo añadir...