dm-cache - dm-cache

dm-cache
Desenvolvedor (s) Joe Thornber, Heinz Mauelshagen, Mike Snitzer e outros
Escrito em C
Sistema operacional Linux
Modelo Recurso do kernel Linux
Licença GNU GPL
Local na rede Internet kernel .org

dm-cache é um componente (mais especificamente, um alvo) do kernel de mapeador de dispositivo , que é um quadro para o mapeamento de dispositivos de bloco em dispositivos de bloco virtuais de nível mais elevado. Ele permite que um ou mais dispositivos de armazenamento rápido, como unidades de estado sólido (SSDs) baseadas em flash , atuem como um cache para um ou mais dispositivos de armazenamento mais lentos, como unidades de disco rígido (HDDs); isso cria efetivamente volumes híbridos e fornece melhorias de desempenho de armazenamento secundário .

O design do dm-cache requer três dispositivos de armazenamento físico para a criação de um único volume híbrido; dm-cache usa esses dispositivos de armazenamento para armazenar separadamente dados reais, dados de cache e metadados necessários . Modos de operação configuráveis ​​e políticas de cache, com o último na forma de módulos separados, determinam a maneira como o cache de dados é realmente executado.

dm-cache é licenciado sob os termos da GNU General Public License (GPL), com Joe Thornber, Heinz Mauelshagen e Mike Snitzer como seus desenvolvedores principais.

Visão geral

O dm-cache usa unidades de estado sólido ( SSDs ) como um nível adicional de indireção ao acessar unidades de disco rígido ( HDDs ), melhorando o desempenho geral usando SSDs baseados em flash rápido como caches para os HDDs mecânicos mais lentos baseados em mídia magnética rotacional . Como resultado, a velocidade cara dos SSDs é combinada com a capacidade de armazenamento oferecida por HDDs mais lentos, mas menos caros. Além disso, no caso de redes de área de armazenamento (SANs) usadas em ambientes de nuvem como sistemas de armazenamento compartilhado para máquinas virtuais , dm-cache também pode melhorar o desempenho geral e reduzir a carga de SANs, fornecendo armazenamento em cache de dados usando armazenamento local do lado do cliente.

dm-cache é implementado como um componente do mapeador de dispositivo do kernel Linux , que é uma estrutura de gerenciamento de volume que permite que vários mapeamentos sejam criados entre dispositivos de bloco físicos e virtuais. A maneira como um mapeamento entre dispositivos é criado determina como os blocos virtuais são convertidos em blocos físicos subjacentes, com os tipos de conversão específicos chamados de alvos . Atuando como um destino de mapeamento, o dm-cache possibilita que o cache baseado em SSD faça parte do dispositivo de bloco virtual criado, enquanto os modos operacionais configuráveis ​​e as políticas de cache determinam como o dm-cache funciona internamente. O modo de operação seleciona a forma como os dados são mantidos em sincronia entre um HDD e um SSD, enquanto a política de cache, selecionável de módulos separados que implementam cada uma das políticas, fornece o algoritmo para determinar quais blocos são promovidos (movidos de um HDD para SSD), rebaixado (movido de um SSD para um HDD), limpo, etc.

Quando configurado para usar a política de cache multiqueue (mq) ou stochastic multiqueue (smq), sendo o último o padrão, o dm-cache usa SSDs para armazenar os dados associados às leituras e gravações aleatórias realizadas , aproveitando os tempos de busca quase zero de SSDs e evitar tais operações de I / O como gargalos de desempenho de HDD típicos. Os dados associados às leituras e gravações sequenciais não são armazenados em cache em SSDs, evitando a invalidação de cache indesejável durante tais operações; Em termos de desempenho, isso é benéfico porque as operações de E / S sequenciais são adequadas para HDDs devido à sua natureza mecânica. Não armazenar em cache a E / S sequencial também ajuda a estender a vida útil dos SSDs usados ​​como caches.

História

Outro projeto de dm-cache com objetivos semelhantes foi anunciado por Eric Van Hensbergen e Ming Zhao em 2006, como resultado de um estágio na IBM .

Mais tarde, Joe Thornber, Heinz Mauelshagen e Mike Snitzer forneceram sua própria implementação do conceito, que resultou na inclusão do dm-cache no kernel do Linux. O dm-cache foi incorporado à linha principal do kernel do Linux na versão 3.9 do kernel, lançada em 28 de abril de 2013.

Projeto

No dm-cache, a criação de um dispositivo de bloco virtual mapeado que atua como um volume híbrido requer três dispositivos de armazenamento físico:

  • Dispositivo de origem  - fornece armazenamento primário lento (geralmente um HDD)
  • Dispositivo de cache  - fornece um cache rápido (geralmente um SSD)
  • Dispositivo de metadados  - registra a colocação de blocos e seus sinalizadores sujos, bem como outros dados internos exigidos por uma política de cache, incluindo contagens de acertos por bloco; um dispositivo de metadados não pode ser compartilhado entre vários dispositivos de cache e é recomendado ser espelhado

