Btrfs: RAID 1 su 3+ dispositivi


10

Al momento ho una partizione Btrfs con quattro dispositivi: tre unità da 3 TB e un'unità da 4 TB. Dati e metadati sono RAID 10, quindi ho 6 TB di spazio utilizzabile, che è quasi pieno. Avevo previsto che il supporto RAID 5 in Btrfs sarebbe stato maturo quando la mia memoria si fosse riempita, ma a quanto pare non è una priorità.

La mia domanda è: c'è un motivo per preferire RAID 10 rispetto a RAID 1 ? So che il RAID 1 reale sul mio hardware attuale dovrebbe darmi 3 TB di spazio utilizzabile con 4 copie di ciascun blocco, ma apparentemente Btrfs non si comporta in questo modo. Dalle FAQ di Btrfs :

btrfs combina prima tutti i dispositivi in ​​un pool di archiviazione, quindi duplica i blocchi man mano che vengono creati i dati del file. RAID-1 è attualmente definito come "2 copie di tutti i dati su diversi dispositivi". Ciò differisce da MD-RAID e dmraid, in quanto quelli fanno esattamente n copie per n dispositivi. In un RAID-1 btrfs su tre dispositivi da 1 TB otteniamo 1,5 TB di dati utilizzabili. Poiché ogni blocco viene copiato solo su 2 dispositivi, la scrittura di un determinato blocco richiede solo la scrittura di esattamente 2 dispositivi; la lettura può essere fatta da una sola.

E da Jens Erat su Stack Overflow :

Btrfs distribuisce i dati (e le sue copie RAID 1) in senso blocco, quindi si occupa molto bene di dischi rigidi di dimensioni diverse. Riceverai la somma di tutti i dischi rigidi, divisa per due - e non dovrai pensare a come metterli insieme in coppie di dimensioni simili.

Se più di un disco si guasta, si corre sempre il rischio di perdere dati: RAID 1 non è in grado di gestire la perdita di due dischi contemporaneamente. Nel tuo esempio sopra riportato, se i due dischi sbagliati muoiono, perdi sempre i dati.

Questo significa che il riequilibrio da RAID 10 a RAID 1 mi darà 500 GB di dati in più (6,5 TB anziché 6 TB) a causa dell'unità da 4 TB? E c'è qualche motivo per cui devo restare con RAID 10?


1
BTRFS RAID-5 è (anche se ancora sperimentale) in realtà abbastanza stabile e anche molti scenari tipici di recupero dei dati funzionano nella versione corrente (senza crash). Probabilmente dovresti scrub di volta in volta per assicurarti che i tuoi dati siano ancora corretti, ma potrebbe valere la pena provare. È possibile convertire da RAID-1 (0) a RAID-5.
basic6,

@ basic6 Buono a sapersi, grazie. Ero alla ricerca che non molto tempo fa e ho visto che scrube replacesostegno era stato aggiunto come di 3.19, ma la gente era ancora lamentano la mancanza di segnalazioni di guasto dei dispositivi. Ho impostato cron per scrub settimanali e test automatici SMART settimanali / mensili, quindi dovrei essere in grado di cogliere tali problemi. Lo proverò.
Mikkel,

Gli scrub periodici (settimanali o mensili) sono importanti, se uno scrub rileva un errore perché non può leggere da un'unità, aumenterà il conteggio degli errori. Controlla il conteggio degli errori utilizzando dev stats, che potrebbe essere un altro cronjob .
basic6

Risposte:


5

Sì, ricevi altri 500 GB. Si noti che la determinazione dello spazio disponibile in btrfs rimane sfuggente. Inoltre: dai un'occhiata al calcolatore di utilizzo del disco btrfs .

Sulla seconda domanda: potresti perdere alcune prestazioni sul tuo array. Naturalmente, i tuoi dati sono ugualmente sicuri su entrambe le configurazioni RAID. Quando si considera la prestazione, si può forse dare un'occhiata a questi benchmark: kernel.org , phoronix.com .

Hai forse già provato a convertire in RAID 1? In tal caso: quali sono i tuoi risultati?


1
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post: puoi sempre commentare i tuoi post e una volta che avrai una reputazione sufficiente sarai in grado di commentare qualsiasi post .
David Post

Tuttavia, per rispondere alla tua domanda, mi sono convertito e il risultato sembra essere coerente con le mie aspettative. Btrfs fa un pessimo lavoro di indicare spazio effettivo su disco disponibile, ma si può vedere nel l'output di btrfs fi shche lo spazio extra sul disco 4 TB è di essere sfruttato, e (2.83 + 1.93 + 1.93 + 1.95) /2~=4.30 come previsto. Recentemente ho subito un guasto dell'unità e ricostruito con successo senza perdita di dati, quindi posso confermare in prima persona che la ridondanza è intatta.
Mikkel,

Mi dispiace che la mia risposta non sia chiara @david. Ho provato a rispondere alle due domande nelle ultime due righe del post originale. Inoltre ho indicato un intervallo di incertezza (che sembra intrinseco a btrfs) e ho fornito le mie fonti come riferimento. In effetti, ho anche posto una domanda all'autore, quindi altri potrebbero forse imparare dalle sue scoperte. L'ho fatto nella risposta per motivi che hai già spiegato. Prenderò in considerazione i tuoi commenti la prossima volta che risponderò a una domanda sullo scambio di stack.
Laura

Potrebbe non essere la risposta più certa, ma i miei risultati indicano che i tuoi presupposti sono corretti, quindi lo accetto. Tuttavia, non sono sicuro del tuo commento sulle differenze di prestazioni. È certamente vero per l'hardware RAID 1 vs 10, ma non sono sicuro se Btrfs vede un aumento delle prestazioni da RAID 10. Inoltre, ciò che chiama RAID 1 è ancora distribuito su più dispositivi qui, quindi è ancora più simile a RAID 10 che a vero RAID 1. Se avessi letto la tua risposta prima della conversione, avrei fatto prima e dopo i benchmark, ma non trascorrerò un'altra settimana a convertire l'array in RAID 10 e viceversa.
Mikkel,

Bene, c'è questa pagina , che mostra vantaggi marginali per RAID 10 su RAID 1, portando l'avvertenza in alto che i benchmark hanno 7 anni.
Mikkel,

0

Non usare btrfs raid 5 o 6 l'implementazione è piena di bug, esegui zfs se lo desideri.

Con raid10 otterrai velocità.

La cosa ottimale da fare è creare una partizione da 3 TB sull'unità da 4 TB (assicurarsi che tutti e 3 abbiano esattamente le stesse dimensioni), combinarli in un RAID10 che avrà 6 TB di spazio libero. Usa 1 TB extra sull'unità da 4 TB per / boot (questo deve essere vfat comunque se vuoi usare efistub ed evitare grub o qualsiasi altro boot loader che renderà il tuo boot un po 'più veloce), scambia (puoi usare un piuttosto grande, l'ottimale sarebbe un piccolo zram swap (4 GB funziona bene con 32 GB di RAM, 2 GB dovrebbe andare bene con 16 GB, se hai meno di 16 idk se ne vale la pena e probabilmente dovresti aggiornare comunque) usato per primo (imposta la priorità al massimo) usando zstd e tutti i flussi di compressione quanti sono i core / thread ...

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.