Cache SSD para minimizar o tempo de rotação do disco rígido?


8

versão curta primeiro : estou procurando um software compatível com Linux, capaz de armazenar em cache de forma transparente gravações em HDD usando um SSD. No entanto, eu só quero girar o disco rígido uma ou duas vezes por dia (para gravar os dados em cache no disco rígido). O resto do tempo, o disco rígido não deve girar devido a problemas de ruído.

Agora a versão mais longa : eu construí um computador completamente silencioso executando o Xubuntu. Ele possui uma APU A10-6700T, enorme cooler sem ventilador, PSU sem ventilador, SSD. O problema é: ele também tem (e precisa) um disco rígido barulhento e eu quero proibi-lo de girá-lo durante a noite. Todas as gravações devem ser armazenadas em cache no SSD; as leituras não são necessárias à noite.

Durante todo o dia, este computador baixa automaticamente cerca de 5 GB de dados que serão retidos por cerca de um ano, fornecendo uma capacidade total de disco necessária de pouco menos de 2 TB. Atualmente, esses dados são armazenados em uma unidade de disco rígido barulhenta de 3 TB que gira dia e noite. Às vezes, precisarei acessar alguns dados de vários meses atrás. No entanto, na maioria das vezes, precisarei apenas de dados dos últimos 14 dias, que cabem no SSD. Idealmente, eu gostaria de uma solução transparente (todos os dados em um sistema de arquivos) que armazene em cache todas as gravações no SSD, gravando no HDD apenas uma vez por dia. As leituras seriam atendidas pelo cache se ainda estivessem no SSD; caso contrário, o HDD teria que girar.

Eu tentei o bcache sem muito sucesso (usando cache_mode = writeback, writeback_running = 0, writeback_delay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - falta alguma coisa?) E eu li sobre o ZFS ZIL / L2ARC, mas não tenho certeza se posso conseguir meu objetivo com o ZFS. Alguma dica?

Se tudo mais falhar, simplesmente usarei alguns scripts para copiar automaticamente os arquivos para a unidade grande e excluir os arquivos mais antigos do SSD.

Edit : Cache realmente é o termo errado para o que eu queria. Parece que a solução original pretendida não é possível para mim no momento. Obrigado a todos que contribuíram!


11
Por que você não mantém apenas 14 dias (ou por mais adequados) de dados no SSD e escreve um script que é executado uma vez por dia e move qualquer coisa mais antiga que isso para o HDD? Dessa forma, se você estiver usando algo com menos de 14 dias, estará usando o SSD e o HDD gravará apenas uma vez por dia. Se você precisasse de algo mais antigo, teria que acessar o HDD.
Richard Powell

É exatamente o que farei, como sugeri na última frase da pergunta :) Um dos motivos pelos quais fiz a pergunta foi para evitar o incômodo (reconhecidamente pequeno) de precisar girar e montar a unidade manualmente, em vez de apenas ter um sistema de arquivos transparente.
sirprize

Respostas:


3

Não é exatamente assim ou por que o cache funciona - o cache deve aproveitar a velocidade mais rápida e o melhor acesso aleatório do SSD ou outra memória, em vez de minimizar as gravações no disco rígido. O armazenamento em cache foi projetado para maximizar a velocidade, não reduzir a gravação, tendo um buffer menor e mais rápido fazendo backup de um dispositivo de armazenamento grande e lento.

De fato, o bcache, que faz parte do núcleo principal do linux, simplesmente transmitirá gravações seqüenciais para o disco rígido, em vez de transmiti-lo pelo SSD, pois não há vantagem de desempenho.

O ZIL / L2Arc usa o SSD para armazenar logs (no caso do ZIL) e clusters de arquivos comumente usados ​​(com L2Arc). O ZIL acelera gravações síncronas, armazenando-as até que estejam todas prontas para serem gravadas. O L2Arc armazena arquivos comumente acessados ​​em um armazenamento mais rápido. Nenhuma dessas opções permitirá que você faça o que precisa.

A unidade Fusion também usa um SSD e um HDD, colocando de maneira transparente arquivos comumente usados ​​no SSD para leituras mais rápidas e HDDs para armazenamento em massa de arquivos usados ​​com menos frequência. Também não permite usar o SSD como espaço temporário e fazer backup de arquivos na unidade principal de vez em quando

