bcache su md o md su bcache

bcache consente una o più unità disco veloci come quelle basate su flash unità a stato solido (SSD) per fungere da cache per una o più unità disco rigido più lente .

Se ho capito bene,

  • un SSD * potrebbe essere assegnato alla cache di più HDD di backup, quindi i dispositivi memorizzati nella cache risultanti potrebbero essere RAID con mdadm
    o
  • più HDD potrebbero essere RAID in un unico dispositivo md di backup e il SSD assegnato alla cache che

Mi chiedo quale sia lapproccio più sano. Mi viene in mente che far crescere un RAID5 / 6 potrebbe essere più semplice con una o laltra tecnica, ma non lo sono sicuro di quale!

Ci sono buone ragioni (ad esempio, aumentare lo storage di backup o qualsiasi altra cosa) per scegliere un approccio rispetto allaltro (per un file system non root di grandi dimensioni contenente file di backup della VM)?


* con “un SSD” intendo una sorta di dispositivo SSD ridondante, ad esempio un RAID1 di due fisici al SSD

Commenti

  • In entrambi i casi tutti i dischi che bcache i dorsi dovranno essere formattati con bcache, quindi ' dovrai creare un md array, formatta il singolo disco risultante interamente come partizione supportata da bcache, collegalo alla sua unità cache e vai da lì, oppure formatta molti dischi con bcache, collegali alla loro unità cache, quindi formatta i molti dischi come un array. In entrambi i casi ci sono più punti di possibile errore che dipendono dallinteroperabilità tra due filesystem, per non parlare dellFS finale. vedi qui : scorri verso il basso .
  • Grazie a github.com/g2p/blocks , puoi convertirlo sul posto, sebbene ci siano alcune limitazioni a questo.
  • @mikeserv Capisco tutto questo, questo è per un server appositamente costruito quindi ' va tutto bene. Cosa intendi con " due filesystem "? bcache non è un filesystem – lunico filesystem che ' avrò sarà XFS sul dispositivo bcache o mdadm finale (a seconda dellopzione che scelgo).
  • Grazie @Adam, la conversione sul posto non è un problema per me.
  • @mikeserv no, non è ' t. I filesystem (es. Btrfs, xfs, extN ecc.) Vivono sopra i dispositivi a blocchi. mdadm e bcache funzionano a livello di dispositivo a blocchi, non a livello di filesystem (btrfs confonde il problema con la ' violazione dei livelli, ma questa è una conversazione completamente separata).

Risposta

Penso che memorizzare nella cache lintero dispositivo md abbia più senso.

Mettere bcache nella cache lintero dispositivo md sacrifica lintera idea di avere raid, perché introduce un altro singolo punto di errore.

  • I guasti OTH dei dischi SSD sono relativamente rari e bcache può essere inserito nel writethrough / writearound modalità (a differenza della modalità writeback), dove non sono presenti dati memorizzato solo nel dispositivo cache, e il guasto della cache non uccide le informazioni nel raid lo rende unopzione relativamente sicura.

  • Un altro fatto è che ci sono dati computazionali significativi sovraccarico del soft RAID-5; quando si memorizza nella cache ogni membro del raid rotante separatamente, il computer deve ancora farlo ricalcola tutte le parità, anche sugli hit della cache

  • Ovviamente, sacrificheresti un po di costoso spazio SSD, se memorizzi separatamente ogni unità rotante nella cache. – A meno che non si preveda di utilizzare la cache SSD sottoposta a raid.

  • Entrambe le opzioni relativamente non influenzano il tempo di crescita del processo, sebbene lopzione con le unità in rotazione memorizzate nella cache separatamente possa essere più lenta a causa di più traffico bus.

È un processo veloce e relativamente semplice configurare bcache per rimuovere lunità SSD, quando è necessario sostituirla. Grazie al blocchi dovrebbe essere possibile migrare la configurazione raid in entrambe le direzioni sul posto.

Dovresti anche ricordare che al momento la maggior parte (tutti?) live- Le distribuzioni su CD non supportano bcache , quindi non puoi semplicemente accedere ai tuoi dati con tali strumenti indipendentemente dal bcachemdraid opzione di layout che hai scelto.

Commenti

  • I ' ho aggiornato la domanda per chiarire che ' non ho intenzione di avere una cache SSD non ridondante. Il tuo secondo punto elenco il punto è un ottimo poi nt, grazie per quello. Terzo punto sullo spazio: intendi perché ' memorizzerai la parità su SSD? re il tuo ultimo paragrafo, io ' sto usando F20 ma alla fine userò RHEL / CentOS7 o Debian Jessie (se bcache-tools fa il taglio).
  • @JackDouglas Ad 3 ° punto: Sì, esattamente quello. Ma dal momento che prevedi di utilizzare unità SSD sottoposte a raid, questo ' non si applica a te.
  • Lo fa ancora perché ' non solo sarà sottoposto a mirroring, ma dovrà anche memorizzare la parità RAID per le unità di supporto. Questo non è ' se il RAID viene eseguito sotto bcache che pensavo fosse il tuo punto
  • Credo che tu intenda il contrario: ssd matrix fa ' Non è necessario memorizzare i dischi rotanti ' parità, se viene alimentato con lintera unità mdraid.
  • sì, quello ' è esattamente quello che voglio dire!

Risposta

I ” Penso che lapproccio sano sia memorizzare nella cache il dispositivo MD risultante.

bcache è progettato per passare attraverso letture e scritture sequenziali.

Se si bcache ogni dispositivo separatamente, logicamente, diversi dispositivi eseguire lo striping in un MD razziato o spogliato, dal punto di vista di bcache, scriverà costantemente blocchi casuali.

Mentre un volume MD bcached apparirà normalmente, scrivendo file sul volume, piuttosto che blocchi casuali su diversi dispositivi.

Lintero scopo del raid hardware e software è eseguire lo striping dei dati nel backend in modo che i filesys risultanti tem sembra un volume normale.

Questo potrebbe non essere corretto (poiché gli sviluppatori di bcache potrebbero essere intelligenti e tenere conto di quel tipo di situazione), ma la cosa logica ottimale da fare è memorizzare nella cache i volumi, piuttosto che bloccare dispositivi.

Commenti

  • anche un ottimo punto
  • Una grande scrittura sequenziale su un RAID5 / 6 produce scritture sequenziali su tutti i dispositivi componenti. Ogni dispositivo componente ottiene ogni blocco di dati N-1 (o parità), ma i dati che ottiene sono sequenziali. Ma ' hai ragione che distorcerà le cose. Se ci sono alcuni blocchi che vedono frequenti scritture di striping parziale, risultando in una lettura-modifica-scrittura di (parte) dello stripe di parità, ciò potrebbe essere memorizzato nella cache da bcache. Memorizzarlo nella cache più in alto, prima che la scrittura con striping parziale raggiunga il dispositivo MD, sarebbe ancora meglio.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *