He leído muchas declaraciones controvertidas sobre ZFS en sistemas con poca memoria en Internet, pero la mayoría de los casos de uso fueron para el almacenamiento de datos de alto rendimiento.
Quiero usar ZFS no por razones de rendimiento, sino porque admite compresión y deduplicación transparentes (esta última puede ser opcional) y todavía parece más maduro que BTRFS. No quiero utilizar ninguna configuración RAID.
Quiero usarlo en una computadora portátil, para el sistema de archivos raíz y de inicio, y el espacio de almacenamiento y la seguridad de los datos (recuperabilidad después de un corte de energía u otras inconsistencias aleatorias, muy bajo riesgo de corrupción debido a poca RAM, etc.) es más importante que rendimiento del disco. Quiero una seguridad comparable a la que ofrece ext2/3/4.
Me gustaría usar ext4 encima de ZVOL.
Entonces, las preguntas son:
- ¿Se puede configurar ZFS para que funcione?seguramentecon "baja RAM" si el rendimiento de IO/almacenamiento en caché no es motivo de preocupación y no se desea funcionalidad RAID?
- ¿Cómo cambia la RAM necesaria si no uso ZFS como sistema de archivos en sí, sino que solo uso ZVOL donde coloco otro sistema de archivos encima?
- ¿Cómo cambia la RAM necesaria con la deduplicación activada? Si la deduplicación está activada y la RAM comienza a disminuir, ¿sigue siendo seguro? ¿Puede ZFS simplemente suspender la deduplicación y usar menos RAM?
- ¿Es posible desactivar la deduplicación automática, pero ejecutarla de vez en cuando manualmente?
- ¿Puede ext4 encima de un ZVOL almacenar mis datos de manera confiable incluso en situaciones de poca RAM y, si ocurren inconsistencias, las posibilidades de éxito para las reparaciones son altas (como ocurre con ext2/3/4)? ¿Ext4 encima de un ZVOL aumenta la robustez porque agrega la robustez de ext4, o los datos son tan sólidos como el ZVOL subyacente?
Especificaciones del sistema:
- linux
- 8 GiB de RAM (compartida con la tarjeta gráfica), pero la mayor parte (al menos 7 GiB) debería estar disponible para el software del espacio del usuario.
- alrededor de 700 GiB de almacenamiento SSD para usar en ZFS,
- tal vez en otro sistema 128 GiB de eMMC para usar en ZFS.
Uso actual del disco (
du -sh
de los directorios más grandes en/
) (/ es ext4, /var montado encima es reiserfs) (quiero moverlo a un almacenamiento con compresión transparente):74M /etc 342G /home 5.0G /opt 1.5G /root 261M /tmp 35G /usr 30G /var
O simplemente use BTRFS (¿ha leído que puede ocurrir una pérdida de datos grave/difícil de recuperar debido a "errores", pero todo eso es controvertido...)?
Respuesta1
Respuesta corta:
- Sí, es posible utilizar poca RAM (~ 1 GB) con ZFS con éxito.
- No debería utilizar deduplicación, pero RAID y compresión suelen estar bien.
- Una vez que haya habilitado la duplicación, funcionará para todos los datos recién escritos y no podrá deshacerse de ellos fácilmente.
- No puede habilitar la deduplicación retroactiva porque solo funciona con datos en línea.
- Su idea es innecesariamente compleja sin una buena razón, por lo que recomendaría usar ZFS y terminarlo.
Respuesta larga:
¿Se puede configurar ZFS para que funcione de manera confiable con "baja RAM" si el rendimiento de IO/almacenamiento en caché no es motivo de preocupación y no se desea funcionalidad RAID?
Sí, incluso con las funciones RAID habilitadas. Necesitas mucho menos de lo que la gente dice en la red; por ejemplo, mira a este tipo que ejecuta un servidor de archivos veloz con FreeBSD, 2 núcleos y768 megasvirtualizado. O eche un vistazo a la Guía SolarisInternals (actualmente solo disponible a través de archive.org), donde se menciona 512 MB como mínimo, 1 GB como recomendación mínima y 2 GB como recomendación completa.
Sin embargo, me mantendría alejado del dedup. No porque sea lento debido a la memoria de paginación, sino porque no puede volver al modo no descopiado si su sistema se detiene. Además, es un intercambio entre RAM y discos, y en un sistema económico no tienes ninguno de los dos, por lo que no ganarás mucho.
¿Cómo cambia la RAM necesaria si no uso ZFS como sistema de archivos en sí, sino que solo uso ZVOL donde coloco otro sistema de archivos encima?
Necesitaría memoria adicional para el segundo sistema de archivos y para la capa superior a ZFS, dependiendo de cómo planee acceder a él (virtualización como KVM, FUSE, iSCSI, etc.)
¿Cómo cambia la RAM necesaria con la deduplicación activada? Si la deduplicación está activada y la RAM comienza a disminuir, ¿sigue siendo seguro? ¿Puede ZFS simplemente suspender la deduplicación y usar menos RAM?
No puede suspender la deduplicación, pero sus datos aún están seguros. Habrá mucho intercambio de memoria y espera, por lo que es posible que no sea muy utilizable. La deduplicación está en línea, por lo que para desactivarla, deberá desactivarla y escribir todos los datos nuevamente (lo que básicamente consiste en copiar todos los datos a un nuevo sistema de archivos y destruir el anterior).
¿Es posible desactivar la deduplicación automática, pero ejecutarla de vez en cuando manualmente?
No, porque no afecta a los datos en reposo. Si tiene la deduplicación activada y desea escribir un bloque, ZFS busca si está presente en la tabla de deduplicación. En caso afirmativo, la escritura se descarta y se agrega una referencia a la tabla de deduplicación. En caso negativo, se escribe y se añade la primera referencia. Esto significa que sus datos antiguos no se ven afectados por la deduplicación y activarlos sin escribir ningún bloque nuevo no afecta al tamaño utilizado de los datos antiguos.
¿Puede ext4 encima de un ZVOL almacenar mis datos de manera confiable incluso en situaciones de poca RAM y, si ocurren inconsistencias, las posibilidades de éxito para las reparaciones son altas (como ocurre con ext2/3/4)? ¿Ext4 encima de un ZVOL aumenta la robustez porque agrega la robustez de ext4, o los datos son tan sólidos como el ZVOL subyacente?
En mi opinión, esto es una complejidad innecesaria, ya que no obtendría características nuevas (como en el caso inverso con ext4 debajo y ZFS arriba, por ejemplo, instantáneas), y además obtendría algunas responsabilidades nuevas como fsck
y más fdisk
ejercicios de formato.
El único caso de uso en el que haría algo así es si tuviera una aplicación especial que exija características de bajo nivel de un sistema de archivos específico o tenga suposiciones codificadas (afortunadamente, ese comportamiento parece haber desaparecido en los últimos tiempos).
Respuesta2
user121391 hizo un gran trabajo al brindarle buena información, por lo que solo abordaré sus inquietudes sobre la memoria.
En lo que respecta a la memoria, sí, ZFS puede consumir mucha memoria. Utilizará la memoria libre del sistema para el almacenamiento en caché. A lo largo de los años, Sun, ahora Oracle, ha realizado ajustes, mejorando el rendimiento, la confiabilidad y mejorando el uso de la memoria. Puede consultar el sitio de la guía de ajuste malvado/internos de ZFS, oBlog de ZFSpara detalles. Sin embargo, es posible que la mayoría de estos ajustes y funciones solo se encuentren en la versión Solaris 11.x de ZFS.
Si está realmente preocupado por la memoria, no querrá usar la deduplicación, ya que requiere una buena cantidad de memoria, ya que las deduplicaciones están activas y deben mantener la tabla de deduplicación en la memoria.