BTRFS RAID5 (3TB+3TB+1.5TB+1.5TB)

Sziasztok.

Erdekelne, vajon megoldhato-e 2db 3 TB-os HDD-hez tovabbi 2db 1.5 TB-os HDD hozzaadasaval BTRFS RAID5 tombot letrehozni ugy, hogy a tomb merete 6 TB legyen.

Koszi.

Hozzászólások

Sarkítva.
Van 1db 8TB-os HDD-m. Lehet e rá úgy RAID5 tömböt létrehozni, hogy a tömb mérete 6TB legyen?

A legtöbb ami értelmesen kihozható:

4x1.5T partíció raid5, a maradék 2x1.5T raid1, és ezt a md-t egy LVM-be fogni. Ez kb 6TB, bár nem lesz sebességbajnok.

Fedora 23, Thinkpad x220

Nem lenne jobb bebukni 25 %-ot a 1,5 TB-al és csak RAID 1-be tenni, és akkor 6 helyett lenne 4,5 TB egyszerűbben átlátható és gyorsabb és biztonságosabb kialakításod?

Azért a BTRFS-es RAID-del komoly probléma van. Még laboratóriumi körülmények között is csak az add-remove replace-t támogatja, a remove-add-ot nem. Azaz ha szól előre a diszk, hogy meg fog dögleni, és van szabad diszked és vezérlőd, ahova időben be tudsz konfigurálni egy másikat, akkor túléli a btrfs-es RAID tömb egy diszk elvesztését. Nekem a gyakorlat megmutatta, hogy ha csak simán megdöglik a diszk, az adatvesztést okozhat.

Ráadásul ha megdöglött 1 diszk, akkor annyit tudsz tenni, hogy "restore" - ral elkezded kidumpolni a tartalmat egy másik olyan területre, ami hasonló méretű, mint a szétesett RAID, nem tudod online-ba rakni. Impssible Mission: szerezz 6TB diszket húsvét vasárnap... (akkor történt a baleset otthon)

Amivel konkrétan szívtam, az az, hogy I/O hiba esetén a BTRFS nem csapja ki a device-ot a RAID tömbből, és megy át automatikusan degradált módba, hanem nem csinál semmit egészen addig, amíg valamelyik set írás referencia countere nem kezd el mást mutatni a diszkeken meg a cache-ben. Ekkor átvált read-onlyba azt jónapot. Ugye ekkor már jó eséllyel adatvesztésed van, mert gyakorlatilag az egyetlen megoldás a subvolume elindítására, hogy kinullázod a cache-t. Ez után már csak az olyan apró problémák maradtak, hogy az egyes RAID szintekhez meg van határozva a minimum diszk szám, amivel hajlandó elindulni. Ez RAID1-nél 2, RAID10-nél 4, RAID5-nél 4. Azaz konkrétan a 4 diszkes RAID10-et nem tudtam 3 diszkkel elindítani, mert kevesebb diszked van, mint az adott RAID szint felépítéséhez minimum kell. A 4 diszkből álló RAID5-öt sem tudtam 3 diszkből online rakni degradált módban, hanem csak off-line a recoveryvel lemásolhattam az összes benne levő adatot. Ami működött, no de azért...

RAID10-em és RAID5-öm volt, de gyanítom RAID1 esetén is ugyan így működik, 1 diszkkel nem lesz online a rendszer. Szó se róla, 5 diszkes RAIID5-nél túlélt volna egy diszk elvesztést, csak egy rebalace-ot kellett volna nyomni rá, betenni egy új diszket, aztán még egy rebalance.

Ha jól értem amit írsz, akkor szerintem azzal hogy nem csapja ki degradált módba, azzal nagyobb adat biztonság van, mert akkor így továbbra is ír friss adatokat az ún. rossz diszkre is és így több helyen lesznek friss adatok, mintha hiányozna az egyik diszk.

Ha a fenti igaz, akkor te azt hiányolod, hogy nem jelez ezek szerint a BtrFS? Vagyis hogy nem jut a tudomásodra a dolog a rosszalkodó diszkről egészen addig, míg teljesen le nem döglik?

Az alábbi leírás szerint nem látok problémát:

