Está en la página 1de 15

Universidad Nacional de Santiago del Estero

Facultad de Ciencias Exactas y Tecnologías

Departamento de Informática Año Académico 2019


Licenciatura en Sistemas de Información

Gestión del Almacenamiento en Linux


Laboratorio 2

1. Aspectos Básicos
Los archivos son un mecanismo de abstracción, proporcionan una manera de almacenar
información en el disco y después leerla. Los tipos de archivos pueden agruparse en tres grandes
tipos:

• Regulares: se utilizan para almacenar información del usuario


• Caracteres: se relacionan con la entrada-salida y se utilizan para modelar dispositivos de
E/S en serie, tales como terminales, impresoras y redes.
• Bloque: Se utilizan para modelar discos.

El acceso a los archivos puede ser secuencial o aleatorio. En el acceso secuencial, para acceder
al n-ésimo bloque del archivo es necesario atravesar previamente por los n-1 bloques de datos.
En cambio, en un archivo que permite el acceso aleatorio a través de un cálculo es posible llegar
a la posición deseada.

Otro aspecto a tener en cuenta es que los archivos tienen asociados atributos que los
caracterizan tales como nombre, tamaño, contraseña, banderas que indican estados (por
ejemplo, si está oculto), el creador, el propietario, los permisos requeridos, entre otros. En la
Figura 1 se muestra una porción de la salida del comando ls -l /var/log lo cual permite listar los
archivos en el directorio /var/log junto con información de algunos de los atributos asociados a
cada archivo. La primera columna proporciona información de permisos para: 1) el usuario
dueño del archivo, 2) los usuarios pertenecientes al grupo que pueden acceder al archivo y 3)
para cualquier otro usuario. La segunda columna indica el dueño del archivo, la tercera muestra
el nombre del grupo que tiene permiso para operar sobre el archivo, la cuarta columna indica el
tamaño del archivo, la quinta, sexta y séptima columna especifican el mes, día y hora de creación
o de la última modificación del archivo y finalmente la última columna indica el nombre del
archivo. El comando ls -la nos permite listar los archivos ocultos existentes en el directorio.

Figura 1. Ejecución del comando ls -l sobre el directorio /var/log

Las operaciones básicas sobre archivos son: la creación, la eliminación, la apertura, el cierre de
un archivo, escribir sobre un archivo, agregar información al final, obtener atributos del archivo,
establecer atributos, renombrar.
P á g i n a 1 | 15
Los archivos a su vez son almacenados en directorios para facilitar su localización. Para poder
localizar el archivo es necesario indicar su ubicación a través de un nombre de ruta. En general
se utilizan dos métodos generales para proporcionar los nombres de rutas:

• Nombre de ruta absoluto: consiste en la ruta desde el directorio raíz al archivo.


• Nombre de ruta relativo: Ésta se utiliza en conjunto con el concepto del directorio de
trabajo (también llamado directorio actual). En Linux para conocer el directorio de
trabajo actual se utiliza el comando pwd. Un usuario puede designar un directorio como
el directorio de trabajo actual, en cuyo caso todos los nombres de las rutas que no
empiecen en el directorio raíz se toman en forma relativa al directorio de trabajo. Por
ejemplo, si el directorio de trabajo actual es /usr/ast, entonces el archivo cuya ruta
absoluta sea /usr/ast/mailbox se puede referenciar simplemente como mailbox.

Las operaciones que pueden realizarse sobre directorios son, por ejemplo: crear directorios,
eliminar directorios, abrir, cerrar, leer un directorio, renombrar, ligar directorios y desligar. La
vinculación (ligado) es una técnica que permite a un archivo aparecer en más de un directorio.
Esta llamada al sistema especifica un archivo existente y el nombre de una ruta, creando un
vínculo desde el archivo existente hasta el nombre especificado por la ruta. Este tipo de enlace
se conoce como enlace duro porque incrementa el contador en el nodo-i del archivo (para llevar
la cuenta del número de entradas en el directorio que contiene el archivo).

Una variante sobre la idea de vincular archivos es el vínculo simbólico (liga simbólica). En vez de
tener dos nombres que apunten a la misma estructura de datos interna que representan un
archivo, se puede crear un nombre que apunte a un pequeño archivo que nombre a otro.
Cuando se utiliza el primer archivo, por ejemplo, abierto, el sistema de archivos sigue la ruta y
busca el nombre al final. Después empieza el proceso de búsqueda otra vez, utilizando el nuevo
nombre.

