Cache SSD per ridurre al minimo i tempi di spin-up dell'HDD?


8

prima la versione corta : sto cercando un software compatibile con Linux che sia in grado di memorizzare in modo trasparente le scritture HDD usando un SSD. Tuttavia, voglio solo far girare l'HDD una o due volte al giorno (per scrivere i dati memorizzati nella cache sull'HDD). Il resto del tempo, l'HDD non dovrebbe girare a causa di problemi di rumore.

Ora la versione più lunga : ho creato un computer completamente silenzioso con Xubuntu. Ha un APU A10-6700T, enorme dispositivo di raffreddamento senza ventola, alimentatore senza ventola, SSD. Il problema è: ha anche (e ha bisogno) un HDD rumoroso e voglio proibire di girarlo durante la notte. Tutte le scritture devono essere memorizzate nella cache sull'SSD, le letture non sono necessarie nella notte.

Per tutto il giorno, questo computer scaricherà automaticamente circa 5 GB di dati che verranno conservati per circa un anno, fornendo una capacità totale necessaria del disco leggermente inferiore a 2 TB. Questi dati sono attualmente memorizzati su un disco rigido rumoroso da 3 TB che gira giorno e notte. A volte, dovrò accedere ad alcuni dati di diversi mesi fa. Tuttavia, la maggior parte delle volte mi serviranno solo i dati degli ultimi 14 giorni, che si adatterebbero all'SSD. Idealmente, vorrei una soluzione trasparente (tutti i dati su un file system) che memorizza nella cache tutte le scritture sull'SSD, scrivendo sull'HDD solo una volta al giorno. Le letture sarebbero servite dalla cache se fossero ancora sull'SSD, altrimenti l'HDD dovrebbe girare.

Ho provato bcache senza molto successo (usando cache_mode = writeback, writeback_running = 0, writeback_delay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - manca qualcosa?) E ho letto di ZFS ZIL / L2ARC ma non sono sicuro di poter ottenere il mio obiettivo con ZFS. Qualche puntatore?

Se tutto il resto fallisce, userò semplicemente alcuni script per copiare automaticamente i file sul disco rigido mentre elimino i file più vecchi dall'SSD.

Modifica : la cache è davvero il termine sbagliato per quello che volevo. Sembra che la soluzione originale prevista non sia possibile per me in questo momento. Grazie a tutti quelli che hanno contribuito!


1
Perché non conservi solo 14 giorni (o comunque molto adatti) di dati sull'SSD e scrivi uno script che viene eseguito una volta al giorno e sposta qualcosa di più vecchio di quello sull'HDD? In questo modo, se si utilizza qualcosa di meno di 14 giorni, si utilizzerà l'SSD e l'HDD scriverà solo una volta al giorno. Se avessi bisogno di qualcosa di più vecchio, dovresti accedere all'HDD.
Richard Powell,

Questo è esattamente quello che farò, come ho suggerito nell'ultima frase della domanda :) Uno dei motivi per cui ho posto la domanda è stato quello di evitare la seccatura (dichiaratamente piccola) di dover girare e montare il drive manualmente invece di avere un file system trasparente.
Sirprize

Risposte:


3

Non è proprio così o perché funziona la memorizzazione nella cache: la memorizzazione nella cache ha lo scopo di sfruttare la maggiore velocità e un migliore accesso casuale dell'SSD o di altra memoria, piuttosto che ridurre al minimo le scritture sul disco fisso. La memorizzazione nella cache è progettata per massimizzare la velocità, non ridurre la scrittura, avendo un buffer più piccolo e più veloce che supporta un dispositivo di archiviazione grande e lento.

In effetti, bcache, che fa parte del kernel mainline di linux, passerà semplicemente le scritture sequenziali all'hdd, piuttosto che passarlo attraverso l'SSD poiché non c'è alcun vantaggio in termini di prestazioni.

ZIL / L2Arc utilizza l'SSD per archiviare i registri (nel caso di ZIL) e i cluster di file comunemente utilizzati (con L2Arc). ZIL accelera le scritture sincrone memorizzandole fino a quando non sono tutte pronte per essere scritte. L2Arc memorizza i file a cui si accede comunemente su un archivio più veloce. Nessuno di questi ti permetterà di fare ciò di cui hai bisogno.

