Gracias a ZFS, la pérdida de datos fue de apenas 10 minutos
(mastodon.social/@chromakode)- Un SSD de 2 años murió de repente, pero gracias a la replicación incremental de ZFS se pudo revivir el sistema en una unidad nueva, con una pérdida real de unos 10 minutos
- La arquitectura consistía en tomar snapshots cada 10 minutos de todo el sistema de archivos y enviarlos a un NAS; para la automatización se usó zrepl
- Los snapshots guardan el estado de un sistema en ejecución en un punto específico y transfieren solo los cambios, lo que permitió la replicación en segundo plano incluso en una red doméstica
- El proceso de restauración estuvo lejos de ser una recuperación automática: hubo que ejecutar durante la noche un ZFS receive de 625 GiB y restaurar también la wrapper key de cifrado
- Aunque ZFS tiene una carga alta de adopción inicial y mantenimiento, este caso muestra su efecto de recuperación ante desastres, incluso restaurando el estado de trabajo tras una falla real de la unidad
La pérdida tras la falla del SSD fue de 10 minutos
- Al abrir la laptop para enviar un correo, la pantalla estaba congelada en negro; tras reiniciar, se confirmó que el SSD de 2 años había muerto
- Después de restaurar el sistema en una unidad nueva, pudo volver a usarse, y la pérdida total de datos fue de unos 10 minutos
- La laptop recuperada arrancó justo en el punto donde se había interrumpido, y las pestañas del navegador recuperaron el trabajo incompleto de la noche anterior
- La idea de continuar el estado anterior en un dispositivo nuevo, como en un anuncio de Chromebook de hace 12 años, realmente funcionó en esta situación de falla
- Video relacionado: https://www.youtube.com/watch?v=lm-Vnx58UYo
Una estructura más cercana a la replicación que a un backup
- En lugar de simplemente hacer backup de la unidad, se usó un método de replicación de todo el sistema de archivos
- El invierno pasado se construyó almacenamiento de red doméstico para hacer backups periódicos de computadoras usadas para trabajo creativo, y entre varias opciones se eligió la replicación incremental de ZFS
- ZFS puede crear snapshots eficientes de un punto en el tiempo incluso en un sistema en ejecución
- Luego, al enviarlos a otra máquina, no vuelve a transferir todos los datos, sino solo los datos modificados
Envío al NAS cada 10 minutos con zrepl
- Para automatizar la creación de snapshots y el envío al NAS se usó zrepl
- La configuración consistía en tomar y transferir snapshots cada 10 minutos de todo el sistema de archivos
- Gracias a los snapshots incrementales, aun ejecutándose en segundo plano en la red doméstica, la réplica podía mantenerse actualizada
- La última ejecución tardó 14 segundos en transferirse y envió alrededor de 64 MiB
La carga de trabajo manual que apareció durante la restauración
- Restaurar el sistema fue un proceso que requirió aprendizaje y dependió en buena medida de trabajo manual
- El proceso de ZFS receive de 625 GiB tuvo que ejecutarse durante toda la noche
- Los snapshots estaban cifrados por la computadora original, por lo que el NAS no podía leer su contenido
- Para usar realmente el backup, también hubo que restaurar la wrapper key de cifrado
- Hasta la primera confirmación de que los datos podían descifrarse, el proceso de restauración fue muy angustiante
Costo de adopción y reemplazo de hardware
- La configuración inicial de ZFS tuvo un costo de arranque alto, porque requería reemplazar todo el sistema de archivos
- Su mantenimiento exige bastante conocimiento relacionado y procedimientos operativos que incluyen trabajo manual
- Aun así, fue una suerte haber configurado la replicación antes de que el SSD fallara por primera vez, y este caso dejó en evidencia las ventajas de ZFS
- La unidad que murió era una WD_BLACK SN850 incluida originalmente en el pedido de Framework
- En el foro de Framework había visto casos preocupantes de esta unidad muriendo repentinamente o quedando incapaz de arrancar
- Ese mismo día recibió por Amazon un SSD SK Hynix P41 y un Sabrent NVMe enclosure en unas 3 horas
1 comentarios
Opiniones de Hacker News
Como usa ZFS, está mejor preparado que otros usuarios de SSD de WD o SanDisk
https://petapixel.com/2023/08/08/sandisk-portable-ssds-are-failing-so-frequently-we-can-no-longer-recommend-them/
https://www.theverge.com/22291828/sandisk-extreme-pro-portable-my-passport-failure-continued
https://news.ycombinator.com/item?id=37042587
https://www.theverge.com/23837513/western-digital-sandisk-ssd-corrupted-deleted-questions
https://news.ycombinator.com/item?id=37188736
Ambos eran HGST y fue un día muy triste, pero por suerte había estado haciendo
zfs sendde forma constante a otra ubicación, así que la pérdida de datos fue muy pequeña. ZFS es increíbleDicen que Google interpreta búsquedas como “4TB SanDisk SSD” como una intención de encontrar páginas de producto, por lo que noticias como los artículos de The Verge o Ars Technica quedan empujadas muy abajo en los resultados. Estoy probando el buscador de pago Kagi, así que era una buena oportunidad para ver si otro tipo de búsqueda web podía arrojar resultados distintos, pero si toda la web está llena de artículos elogiosos, parece difícil mostrar resultados diferentes aunque cambien las reglas de priorización
Los primeros 5 o 6 resultados son tiendas, y luego vienen reseñas de easeus [1], techpowerup [2], anandtech [3] y consumerreviews [4], ninguna de las cuales incluye la palabra “fail”. Por último, lo único en lo que es mejor que Google es que sugiere búsquedas relacionadas como “sandisk 4tb ssd failure” y “sandisk 4tb ssd problems”; aunque están al final de la página y son difíciles de ver, es mejor que no ver ni una sola aparición de “fail” en la primera página de resultados de Google
[1]: https://www.easeus.com/knowledge-center/sandisk-4tb-extreme-portable-ssd-v2-full-review.html
[2]: https://www.techpowerup.com/review/sandisk-ultra-3d-4-tb-ssd/
[3]: https://www.anandtech.com/show/16892/sandisk-extreme-pro-crucial-x6-4tb-portable-ssds
[4]: https://consumerreviews.store/sandisk-4tb-extreme-portable-ssd-up-to-1050mb-s-usb-c-usb-3-2-gen-2-review/
Justo antes de dejar por completo el mundo de Linux, empecé a explorar poco a poco el iceberg llamado btrfs, y me pareció bastante interesante.
Se veía con mucho potencial en varias funciones, como innovación en backups y configuración de discos. btrfs no es ZFS, pero tiene áreas que se superponen en funcionalidad y también se acerca a un “ZFS para pobres”. Además, ZFS es algo ambiguo en cuanto a licencias, empaquetado y su inclusión dentro del kernel, así que en ciertos sistemas operativos btrfs resulta mucho más razonable.
Una vez, en un Linux User Group, comenté que había tenido que desenchufar el cable de alimentación para reiniciar una computadora, y me regañaron muchísimo por esa estupidez y me recomendaron usar ZFS. Aunque, considerando que ese sistema era una Raspberry Pi, quizá cambie la opinión sobre cuál de las dos acciones era la más sensata.
Mientras no se maltrate la tarjeta SD, estos equipos siguen funcionando de forma muy estable. ZFS se ve realmente genial, pero aunque algún día compre un NAS, no creo que quiera gastar dinero en un equipo capaz de correr ZFS, así que probablemente terminaría usando RAID y ext4.
Evité btrfs durante mucho tiempo porque cada pocos meses veía publicaciones de “BTRFS destruyó mis datos” y luego discusiones sobre si realmente era culpa de btrfs. Últimamente parece que veo menos de esas publicaciones, así que quizá ya sea hora de volver a echarle un vistazo.
Especialmente en imágenes dispersas de VM, y para ese uso creo que zvol es mucho mejor.
Hace unos años tuvimos la plaga de capacitores, y ahora parece que estamos pasando por una plaga de almacenamiento.
Es absurdo cómo todos los dispositivos de almacenamiento se están volviendo cada vez peores. WD está arruinando los HDD con SMR, y los fabricantes dicen que 3 años de tiempo de funcionamiento para SSD y HDD ya es demasiado; y no es broma. Solo este año se murió un SSD Kingston, que bueno, tenía unos 8 años, pero también murió un HDD portátil WD después de unos 2 años.
Hoy Internet está lleno de problemas de pérdida de datos y vida útil. Hace 20 años los HDD tampoco eran algo eterno, pero al menos recuerdo que claramente duraban más que la vida útil práctica de la computadora con la que los comprabas.
Hace 20 años era la época de los infames discos IBM Deathstar, en los que el recubrimiento magnético literalmente se desprendía de los platos. También estaban los terribles discos Maxtor que morían en 1 o 2 años, y después de que Seagate compró Maxtor, durante un tiempo los discos Seagate también se volvieron inestables. Administraba un servidor con unos 8 discos y tenía que reemplazar uno casi cada año.
En cambio, ahora ayudo a administrar un servidor ZFS con más de 20 discos, y la vida útil de los discos es de aproximadamente 4 a 5 años. Además, en esa época las computadoras se volvían obsoletas mucho más rápido. Hoy una computadora de 6 años sigue siendo perfectamente usable, pero entonces una computadora de 3 años ya se sentía bastante vieja.
Estamos chocando con los límites de escalamiento y el crecimiento exponencial se está desacelerando.
Ahora casi nunca me pasa eso con SSD. Incluso un SSD Intel viejo de finales de los 2000, conocidos por tener muchos problemas, todavía funciona sin problemas en el mismo MacBook antiguo que usé durante años y luego le di a mi madre. Me da curiosidad saber cómo serán los datos reales.
También he tenido suerte con los SSD, pero en la desktop sigo dejando el directorio
/homey el arreglo RAID en discos giratorios antiguos, así que uso SSD pequeños.Hubo dos excepciones. Saqué dos WD Red anteriores a SMR de un NAS viejo para reemplazarlos por discos más grandes; estaban en perfecto estado y los guardé en bolsas antiestáticas dentro de un cajón. Unos 2,5 años después necesitaba un disco de repuesto, los saqué y revisé, y ninguno de los dos funcionaba: uno estaba completamente muerto y el otro apenas era reconocido, pero no se podía leer. El primero no aparecía en absoluto al conectarlo; limpié todos los contactos, incluidos los pines de la PCB del controlador, pero no sirvió de nada, así que terminé tirándolo. El segundo solo pudo reutilizarse después de un reformateo completo, pero ni con testdisk hubo forma de recuperar los datos anteriores. Nunca había vivido ni esperado algo así, y sinceramente me preocupa bastante.
Los discos siempre morían de forma aleatoria, y esa también fue una de las razones por las que Sun creó ZFS.
En un resumen muy breve, el hilo de Mastodon apunta a https://zrepl.github.io.
“zrepl es una solución integrada todo en uno para replicación ZFS”.
Por ejemplo, sería genial poder usar S3 directamente como almacenamiento.
Zrepl es una gran razón por la que puedo vivir como nómada digital con tranquilidad.
Cada noche, aproximadamente una vez, se ejecuta un script que abre un pool ZFS protegido con LUKS y con un encabezado separado, y copia todos los snapshots. Ese enclosure NVME siempre está en una “bolsa” que no se separa de mí.
Gracias a esta configuración y a NixOS, puedo provisionar una laptop nueva idéntica en unos 10 minutos. Hace poco también agregué replicación offsite, así que incluso si me asaltaran de una forma totalmente grave, la posibilidad de una pérdida seria de datos sería casi cero.
Zrepl es un software realmente excelente. Es fácil empezar a usarlo, pero si hace falta es lo bastante sofisticado y potente como para tocar todos los puntos de ajuste. No me alcanzan los elogios.
¿Es posible que haber tomado snapshots del sistema de archivos cada 10 minutos haya contribuido a la muerte del SSD?
Intuitivamente, parecería que incluso tomar snapshots muy frecuentes añade bastante poca escritura extra. Aun así, sería bueno contar con mediciones científicas.
En algunos servidores que administraba antes, hacía snapshots con ZFS cada minuto, cada hora y cada día. Eliminaba los snapshots por minuto después de 60 minutos, y mediante una tarea cron en otra máquina respaldaba los snapshots horarios y diarios. Conservaba los snapshots horarios unas 72 horas, y los diarios de forma permanente. Los snapshots por minuto eran para revertir errores manuales durante migraciones SQL, y funcionaban bien.
Hoy sigo usando ZFS en servidores FreeBSD, pero mis proyectos actuales tienen poco tráfico y los cambios importantes de datos son raros, así que en mi servidor personal hago snapshots manuales más o menos una vez por semana y disparo manualmente el respaldo desde otro servidor. Además, ahora solo hago snapshots de la parte del sistema de archivos que contiene la base de datos PostgreSQL y los datos de la aplicación. Los datos del sistema operativo ya no me preocupan tanto. Si ocurre una falla grave de hardware, reinstalo el OS, tengo anotados los valores de configuración importantes y hago que el script de respaldo copie esos valores en lugar de otras cosas varias cuando se ejecuta.
Los snapshots no escriben mucho, y tanto los SSD como ZFS usan copy-on-write. Es decir, el costo de escritura después de un snapshot es el mismo que antes del snapshot.
Sin embargo, falta contexto. Ni los SSD ni ZFS se llevan bien con estar llenos o casi llenos. Si los datos de trabajo eran unos 650 GB y el disco era de 1 TB, los snapshots podrían haber hecho que el uso del disco superara fácilmente el 90%. Eso por sí solo podría haber hecho que ZFS se sintiera incómodo.
Si asumimos 100 GB de datos, bloques de 128K y punteros de 64 bits, los datos nuevos escritos durante el snapshot serían aproximadamente del orden de 5 MB. Hacer eso 6 veces por hora, 52,560 veces al año, daría unos 256 GB anuales si uno calcula si eso alcanza para causar desgaste prematuro del disco. Probablemente sea menos del 1% de la resistencia de escritura de un SSD. Así que me sorprendería que los snapshots cada 10 minutos fueran una causa importante.
Podría estar equivocado, y estimé esto con ayuda de una fuente no muy confiable. Se agradecen correcciones. Aun así, si mi estimación está por encima de la realidad y, pese a eso, es poco probable que afecte la vida útil, quizá el punto en sí no tenga mucho sentido.
ZFS es copy-on-write, así que al modificar archivos se producen las mismas escrituras; simplemente algunos datos existentes no se eliminan.
Entonces, una escritura de 5 MB cada 10 minutos en realidad se convertiría en 600 MB por hora, 4.8 TB por jornada laboral de 8 horas, 24 TB por semana de 40 horas, y en un disco de 1 TB eso sería 3.43 DWPD en tiempo real; durante 2 años en tiempo real, serían 2500 TBW[2].
La resistencia oficial de escritura del SN850 es de 600 TBW, aunque por temas de garantía seguramente es una cifra conservadora. Casualmente, 2500 TB también es una cifra de resistencia común en muchos SSD de este mercado. En conjunto, no suena como algo totalmente imposible.
Si aún está vivo, me daría curiosidad saber qué dice el controlador en los datos SMART. En Linux, ejecutar
apt install smartmontools; smartctl -s on /dev/sda; smartctl -A /dev/sdadebería imprimir una tabla[4]. En Windows, basta con instalar CrystalDiskInfo[3].1: https://news.ycombinator.com/item?id=29165202
2: DWPD: escrituras de disco por día, TBW: Total Bytes Written, en terabytes
3: https://crystalmark.info/en/software/crystaldiskinfo/
4: “Pre-fail” significa que se supone que el valor debe cambiar justo antes de una falla, y “Old_age” significa que es un valor que indica antigüedad; no significa “esto está mal y va a fallar pronto” ni “este disco es viejo”. Todos los elementos siempre muestran Pre-fail y Old_age. Creo que hace mucho alguien debió haberlos renombrado a “somewhat_boolean” y “life_remain”.
Normalmente hago respaldos incrementales de Apple Time Machine a un servidor Synology con discos giratorios
Cuando hago algo riesgoso o actualizo la máquina, a veces también espejo el disco interno en un SSD externo. Este método funciona bien. Restaurar desde Time Machine puede ser bastante lento, pero la mayor parte de mis datos importantes está en Git y en repositorios alojados, así que no ha sido gran problema. A veces uso Time Machine cuando quiero revertir un solo archivo.
También tengo uno de los infames[0] discos SanDisk, pero no lo uso para nada importante. Solo contiene cosas como almacenamiento de juegos. Como soy usuario de Mac, los juegos no son un factor importante, y si eso muere no voy a llorar.
[0] https://arstechnica.com/gadgets/2023/08/sandisk-extreme-ssds-are-worthless-multiple-lawsuits-against-wd-say/
Parece funcionar mucho mejor que los respaldos automáticos o basados en horario de Apple.
Mis snapshots están cifradas en la computadora original. Está buenísimo que el NAS no pueda leerlas.
Por eso, para usar el backup también tuve que restaurar la wrapper key de cifrado. Sin mentir, fue bastante aterrador hasta que tuve la primera confirmación de que podía descifrar los datos.
No hay que asumir que un método de backup personalizado funciona hasta comprobar que realmente se pueden restaurar los datos periódicamente.
El futuro cercano de Linux aquí es bcachefs.
https://bcachefs.org/
Aunque el trabajo para incorporarlo upstream sí está en curso.
“Fue bastante aterrador hasta que tuve la primera confirmación de que podía descifrar los datos” suena a que el procedimiento estaba menos probado y menos documentado de lo ideal.
No es algo tan raro en sistemas domésticos o desktops personales. Aun así, en un servidor de producción no querrías tener que improvisar en el momento cómo hacer la restauración.
Cuando falló la carga, por un momento se me vino el mundo abajo, pero enseguida me di cuenta del error. En esos momentos de falla aparece una claridad en la que todos los huecos del proceso se vuelven dolorosamente evidentes.