O que você está vendo não é o cache, mas os backups periódicos do sistema para o disco rígido. Suponho que talvez seja possível falsificar algo junto com o Aufs - a primeira ramificação do HDD com arquivos maiores (por isso é preciso ter precedência) e uma ramificação no SSD; em seguida, execute um script que move os arquivos do SSD para o HDD periodicamente, enquanto o acessa a partir do mesmo local. Ainda não testei isso, mas, diferentemente do cache, mover arquivos periodicamente e usar aufs provavelmente será exatamente o que você deseja.

A maneira mais simples de classificar arquivos por idade é ls -tr - t classifica por tempo (do mais recente para o mais antigo) e r reverte a ordem. (Se você tem um intervalo específico em mente, find . -mtime nfunciona muito bem n, pois um número específico fornece arquivos modificados há n dias atrás, -n fornece arquivos modificados nos últimos n dias e + n fornece arquivos modificados há dias). Você pode encontrar algumas idéias sobre como usá-lo aqui

Desde tranquilidade é o seu objetivo real, você pode verificar se o seu drive suporta modo silencioso com hdparm -M /dev/sda- este deve saída algo como acoustic = 254 (128=quiet ... 254=fast), nesse caso, você pode fazer o seu mais silencioso disco rígido com o comando hdparm -M 128 /dev/sda. Execute o comando oposto hdparm -M 1254 /dev/sdaquando precisar de mais velocidade.


Obrigado pela contribuição, esta é a minha resposta favorita ainda. Eu não sabia sobre aufs e vou investigar.
sirprize

A transparência não é realmente possível para um processo em lote como o seu - posso pensar em várias maneiras de acionar um trabalho do tipo backup, mas você está realmente procurando por scripts, alguns sed / awk para selecionar os arquivos necessários e movendo-se os arquivos, talvez com cron. Eu meio que suspeito que o hdparm sozinho possa resolver o problema de 'sonoridade' do disco rígido significativamente, e permitirá que você desligue a unidade quando não estiver em uso, o que também pode ser útil.
Journeyman Geek

Mais uma vez obrigado, vou usar alguns bash-fu, cron, hdparm, mount e rsync, conforme sugerido na última frase da pergunta. O hdparm -M ajudou a tornar a unidade um pouco mais silenciosa, mas eu prefiro que o disco não gire durante a noite.
sirprize

3

Como as outras respostas trataram o problema do ponto de vista do software, pensei em incluir algumas informações sobre soluções de hardware.

O artigo Prova de som do seu disco rígido lista as seguintes opções:

  • Desfragmente seu disco rígido
  • Enrole o disco rígido em tiras de borracha para amortecer as vibrações
  • Escolha um novo disco rígido: a maioria dos discos rígidos de hoje em dia está equipada com rolamentos dinâmicos fluidos, que permitem que os pratos permaneçam quase silenciosos, mesmo quando rodam a uma velocidade muito alta.

Posso testemunhar por minha própria experiência que nunca consigo ouvir meu novo disco rígido de 4 TB, mesmo ao copiar arquivos muito grandes.

Com algumas pesquisas, também é possível encontrar materiais de amortecimento acústico para disco rígido, como o gabinete SilentDrive HD e materiais acústicos ou o sistema de montagem em disco rígido silencioso NoiseMagic NoVibes III . Não sei onde são vendidos, e os elásticos acima me parecem quase tão eficientes.

Pode-se também à prova de som em todo o computador. Alguns exemplos de sites que vendem materiais à prova de som são o Quiet PC USA , AcousticPC ou Dynamat , mas existem muitos.

Alguns gabinetes de computador já foram projetados para operação silenciosa. Veja, por exemplo,
Seis casos com baixo nível de ruído e desempenho, testados .

Como última observação, um disco rígido barulhento que clunks, cliques ou guinchos pode ser um sinal de que seu disco rígido está começando a falhar, portanto, tome cuidado.


Obrigado pelo seu feedback, tenha um voto positivo. Eu já estou usando hardware especializado - nesse caso, hardware completamente silencioso, exceto a unidade. Por "ruído", estou me referindo ao som normal de um disco rígido saudável. Eu simplesmente precisarei usar o cron para girar a unidade, montá-la, fazer um backup, desmontar e girar novamente.
sirprize

2

Várias variações do Puppy Linux são baseadas no Ubuntu, mas usando o Aufs .