Fusion Drive utilizza anche un SSD e un HDD che inseriscono in modo trasparente i file più utilizzati sull'SSD per letture più rapide e gli HDD per l'archiviazione di massa dei file meno utilizzati. Anche questo non ti consente di utilizzare l'SSD come spazio di memoria virtuale e di eseguire il backup dei file sull'unità principale ogni tanto

Quello che stai guardando non è affatto la memorizzazione nella cache, ma piuttosto backup periodici del sistema sull'HDD. Immagino che potresti essere in grado di confondere qualcosa insieme ad Aufs: il primo ramo sull'HDD con file più grandi (quindi richiede precisione) e un ramo sull'SSD, quindi eseguire uno script che sposta i file dall'SSD al HDD periodicamente, pur essendo accessibile dalla stessa posizione. Non l'ho ancora testato, ma a differenza della memorizzazione nella cache, lo spostamento periodico di file e l'utilizzo di aufs sarà probabilmente esattamente quello che desideri.

Il modo più semplice per ordinare i file per età è ls -tr - t ordina per tempo (dal più recente al meno recente) e r inverte l'ordine. (Se hai in mente un intervallo specifico, find . -mtime nfunziona alla grande n come un numero specifico ti dà i file modificati n giorni fa, -n ti dà i file modificati negli ultimi n giorni e + n ti dà i file modificati n giorni fa). Puoi trovare alcune idee su come usarlo qui

Poiché la silenziosità è il tuo vero obiettivo, puoi controllare se il tuo disco supporta la modalità silenziosa hdparm -M /dev/sda- questo dovrebbe produrre qualcosa di simile acoustic = 254 (128=quiet ... 254=fast), nel qual caso puoi rendere il tuo disco rigido più silenzioso con il comando hdparm -M 128 /dev/sda. Esegui il comando opposto hdparm -M 1254 /dev/sdaquando hai bisogno di più velocità.


Grazie per l'input, questa è la mia risposta preferita ancora. Non sapevo di aufs e lo esaminerò.
Sirprize,

La trasparenza non è davvero possibile per un processo impacchettato come il tuo: posso pensare a molti modi per innescare un processo di tipo di backup, ma stai davvero guardando allo scripting, alcuni sed / awk per selezionare i file necessari e spostandoti i file, magari con cron. Quasi sospetto che solo hdparm possa risolvere in modo significativo il problema del "volume" con il tuo disco rigido, e ti permetterà di spegnere il disco quando non in uso, il che potrebbe essere utile.
Journeyman Geek

Grazie ancora, userò alcuni bash-fu, cron, hdparm, mount e rsync come suggerito nell'ultima frase della domanda. hdparm -M ha contribuito a rendere l'unità un po 'più silenziosa, ma preferisco che il disco non giri affatto durante la notte.
Sirprize

3

Poiché le altre risposte hanno risolto il problema dal punto di vista del software, ho pensato di includere alcune informazioni sulle soluzioni hardware.

L'articolo Sound Proof sul disco rigido elenca le seguenti opzioni:

  • Deframmenta il tuo disco rigido
  • Avvolgere il disco rigido in elastici per smorzare le vibrazioni
  • Scegli un nuovo disco rigido: la maggior parte dei dischi rigidi dei nostri giorni sono dotati di cuscinetti fluidodinamici, che consentono ai piatti di rimanere quasi silenziosi anche quando girano a un ritmo molto elevato.

Posso testimoniare dalla mia esperienza che non riesco mai a sentire il mio nuovo disco rigido da 4 TB, anche quando si copiano file di grandi dimensioni.

Con alcune ricerche, è anche possibile trovare materiali di smorzamento acustico per disco rigido come la custodia SilentDrive HD e materiali acustici o il sistema di montaggio su disco rigido silenzioso NoiseMagic NoVibes III . Non so dove vengano venduti e gli elastici sopra mi sembrano quasi altrettanto efficienti.

Si può anche insonorizzare l'intero computer. Alcuni siti Web di esempio che vendono materiali per l'isolamento acustico sono Quiet PC USA , AcousticPC o Dynamat , ma ce ne sono molti.

Alcuni case per computer sono già progettati per un funzionamento silenzioso. Vedere ad esempio
sei casi a basso rumore, orientati alle prestazioni, testati .

Come ultima osservazione, un disco rigido rumoroso che si blocca, fa clic o urla può essere un segno che il disco rigido sta iniziando a guastarsi, quindi fai attenzione.


