Discos Duros y su mantenimiento en Linux


Las unidades de disco duro (Hard Disk Drive HDD) son dispositivos de almacenamiento de información mediante un sistema de grabación magnética, están conformados por uno o varios niveles de platos giratorios sobre los cuales flota un cabezal de lectura y escritura. Sus capacidades de almacenamiento son variables y en la actualidad pasan de Gigabytes a Terabytes de almacenamiento.


En la actualidad los formatos más comunes de tamaño son de 2.5” y 3.5” y su interfaz de conexión SATA, si bien originalmente el IDE (ATA o PATA) fué el sistema de conexión usado originalmente este dio paso al SAS, el cual es mucho más rápido (desde los 1.5Gb/s en SATA 1 hasta los 6 Gb/s en Sata 3).



Unidad descargada desde Pixabay aquí

Al ser discos que giran sobre un eje su velocidad de rotación afecta la velocidad con que se realiza la velocidad de transferencia de datos, en la actualidad los discos más comunes son de 5400 rpm y 7200 rpm, aun cuando hay discos a 10000 rpm, si consideramos que un disco de 5400 rpm transmite entre 80 y 110 mb, uno de 10000 aun cuando transmitiendo al doble no tiene la capacidad de saturar un puerto SATA.


Existen también la interfaz de conexión SCSI más usada en el entorno de servidores que también ha venido siendo sustituido por el SAS.


Si seguimos hablando solo de las unidades HDD en la actualidad sus interfaces más usada es la SATA y SAS en caso de servidores. En la actualidad siguen siendo las unidades más usadas para grandes almacenamientos pues el costo por mb de almacenamiento es muy rentable existiendo en la actualidades unidades de 6 y 8 Tb de almacenamiento, que usadas en arreglo permiten crear grandes volúmenes de almacenamiento a precios razonables.




Hard_drive-en.svg: Bibi Saint-Polderivative work: Lazki [CC BY-SA 2.5], via Wikimedia Commons


SATA


Conocido también como Serial ATA, utiliza un bus de transmisión permite cambios en caliente y físicamente es un conector más pequeño que su predecesor IDE.


Actualmente se encuentra en su versión SATA 3 que puede transmitir hasta 600 MB/s, al ser un estándar podemos usar un disco sin importar su generación en un puerto de cualquier generación, pero debemos considerar que un disco para SATA 3 solo podrá transmitir a esta velocidad si está conectado en un puerto SATA3, en caso contrario bajará hasta la velocidad del puerto donde esta. Sin embargo SATA 3 es más rápido que la velocidad de transmisión de los discos HDD.


SAS


Conocido como Serial Attached SCSI es un sistema de transferencias en serie, sucesor del SCSI. Puede mantener una tasa de transferencia constante sin importar el número de dispositivos colocados, permite la conexión de hasta 16 unidades.


Al utilizar el mismo conector físico de SAS un controlador SAS puede utilizar discos SATA sin embargo no sucede igual de forma inversa.


Ya se ha dicho que las unidades HDD no tienen la capacidad de saturar la velocidad de un puerto SATA sin embargo la aparición de las SSD han hecho un mejor uso de estas velocidades. las SSD (Solid State Drive), son también unidades de almacenamiento, está utilizan memorias no volátiles como la memoria flash en lugar de partes móviles.


Su tecnología se basa en NAND que son un tipo de Memoria Flash, donde la información se almacena por bloques o celdas y se rigen por por un estándar llamado ONFI que garantiza la interoperabilidad entre fabricantes. Se clasifican según sus celdas en:


SLC: donde el chip se obtiene en un proceso de corte de la oblea que genera este de forma monolítica.


MLC: aquí se apilan varias obleas para formar un chip, creando una celda con capas, permitiendo mayor capacidad de almacenamiento por capa. Es menos durable y rápida que las SLC pero su técnica de fabricación reduce los costes.


TLC: se crean chips con tres bits por celda reduciendo los costes pero reduciendo su vida util al tener un máximo aproximado de 1000 escrituras y borrados por celda.


QLC: son chips de 4 bits reduciendo aún más el coste y reduciendo aún más su vida útil.


Si bien aumentar el número de bits reduce la vida útil, también es cierto que permite crear unidades de mayor capacidad a un precio reducido, por lo cual es posible compensar la cantidad de escrituras y borrados de la unidades con un mayor número de chips donde distribuir la data. Así es factible que se creen unidades de 1 Tb con precios más parecidos a los HDD y vidas útiles largas.


El uso de memorias NAND ha permitido aumentar las velocidades de transmisión de forma exponencial en contraposición a los HDD, en la actualidad las unidades que se conectan por SATA ven su limitación de velocidad en las velocidades del puerto, esto trajo consigo la utilización de puertos diferentes para las unidades de almacenamiento.