En Linux para crear enlaces se utiliza el comando ln. Por defecto con este comando se crean
enlaces duros o físicos. Para crear un enlace simbólico debe pasarse el parámetro -s. Por
ejemplo, para crear un enlace simbólico en el directorio home del usuario alumno al archivo
/var/log/syslog se ejecuta el siguiente comando:

ln -s /var/log/syslog /home/alumno/archivo-de-errores.

2. Implementación del sistema de archivos.


Los sistemas de archivos se almacenan en discos. La mayoría de los discos se pueden dividir en
una o más particiones, con sistemas de archivos independientes en cada partición. El sector 0
del disco se conoce como el MBR (Master Boot Record, registro maestro de arranque) y se utiliza
para arrancar la computadora. El final del MBR contiene la tabla de particiones, la cual
proporciona las direcciones de inicio y de fin de cada partición. Una de las particiones en la tabla
se conoce como activa. Cuando se arranca la computadora, el BIOS lee y ejecuta el MBR. Lo
primero que hace el programa MBR es localizar la partición activa, leer su primer bloque,
conocido como bloque de arranque, y lo ejecuta. El programa en el bloque de arranque carga el
sistema operativo contenido en esa partición.

A menudo el sistema de archivos contendrá algunos de los elementos que se muestran en la


Figura 2. El primero es el superbloque. Contiene todos los parámetros clave acerca del sistema
de archivos y se lee en la memoria cuando se arranca la computadora o se entra en contacto
con el sistema de archivos por primera vez. La información típica en el superbloque incluye un
P á g i n a 2 | 15
número mágico para identificar el tipo del sistema de archivos, el número de bloques que
contiene el sistema de archivos y otra información administrativa clave.

Figura 2. Posible distribución del sistema de archivos

A continuación, podría venir información acerca de los bloques libres en el sistema de archivos,
por ejemplo, en la forma de un mapa de bits o una lista de apuntadores. Ésta podría ir seguida
de los nodos-i, un arreglo de estructuras de datos, uno por archivo, que indica todo acerca del
archivo. Después de eso podría venir el directorio raíz, que contiene la parte superior del árbol
del sistema de archivos. Por último, el resto del disco contiene todos los otros directorios y
archivos.

En un sistema Linux existe solamente una estructura de directorios sin importar de cuántos
dispositivos de almacenamiento físico se dispongan. Para para poder utilizar estos dispositivos
físicos, es necesario asociarlos a cada uno con un directorio del sistema. Este directorio recibe
el nombre de punto de montaje.

Los dispositivos de almacenamiento generalmente necesitan ser particionados. Una partición es


una división lógica que se hace a un dispositivo de almacenamiento con el propósito de definir
un espacio determinado para un uso en particular, mientras que un sistema de archivos define
la forma en que se estructurarán los contenidos (archivos y directorios) en una partición.

En cualquier sistema Linux el espacio utilizado por ciertos directorios (/home y /var, por nombrar
dos ejemplos) puede llegar a aumentar o variar constantemente. El crear una partición dedicada
para cada uno de ellos presenta dos ventajas al menos:

1. Limitar el espacio que pueden ocupar sus contenidos (de manera que su crecimiento no
perjudique el de otros directorios)
2. Impedir que una partición llena afecte críticamente el funcionamiento de todo el
sistema.

En cuanto a los sistemas de archivos, los más utilizados hoy en día son ext4 y xfs.

El sistema de archivos ext4 se caracteriza por los siguientes atributos:

• Tamaño máximo de sistema de archivos (generalmente se extiende a toda la partición):


1 EiB = 1024 PB (1 PiB = 1024 TiB, 1 TiB = 1024 GiB)

P á g i n a 3 | 15
• Tamaño máximo de archivos: 16 TiB
• Cantidad máxima de subdirectorios: 64.000
• Journaling: permite la recuperación de archivos que estaban siendo escritos en el
momento de un fallo del sistema. Si bien esta característica no elimina totalmente las
posibilidades de encontrar archivos corruptos, sí contribuye a la confiabilidad del
sistema de archivos y a la rapidez del chequeo de los mismos.
• Permite aumentar o disminuir el tamaño del sistema de archivos.

