Acabo de actualizar a un SSD. El rendimiento ha sido fantástico.
Sin embargo, después de cada reinicio, cuando hago un fstrim en las particiones, se recortará todo el espacio libre. Y según tengo entendido, el recorte escribe en todo el espacio libre que está disponible. No estoy seguro de si es relevante, pero uso cifrado de disco completo (/boot incluido).
Como la vida útil del SSD puede reducirse drásticamente con escrituras frecuentes, me preocupa este recorte.
Aquí están los registros que mantengo en cada recorte:
Jul 30 13:46:00 /: 478.6 MiB (501862400 bytes) trimmed
Jul 31 13:22:26 /: 347.8 GiB (373409230848 bytes) trimmed
Jul 31 13:25:32 /: 194.3 MiB (203710464 bytes) trimmed
Jul 31 13:25:40 /: 19.2 MiB (20111360 bytes) trimmed
Aug 02 14:08:06 /: 345.9 GiB (371398463488 bytes) trimmed
Aug 02 22:21:36 /: 56.9 GiB (61047971840 bytes) trimmed
Aug 02 22:31:27 /: 347.7 MiB (364560384 bytes) trimmed
Aug 02 22:31:43 /: 127 MiB (133144576 bytes) trimmed
Aug 02 22:33:01 /: 243 MiB (254767104 bytes) trimmed
Aug 03 06:58:47 /: 1 GiB (1080602624 bytes) trimmed
Aug 03 10:00:02 /: 2.4 GiB (2526216192 bytes) trimmed
Aug 03 11:42:14 /: 341 GiB (366146318336 bytes) trimmed
Aug 03 16:00:01 /: 0 B (0 bytes) trimmed
Aug 03 16:33:53 /: 0 B (0 bytes) trimmed
Aug 03 16:48:43 /: 341 GiB (366074740736 bytes) trimmed
Aug 03 16:50:13 /: 1.2 GiB (1297809408 bytes) trimmed
Aug 03 16:53:31 /: 341 GiB (366074695680 bytes) trimmed
Aug 03 17:07:55 /: 340.9 GiB (366066126848 bytes) trimmed
Aug 05 22:00:13 /: 341 GiB (366073069568 bytes) trimmed
Aug 05 22:07:22 /: 1.2 GiB (1261793280 bytes) trimmed
Aug 06 07:41:50 /: 1.4 GiB (1522991104 bytes) trimmed
Aug 06 10:00:11 /: 341 GiB (366068740096 bytes) trimmed
Como puede ver, el recorte después de encender la computadora es de ~340 GiB, mientras que el recorte en uso normal es de aproximadamente 1 GiB.
¿Debería preocuparme que esto desgaste mi SSD? ¿No debería recortar?
Respuesta1
Hay una idea errónea. El recorte no provoca escrituras adicionales,disminuyea ellos.
Un SSD, o más bien su NAND, tiene dos nociones de "bloques", uno de los cuales se llama en realidadbloquear(normalmente entre 128k y 512k), y el otro que se acerca mucho más a lo que quieres decir cuando hablas de "bloque" en términos de tu sistema de archivos se llamapágina(normalmente algo alrededor de 4k). PuedeescribirPuede sacar una página completa a la vez, tal como lo haría en un disco duro antiguo, sin problema. Las cosas simplemente funcionan como se esperaba.
Sin embargo, no puedesSobrescribiruna página, se escriben una vez. A partir de entonces sólo podrásborrarhaciéndolo, haciéndolo nuevamente escribible una vez. Esto es lo que cuenta para la vida útil de la NAND. El problema es que... en realidad túno puedoborrar páginas. Sólo puedes borrarbloques(es decir, grupos de 32 a 64 páginas a la vez).
Esto significa que cuando sobrescribe una página ("bloquea" en términos de sistema de archivos), el controlador debe:
- leer en el bloque completo
- si existe un bloque "virgen" o ya borrado, úselo
- de lo contrarioclaroel mismo bloque
- escribir el bloque completo, habiendo modificado en consecuencia el contenido de la página sobrescrita
- hacer algo de "magia" no especificada para que los ciclos de borrado se distribuyan de manera uniforme en todos los bloques, evitando la muerte prematura
Esto está algo simplificado, pero el principio es el mismo. AeleganteEl controlador podría hacer algo ligeramente diferente (por ejemplo, reasignar páginas lógicamente, llenar todas las páginas hasta que no quede ninguna y de alguna manera "recordar" cuáles son buenas y cuáles están obsoletas, etc., etc.), pero en principio el flujo de trabajo es el descrito anteriormente.
Esto es un problema en la medida en que las escrituras pequeñas son algo común, por lo que pronto tendrá todos los bloques de su disco escritos al menos una vez. ¿Qué puede hacer ahora el controlador? Poco. Realmente no sabe qué está haciendo el sistema de archivos ni qué se espera, por lo que tiene que trabajar según la suposición más conservadora. Es decir, todo lo que alguna vez estuvo escrito debe preservarse.
TRIM resuelve este problema. Le dice al controlador que un rango tan grandeno se esta usando, por lo que el controlador también puede descartarlo. No escribe nada. En todo caso, sólo borrará los bloques (aunque sólo una vez, no siempre).
Dado que le dijo al controlador que no está utilizando esos datos, puede correr el riesgo de desecharlos sin sufrir daños. Ahora, de repente, hay bloques grabables disponibles nuevamente sin la necesidad de copiar datos y borrar bloques repetidamente. Que no sólo hace escribirmás rápidopero también disminuye el número de borrados que deben realizarse.
Respuesta2
fstrim
parece liberarsetodoespacio libre de una partición, no solo el espacio liberado desde la última invocación de fstrim
. Ver tambiénesta publicación.