El uso de chips NAND permite crear unidades en formatos más pequeños y en respuesta a esto surgen los puertos m.2, estos siguen trabajando a las velocidades de SATA 3, y se crean memoria de tipo NVMe que son aún más rápidas que las NAND, las NVMe son para muchos una memoria intermedia entre las NAND y las DRAM de los sistemas, donde según el caso superan hasta en 4 veces la velocidad de las NAND.


Si ya los SSD con memoria NAND encontraban un límite por el puerto SATA usando NVMe este es aún mayor, por eso se comenzó a utilizar estas unidades aprovechando la conexión directa a los puertos PCIe, los cuales tienen un ancho de banda mayor y permitiendo velocidades superiores a los 1500 MB/s de escritura y más aún en lectura.


Recientemente se han anunciado unidades SSD que pueden aprovechar puertos PCIe 4.0 y llegar inclusive a velocidades 4950 MB/s de lectura y 4250 MB/s de escritura, una gran diferencia con los 600 MB/s de puerto SATA3.

Mantenimiento de Unidades de almacenamiento


Entendiendo un poco más el funcionamiento de los HDD y los SSD podremos definir la forma como se configuran, mantienen e incluso recuperan. Empezando por los los HDD que son las unidades con más tiempo en el mercado, como los HDD han estado tanto tiempo en el mercado estas unidades han ido existiendo junto con el desarrollo de sistemas de particiones, si hablamos de sistemas Windows desde la existencia de las particiones Fat hasta las NTFS, se han utilizado unidades HDD, mientras en Linux han recorrido las diferentes versiones de ext4, hasta las más actuales como BTRFS y XFS. 


Los HDD son discos con una vida útil muy larga y su degradación empieza muchas veces por sectores que se van dañando, estos daños en algunas ocasiones son corregibles y en otras se pueden condenas los sectores para ser ignorados al momento de leer o escribir el disco existen herramientas para realizar esto y en Linux una de las utilizadas es  badblocks.


En Linux las unidades de disco se identifican como sda, sdb, etc, donde cada una es un disco separado y las particiones de estos discos se identifican como sda1, sda2, sdb1, etc. Para identificar los discos dentro de un equipo utilizamos el comando fdisk -l.



Captura de pantalla realizada por @ubaldonet


Así podremos identificar el disco en caso de tener varios instalados y saber cuál revisar. Usando el comando de la siguiente manera badblocks -s -v -n /dev/sdb ó badblocks -svn /dev/sdb, donde sda será sustituido por el disco a revisar, si es un solo disco seguramente estará como sda. 


Este es un proceso que se puede alargar y durar incluso horas dependiendo del tamaño del disco que se revisa. El método mencionado anteriormente se considera no destructivo tratara de reparar errores pero sin alterar la data, cuando este no logra funcionar se puede usar -f al final, el problema es que este puede dañar la información tratando de recuperar el bloque.


Para este caso se recomienda que el disco no esté montado pues se pueden sobrescribir archivos de sistema y causar un error.


-n usa un sistema de lectura y escritura no destructivo

-s muestra el porcentaje aproximado de escaneo

-v modo detallado, muestra el número de errores de lectura, escritura y datos corruptos

-f  generalmente badblocks procura no hacer pruebas destructivas sobre el sistema para evitar que colapse si se ejecuta sobre el mismo disco de sistema, esta opción des habilita esto, por lo cual se recomienda usar sobre unidades no montadas y menos sobre la del sistema para evitar que el sistema falle.

-e esta opción se usa en caso de querer abortar el proceso si se encuentra un número determinado de bloques dañados, si se considera que luego de cierta cantidad de bloques dañados no merece la pena tratar de reparar el disco se coloca un tope para evitar tener el equipo trabajando sin necesidad.

-w es una prueba de escritura extendida donde se escribe patrones específicos en los bloques para verificar su estado, Está y -n son excluyentes entre sí y no se pueden usar al mismo tiempo


Badblocks es una herramienta que pertenece al paquete e2fsprogs, viene generalmente en Debian, Ubuntu y derivadas, en caso contrario basta con instalar este paquete y la herramienta vendrá en el conjunto.


Badblocks es una revisión sobre el disco sin importar su partición, existen otras revisiones donde se pueden revisar particiones, e2fsck permite la revisión de particiones ext2, ext3 y ext4. 


Se usa con la sintaxis e2fsck -p -v /dev/sdb2, a diferencia de badblocks se indica la partición la cual no debe estar montada.


-p reparar errores de forma automática