En tanto que el sistema de archivos xfs se caracteriza por estos atributos:

• Tamaño máximo de sistema de archivos (generalmente se extiende a toda la partición):


18 EiB en sistemas operativos de 64 bits y de 16 TiB en 32 bits.
• Tamaño máximo de archivos: 9 EiB
• Journaling
• Es posible aumentar el tamaño del sistema de archivos, pero no disminuirlo

1.1. Crear particiones

En Linux, la herramienta tradicional para administrar particiones basadas en MBR (presente por
defecto en computadoras fabricadas hasta 2009 aproximadamente) es fdisk, mientras que
desde 2010 en adelante (particiones basadas en GPT) se comenzó a utilizar también otra utilidad
llamada gdisk. Todas las operaciones relacionadas con la creación de particiones, sistemas de
archivos, y montaje de dispositivos deben ser realizadas por root o con un usuario con permisos
de superusuario.

El estándar GPT permite crear hasta 128 particiones primarias en un mismo disco, y permite
alcanzar tamaños de particiones no soportados por MBR (el cual soporta hasta 2 TB y hasta 4
particiones primarias – si se necesitan más particiones se puede reemplazar una de las primarias
por una extendida que pueda dividirse en múltiples particiones lógicas).

Para crear una partición con fdisk, utilizamos el comando del mismo nombre seguido por el
identificador de dispositivo en cuestión. Por ejemplo, para /dev/sdb:

fdisk /dev/sdb

En la pantalla siguiente se puede presionar la tecla m para ver el menú de ayuda como se
muestra en la Figura 3.

P á g i n a 4 | 15
Figura 3. Interface presentada por la aplicación fdisk.

Las operaciones más usuales que se pueden llevar a cabo a partir de este momento son las
siguientes:

• m: mostrar el menú de ayuda


• p: mostrar la tabla de particiones del dispositivo
• l: mostrar los tipos de particiones soportadas por fdisk
• n: agregar una nueva partición
• d: borrar una partición existente
• w: guardar los cambios en la tabla de particiones y salir
• q: salir sin guardar cambios

Algunos puntos importantes para destacar:

• Al crear una nueva partición, se tiene que confirmar si se desea que sea una partición
primaria o una extendida. Si no hay creada ninguna partición todavía, se debería elegir
primaria. Para el comienzo de la partición es conveniente aceptar el valor ofrecido por
defecto por fdisk presionando Enter. Para la finalización de la misma es conveniente
especificar el tamaño deseado de la misma utilizando el signo + seguido de un número
y de la nomenclatura M, o G (por MB y GB, respectivamente).
• La primera partición de /dev/sdb recibirá el identificador /dev/sdb1, la segunda
/dev/sdb2, y así sucesivamente. Por defecto, al crear una nueva partición, se le asignará
el tipo Linux (83). Si se desea cambiarlo, se puede listar los tipos disponibles con L, elegir
el adecuado, y luego asignarlo con la opción t.
• Si en el dispositivo seleccionado existe más de una partición y se desea borrar una de
ellas, se tiene que especificar el número de la misma (a partir del orden en el que
aparecen al mostrar la tabla de particiones).
• Antes de confirmar cualquier cambio realizado, es importante revisar la tabla de
particiones, ya que una vez que se guarden los cambios y se salga del menú de fdisk es

P á g i n a 5 | 15
probable que los mismos sean irreversibles (lo cual es particularmente crítico si se ha
modificado una partición que contenía datos).

1.2. Crear sistemas de archivos

Una vez que se dispone de una nueva partición, es hora de crear un sistema de archivos sobre
la misma a fin de poder utilizarla. La utilidad por excelencia para realizar esta tarea es mkfs (entre
sus variantes podemos destacar mkfs.ext4 y mkfs.xfs para sistemas de archivos ext4 y xfs
respectivamente).

Entre las diversas opciones que se disponen en fdisk, -L en particular es de gran utilidad para
asignarle una etiqueta al sistema de archivos, mediante la cual se puede identificarlo más
fácilmente a la hora de montarlo y disponerlo finalmente para su uso. Para crear un sistema de
archivos del tipo ext4 en /dev/sdb1 y asignarle la etiqueta ALUMNO (el límite es de 16
caracteres) se utiliza el siguiente comando:

