O mdadm contém um recurso para armazenar em cache em outra unidade?
Não, a invasão do software Linux (gerenciada por mdadm
) é apenas para criar um conjunto de discos para fins de redundância . 1
Eu conheço dois projetos que permitirão que você faça isso: dm-cache e flashcache (ambos relativamente experimentais). Ele permite que você use seu SSD como cache (leitura e gravação) para seus discos rígidos mais lentos ou qualquer outro dispositivo de bloco, como um dispositivo md. Ambos oferecem grande ganho de desempenho e são muito ajustáveis para encontrar equilíbrio em durabilidade e desempenho.
Infelizmente, isso ainda não está empacotado ou incluído no kernel a partir deste momento. Portanto, não é uma tarefa muito simples de se fazer no Ubuntu. Sinta-se à vontade para sujar as mãos, mas lembre-se de que é um software experimental e difícil de obter suporte.
Perguntas relacionadas:
- Como faço para instalar e usar o flashcache / bcache para armazenar em cache o HDD para o SSD?
- avisar sobre SSD e dois discos rígidos
1 No entanto, você pode ditar o kernel para usar uma das unidades para leitura primariamente, para obter alguma melhoria no desempenho de leitura, mas isso não é da mesma forma que um cache SSD real. Veja esta resposta de Gilles sobre como fazer isso.
há algo que devo fazer para atribuir memória RAM comum ao armazenamento em cache?
Isso já está habilitado em todo kernel do Linux! Você pode ver a quantidade de páginas armazenadas em cache usando free
:
free -m
total used free shared buffers cached
Mem: 24047 17703 6343 0 6492 3550
-/+ buffers/cache: 7660 16386
Swap: 3811 0 3811
Aqui você vê que tem agora 3550 MB de páginas (nível de sistema de arquivos) em cache e 6492 MB de páginas (nível de dispositivo de bloco) em minha máquina. As leituras para uma delas não resultarão em uma leitura do disco.
Para demonstrar os caches em nível de bloco, tente este comando:
hdparm -Tt /dev/md127 # replace with your device - try both disks and md devices!
/dev/md127:
Timing cached reads: 8624 MB in 2.00 seconds = 4313.50 MB/sec
Timing buffered disk reads: 282 MB in 2.93 seconds = 96.31 MB/sec
O primeiro resultado é claramente proveniente de caches na memória, enquanto o segundo é lido diretamente do disco.
Para demonstrar o armazenamento em cache do sistema de arquivos usando dd
:
# first time
dd if=/home/gert/bigfile.img of=/dev/null
5927206912 bytes (5.9 GB) copied, 25.9253 s, 229 MB/s
# second time
dd if=/home/gert/bigfile.img of=/dev/null
5927206912 bytes (5.9 GB) copied, 4.91444 s, 1.2 GB/s
# third time, with file system cache disabled using iflag=direct
# yields results similar to first one
# Try using a bigger blocksize (bs=10M for example) if you're seeing very low speeds
dd if=/home/gert/bigfile.img of=/dev/null iflag=direct