-v muestra en pantalla los errores

-y asume si a cualquier pregunta que realice el comando

-z archivo_de _salida escribir los cambios en un archivo de recuperación antes de alterar cualquier registro de información


Su uso es menos invasivo y más rápido, enfocado a rescatar más la información del sistema y no la recuperación del disco.


El uso de la fragmentación en Linux es mucho menos común sobre todo en los sistemas de particionados más modernos.


Mantenimiento de los SSD


Los SSD tienen una vida útil establecida, un número de escrituras según su arquitectura de chips, en la actualidad esta longevidad es realmente grande y un SSD puede durar gran cantidad de tiempo, sin embargo existen ciertas prácticas que permite mantener la salud de estos el mayor tiempo posible. Cuando se crearon las primeras unidades en Linux era necesario realizar una cierta cantidad de cambios en el sistema, las distribuciones actualmente detectan si estos están e implementan algunos de estos cambios, el uso del Trim entre ellos. Para saber si están activos es tan sencillo como escribir en consola “sudo hdparm -I /dev/sda | grep "TRIM supported, si la respuesta es:



Captura de Pantalla Editada en Gimp por @ubaldonet

El mantenimiento que debe tener el disco es la ejecución del comando fstrim, sobre la partición a revisar, ej fstrim -v / realizará el proceso sobre la partición raíz. Esta puede programarse para que se ejecuta periódicamente mediante Cron. Esto siempre que usemos particiones ext4 y en períodos espaciados, el uso excesivo de Trim puede degradar. Si usamos particiones BTRFS estas tienen una estructura donde ya se incluyen estas arquitecturas e implementan CoW (copy on write) proceso que reduce las escrituras innecesarias, por lo cual algunos consideran que con este tipo de particiones el uso de fstrim no es necesario. En XFS soporta internamente un sistema de fragmentación para SSD.


Sistemas como ext4 usan un registro de diario lo que permite recuperar data en caso de fallo y evitar pérdida de información, según opiniones algunos piensan que desactivarlo es bueno al usar SSD, pero esto trae consigo inestabilidad en caso de que el sistema sufra una interrupción de energía o reinicio inesperado, pudiendo corromperse el sistema al reiniciarse de forma inesperada.


Existen prácticas diferentes que cambian según opciones, hay personas que recomiendan no usar swap, ya que la escritura de esta puede dañar el disco, sin embargo si el sistema llena la RAM y no tiene donde hacer swap colapsara, por lo que esto solo lo recomiendan con grandes cantidades de RAM. Es más común cambiar los swappines para hacer que la swap se utiliza cuando la RAM ya sólo disponga del 10% disponible.


Desactivar la hibernación, cuando el disco hiberna y apaga el disco crea una imagen de los contenidos de la RAM en disco creando una cantidad de escrituras que degradan la SSD sin necesidad, al usar SSD se recomienda tampoco apagar el disco luego de un tiempo, recordemos que al no tener partes móviles no se degradara girando encendido.


Para la detección de problemas en SSD se puede usar el comando sudo smartctl -a / dev / sda .


Consideraciones


Las unidades de disco han venido evolucionando, desde su forma de trabajo en los tradicionales HDD hasta los modernos SSD, implementación de puertos de transmisión, tamaños de almacenamiento y velocidades que crecen con el avance de estos. Por lo cual es necesario tratar las diferentes unidades según su tecnología.


Mientras los HDD dejan de funcionar por desgaste al tener partes móviles que se desgastan los SSD tienen una vida útil definida, donde una correcta parametrización del sistema ayuda a su mejor conservación.


Junto con la evolución de los HDD y SSD han ido evolucionando a la par los sistemas de particionamiento de disco, en Linux donde se usan gran cantidad de sistemas de particionamiento estos tienen tratamientos diferentes para el uso de SSD.


Referencias


Wikipedia aquí

Wikipedia aquí

Wikipedia aquí

Artículo aquí

Artículo aquí

Wikipedia aquí

Artículo aquí

Wiki de Debian aquí


Comments 2


Enfocados en la adopción y promoción de la blockchain de Steem valoramos tu compromiso con ella. Gracias por no hacer Power Down, juntos llevaremos el Steem a la Luna.

06.07.2019 03:38
0



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie.

If you appreciate the work we are doing, then consider supporting our witness **stem.witness**. Additional witness support to the **curie witness** would be appreciated as well.

For additional information please join us on the **SteemSTEM discord** and to get to know the rest of the community!

Thanks for having added @steemstem as a beneficiary to your post. This granted you a stronger support from SteemSTEM.

Thanks for having used the steemstem.io app. You got a stronger support!

08.07.2019 01:45
0