mkfs.ext4 -L ALUMNO /dev/sdb1

1.3. Montar particiones

Para montar dispositivos de almacenamiento luego de que se haya creado un sistema de


archivos se dispone de dos alternativas:

1. De manera permanente implica agregar al dispositivo (junto con las opciones de


montaje correspondientes) en el archivo /etc/fstab. Esto hará que el dispositivo esté
disponible cuando se inicia el sistema y durante su uso, salvo que se lo desmonte
explícitamente.
2. Bajo demanda significa montar el dispositivo cuando se lo necesite, luego de lo cual se
prescinde de su uso y se lo desmonta.

1.3.1. El archivo /etc/fstab

El archivo /etc/fstab contiene información sobre los sistemas de archivos que deben montarse
al inicio del sistema. Cada línea en el archivo posee los siguientes 6 campos:

• El primer campo representa el dispositivo de almacenamiento (local o remoto) que debe


montarse. Puede especificarse mediante el identificador de dispositivo (por ejemplo,
/dev/sdb1, la primera partición de /dev/sdb) o mediante la etiqueta asignada al
momento de crear el sistema de archivos (LABEL=ALUMNO como se mostró en el
ejemplo anterior), o mediante el UUID del sistema de archivos (lo cual puede
averiguarse mediante el comando blkid). El UUID (Universally Unique IDentifier) puede
utilizarse para identificar un dispositivo de almacenamiento, independientemente de su
nombre o punto de montaje.
• El segundo campo muestra el punto de montaje en el que se anexará el sistema de
archivos.
• El tercer campo especifica el tipo de sistema de archivos (ext4, xfs, etc.)
• El cuarto campo indica las opciones de montaje (separadas por comas si hay más que
una). En el man page del comando mount podemos encontrar una descripción detallada
de cada una.
• El quinto campo es hoy una opción en desuso.
• El sexto campo indica si el sistema de archivos debe chequearse al iniciar el sistema y en
qué orden: para / (la raíz del árbol de directorios) siempre debería ser 1, mientras que
P á g i n a 6 | 15
para el resto siempre 2. Si este campo no existe o es 0, significa que no se debe chequear
el sistema de archivos.

Dicho esto, se puede montar /dev/sdb1 en /mnt/pruebas (este directorio debe existir) mediante
cualquiera de las tres maneras siguientes, agregando la línea correspondiente a /etc/fstab:

• Especificando el identificador de dispositivo:

/dev/sdb1 /mnt/pruebas ext4 defaults 0 2

• Mediante la etiqueta asignada al sistema de archivos:

LABEL=ALUMNO /mnt/pruebas ext4 defaults 0 2

• Mediante el UUID. Para averiguar el UUID se emplea el comando blkid:

Luego se agrega la siguiente línea en el archivo fstab:


UUID=93a0999f-23a9-4b96-9483-680956fe17ad /mnt/pruebas ext4 defaults 0 2
Luego de guardar los cambios en el archivo /etc/fstab, los cambios que se acaban de
introducir entrarán en efecto en el próximo reinicio, aunque también es posible hacer que
se apliquen de manera inmediata con el comando mount -a (de esta manera se fuerza el
montaje de todos los dispositivos listados en el archivo).
1.3.2. Montar dispositivos de almacenamiento bajo demanda
Si lo que se desea es montar un dispositivo bajo demanda (de uso por tiempo limitado), se
utiliza el comando mount con la opción -t para indicar el tipo de sistema de archivos a
utilizar seguido del identificador del dispositivo, LABEL, o UUID, y el punto de montaje.
Por ejemplo, si se quisiera montar el sistema de archivos con LABEL=ALUMNO en
/mnt/pruebas solamente de manera temporaria, se puede utilizar el siguiente comando:
mount -t ext4 LABEL=ALUMNO /mnt/pruebas
Para desmontar un sistema de archivos se emplea el comando umount seguido por el punto
de montaje:
umount /mnt/pruebas
Cuando se conecta un nuevo dispositivo al equipo (una unidad USB por nombrar un
ejemplo), se puede identificar el nombre del dispositivo al observar la salida de
dmesg | tail
A continuación, se puede proceder a montar el dispositivo, con la excepción de que si el
mismo ya había estado en uso no será necesario crear nuevamente el sistema de archivos.
1.4. Chequear y reparar sistemas de archivos defectuosos
Si el sistema se apaga abruptamente (por ejemplo, durante un corte de energía, y no se
cuenta con UPSs), pueden ocasionarse errores en un sistema de archivos si se están
realizando operaciones de lectura y escritura sobre el mismo. Para intentar solucionarlos,

