Estou configurando um servidor que executa 3 pools do ZFS, 2 dos quais são específicos de propósito e sinto que as recomendações padrão simplesmente não são otimizadas para eles. A rede é facilitada por adaptadores duplos de 10gbit.
O Pool 1 é um grande armazenamento de arquivos, contém dados de vídeo brutos que raramente são gravados e lidos e também backups ocasionais. Não há absolutamente nenhum ponto no armazenamento em cache de qualquer coisa daquele conjunto, pois são os dados de alta largura de banda que são lidos de uma só vez, começando a terminar, o armazenamento em cache de qualquer coisa será um completo desperdício de memória. A latência não é um grande problema e a largura de banda é grande devido a dados altamente compactáveis. A piscina é composta por 8 HDDs no modo z2, capacidade útil de 24 TB.
O Pool 2 é o armazenamento de quadros de vídeo compactados. Partes desse conteúdo são lidas com frequência durante a composição de projetos de vídeo. A parte dos dados usados com freqüência é geralmente maior do que a quantidade total de RAM que o servidor tem, há um requisito de baixa latência, mas não muito baixo, a largura de banda é mais importante. A piscina é composta por 3 HDDs em z1, capacidade utilizável de 8 TB e 1 TB NVME SSD para L2ARC.
O Pool 3 é um armazenamento geral usado como armazenamento para vários sistemas de computador que inicializam e executam o software a partir dele, em vez do armazenamento local. Como tem que atender várias máquinas e armazenamento primário do sistema, os requisitos de latência e largura de banda são os mais altos. Esse pool é principalmente lido, as gravações são limitadas ao que os sistemas clientes fazem. A piscina é feita de 3 SSDs SATA no modo z1, 1 TB de capacidade utilizável.
Minha intenção na otimização tem a ver com minimizar o tamanho do ARC para os dois primeiros pools, a fim de maximizar o tamanho do ARC para o terceiro.
O Pool 1 não tem nenhum benefício do cache, então qual é a quantidade mínima segura de ARC que eu posso definir para ele?
O Pool 2 pode se beneficiar do ARC, mas não vale a pena, já que o L2ARC é rápido o suficiente para o propósito e o drive tem 1 TB de capacidade. Idealmente, eu ficaria feliz se eu pudesse sair sem usar qualquer ARC para este volume, e usando o terabyte completo do L2ARC, mas parece que pelo menos algum ARC é necessário para os dados de cabeçalho do L2ARC.
Portanto, considerando a capacidade L2ARC de 1 TB e o tamanho recorde do pool de 64k, 1tb / 64kb * 70b me dá ~ 0.995gb. Isso significa que posso limitar com segurança o ARC para esse pool em 1 GB? Ou talvez precise de mais?
Parece que o ARC contém o cache de leitura, bem como as informações para lidar com o L2ARC, então parece que eu preciso de uma opção para dar ênfase ao gerenciamento de um L2ARC maior do que se preocupar em armazenar dados reais na RAM. E, se necessário, determinar que quaisquer despejos de cache do ARC sejam movidos para L2ARC no caso de as políticas de despejo de cache não cumprirem as políticas de hierarquia de cache comuns.
As recomendações gerais que li sugerem cerca de 1GB de RAM por 1TB de armazenamento, estou planejando 32GB de RAM para 33 TB de armazenamento que estou quase morto, mas 4 ou 5 para 1 para L2ARC vs ARC, que Eu falho bastante. O objetivo é reduzir o ARC do pool 1 o mais baixo possível e cortar o ARC do pool 2 para apenas o máximo necessário para poder utilizar o conjunto de 1 TB do L2ARC, a fim de maximizar a RAM disponível para o ARC para o pool 3 .