Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Tecnologias para melhorar o desempenho baseadas no uso de SSDs e amplamente utilizadas em sistemas de armazenamento já foram inventadas há muito tempo. Em primeiro lugar, é a utilização de SSD como espaço de armazenamento, que é 100% eficaz, mas caro. Portanto, são utilizadas tecnologias cansativas e de cache, onde os SSDs são usados ​​apenas para os dados mais populares (“quentes”). A hierarquização é boa para cenários de uso de dados “quentes” a longo prazo (dias-semanas). O cache, por outro lado, é para uso de curto prazo (minutos-horas). Ambas as opções são implementadas no sistema de armazenamento QSAN XCubeSAN. Neste artigo veremos a implementação do segundo algoritmo - Cache SSD.

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

A essência da tecnologia de cache SSD é o uso de SSDs como cache intermediário entre os discos rígidos e a RAM do controlador. O desempenho do SSD é, obviamente, inferior ao desempenho do próprio cache do controlador, mas o volume é uma ordem de grandeza maior. Portanto, obtemos um certo compromisso entre velocidade e volume.

Indicações para usar cache SSD para leitura:

  • A predominância de operações de leitura sobre operações de gravação (mais frequentemente típicas para bancos de dados e aplicações web);
  • A presença de um gargalo na forma de desempenho do conjunto de discos rígidos;
  • A quantidade de dados necessários é menor que o tamanho do cache SSD.

As indicações para utilização de cache SSD de leitura+gravação são as mesmas, exceto pela natureza das operações – tipo misto (por exemplo, servidor de arquivos).

A maioria dos fornecedores de armazenamento usa cache SSD somente leitura em seus produtos. A diferença fundamental QSAN Eles também fornecem a capacidade de usar o cache para gravação. Para ativar a funcionalidade de cache SSD em sistemas de armazenamento QSAN, você deve adquirir uma licença separada (fornecida eletronicamente).

O cache SSD no XCubeSAN é implementado fisicamente na forma de pools de cache SSD separados. Pode haver até quatro deles no sistema. Cada pool, é claro, usa seu próprio conjunto de SSDs. E já nas propriedades do disco virtual determinamos se ele utilizará um pool de cache e qual. A ativação e desativação do uso de cache para volumes pode ser feita on-line sem interromper a E/S. Você também pode adicionar SSDs ao pool e removê-los de lá. Ao criar um cache de pool SSD, você precisa escolher em qual modo ele operará: somente leitura ou leitura+gravação. Sua organização física depende disso. Como pode haver vários conjuntos de cache, sua funcionalidade pode ser diferente (ou seja, o sistema pode ter conjuntos de cache de leitura e leitura+gravação ao mesmo tempo).

Se um pool de cache somente leitura for usado, ele poderá consistir de 1 a 8 SSDs. Os discos não precisam ter a mesma capacidade e o mesmo fornecedor, pois são combinados em uma estrutura NRAID+. Todos os SSDs do pool são compartilhados. O sistema tenta paralelizar de forma independente as solicitações recebidas entre todos os SSDs para obter desempenho máximo. Se um dos SSDs falhar, nada de ruim acontecerá: afinal, o cache contém apenas uma cópia dos dados armazenados no conjunto de discos rígidos. Acontece que a quantidade de cache SSD disponível diminuirá (ou se tornará zero se estiver usando o cache SSD original de uma unidade).

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Se o cache for usado para operações de leitura + gravação, o número de SSDs no pool deverá ser um múltiplo de dois, pois o conteúdo é espelhado em pares de unidades (a estrutura NRAID 1+ é usada). A duplicação do cache é necessária porque ele pode conter dados que ainda não foram gravados nos discos rígidos. E neste caso, a falha do SSD do pool de cache levaria à perda de informações. No caso do NRAID 1+, uma falha do SSD simplesmente fará com que o cache seja transferido para um estado somente leitura, com os dados não gravados sendo despejados na matriz do disco rígido. Após substituir o SSD com defeito, o cache retornará ao modo operacional original. A propósito, para maior segurança, você pode atribuir peças de reposição dedicadas a um cache de leitura + gravação.

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Ao usar a função de cache SSD no XCubeSAN, há vários requisitos para a quantidade de memória dos controladores de armazenamento: quanto mais memória do sistema, maior será o pool de cache disponível.

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Ao contrário da maioria dos fabricantes de sistemas de armazenamento, que oferecem apenas a opção de ligar/desligar o cache SSD, o QSAN oferece mais opções. Em particular, você pode selecionar o modo de operação do cache dependendo da natureza da carga. Existem três modelos predefinidos que são mais próximos em sua operação dos serviços correspondentes: banco de dados, sistema de arquivos, serviço web. Além disso, o administrador pode criar seu próprio perfil definindo os valores dos parâmetros necessários:

  • Tamanho do bloco (tamanho do bloco de cache) – 1/2/4 MB
  • Número de solicitações para ler um bloco para que ele seja copiado para o cache (Populate-on-Read Threshold) – 1..4
  • Número de solicitações para gravar um bloco para que ele seja copiado para o cache (Populate-on-Write Threshold) – 0..4

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Os perfis podem ser alterados na hora, mas, claro, com o conteúdo do cache redefinido e seu novo “aquecimento”.