P á g i n a 7 | 15
se debe desmontar el sistema de archivos (si el mismo se encuentra montado) y utilizar el
comando fsck.
Suponga que se desea chequear el sistema de archivos en /dev/sdb1. Luego de desmontarlo
con umount /dev/sdb1, se ejecutará el siguiente comando:
fsck /dev/sdb1
Si se encontraran errores, se puede presionar la letra y para confirmar la reparación o n
para omitirla. Alternativamente se puede cancelar la operación con Ctrl + C y luego ejecutar
fsck con la opción -y (para confirmar las reparaciones automáticamente). Por otro lado, se
podría simular la reparación (a fin de ver qué es lo que haría) en vez de ejecutarla, utilizando
la opción -n de esta manera:
fsck -n /dev/sdb1
1.5. Archivado y compresión
En Linux, el archivado y compresión se realiza utilizando el comando tar (archivado) en
conjunto con gzip, bzip2, o xz (compresión). La posibilidad de disponer de un solo archivo
comprimido (a menudo llamado tarball) que contenga muchos otros (incluyendo
directorios) da la posibilidad de distribuirlo fácilmente mediante correo electrónico o
transferirlo a través de una red, con la ventaja adicional de que su tamaño es menor que la
suma de sus contenidos.
Para comprimir y empaquetar archivo1.txt, archivo2.txt, y archivo3.txt con gzip y tar en un
archivo de nombre tarcongzip.tar.gz dentro del subdirectorio resultados debemos hacer lo
siguiente:
tar -czvf resultados/tarcongzip.tar.gz archivo1.txt archivo2.txt archivo3.txt
Con tar y bzip2:
tar -cjvf resultados/tarconbzip2.tar.bz2 archivo1.txt archivo2.txt archivo3.txt
Finalmente, con tar y xz:
tar -cJvf resultados/tarconxz.tar.xz archivo1.txt archivo2.txt archivo3.txt
A continuación, se descomprimirá tarcongzip.tar.gz, tarconbzip2.tar.bz2, y tarconxz.tar.xz
en resultados/1, resultados/2, y resultados/3. La opción -C (mayúscula) permite indicar un
directorio destino para los archivos descomprimidos antes de realizar la operación
propiamente dicha:
tar -xzvf resultados/tarcongzip.tar.gz -C resultados/1
tar -xjvf resultados/tarconbzip2.tar.bz2 -C resultados/2
tar -xJvf resultados/tarconxz.tar.xz -C resultados/3
Algunos puntos importantes a tener en cuenta en todos los casos:

• La opción -c indica que se está creando un tarball, mientras que -x indica que se lo
está descomprimiendo.
• -v muestra la lista de archivos que fueron procesados.
• -f es la última opción y debe preceder al nombre del tarball a crear.

P á g i n a 8 | 15
• gzip es la herramienta más antigua de las tres y provee la menor compresión,
mientras que xz es la más nueva y presenta una mayor compresión, pero a costa de
un mayor uso de recursos del sistema al momento de comprimir. Finalmente, bzip2
es una especie de promedio entre las otras dos.

2. Redundant Array of Independent Disks (RAID)


RAID es el acrónimo de Redundant Array of Independent Disks. Consiste en una solución de
almacenamiento que combina dos o más discos en una misma unidad lógica a fin de proveer
redundancia de datos y/o aumentar el rendimiento de las operaciones de lectura o
escritura. Sin embargo, ambas características dependen de la manera en que los discos se
hayan organizado en lo que se denomina un nivel de RAID dado.
Sin importar el nivel de RAID que se haya elegido ni cuán confiable sea la tecnología de
almacenamiento que se use para implementarlo, un arreglo RAID no reemplaza la necesidad
de una estrategia de backup apropiada – por más que provea redundancia de datos.
En las siguientes secciones, se introducirá el tema presentando solamente los tres niveles
de RAID más utilizados RAID 0, RAID 1, y RAID 1+0 o RAID 10. En las imágenes ilustrativas,
los bloques de datos escritos en los discos se indican como A1, A2, A3, y así sucesivamente.
2.1. RAID 0
Conocido también por su nombre en inglés stripe (debido a que distribuye los datos de
forma pareja entre dos o más discos). Este nivel de RAID provee un aumento en el
rendimiento de las operaciones de lectura, pero no provee tolerancia a fallos. Requiere de
al menos dos discos para implementarse, y el tamaño resultante es igual a la suma del
tamaño de cada disco.