Grazie per il tuo feedback, hai un voto. Sto già utilizzando hardware specializzato - in questo caso, hardware completamente silenzioso ad eccezione dell'unità. Per "rumore" mi riferisco al suono normale di un disco rigido sano. Dovrò semplicemente usare cron per far girare l'unità, montarla, fare un backup, smontarla e poi ruotarla di nuovo.
Sirprize

2

Diverse varianti di Puppy Linux si basano su Ubuntu ma utilizzano Aufs .

Puppy funziona interamente dalla RAM, non ci sono accessi all'HDD durante il normale funzionamento.

Se dici a Puppy che il tuo HDD è un'unità flash, scaricherà periodicamente il file system RAM sul disco invece che continuamente. Questo è stato progettato per ridurre l'usura delle scritture frequenti su unità flash, ma funziona anche su HDD.

Come per quasi tutto in Puppy, è possibile utilizzare una GUI per impostare la frequenza con cui si desidera salvare il filesystem RAM. In genere, ciò avverrà ogni 10 minuti circa, ma non c'è nulla che impedisca di impostarlo per scaricare ogni 720 minuti (12 ore), ad esempio.

Puppy Linux Event Manager

Questo estratto dal mio menu.lstfile bootloader Grub4DOS mostra l'impostazione per l' pmediaopzione del kernel che dice che sta usando flashdrive invece di un HDD ...

# 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

Una nota sulle "varianti" di Puppy Linux ...
Sto usando Puppy Linux 5.2.8 "Lupu" che si basa su (costruito abbattendo) Ubuntu 10.04 Lucid Lynx. Questa versione è spesso chiamata "Lucida" invece di "Lupu" per via delle sue origini. Esistono anche versioni basate su Slackware e alcune altre distribuzioni. Dato che stai già utilizzando Xubuntu, Puppy Linux Lupu sarebbe il più familiare. Sarebbe anche molto più veloce. Ho usato Xubuntu per circa un anno prima di trovare Puppy.

Esiste anche una versione molto più recente basata su "Ubuntu Precise Pangolin" chiamata "Puppy Linux Precise". Vi sono importanti modifiche al kernel utilizzato nella versione più recente che potrebbero non funzionare bene con l'hardware precedente. Se la tua macchina è inferiore a 5 anni, potresti essere più felice con Precise. Credo che la tecnica sopra descritta continuerà a funzionare su Precise anche se le opzioni esatte, ecc. Potrebbero essere diverse ma non sono in grado di testarlo.


0

soluzione breve e rapidamente implementabile (ma non rispondere esattamente a ciò che si desidera) è: trasferire il disco di archiviazione altrove. può essere un chassi di file server netowrk (come l'edizione mondiale WD) o un disco USB3 e puoi averlo nella stessa stanza del PC silenzioso o in una stanza diversa in modo da evitare di ascoltarlo completamente.

A mio avviso, questo è meglio poiché utilizzerai sicuramente l'unità solo quando desideri trasferire i dati sulla rete : il sistema operativo potrebbe eseguire un altro riequilibrio o un riequilibrio dell'albero dei file system che non puoi evitare e ti disturberebbe . Quindi una stanza diversa è un grande vantaggio.

La memorizzazione nella cache dovrebbe essere abbastanza semplice: basta eseguire il backup dei dati del giorno sul disco esterno, cosa che puoi realizzare usando soluzioni come rsynco unison.

La soluzione più lunga non è ancora l'ideale (cioè nessuna singola applicazione) ma otterrai l'unità nella stessa scatola con l'sd e raggiungerai velocità più elevate (ma hai davvero bisogno di una velocità superiore rispetto alla rete per soli 5 GB / giorno?):

è possibile utilizzare smartctlper impostare il tempo di decelerazione dell'unità e mantenere l'unità in uno stato non montato, per evitare che il sistema operativo esegua operazioni sull'unità. Quindi basta scrivere uno script mounte fare il backup (come sopra) dei dati necessari.


Sfortunatamente, quelle sono tutte cose che volevo evitare. Grazie per il tuo tempo!
Sirprize,

0

Non ti piace la mia risposta, ma stai effettivamente abusando del termine cache, stai effettivamente descrivendo una soluzione di backup. Dai un'occhiata a rsync o cerca ulteriori soluzioni di backup se desideri qualcosa di più completo.


Questo è assolutamente vero, ed è quello che ho approfondito nella mia risposta :)
Journeyman Geek
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.