Internamente, as referências dm-cache a cada um dos dispositivos de origem por meio de vários blocos de tamanho fixo; o tamanho desses blocos, igual ao tamanho de uma extensão de cache , é configurável apenas durante a criação de um volume híbrido. O tamanho de uma extensão de armazenamento em cache deve variar entre 32  KB e 1  GB e deve ser um múltiplo de 32 KB; normalmente, o tamanho de uma extensão de armazenamento em cache está entre 256 e 1024 KB. A escolha de extensões de cache maiores que os setores do disco representa um meio-termo entre o tamanho dos metadados e a possibilidade de desperdício de espaço de cache. Ter extensões de cache muito pequenas aumenta o tamanho dos metadados, tanto no dispositivo de metadados quanto na memória do kernel, enquanto ter extensões de cache muito grandes aumenta a quantidade de espaço de cache desperdiçado devido ao cache de extensões inteiras, mesmo no caso de altas taxas de acerto apenas para alguns de suas partes.

Os modos operacionais suportados pelo dm-cache são write-back , que é o padrão, write-through e pass-through . No modo operacional de write-back, as gravações em blocos em cache vão apenas para o dispositivo de cache, enquanto os blocos no dispositivo de origem são marcados apenas como sujos nos metadados. Para o modo de operação write-through, as solicitações de gravação não são retornadas como concluídas até que os dados alcancem a origem e os dispositivos de cache, sem que os blocos limpos sejam marcados como sujos. No modo de operação pass-through, todas as leituras são realizadas diretamente do dispositivo de origem, evitando o cache, enquanto todas as gravações vão diretamente para o dispositivo de origem; quaisquer acertos de gravação de cache também causam a invalidação dos blocos em cache. O modo de passagem permite que um volume híbrido seja ativado quando o estado de um dispositivo de cache não for consistente com o dispositivo de origem.

A taxa de migração de dados que executa dm-cache em ambas as direcções (ou seja, as promoções de dados e rebaixamentos) pode ser estrangulada para baixo a uma velocidade configurado de modo a regular de I / O para os dispositivos de origem e de cache pode ser preservada. O descomissionamento de um volume híbrido ou a redução de um dispositivo de cache requer o uso da política de limpeza , que efetivamente libera todos os blocos marcados nos metadados como sujos do dispositivo de cache para o dispositivo de origem.

Políticas de cache

Em agosto de 2015 e na versão 4.2 do kernel Linux, as três políticas de cache a seguir são distribuídas com a linha principal do kernel Linux, a partir da qual dm-cache por padrão usa a política multiqueue estocástica :

multiqueue (mq)
A política multiqueue (mq) tem três conjuntos de 16 filas , usando o primeiro conjunto para entradas que aguardam o cache e os dois conjuntos restantes para entradas já no cache, com o último separado para que as entradas limpas e sujas pertençam a cada um dos dois conjuntos. A idade das entradas de cache nas filas é baseada em seu tempo lógico associado. A seleção de entradas que vão para o cache (ou seja, tornando-se promovidas) é baseada em limites variáveis ​​e a seleção de fila é baseada na contagem de ocorrências de uma entrada. Essa política visa levar em consideração diferentes custos de perda de cache e fazer ajustes automáticos em diferentes padrões de carregamento.
Essa política rastreia internamente operações de E / S sequenciais para que possam ser roteadas em torno do cache, com diferentes limites configuráveis ​​para a diferenciação entre operações de E / S aleatórias e operações de E / S sequenciais. Como resultado, grandes operações de E / S contíguas são deixadas para serem realizadas pelo dispositivo de origem porque esses padrões de acesso a dados são adequados para HDDs e porque evitam a invalidação de cache indesejável.
multiqueue estocástico (smq)
A política stochastic multiqueue (smq) funciona de maneira semelhante à política multiqueue , mas requer menos recursos para operar; em particular, ele usa quantidades substancialmente menores de memória principal para rastrear blocos em cache. Ele também substitui a contagem de ocorrências da política multiqueue por uma fila de "ponto de acesso" e decide sobre a promoção e o rebaixamento de dados com base no uso pelo menos recentemente (LRU). Como resultado, esta política fornece melhor desempenho em comparação com a política multiqueue , ajusta-se melhor automaticamente a diferentes padrões de carregamento e elimina a configuração de vários limites.
limpador
A política de limpeza grava de volta no dispositivo de origem todos os blocos marcados como sujos nos metadados. Após a conclusão desta operação, um volume híbrido pode ser descomissionado ou o tamanho de um dispositivo de cache pode ser reduzido.

Use com LVM

O Logical Volume Manager inclui lvmcache, que fornece um invólucro para dm-cacheintegração com o LVM.

Veja também

  • bcache  - um cache de camada de bloco do kernel Linux, desenvolvido por Kent Overstreet
  • Flashcache  - um componente de cache de disco para o kernel Linux, inicialmente desenvolvido pelo Facebook
  • Unidade híbrida  - um dispositivo de armazenamento que combina tecnologias de armazenamento de mídia magnética giratória e baseada em flash
  • ReadyBoost  - um componente de software de cache de disco do Windows Vista e sistemas operacionais posteriores da Microsoft
  • Smart Response Technology (SRT) - um mecanismo proprietário de cache de armazenamento em disco, desenvolvido pela Intel para seus chipsets
  • ZFS  - um sistema de gerenciamento de armazenamento entre OS que possui um suporte de dispositivo de cache integrado semelhante (L2ARC)

Referências

links externos