Figura 4. Esquema de un RAID 0


2.2. RAID 1
Más conocido como mirror (espejo), este arreglo de discos provee redundancia de datos al
escribirlos simultáneamente en dos discos, de manera separada como se muestra en la
figura 5. Esto permite que, si uno de los discos experimenta un fallo, la misma información
está disponible en el otro. Sin embargo, impacta negativamente en el rendimiento de
escritura ya que un dato tiene que ser escrito dos veces. Al reemplazar el disco defectuoso
por uno nuevo se puede reconstruir el arreglo y copiar la información en el mismo. Requiere
de al menos dos discos para implementarse, y el tamaño resultante es igual al disco de
menor tamaño.

P á g i n a 9 | 15
Figura 5. Esquema de un RAID 1
2.3. RAID 1+0
También llamado RAID 10, este nivel de RAID es una especie de “combinación” de los dos
anteriores: consiste en un RAID 0 (stripe) de dos arreglos RAID 1 (mirror).

Figura 6. Esquema de un RAID 10


Como es de esperar, este arreglo provee tanto una mejora en el rendimiento general de
lectura y escritura como redundancia, aunque admite como máximo el fallo de un disco en
cada espejo. El tamaño resultante es igual a la suma de la capacidad de los dos RAIDs 1.
2.4. Crear RAID por software
La herramienta que se utiliza para crear RAIDs por software en Linux es mdadm
(abreviación de multiple disks admin). Para instalar hacemos:
apt-get install mdadm
Para las siguientes se supondrá la existencia de los dispositivos /dev/sdb, /dev/sdc,
/dev/sdd y /dev/sde.
2.4.1. RAID 0
Si se quisiera crear un RAID 0 utilizando /dev/sdb1 y /dev/sdc1, se utilizará el siguiente
comando:
mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sdc1
donde la opción --verbose permite obtener cierto grado de detalle sobre el progreso de la
creación del arreglo, mientras que --level y --raid-devices se emplean para indicar el nivel y
la cantidad de dispositivos a utilizar, respectivamente.

P á g i n a 10 | 15
2.4.2. RAID 1
El comando para crear un RAID 1 es esencialmente idéntico al del ejemplo anterior. La
única diferencia radica en el valor de la opción --level:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
2.4.3. RAID 1+0
En este caso se deberían emplear los cuatro discos:
mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[b-e]1
En el ejemplo anterior se puede observar que mdadm admite el uso de una expresión
regular para especificar los discos que se utilizarán sin necesidad de listarlos uno a uno.
2.4.4. Crear un sistema de archivos y montar el dispositivo
Luego de haber creado el RAID (sea del nivel que fuere), es momento de crear un sistema
de archivos sobre el mismo y de montarlo para poder utilizarlo. Sin embargo, antes de esto
se debe agregar el detalle del arreglo en el archivo de configuración
/etc/mdadm/mdadm.conf como primera medida para lograr persistencia. De otra forma, es
posible que cuando el sistema reinicie no lo reconozca con el nombre que se lo creó.
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Por ejemplo, sí se elige ext4 como sistema de archivos y /mnt/miraid como punto de
montaje, se ejecuta lo siguiente:
mkfs.ext4 /dev/md0
mount -t ext4 /dev/md0 /mnt/miraid
El último paso para lograr persistencia consiste agregar la línea necesaria en /etc/fstab y
actualizar el disco RAM inicial:
echo "/dev/md0 /mnt/miraid ext4 defaults 0 0" >> /etc/fstab
update-initramfs -u
2.5. Administración de RAID
En esta sección se explicará cómo monitorear el estado de creación del arreglo, cómo
agregar un disco extra al mismo (para tener listo en el caso de una falla), y cómo simular
una falla. Finalmente, se explicará cómo “reciclar” uno o más discos que hayan formado
parte de un arreglo previamente a fin de usarlos en otro.
Una vez que se ejecuta el comando para crear un arreglo, se puede monitorear el estado de
la creación mediante cualquiera de los siguientes comandos:
cat /proc/mdstat
mdadm --detail /dev/md0

