Utilizando unidades SSD desde Linux de modo racional.
Autor: Joel Barrios
Saturday 14th of December 1:15 AM

A continuación explico un procedimiento más o menos sencillo para el almacenamiento de datos personales utilizando un esquema que combina el uso de una unidad HDD ―disco duro― y una unidad SSD ―estado sólido― en un sistema de escritorio con cualquier distribución Linux. El documento a continuación explica a detalle paso a paso todo lo necesario.
Introduccion.
El razonamiento es el siguiente: una unidad SSD agotará más rápidamente los ciclos de escritura simplemente porque dentro de los directorios de inicio de los usuarios existen sub-directorios como ~/.cache
, ~/.config
y ~/.local
, donde las aplicaciones crean y modifican archivos continuamente en segundo plano.
Salvo que se modifiquen algunas variables de entorno, aplicaciones como Google Chrome y derivados, Firefox y derivados, Evolution, Thunderbird, Tracker, cualquier cliente de correo electrónico, cualquier cliente de mensajería instantánea, cualquier reproductor de música, cualquier visor de imágenes y otras aplicaciones, escriben datos en estos directorios continuamente sólo al utilizarlas. Ésto sin mencionar las actualizaciones de sistema, los zócalos ―sockets― y archivos de identidad de proceso ―archivos pid
― de los servicios en segundo plano y otros cambios que ocurren en el sistema de archivos.
Por tanto ―y salvo que se utilicen costosas unidades SSD de alta calidad y durabilidad como las utilizadas para el mercado de servidores― utilizar una unidad SSD promedio de bajo costo ―por ejemplo los modelos SSD Q500 SATA de Kingstone― para el mercado de equipos de escritorio puede agotar sus ciclos de escritura ―por ejemplo hasta 300 TB para unidades de 960 GB de capacidad― en menos tiempo de los que uno esperaría, simplemente por lo que ocurre con el uso normal dentro de ~/.cache
, ~/.config
y ~/.local
.
El método que propongo es un esquema donde el sistema operativo (/
, /boot
y /boot/efi
) y carpetas de inicio (/home
) están en una unidad HDD y las carpetas de Documentos, Imágenes, Música y Vídeos estarán en una unidad SSD.
Ventajas del esquema que propone este documento:
- Los datos de las carpetas sugeridas por lo general tienen poco movimiento, así que se minimizará reducción de ciclos de escritura sobre la unidad SSD.
- Los datos estarán disponibles un una unidad hasta 10 veces más rápida que un HDD SATA regular.
- Las unidades SSD son más resistentes al impacto y duraderas, las más baratas ofrecen hasta 2 millones de horas para el tiempo medio entre fallas (MTFB), así que los datos estarán a salvo en éstas aunque se agoten los ciclos de escritura.
- Podrá aprovechar el espacio del HDD para otras actividades que requieran continuos cambios en el sistema de archivos.
- Si las carpetas personales tienen pocos o mínimos cambios ―o bien si éstos son poco frecuentes― y además hay suficiente capacidad de almacenamiento libre, sera innecesario utilizar
fstrim
cada semana, como ocurriría en el caso de una unidad de estado sólido utilizada para todo el sistema operativo.
Procedimientos.
Por favor lea cuidadosamente todo este documento antes de realizar cualquier cambio en su sistema.
Elegir el sistema de archivos.
Sin pensarlo demasiado: Ext4. Es confiable, estable, sólido como roca, tolerante a interrupciones de energía, se puede deshabilitar el registro por diario (journal) , está soportado por todas las distribuciones Linux existentes y requiere habilidades técnicas básicas.
Otras opciones:
- Btrfs: versátil y con excelente soporte para unidades SSD. Desventajas: aún es inestable ―aún está en desarrollo― y puede haber corrupción y perdida de datos en diversas circunstancias.
- Xfs: sólo si se utilizan unidades SSD de alta calidad y alto costo para el mercado de servidores. Siendo que es un sistema de archivos que imposibilita deshabilitar el registro por diario (journal), es poco adecuado para unidades SSD de bajo costo para el mercado de equipos de escritorio. Se requiere disponer de un respaldo de energía confiable porque Xfs es poco tolerante con las interrupciones de energía. En resumen: sólo es adecuado para unidades de estado sólido más caras del mercado y con un buen respaldo de energía.
- F2FS: diseñado específicamente como sistema de archivos para unidades SSD. Mala idea si se tienen habilidades técnicas limitadas porque pocas distribuciones Linux incluyen soporte para éste y porque si se carece de una buena unidad de respaldo de energía, pueden perderse datos tras una interrupción del suministro eléctrico. Es ideal para un equipo portátil con batería integrada.
Instalar y configurar la unidad SSD.
En el ejemplo asumo que tienen un SSD SATA de suficiente capacidad para las necesidades personales de almacenamiento, que ésta será reconocida en el sistema como /dev/sdb
y que el usuario que hará uso de la unidad SSD se denomina mi-usuario
.
Instale la unidad SDD de suficiente capacidad, nueva y sin datos conectada a otro puerto SATA contiguo al correspondiente a la unidad HDD.
Inicie el sistema y abra una terminal.
Asumiendo que la unidad SDD ―en los procedimientos de ejemplo de este documento― corresponde al dispositivo /dev/sdb
, genere una nueva tabla de particiones tipo GPT en la unidad SDD:
sudo parted /dev/sdb mklabel gpt
Genere una partición tipo ext4
en /dev/sdb1
ejecutando lo siguiente:
sudo parted -a opt /dev/sdb mkpart primary ext4 0% 100%
De formato a la partición /dev/sdb1
y asigne al mismo tiempo una etiqueta con como misdatos
ejecutando algo similar a lo siguiente:
sudo mkfs.ext4 -L misdatos /dev/sdb1
Elimine el registro por diario ―journal― siendo que este es perjudicial para las unidades SSD:
sudo tune2ctl -O ^has_journal /dev/sdb1
Realice un verificación de datos en la nueva partición a fin de realizar los cambios necesarios tras la eliminación del journal:
sudo fsck -fyD /dev/sdb1
Obtenga la identidad de dispositivo de bloque (UUID
) y anote éste, porque ese valor se utilizará más adelante en el archivo /etc/fstab
para añadir el montaje permanente de la partición:
sudo blkid /dev/sdb1
Deberá devolver algo como:
/dev/sdb1: LABEL="misdatos" UUID="3aaee11a-4e1c-6805-733c-484363bf160e" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="84bacc02-55d4-4acf-dbbd-9eeb18f09d59"
En lo anterior, el UUID de este ejemplo corresponde 3aaee11a-4e1c-6805-733c-484363bf160e
. Usted deberá obtener un dato completamente distinto y único.
Monte la partición /dev/sdb1
para validar los procedimientos realizados hasta ahora:
sudo mount /dev/sdb1 /datos
Genere la estructura de directorios que se utilizarán para el esquema propuesto en este documento:
sudo mkdir -p /datos/mi-usuario/{Documentos,Imágenes,Música,Vídeos}
sudo chmod 700 /datos/mi-usuario
sudo chown -R mi-usuario:mi-usuario /datos/mi-usuario
Mueva todos los datos a las capetas Documentos, Imágenes, Música y Vídeos a sus nuevas ubicaciones en el sistema de archivos de la unidad SSD:
mv /home/mi-usuario/Documentos/* /datos/mi-usuario/Documentos/
mv /home/mi-usuario/Imágenes/* /datos/mi-usuario/Imágenes/
mv /home/mi-usuario/Música/* /datos/mi-usuario/Música/
mv /home/mi-usuario/Vídeos/* /datos/mi-usuario/Vídeos/
Ejecuta lo siguiente ―y que puede demorar varios minutos― para consignar los cambios pendientes en el sistema de archivos:
sudo sync
Al terminar lo anterior, edite el archivo /etc/fstab
:
sudo vim /etc/fstab
Añada lo siguiente, donde xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
corresponde al UUID
obtenido previamente con blkid
para la partición /dev/sdb1
:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx /datos ext4 defaults,noatime,nodiratime 1 2
/datos/mi-usuario/Documentos /home/mi-usuario/Documentos none defaults,bind,x-gvfs-hide 0 0
/datos/mi-usuario/Imágenes /home/mi-usuario/Imágenes none defaults,bind,x-gvfs-hide 0 0
/datos/mi-usuario/Música /home/mi-usuario/Música none defaults,bind,x-gvfs-hide 0 0
/datos/mi-usuario/Vídeos /home/mi-usuario/Vídeos none defaults,bind,x-gvfs-hide 0 0
Para la partición en la unidad SSD, las opciones noatime
y nodiratime
impedirán que el sistema realice escritura en los nodos índice ―o inodos― de los archivos para registrar la última fecha qué éstos fueron abiertos.
Para los directorios personales, la opción bind
vinculará los directorios dentro de /datos
hacia las carpetas correspondientes dentro de /home/mi-usuario
y la opción x-gvfs-hide
impedirá que GVFS ―servicio de fondo utilizado por Thunar, Nautilus, Nemo, Caja, Pcmanfm, etc.― muestre duplicados de las capetas de Documentos, Imágenes, Música y Vídeos en los administradores de archivos y diálogos de apertura de archivos.
Valide los procedimientos realizados hasta ahora desmontando /datos
:
sudo umount /datos
Monte todo para verificar que sistema podrá hacerlo en el siguiente reinicio:
sudo mount /datos
sudo mount /home/mi-usuario/Documentos
sudo mount /home/mi-usuario/Imágenes
sudo mount /home/mi-usuario/Música
sudo mount /home/mi-usuario/Vídeos
Cualquier mensaje en la salida de cualquiera de las órdenes anteriores significa que algo salió mal y que se deben hacer correcciones en el archivo /etc/fstab
.
Si todo procede sin errores, el procedimiento habrá finalizado y en adelante utilizará un esquema para el aprovechamiento racional de una unidad SSD.