
Estoy configurando un servidor que ejecuta 3 grupos ZFS, 2 de los cuales tienen un propósito específico y siento que las recomendaciones predeterminadas simplemente no están optimizadas para ellos. La conexión en red se facilita mediante adaptadores duales de 10 gbit.
El grupo 1 es un almacenamiento de archivos grande, contiene datos de video sin procesar que rara vez se escriben y leen, y también copias de seguridad ocasionales. No tiene absolutamente ningún sentido almacenar en caché nada de ese grupo, ya que son datos de gran ancho de banda los que se leen en un barrido de principio a fin, almacenar en caché cualquier cosa será una completa pérdida de memoria. La latencia no es un gran problema y el ancho de banda es amplio debido a los datos altamente comprimibles. El grupo está formado por 8 discos duros en modo z2, con una capacidad utilizable de 24 TB.
El grupo 2 es almacenamiento de fotogramas de vídeo comprimidos. Algunas partes de este contenido se leen con frecuencia al componer proyectos de vídeo. La porción de datos utilizados con frecuencia suele ser mayor que la cantidad total de RAM que tiene el servidor, existe un requisito de latencia baja, pero no ultrabaja, el ancho de banda es más importante. El grupo está formado por 3 HDD en z1, una capacidad utilizable de 8 TB y un SSD NVME de 1 TB para L2ARC.
El grupo 3 es un almacenamiento general que se utiliza como almacenamiento para varios sistemas informáticos que arrancan y ejecutan software desde él en lugar del almacenamiento local. Dado que tiene que dar servicio a varias máquinas y al almacenamiento del sistema primario, los requisitos de latencia y ancho de banda aquí son los más altos. Este grupo se lee principalmente, las escrituras se limitan a lo que hacen los sistemas cliente. El pool está formado por 3 SSD SATA en modo z1, 1TB de capacidad utilizable.
Mi intención de optimización tiene que ver con minimizar el tamaño de ARC para los dos primeros grupos para maximizar el tamaño de ARC para el tercero.
El grupo 1 no tiene ningún beneficio del almacenamiento en caché, entonces, ¿cuál es la cantidad mínima segura de ARC que puedo configurar para él?
El grupo 2 puede beneficiarse de ARC, pero realmente no vale la pena, ya que L2ARC es lo suficientemente rápido para ese propósito y la unidad tiene 1 TB de capacidad. Idealmente, sería feliz si pudiera evitar usar ningún ARC para este volumen y usar el terabyte completo de L2ARC, pero parece que se necesita al menos algo de ARC para los datos del encabezado L2ARC.
Entonces, considerando la capacidad L2ARC de 1 TB y el tamaño de registro del grupo de 64k, 1tb/64kb * 70b me da ~0,995gb. ¿Significa esto que puedo limitar de forma segura el ARC para ese grupo a 1 GB? ¿O tal vez necesita más?
Parece que ARC contiene tanto el caché de lectura como la información para manejar el L2ARC, por lo que parece que lo que necesito es alguna opción para dar énfasis a la administración de un L2ARC más grande que molestarme con el almacenamiento en caché de los datos reales en la RAM. Y, si es necesario, ordene que cualquier desalojo de caché de ARC se traslade a L2ARC en caso de que las políticas de desalojo de caché no cumplan con las políticas habituales de jerarquía de almacenamiento en caché.
Las recomendaciones generales que he leído sugieren alrededor de 1 GB de RAM por 1 TB de almacenamiento, estoy planeando 32 GB de RAM por 33 TB de almacenamiento, en lo cual estoy casi muerto, pero 4 o 5 a 1 para L2ARC vs ARC, que me quedo corto. de por mucho. El objetivo es reducir el ARC del grupo 1 lo más bajo posible y reducir el ARC del grupo 2 solo a la cantidad necesaria para poder utilizar 1 TB completo de L2ARC, a fin de maximizar la RAM disponible para ARC para el grupo 3. .
Respuesta1
Primero, realmente le sugiero que reconsidere su diseño para los grupos n.2 y n.3: un espejo de 3 vías no le dará una latencia baja ni un ancho de banda alto. En lugar de un costoso disco NVMe de 1 TB para L2ARC (que, por cierto, está desequilibrado debido al pequeño ARC de 32 GB), usaría más discos de 7200 RPM en forma RAID10 o incluso SSD más baratos pero confiables (por ejemplo: Samsung 850 Pro/Evo o Crucial MX500).
Como mínimo, puede colocar todos los discos en un único grupo RAID10 (con SSD L2ARC) y segmentar el único grupo en función de múltiples conjuntos de datos.
Dicho esto, puede especificar cómo se debe usar ARC/L2ARC en una base de conjunto de datos por conjunto usando las opciones primarycache
y secondarycache
:
zfs set primarycache=none <dataset1> ; zfs set secondarycache=none <dataset1>
desactivarácualquierAlmacenamiento en caché ARC/L2ARC para el conjunto de datos. También puede otorgarzfs set logbias=throughput <dataset1>
privilegios al rendimiento en lugar de la latencia durante las operaciones de escritura;zfs set primarycache=metadata <dataset2>
habilitará el almacenamiento en caché de solo metadatos para el segundo conjunto de datos. Tenga en cuenta que L2ARC es alimentado por ARC; esto significa que si ARC almacena en caché solo metadatos, lo mismo ocurrirá con L2ARC;- deje la opción predeterminada ARC/L2ARC para el tercer conjunto de datos.
Finalmente, puede configurar su instancia ZFS para usar más del (valor predeterminado) 50% de su RAM para ARC (busque zfs_arc_max
en elpágina de manual del módulo)