viernes, 10 de marzo de 2023

La desfragmentación, en Linux

Muy al principio de mis aventuras con este Blog (exactamente en marzo del 12, hace ahora 11 años…) publicaba yo, ‘entre otras historias’ la de las secretarias ‘Guillermina Windows’ y ‘Gunilla Linux’, y su muy distinta forma de archivar los expedientes de la oficina… cuyo ‘corolario’ era que en Linux no era preciso desfragmentar los discos duros/particiones, operación de mantenimiento muy típica usando Windows.

Pero entre la (para mi, criticable) tendencia a cambiar ‘la filosofía inicial’ de Linux y querer parecernos más a Windows (por ejemplo, con la instalación de paquetes snap (y flatpak) donde se duplican, triplican… las bibliotecas y paquetes comunes para varias aplicaciones, necesitándose además mucho más espacio), o aquello de promover sustituir la partición Swap por un ‘swapfile’ (a modo del pagefile.sys, o 'memoria de intercambio', que Windows crea en su partición principal)… y el ‘virus de la conspiranoia’ que todo el que haya usado Windows mantiene en su cuerpo… ocurre que acabo de leer algunas cosas sobre la desfragmentación, en Linux, y quiero anotarlas aquí.

Para ello lo primero que hay que decir es que los formatos de Windows FAT32 y NTFS son propensos a crear fragmentación en nuestros discos. También, en cierto modo, lo podían ser los primeros formatos de Linux, como Ext3… pero desde luego, usando los más modernos (Ext4, Btrfs, ReiserFS, etc) la fragmentación, en Linux, es mucho más difícil que se produzca. Vamos, que ‘Gunilla Linux’ sigue siendo una secretaria cada vez más eficaz.

Pero, por si hay dudas… lo mejor es conocer, desde nuestro Linux, el grado de fragmentación que pueda tener nuestro propio disco duro (o partición).
Y digamos que hay dos métodos…
El primero es usando el viejo comando ‘fsck’. Así, conociendo, en primer lugar, el ‘nombre’ de nuestra partición (por ejemplo con ‘sudo fdisk -l’) bastará escribir (si queremos saber la fragmentación de la partición llamada ‘/dev/sda3’)
sudo fsck.ext4 -vpf /dev/sda3
… y obtendríamos algo como esto…
Explico cosas: esto es como tengo en estos momentos la partición raiz ( / ), y la /home, de mi Debian. Y como para usar ‘fsck’ es preciso que las particiones ‘objetivo’ estén desmontadas, lo he hecho arrancando con un LinuxMint Live que tengo en un pendrive… que ya he dicho en más de una ocasión que es muy recomendable tener una distro en modo liveCD/LiveUSB para poder arrancar el PC con ella y poder hacer cosas ‘de manera independiente’ del sistema instalado.
Y lo que dicen las imágenes es que tengo una fragmentación mínima, apenas hay archivos (o directorios) ‘no contiguos’ (o sea, ‘fragmentados’), hombre, un poquito más (2,1%) en la /home (la /dev/sdd3) pero en fin, muy baja.

Pero estas cifras son orientativas, solo indican el % de archivos ‘no contiguos’. Suele ser suficiente pero, en extremo, por ejemplo, podríamos tener archivos grandes (de hecho tengo algún ‘large file’) que podría estar ‘contiguo, pero muy fragmentado’.

Por eso, vamos a ver otro método: usando la utilidad 'e4defrag' que se encuentra en el paquete ‘e2fsprogs’.
En este caso, las particiones tienen que estar montadas, por lo que no se necesita arrancar, como antes, desde un sistema ‘live’
Lo primero que tenemos que ver es si tenemos instalado este paquete. Y una forma fácil es verlo, por consola con el mandato
sudo aptitude show e2fsprogs
(también puede usarse ‘sudo apt show e2fsprogs’, pero se ve mucho más claramente (‘Estado: instalado’) con aptitude) Por supuesto, se puede ver también con Synaptic, y no está mal la idea porque así podemos instalar, si no lo está, el paquete de idiomas e2fsprogs-l10n
En todo caso, debemos tener instalada esta utilidad 'e2fsprogs'.

Bien, pues dicho eso, para ver el estado de la fragmentación escribiríamos, como digo, desde el propio sistema (y tras conocer, como antes, como ‘se llaman’ las particiones)…
sudo e4defrag -c /dev/sda1
sudo e4defrag -c /dev/sda3

(en este caso) y veríamos algo como esto…

(esto, respecto a mi partición root). Y, respecto a mi partición /home...
donde vemos los archivos fragmentados y, abajo, el dato importante:
«Fragmentation score 0
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This device (/dev/sda3) does not need defragmentation.
»

que me dice que mis particiones, en cuanto a la fragmentación...  gozan de perfecta salud.

Bien pero… ¿Y si tuviésemos que desfragmentar…?
Pues muy sencillo, basta usar la orden sin el modificador ‘-c’ o sea (por ejemplo)…
sudo e4defrag /dev/sda3
y esperar a ver qué pasa. (y la recomendación clásica: “antes de desfragmentar… respalda, por si acaso, tus archivos importantes”)

Y hasta aquí el tema.
Pero no, que me queda una cuestión final:
Porque yo tengo varios discos duros externos, para almacenar copias de seguridad, etc… y me apetecía saber, también, si están muy fragmentados, o no.
Pero resulta que, en general, cuando compras un disco duro externo, te viene en formato Fat32, que incluso leí en algún sitio que era lo recomendado… y al parecer, de momento no hay ninguna herramienta, en Linux, que permita conocer la fragmentación de discos formateados en FAT32 (o NTFS) de Windows.
Así que si queremos saber el estado de fragmentación de un disco/partición en Fat32 o NTFS tendríamos que ‘pinchar’ ese disco externo (por USB) en un PC con Windows, y emplear alguno de los programas o utilidades de ese sistema, tanto para conocer su grado de fragmentación como para desfragmentarlo.

O sea, como en los viejos tiempos. Bueno, es lógico. ‘Que cada palo aguante su vela’ ¿No?
Cabría pensar (si solo usas Linux) en reformatear estos discos externos por ejemplo en EXT4, y volverlos a usar (en Linux) como soporte de las copias de seguridad… pero, por si es verdad que es mejor formatearlos en fat32 (y recuerdo que, para montar una ISO en un pendrive con el comando dd= if...' así se recomienda) quizás no merezca la pena, vamos. 

Pero bueno, ya lo probaré alguna vez...

No hay comentarios:

Publicar un comentario