Stanco delle prestazioni da bradipo dell’emulatore di Android e della (ahimé talvolta necessaria) macchina virtuale con Windows, che grattano di continuo sul disco meccanico della mia home directory, ho deciso che era giunto il momento di intervenire, per evitare di trovarsi catapultati negli anni 90 ogni due minuti.
Per risolvere il problema prestazionale esiste una soluzione molto semplice: comprare un nuovo disco a stato solido, abbastanza capiente. Questa soluzione però non è sicuramente delle più economiche.
La soluzione arzigogolata e nerd invece è: usare un piccolo disco SSD d’avanzo come cache per il disco meccanico.
Configurazione iniziale
Qualche mese fa mi è capitata una rocambolesca avventura per cui ho rischiato di perdere tutti i miei dati per colpa di un programmatore di firmware distratto. Certo, avevo un backup, ma non è la stessa cosa.
Quel giorno comprai dei dischi nuovi e mi feci un bel RAID1, come in figura.
Configurazione attuale, lenta
Questa configurazione avrebbe dovuto aiutarmi a prevenire perdite di dati, e anche a migliorare le performance in lettura dei dischi. Tuttavia, come ben presto si è rivelato, le cose non stavano affatto così, almeno quando i dischi venivano (ab)usati dalle sopraccitate applicazioni, particolarmente avide di random IO.
Il sistema operativo risiede comunque su un disco SSD a parte.
Nuova configurazione
Avendo un disco SSD d’avanzo, che avevo usato per rinsavire il computer portatile che mi ha accompagnato per numerosi viaggi in treno avanti e indietro per l’Università, ho quindi deciso di modificare la mia configurazione nel seguente modo.
Nuova configurazione desiderata
In questo modo, ogni volta che viene effettuato un accesso ad un file sul mio filesystem, LVM si preoccupa di controllare se, per caso, tale accesso può essere fatto anche per mezzo di una copia che si trova sul disco SSD.
Sì, LVM probabilmente potrebbe gestire direttamente anche il RAID, ma per il momento ho preferito riutilizzare le conoscenze già acquisite e continuare a sfruttare il RAID con mdadm.
La torre di Hanoi
Mi sono fatto prestare un disco meccanico di capienza identica ai miei dall’Officina Informatica del GOLEM.
Copiare tutto su quel disco e ricopiare di nuovo sul RAID? No, ho già trovato un disco col firmware buggato, e non desidero trovarne altri. Figuriamoci usare un disco usato di recupero!
Fare una specie di torre di Hanoi e rischiare comunque di perdere i dati per qualche errore umano (da me commesso)? Sì, facciamolo.
Mi sono quindi portato nella seguente situazione, installando il disco meccanico di passaggio, nominato sdd.
Vecchia e nuova configurazione (parziale) a confronto.
A sinistra l’array md0, a destra md1.
Poiché è molto facile fare confusione con i nomi, e poiché LVM permette di usare nomi mnemonici, ho assegnato i seguenti nomi autoesplicativi ai vari componenti del mio spazio di archiviazione.
picostorage: il gruppo virtuale;
slowdino: il volume sul vecchio lento dinosauro meccanico (il RAID1);
fastrabbit: il volume sul nuovo veloce disco SSD;
metaguy: il volume per i metadati;
Ho impostato la nuova configurazione, ma con un disco mancante (in rosso in figura).
A questo punto, la cache è attiva. Non rimane che colmare il buco dell’array con uno dei dischi del vecchio array: simulo un guasto a uno dei dischi, lo rimuovo dall’array originale, cancello i metadati, e lo inserisco nel nuovo array.
Mi trovo quindi in questa condizione, e attendo pazientemente che l’array su sdb venga ricostruito, controllandolo con mdstat.
Una volta ricostruito l’array correttamente su sdb e su sdd, ripeto l’operazione, simulando stavolta il fallimento di sdd, e inserendo nell’array sda. Al termine dell’operazione, mi trovo con i miei due dischi sda e sdb nella nuova configurazione, e posso restituire sdd al GOLEM.
In nessun momento di tutta questa procedura i miei dati sono stati su un disco soltanto, perciò si può dire che la procedura sia a prova di guasti hardware.
Non sono però sicuro che sia a prova di guasti umani, perciò non fatelo a casa.
Benchmark
Per verificare se davvero questa cache serve a qualcosa, faccio un veloce test.
A fronte di circa 400 IOPS ottenute prima di installare la cache, adesso ne vengono fatte oltre 4000! Un risultato più che soddisfacente.
Anche durante l’uso delle applicazioni più avide, adesso la macchina risulta molto più fluida.
Il monitor di sistema mostra chiaramente i miglioramenti in lettura/scrittura dalla cache (in verde chiaro e fucsia), comparati con la lettura/scrittura dai dischi meccanici (in verde e rosso)
Manutenzione
Ogni tanto è bene controllare lo stato della cache e del RAID, e per questo ci vengono in aiuto i seguenti comandi:
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRead More
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.