P á g i n a 11 | 15
Figura 7. Ejemplo de la salida de los comandos cat /proc/mdstat y mdadm –detail
/dev/md0
Para simular una falla del disco /dev/sdc1, se utiliza el siguiente comando, prestando
atención a la opción --fail:
mdadm /dev/md0 --fail /dev/sdc1
Una vez que un disco falla se debe reemplazarlo. A continuación, se muestra los comandos
necesarios para agregar la partición /dev/sdg1 al arreglo:
mdadm /dev/md0 --add /dev/sdg1
mdadm --assemble /dev/md0
update-initramfs -u
Para reciclar un disco que fue usado en un arreglo se hace lo siguiente:
mdadm –misc --zero-superblock /dev/sdc1
dd if=/dev/zero of=/dev/sdc1 bs=1M llena al disco con ceros en bloques de 1M
update-initramfs -u

3. Logical Volume Management (LVM)


LVM es un conjunto de herramientas que permiten la administración de unidades de
almacenamiento denominadas volúmenes lógicos. Una de su característica más distintiva
es que provee flexibilidad para administrar el almacenamiento del sistema de manera que
pueda expandirse fácilmente cuando la necesidad así lo requiera.
Una ventaja adicional de LVM es que permite tomar instantáneas de los volúmenes lógicos,
las cuales pueden funcionar como copias de respaldo o ser utilizadas para migraciones,
pruebas, restauraciones, etc., sin afectar el funcionamiento del sistema en su totalidad.

P á g i n a 12 | 15
3.1. Particionado tradicional vs. LVM
Las distribuciones más utilizadas realizan hoy en día la instalación sobre volúmenes lógicos
por defecto.
Para comprender este cambio, se debe recordar que al menos en MBR, hay una limitación
en el número de
particiones primarias por disco. En el caso de que necesitemos redimensionar una de ellas,
se requiere mucho cuidado. Si bien se puede achicar una partición para darle espacio a otra
que haya quedado pequeña, este procedimiento causa los siguientes inconvenientes:

• Provoca downtime. Esto significa que mientras se está redimensionando las


particiones nadie más podrá utilizar el equipo. Si se trata de nuestro equipo
personal, los únicos afectados seríamos nosotros. Pero si estamos hablando de un
servidor al que necesiten acceder otros usuarios, esta alternativa puede no ser
viable.
• Requiere copias de respaldo. Si no se dispone de espacio extra en alguna partición,
no quedará más remedio que agregar otro disco al equipo. Si se quiere utilizar el
nuevo dispositivo para /home (por ejemplo), esto implicará mover todos los
archivos de los usuarios de la ubicación anterior a la nueva. ¿Por qué esto es un
inconveniente? Dependiendo del tamaño del backup, la restauración agregará
tiempo al downtime.
El redimensionado de los volúmenes lógicos bajo LVM se puede realizar sin interrumpir el
funcionamiento normal del equipo. Además, el procedimiento es mucho más rápido que en
el particionado tradicional. Los cambios quedan disponibles a los usuarios inmediatamente
sin necesidad de reiniciar ningún servicio.
3.2. Estructura de LVM
Un volumen lógico es un dispositivo de almacenamiento que puede haber sido creado sobre
la unión de 1) discos enteros o 2) particiones de los mismos utilizando el administrador de
volúmenes lógicos. A diferencia del particionado tradicional, LVM nos provee la flexibilidad
de redimensionar volúmenes lógicos fácilmente.
La estructura de LVM consiste de los siguientes componentes:

• Dos (o más) discos rígidos o particiones sobre los que se crearán los volúmenes
físicos (PVs, de Physical Volume). Es importante aclarar que podemos crear cada
uno de ellos sobre el disco entero directamente o particionarlo primero. Si elegimos
la segunda opción, debemos indicar que la partición sea del tipo 8e (Linux LVM).
• Un grupo de volúmenes (VGs, de Volume Group) se crea a partir de uno o más
volúmenes físicos. Por simplicidad, podemos considerar a un grupo de volúmenes
como una unidad de almacenamiento (similar a un disco entero en el particionado
tradicional).
• En cada VG podemos crear varios volúmenes lógicos, los cuales pueden
considerarse como análogos de las particiones tradicionales.

