Nota
Estas son notas rápidas durante la investigación y solución de
un problema, no un artículo depurado y organizado.
He activado algunas características opcionales de uno de mis servidores con
OpenZFS (una máquina con Linux) y me encuentro que la actividad del disco
duro es muy baja y me salen errores de este estilo en dmesg:
[19937.978681] INFO: task z_upgrade:720856 blocked for more than 483 seconds.
[19938.004576] Tainted: P O 5.4.0-181-generic #201-Ubuntu
[19938.030512] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[19938.081727] z_upgrade D 0 720856 2 0x80004000
[19938.081730] Call Trace:
[19938.081739] __schedule+0x2e3/0x740
[19938.081744] ? __wake_up_common_lock+0x8a/0xc0
[19938.081746] schedule+0x42/0xb0
[19938.081747] io_schedule+0x16/0x40
[19938.081757] cv_wait_common+0xdc/0x180 [spl]
[19938.081759] ? __wake_up_pollfree+0x40/0x40
[19938.081763] __cv_wait_io+0x18/0x20 [spl]
[19938.081845] txg_wait_synced_impl+0xd7/0x120 [zfs]
[19938.081903] txg_wait_synced+0x10/0x40 [zfs]
[19938.081945] dmu_objset_id_quota_upgrade_cb+0xba/0x170 [zfs]
[19938.081986] dmu_objset_upgrade_task_cb+0xdf/0x100 [zfs]
[19938.081992] taskq_thread+0x245/0x430 [spl]
[19938.081994] ? wake_up_q+0xa0/0xa0
[19938.081998] kthread+0x104/0x140
[19938.082003] ? task_done+0x90/0x90 [spl]
[19938.082005] ? kthread_park+0x90/0x90
[19938.082007] ret_from_fork+0x35/0x40
Un top muestra una carga muy elevada en arc_prune, 99.4 de
sys time.
El smartctl o leer el disco duro entero con ddrescue, no
muestran ningún error. Esto parece un bug de OpenZFS.
Si importo el zpool en read only, funciona. Esto me permitiría
recuperar los datos en caso necesario. No estoy en situación
catastrófica aún, aunque no puedo hacer más copias de seguridad
en este disco duro .
Intento compilar OpenZFS 2.2.4, pero falla en construir los
paquetes Debian.
Pruebo con OpenZFS 2.1.12. Toco configure para que use el
Python3.8 del sistema operativo en vez del moderno 3.12.
Opto por usar el repositorio
https://launchpad.net/~jonathonf/+archive/ubuntu/zfs?field.series_filter=focal
, que me instalará OpenZFS 2.1.6.
Con esta versión, la cosa tiene buena pinta. Al importar el
zpool, se empieza a actualizar, pero es un proceso que no se va
de madre. Supongo que la actualización costosa es debido a la
activación de project_quota.
La cuestión es no hacer más upgrades con esta versión de
OpenZFS, de momento, para poder volver atrás si es necesario.