Introducción: El poder de descartar bloques en Linux
Dentro de la administración de sistemas Linux, la herramienta blkdiscard destaca como un recurso de alto rendimiento diseñado para instruir al hardware de almacenamiento de estado sólido (SSD y NVMe) a liberar o descartar sectores completos mediante órdenes TRIM. Para evitar poner en riesgo unidades físicas con datos en producción, este tutorial aborda el funcionamiento y las banderas más relevantes de la utilidad sobre un disco virtual tipo loopback. De este modo, cualquier administrador podrá dominar el proceso de saneamiento y puesta a punto de unidades para recuperar su desempeño original con total confianza.
1. Comprobación del soporte para operaciones TRIM en la unidad
Antes de lanzar una limpieza de bajo nivel en cualquier soporte flash, resulta imperativo verificar si el hardware reporta compatibilidad con las instrucciones de descarte de bloques. Inspeccionamos la topología y los parámetros de descarte invocando la siguiente consulta: lsblk --discard -o NAME,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,MOUNTPOINTS.
En la salida devuelta por el sistema, la presencia de cifras positivas distintas de cero en las columnas DISC-GRAN y DISC-MAX (tales como 512B y 2T) valida que el disco analizado (nvme0n1) gestiona peticiones TRIM sin contratiempos.

2. Creación de un entorno de pruebas aislado mediante dispositivos loopback
A fin de experimentar sin comprometer discos reales, prepararemos un archivo contenedor de 64 megabytes colmado de bytes seudoaleatorios. Para poblar este volumen de prueba empleamos dd if=/dev/urandom of=/tmp/test_disk.img bs=1M count=64 status=none.

Con el propósito de que el núcleo trate este fichero como si fuera un disco físico conectado al bus, lo asociamos a un nodo de bucle disponible ejecutando sudo losetup -fP /tmp/test_disk.img.

Para facilitar la manipulación del recurso en la terminal y evitar confusiones en los pasos siguientes, almacenamos el identificador del dispositivo loopback en una variable de entorno mediante LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1).

Comprobamos qué identificador fue asignado al entorno imprimiendo su contenido en consola con echo "생성된 디바이스: $LOOP_DEV".
La respuesta evidencia de manera unívoca que la interfaz virtual /dev/loop0 se encuentra lista para operar.

A modo de línea base previa al descarte, conviene inspeccionar la cabecera de la unidad virtual. Examinamos sus primeros 128 bytes en formato hexadecimal a través de sudo hexdump -C -n 128 $LOOP_DEV.
Tal como se visualiza, el sector de cabecera exhibe patrones aleatorios y heterogéneos, confirmando que la imagen contiene información densa.

3. Ejecución de blkdiscard: Descarte integral de bloques
Garantizamos nuevamente que la variable local apunte con exactitud al nodo virtual que someteremos al proceso invocando LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1).

Procedemos con el descarte íntegro de la unidad, solicitando detalles explícitos de la operación por medio de sudo blkdiscard -v $LOOP_DEV.
El registro en pantalla corrobora que la totalidad del espacio —67,108,864 bytes correspondientes a los 64 megabytes creados— quedó descartado partiendo desde la dirección base cero.

Para auditar el estado posterior del almacenamiento, lanzamos nuevamente una lectura de los primeros 128 bytes utilizando sudo hexdump -C -n 128 $LOOP_DEV.
La terminal deja de arrojar cadenas aleatorias; el bloque devuelve lecturas nulas o secuencias de ceros, demostrando el vaciado inmediato y categórico de los datos previos.

4. Segmentación precisa: Borrado parcial mediante desplazamientos y longitud
Revalidamos la referencia de nuestro disco virtual en el entorno de la shell mediante LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1).

Con el fin de comprobar que blkdiscard admite podas quirúrgicas sin alterar el resto del volumen, reescribimos una marca identificable en el tramo inicial con echo "TESTDATA_RELOAD" | sudo dd of=$LOOP_DEV bs=1M count=10 status=none.

Para sanear selectivamente únicamente los primeros 10 megabytes desde el origen, ejecutamos la orden acotada sudo blkdiscard -v -o 0 -l 10M $LOOP_DEV.
La salida confirma la delimitación precisa: se han descartado exactamente 10,485,760 bytes a partir del desplazamiento inicial 0.

Para certificar la efectividad de este descarte segmentado, leemos los primeros 64 bytes de la cabecera recurriendo a sudo hexdump -C -n 64 $LOOP_DEV.
El volcado constata la desaparición de la firma previa, evidenciando un segmento limpio y reinicializado.

5. Desmontaje del laboratorio y precauciones operativas
Al concluir las pruebas, refrescamos el enlace del dispositivo loopback para ejecutar un cierre ordenado mediante LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1).

Liberamos el mapeo del dispositivo virtual del núcleo del sistema utilizando sudo losetup -d $LOOP_DEV.

Para mantener higienizado el sistema de archivos temporal y reclamar el almacenamiento ocupado, suprimimos el archivo imagen con rm -f /tmp/test_disk.img.

Finalmente, corroboramos que no persistan asignaciones residuales en el subsistema de bloques lanzando losetup -a.
La ausencia de salidas ratifica que el entorno quedó totalmente limpio y sin recursos huérfanos.

En este recorrido práctico hemos explorado la potencia de blkdiscard para gestionar la desasignación fulminante de bloques en unidades SSD dentro de Ubuntu.
Puesto que esta instrucción desencadena un borrado irrecuperable a nivel de celdas flash, resulta crítico verificar meticulosamente la nomenclatura de los discos destino antes de ejecutarla en infraestructuras de producción.