https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devic…

Lásd még ezt (a replace parancsra hívja fel a figyelmet):

http://unix.stackexchange.com/questions/227560/how-to-replace-a-device-…

Nem jól érted. Mivel nem megy át degradált módba a tömb, ezért a cache-ben levő, már felírtként visszaigazolt adatot el fogod veszíteni, inkonzisztens lesz a fájlrendszered / a fájlrendszeren tárolt adatod. (A subvolume-ot csak cache reset után tudod újraindítani)

A leírásokat én is olvastam, csak nem működtek. Lehet, hogy működött volna, ha lett volna még egy SATA portom, ahova felkötöm az új vinyót, de nem volt. A rossz vinyót eltávolítva, helyette egy újat berakva viszont nem lehetett degradált módban elindítani a tömböket. Szerintem nem véletlen, hogy a leírás a RAID5-öt 6 device-szal, a RAID-1-et meg 4-el demózza, úgy tuti működik a dolog, mert egy diszk kiesése után is felette vagy a minimum device darabszámnak.

Ne haragudj, de nem értem. :) Azt írod, hogy:

"Mivel nem megy át degradált módba a tömb, ezért a cache-ben levő, már felírtként visszaigazolt adatot el fogod veszíteni.."

Ha nem megy át degradáltba és a kettőből az egyik diszk rosszabb, attól még a jó diszkre felíródnak az adatok, nem? Tehát leállítod a rendszert, majd rescue módban restart, ott is nyomhatsz sync-et mielőtt leválasztod.

BTRFS-nél van egy diszken tartott cache, ahova először kerülnek az adatok. A következőkkel van baj:
- Meghibásodott diszk read-onlyba rakja a subvolume-ot, akkor is, ha egyébként degradált módban még tudna futni
- Nálam úgy állt meg a rendszer, hogy a cache referencia számlálója nagyobb volt, mint a diszkek referencia számlálója, azaz volt olyan commitált írás, ami csak a cache-ben volt benn. Ilyen esetben az egyetlen módszer a subvolume elindítására, ha előtte törlöd a cache-t -> azaz a rendszer nem okoz inkonzisztenciát, hanem lehetővé teszi neked, hogy ha el akarod valahogy érni az adataid, akkor okozz te azt.

A teljes subvolume került read onlyba. Nem tudok általánosítani, ez egy konkrétan megtörtént eset volt. Lehet, én vagyok az az 1 ezrelék, akinek nem működik, és a másik 999 esetben nem lesz a subvolume read only, valamint nem lesz adatvesztésed. Nekem volt, ennyit tudok elmondani.

A raid0 fölé jön még egy raid5. Így az egész tömb kiesésének az esélye azért nem annyira durva.

Csináltam egy gyors számítást és kb 1,6x akkora eséllyel esik ki adatvesztéssel egy RAID5(diszk,diszk,RAID0(diszk,diszk)) tömb, mint egy RAID5(diszk,diszk,diszk) tömb. Ez azért nem mérhető a RAID0 vs RAID1-hez ahol 2/n-el (n->0) elszáll a végtelenbe a szorzó.

Lehet már nem aktuális de ha nagyon muszáj katyvasztani, én így csinálnám:
ZFS-el (a btrfs raid5,6, stb hivatalosan instabil, adatvesztéssel jár)
ZFS-nél elvileg (40%) meg lehet csinálni ezt:
zpool create valami raidz /dev/hdd3tb1 /dev/hdd3tb2 stripe /dev/hdd15tb1 /dev/hdd15tb2
A gond ott van, hogy a stripe opció nem érvényes, tehát két lépésben kell valahogy megoldani, először létrehozni a raidz-t 2 lemezzel, és ha nem engedi degraded módban létrehozni akkor 3-nak egy virtuális lemezzel, ebből kivenni a virtuális lemezt és hozzáadni a két 1.5 TB-s HDD stripe-ban mint 3 lemez.
Elvileg működnie kellene, de figyelj, hogy ne a teljes 3 TB-n hozz létre partíciót, hanem hagyj legalább 50 GB-t szabadon a végén, hogy biztos beleférjen a 2x1.5 TB a méretbe.