Puppy é executado inteiramente a partir da RAM, não há acessos ao HDD em operação normal.

Se você disser ao Puppy que seu HDD é uma unidade flash, ele despejará o sistema de arquivos RAM em disco periodicamente, em vez de continuamente. Ele foi projetado para reduzir o desgaste de gravações frequentes em drives flash, mas também funciona bem em HDDs.

Como em quase tudo no Puppy, você pode usar uma GUI para definir com que frequência deseja salvar o sistema de arquivos RAM. Normalmente, isso acontece a cada 10 minutos ou mais, mas não há nada que impeça a configuração para despejar a cada 720 minutos (12 horas), por exemplo.

Gerente de Eventos do Puppy Linux

Este trecho do meu menu.lstarquivo do carregador de inicialização Grub4DOS mostra a configuração da pmediaopção do kernel que diz que está usando o flashdrive em vez de um disco rígido ...

# menu.lst produced by grub4dosconfig-v1.7.1
#
# 'kernel ... pmedia=ideflash'
#     Treat the HDD as a flashdrive: infrequent writes of filesystem to savefile

title Puppy Lupu 5.2.8 (sda3/puppy528lu) Cached\nUse SWAP; changes to RAM; flush to disk every 10min (fastest)
  find --set-root --ignore-floppies --ignore-cd /puppy528lu/initrd.gz
  kernel /puppy528lu/vmlinuz   psubdir=puppy528lu pmedia=ideflash pfix=copy,fsck
  initrd /puppy528lu/initrd.gz

Uma observação sobre as "variações" do Puppy Linux ...
Eu estou usando o Puppy Linux 5.2.8 "Lupu", que é baseado no Ubuntu 10.04 Lucid Lynx do Ubuntu 10.04. Esta versão também é chamada de "Lucid" em vez de "Lupu" devido às suas origens. Existem também versões baseadas no Slackware e em algumas outras distribuições. Como você já está usando o Xubuntu, o Puppy Linux Lupu seria o mais familiar. Também seria muito mais rápido. Eu usei o Xubuntu por cerca de um ano antes de encontrar o Puppy.

Há também uma versão muito mais nova baseada no "Ubuntu Precise Pangolin" chamada "Puppy Linux Precise". Existem grandes mudanças no kernel usado na versão mais recente que podem não funcionar bem com o hardware mais antigo. Se sua máquina tiver menos de 5 anos, você poderá estar mais feliz com o Precise. Acredito que a técnica descrita acima ainda funcionará no Precise, embora as opções exatas etc. possam ser diferentes, mas não posso testá-la.


0

A solução curta e rapidamente implementável (mas não responde exatamente ao que você deseja) é: transfira o disco de armazenamento para outro local. pode ser um chassi de servidor de arquivos netowrk (como a WD world edition) ou um disco USB3 e você pode instalá-lo na mesma sala do computador silencioso ou em uma sala diferente para evitar ouvi-lo completamente.

Isso é melhor na minha opinião, pois você certamente só usará a unidade quando quiser transferir dados pela rede - o sistema operacional pode estar fazendo algum outro reequilíbrio ou organização do sistema de arquivos que você não pode evitar e o atrapalharia. . Quarto tão diferente é uma grande vantagem.

O armazenamento em cache deve ser fácil - basta fazer backup dos dados do dia no disco externo, o que você pode obter usando soluções como rsyncou unison.

A solução mais longa não é mais ideal (ou seja, nenhum aplicativo), mas você terá a unidade na mesma caixa com o ssd e obterá velocidades mais altas (mas você realmente precisa de uma velocidade maior que a da rede por apenas 5 GB / dia?):

você pode usar smartctlpara definir o tempo de desativação da unidade e mantê-la em um estado desmontado - para evitar que o SO faça coisas na unidade. Em seguida, basta escrever um script mounte fazer backup (como acima) dos dados necessários.


Infelizmente, essas são todas as coisas que eu queria evitar. Obrigado pelo seu tempo!
sirprize

0

Você não vai gostar da minha resposta, mas na verdade está abusando do termo cache, na verdade está descrevendo uma solução de backup. Dê uma olhada no rsync ou pesquise outras soluções de backup, se desejar algo mais completo.


Isto é absolutamente verdadeiro, e é o que eu abordados em profundidade na minha resposta :)
Journeyman Geek
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.