Considerando o princípio de funcionamento do cache SSD, podemos destacar as principais operações ao trabalhar com ele:

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Lendo dados quando não estão no cache

  1. Uma solicitação do host chega ao controlador;
  2. Como os solicitados não estão no cache SSD, eles são lidos nos discos rígidos;
  3. Os dados lidos são enviados ao host. Ao mesmo tempo, é feita uma verificação se esses blocos estão “quentes”;
  4. Se sim, eles serão copiados para o cache SSD para uso posterior.

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Ler dados quando eles estiverem presentes no cache

  1. Uma solicitação do host chega ao controlador;
  2. Como os dados solicitados estão no cache SSD, eles são lidos a partir daí;
  3. Os dados lidos são enviados ao host.

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Gravando dados ao usar cache de leitura

  1. Uma solicitação de gravação do host chega ao controlador;
  2. Os dados são gravados em discos rígidos;
  3. Uma resposta indicando gravação bem-sucedida é retornada ao host;
  4. Ao mesmo tempo, é verificado se o bloco está “quente” (o parâmetro Populate-on-Write Threshold é comparado). Se sim, ele será copiado para o cache SSD para uso posterior.

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Gravando dados ao usar um cache de leitura+gravação

  1. Uma solicitação de gravação do host chega ao controlador;
  2. Os dados são gravados no cache SSD;
  3. Uma resposta indicando gravação bem-sucedida é retornada ao host;
  4. Os dados do cache SSD são gravados nos discos rígidos em segundo plano;

Verifique em ação

bancada de teste

2 servidores (CPU: 2 x Xeon E5-2620v3 2.4 Hz / RAM: 32 GB) são conectados por duas portas via Fibre Channel 16G diretamente ao sistema de armazenamento XCubeSAN XS5224D (16 GB de RAM/controlador).

Usamos 16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s, combinados em RAID5 (15+1), para a matriz de dados e 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100GB, SAS 12Gb/s como cache

Foram criados 2 volumes: um para cada servidor.

Teste 1. Cache SSD somente leitura de 1 a 8 SSDs

Cache SSD

  • Tipo de E/S: Personalização
  • Tamanho do bloco de cache: 4 MB
  • Limite de preenchimento na leitura: 1
  • Limite de preenchimento na gravação: 0

Padrão de E/S

  • Ferramenta: IOmeter V1.1.0
  • Trabalhadores: 1
  • Excelente (profundidade da fila): 128
  • Especificações de acesso: 4 KB, 100% leitura, 100% aleatório

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Em teoria, quanto mais SSDs houver no pool de cache, maior será o desempenho. Na prática, isso foi confirmado. O único aumento significativo no número de SSDs com um pequeno número de volumes não leva a um efeito explosivo.

Teste 2. Cache SSD em modo leitura + gravação com 2 a 8 SSDs

Cache SSD

  • Tipo de E/S: Personalização
  • Tamanho do bloco de cache: 4 MB
  • Limite de preenchimento na leitura: 1
  • Limite de preenchimento na gravação: 1

Padrão de E/S

  • Ferramenta: IOmeter V1.1.0
  • Trabalhadores: 1
  • Excelente (profundidade da fila): 128
  • Especificações de acesso: 4 KB, 100% gravação, 100% aleatório

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

O mesmo resultado: crescimento e expansão explosivos do desempenho à medida que o número de SSDs aumenta.

Em ambos os testes, a quantidade de dados de trabalho foi menor que o tamanho total do cache. Portanto, com o tempo, todos os blocos foram copiados para o cache. E o trabalho, de fato, já era feito com SSDs, praticamente sem afetar os discos rígidos. O objetivo desses testes foi demonstrar claramente a eficácia do aquecimento do cache e do dimensionamento de seu desempenho dependendo do número de SSDs.

Agora vamos voltar à terra e verificar uma situação mais realista, quando a quantidade de dados é maior que o tamanho do cache. Para que o teste passe em um período de tempo razoável (o período de “aquecimento” do cache aumenta muito à medida que o tamanho do volume aumenta), limitaremos o tamanho do volume a 120 GB.

Teste 3. Emulação de banco de dados

Cache SSD

  • Tipo de E/S: Banco de dados
  • Tamanho do bloco de cache: 1 MB
  • Limite de preenchimento na leitura: 2
  • Limite de preenchimento na gravação: 1

Padrão de E/S

  • Ferramenta: IOmeter V1.1.0
  • Trabalhadores: 1
  • Excelente (profundidade da fila): 128
  • Especificações de acesso: 8 KB, 67% leitura, 100% aleatório

Implementação de cache SSD no sistema de armazenamento QSAN XCubeSAN

Veredicto

A conclusão óbvia, claro, é a boa eficiência do uso de um cache SSD para melhorar o desempenho de qualquer sistema de armazenamento. Aplicado a QSAN XCubeSAN Esta afirmação se aplica totalmente: a função de cache SSD é implementada perfeitamente. Isto diz respeito ao suporte para modos de leitura e leitura + gravação, configurações flexíveis para qualquer cenário de uso, bem como ao desempenho geral do sistema como um todo. Portanto, por um custo bastante razoável (o preço da licença é comparável ao custo de 1-2 SSDs), você pode aumentar significativamente o desempenho geral.

Fonte: habr.com

Adicionar um comentário