Per tutti voi ... ZFS su qualsiasi Raid è un DOLORE totale ed è fatto solo da MAD! ... come usare ZFS con memoria non ECC.
Con i campioni capirai meglio:
- ZFS su Raid1, un disco è un po 'cambiato quando non è stato spento ... fai tutto ciò che sai, ZFS vedrà qualche danno o non dipende dal disco letto (il controller Raid non ha visto quel bit cambiato e pensa che entrambi i dischi siano OK ) ... se l'errore è nella parte VDEV ... l'intero ZPOOL perde tutti i suoi dati per sempre.
- ZFS su Raid0, un disco è un po 'cambiato quando non è stato spento ... fai tutto ciò che sai, (il controller Raid non ha visto quel bit cambiato e pensa che entrambi i dischi siano OK) ... ZFS vedrà quel danno ma se il il fallimento è nella parte VDEV ... l'intero ZPOOL perde tutti i suoi dati per sempre.
Il punto in cui ZFS è buono è nel rilevare bit che sono cambiati quando il disco era privo di alimentazione (i controller RAID non possono farlo), anche quando qualcosa cambia senza che sia stato richiesto, ecc.
È lo stesso problema di quando un bit in un modulo RAM cambia spontaneamente senza che sia richiesto ... se la memoria è ECC, la memoria si corregge da sola; in caso contrario, tali dati erano cambiati, in modo che i dati fossero inviati ai dischi modificati; fai leva sul fatto che il cambiamento non è nella parte UDEV, se il fallimento è nella parte VDEV ... l'intero ZPOOL perde tutti i suoi dati per sempre.
Questo è un punto debole su ZFS ... VDEV fallisce implica che tutti i dati vengano persi per sempre.
Hardware Raid e Software Raid non possono rilevare cambi di bit spontanei, non hanno checksum, peggio ancora sui livelli Raid1 (mirros), non leggono tutte le parti e le confrontano, sostengono che tutte le parti avranno sempre gli stessi dati, SEMPRE (dico ad alta voce) Raid sostiene che i dati non sono cambiati da nessun'altra cosa / modo ... ma i dischi (come memoria) sono inclini a cambiamenti di bit spontanei.
Non utilizzare mai uno ZFS su una RAM non ECC e non utilizzare mai ZFS su dischi razziati, lasciare che ZFS veda tutti i dischi, non aggiungere un livello che può rovinare VDEV e POOL.
Come simulare un tale fallimento ... spegnere il PC, estrarre un disco da quel Raid1 e modificare solo un bit ... riconnettersi e vedere come il controller Raid non può sapere che è cambiato ... ZFS può perché tutte le letture sono testate contro il checksum e, se non corrisponde, leggi da un'altra parte ... Raid non legge mai più perché un errore (tranne la lettura impossibile dell'hardware fallisce) ... se Raid riesce a leggere pensa che i dati siano OK (ma non è in questi casi ) ... Raid prova a leggere da un altro disco solo se dove dice "ehi, non riesco a leggere da lì, hardware non riesce" ... ZFS legge da un altro disco se il checksum non corrisponde come se fosse dove legge dice "ehi, non riesco a leggere da lì, l'hardware non riesce".
Spero di averlo chiarito molto ... ZFS su qualsiasi livello di Raid è un dolore totale e un rischio totale per i tuoi dati! così come ZFS su memorie non ECC.
Ma quello che nessuno dice (tranne me) è:
- Non utilizzare i dischi con cache interna (non solo quelli SHDD, anche alcuni con cache da 8 Mb a 32 MB, ecc.) ... alcuni usano memoria non ECC per tale cache
- Non utilizzare SATA NCQ (un modo per scrivere in queu) perché può rovinare ZFS in caso di interruzione dell'alimentazione
Quindi quali dischi usare?
- Qualsiasi disco con batteria interna che assicura che tutto il queu venga scritto sul disco in caso di interruzione dell'alimentazione e utilizza la memoria ECC al suo interno (scusate, ce ne sono di piccoli con tutto questo e sono costosi).
Ma, ehi, la maggior parte delle persone non sa tutto questo e non ha mai avuto problemi ... dico loro: wow, quanto sei fortunato, compra alcuni biglietti della lotteria, prima che il fortunato se ne vada.
I rischi ci sono ... possono verificarsi coincidenze di tali guasti ... quindi la risposta migliore è:
- Cerca di non mettere alcun livello tra ZFS e dove i dati sono realmente archiviati (RAM, Raid, NCQ, cache interna del disco, ecc.) ... quanto puoi permetterti.
Cosa faccio personalmente?
- Metti qualche strato in più ... uso ogni disco SATA III da 7200 rpm da 2,5 "su un contenitore USB 3.1 Gen2 tipo C, collego alcuni contenitori a un hub USB 3.1 Gen 2 Tipo A che collego al PC; altro a un altro hub che mi collego a un'altra porta di root sul PC, ecc.
- Per il sistema utilizzo connettori sata interni su ZFS (livello Raid0) perché utilizzo un sistema Linux immutabile (come un LiveCD), ognuno avvia contenuti identici su dischi interni ... e ho un'immagine Clone del sistema che posso ripristinare (meno del sistema 1GiB) ... anche io uso il trucco per avere il sistema contenuto in un file e uso un'unità mappata RAM dove la clonare all'avvio, quindi dopo l'avvio tutto il sistema gira nella RAM ... mettendo tale file su un DVD posso anche avviarlo allo stesso modo, quindi in caso di guasto dei dischi interni, eseguo semplicemente l'avvio con il DVD e il sistema è di nuovo online ... trucco simile a SystemRescueCD ma un file ISO un po 'più complesso può essere sul ZFS interno o semplicemente essere il vero DVD e non voglio due versioni diverse.
Spero di poter dare un po 'di luce su ZFS contro Raid, è davvero un dolore quando le cose vanno male!