P á g i n a 13 | 15
Para las siguientes secciones se considerará como disponibles los dispositivos /dev/sdb,
/dev/sdc y /dev/sdd.
3.3. Creación de volúmenes lógicos
Para crear volúmenes físicos sobre los discos disponibles, se debe hacer lo siguiente:
pvcreate /dev/sdb
pvcreate /dev/sdc
pvcreate /dev/sdd
Para mostrar los atributos o ver información sobre un volumen físico se puede utilizar los
comandos pvdisplay y pvs, respectivamente, seguidos de la ruta del PV (pvdisplay /dev/sdb
o pvs /dev/sdb, por ejemplo). Si se omite esta última se mostrará la lista de todos los
volúmenes físicos que existen en el sistema.
Ahora es momento de crear el grupo de volúmenes (en este ejemplo se lo llamará vgcurso).
Solamente se utilizará /dev/sdb y /dev/sdc por ahora para mostrar más adelante lo fácil
que es extender un VG agregando un dispositivo adicional (/dev/sdd). Luego se utilizará
vgs y vgdisplay para ver los detalles del grupo de volúmenes que se procedió a crear.
vgcreate vgcurso /dev/sdb /dev/sdc
Para crear un primer LV de tamaño de 600 MB llamado lvadmin sobre vgcurso, se debe
hacer lo siguiente:
lvcreate -n lvadmin -L 600M vgcurso (si se omite -n lvadmin, el nombre del LV será asignado
automáticamente por lvcreate)
En este punto ya se puede crear un sistema de archivos sobre lvadmin y montarlo en algún
directorio creado previamente para tal fin. Se utilizará /mnt/cursoadmin y se utilizará la
ruta completa al dispositivo:
mkfs.ext4 /dev/vgcurso/lvadmin
mount /dev/vgcurso/lvadmin /mnt/cursoadmin

P á g i n a 14 | 15
Antes de proseguir, habría que asegurarse de que el dispositivo fue correctamente montado
utilizando cualquiera de los siguientes comandos:
mount | grep lvadmin
df -h /mnt/cursoadmin

3.4. Operaciones
Para agregar un PV a un VG, se utilizará el comando vgextend seguido del nombre del VG y
finalmente del PV:
vgextend vgcurso /dev/sdd
Para achicar un LV existente, se debe prestar especial cuidado ya que, si se reduce el tamaño
por debajo del espacio utilizado actualmente, se perderá datos irreversiblemente. Habiendo
tenido eso en cuenta, se puede disminuir el tamaño de lvadmin a 450 MB:
lvresize --resizefs --size 450M vgcurso/lvadmin
La opción --resizefs redimensiona el volumen lógico y el sistema de archivos asociado en un
solo paso. Como el dispositivo está montado actualmente pedirá confirmación para
desmontarlo a fin de proceder con la acción que se le indicó.
Si no se hubiera creado previamente un sistema de archivos se podría utilizar
simplemente el siguiente comando para modificar el tamaño de lvadmin.
lvreduce -L 450M vgcurso/lvadmin
A continuación, se creará un segundo LV -al cual se llamará lvredes- y se le asignará todo el
espacio disponible en vgcurso. El comando a emplear es casi idéntico al que se utilizó en el
post anterior, pero el argumento 100%FREE le indicará a lvcreate que utilice todo el espacio
disponible para el nuevo volúmen lógico.
lvcreate -n lvredes -l 100%FREE vgcurso
Otros comandos útiles son pvremove, vgremove, y lvremove (seguidas de la ruta al PV, VG,
y LV, respectivamente) se utilizan para quitar el dispositivo de la estructura de LVM. Como
es de esperarse, esto NO elimina el dispositivo subyacente – solamente remueve la etiqueta
que lo identifica como volumen físico, grupo de volúmenes, o volumen lógico.
vgrename y lvrename (seguidas del VG y de la combinación VG/LV actuales,
respectivamente) permiten renombrar grupos de volúmenes y volúmenes lógicos. Por
ejemplo, para renombrar vgcurso como vgcarreralinux y lvadmin como lvadministrador
debemos hacer
vgrename vgcurso vgcarreralinux
lvrename vgcarreralinux lvadmin lvadministrador

P á g i n a 15 | 15

También podría gustarte