ZFS RAID1 s NVMe a SATA

ZFS RAID1 s NVMe a SATA
« kdy: 05. 06. 2025, 17:51:03 »
Mam maly dell optiplex 3060 s 16GB RAM a je tam len jeden NVNe disk. Kedze je tam uz len jeden sata port, tak chcem kupit SSD disk a nainstalovat Proxmox ZFS RAID1. Bude to takto fungovat korektne ?
Zatial to ide len s jedny NVMe diskom na ext4 a nechem to prevadzkovat len s jednym diskom (bude tam mozno 1-2 KVM a vacsinou LXC)


RDa

  • *****
  • 2 954
    • Zobrazit profil
    • E-mail
Re:ZFS RAID1 nvme a sata
« Odpověď #1 kdy: 05. 06. 2025, 18:14:02 »
Mam 3070 micro (MFF) a to NVMe je na 3060 stejnym zpusobem zkriplene - na Gen2x4:

Kód: [Vybrat]
LnkCap: Port #1, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 unlimited
LnkSta: Speed 5GT/s (downgraded), Width x4

Takze jestli budes parovat 20G s 6G .. rychlostne to az tak moc rozdil nebude.

Pokud tam das netopici (tj. pomalejsi, mensi, uspornejsi) NVMe disk - bude to OK - neni tam moc prostoru totiz na chladic, kdyz tam budes mit i SATA disk.

Jo a jedna asi nepodstatna vec - ten SATA port neumi hotplug (resp neni tato featura zapnuta) - coz jsem zjistil pri dodatecne instalaci disku (jo, jsem strelec co to MFF rozdelal a za chodu to chtel upgradnout.. nuz reboot byl nevyhnutelnej, byt to mechanicky slo udelat za chodu).

Mozna bych mel nejaky SSD k prodeji, na jaky kapacity koukas?

Re:ZFS RAID1 s NVMe a SATA
« Odpověď #2 kdy: 10. 06. 2025, 20:16:18 »
nvme je o hodne rychlejsi, ale myslim si, ze rychlost SATA uplne staci.
Cize nemal by byt ziadny problem dat do RAID disky pripojene z  NVMe a SATA ?

jjrsk

  • *****
  • 765
    • Zobrazit profil
Re:ZFS RAID1 s NVMe a SATA
« Odpověď #3 kdy: 10. 06. 2025, 21:10:08 »
Bude to fungovat blbe. Nejde ani tak o rychlost rozhrani, jde primarne o latenci. A system ti ten satovej disk klidne vyhodi jako failnutej, kdyz bude vykazovat radove horsi odezvy.

Je to stejne uzasnej napad jako si do pole zapojit sindele.

Disky v poli by vzdy mely byt srovnatelne = jejich parametry by nemely byt radove jinde, coz je presne co chces udelat.

Re:ZFS RAID1 s NVMe a SATA
« Odpověď #4 kdy: 11. 06. 2025, 00:26:16 »
Bude to fungovat blbe. Nejde ani tak o rychlost rozhrani, jde primarne o latenci. A system ti ten satovej disk klidne vyhodi jako failnutej, kdyz bude vykazovat radove horsi odezvy.

Je to stejne uzasnej napad jako si do pole zapojit sindele.

Disky v poli by vzdy mely byt srovnatelne = jejich parametry by nemely byt radove jinde, coz je presne co chces udelat.

To říkaš vše s takovou odzbrojující jistotou ;)

Jasně, jedna věc je, co by bylo ideální a druhá pak, kolik máš portů v miniPC.  Tohle podle mě není úplně srovantelná situace jako CMR a SMR točivý disk, co se může zaseknout i na dlouhé desítky vteřin nebo minuty třeba, když flushuje vnitřní cache.

Tady se bavíme o NVMe a SATA SSD. Ano NVMe může mít rychlejší odezvu, víc front - větší paralelismus. Byť i to můžeš do jisté míry doladit parametry IO scheduleru a sundat NVMe na úroveň toho SATA SSD, pokud by to bylo nutné.
Ale tyhle záseky jako u SMR, kdy fakticky neprojde žádná další IO operace, tam nebudou.
ZFS normálně respektuje timeouty z blokové vrstvy pod ním  (/sys/block/sda/device/timeout), což má default 30s.
Nad tím je ještě interní mechanismus s timery v ZFS, co pracuje s timery pro zařízení (vdevy) a transakcemi (TXG).
Ovládá se v Linuxu: "ls -1 /sys/module/zfs/parameters/zfs_deadman*" Ve FreeBSD pak obdoba: "sysctl vfs.zfs.deadman"
(tam je default dokonce 600 a 300s).
Takže přestože to není optimální, rozsypávat by se to podle mě nemělo.



jjrsk

  • *****
  • 765
    • Zobrazit profil
Re:ZFS RAID1 s NVMe a SATA
« Odpověď #5 kdy: 11. 06. 2025, 08:32:35 »
Rikam to na zaklade desitek let zkusenosti, ale at si kazdej dela co chce, pak sem bude chodit, ze hento a toto, ze se mu to rozpadlo a ted to nejde opravit, a ...

Nevim jak moc tupy je zfs, ale kazdy normalni pole vyhazuje disky ktery vykazujou vetsi latence nez ostatni. Protoze prave to je prvni indikace toho ze failnou.

Mozna nebude vadit 50%, ale 1000% zcela urcite.

RDa

  • *****
  • 2 954
    • Zobrazit profil
    • E-mail
Re:ZFS RAID1 s NVMe a SATA
« Odpověď #6 kdy: 11. 06. 2025, 12:36:49 »
Nevim jak moc tupy je zfs, ale kazdy normalni pole vyhazuje disky ktery vykazujou vetsi latence nez ostatni. Protoze prave to je prvni indikace toho ze failnou.

Nevidel jsem zadne pole, ktere by si dovolilo samo vyhodit disk jen proto, ze je jeho "latence" v relativnim meritku jinde nez u jinych disku stejneho pole. Melete fakt nesmysly.

Ostatne latence u NVM ani nejde poradne definovat/merit za bezneho provozu, protoze se jedna o velicinu silne zavislou nejen na poctu aktivnich front a paralelne vykonavanych prikazu, ale take na access patternu a pomeru read/write operaci.

Pokud chcete merit relevantni latence, musite mit striktne definovanou zatez!

Jediny mechanismus ktery vyrazuje disky z pole je timeout - at uz typicky systemovych 30sec na jakekoliv IO k disku (a zde padaji pretizene SMR), nebo "raid specific disky co se s tim neparou" - zvane TLER/ERC/CCTL - kdy disk radeji rekne, ze to proste vzdava a at se pole zaridi jinak a data ziska vypoctem z redundance beze me, pripadne to same v SW vrstve raidu/fs pres timery.

RDa

  • *****
  • 2 954
    • Zobrazit profil
    • E-mail
Re:ZFS RAID1 s NVMe a SATA
« Odpověď #7 kdy: 11. 06. 2025, 12:39:01 »
Tady se bavíme o NVMe a SATA SSD. Ano NVMe může mít rychlejší odezvu, víc front - větší paralelismus. Byť i to můžeš do jisté míry doladit parametry IO scheduleru a sundat NVMe na úroveň toho SATA SSD, pokud by to bylo nutné.

Proc si to zamerne kazit? Pokud mame v MIRROR RAIDu asymetrii vykonu, tak je lepsi nastavit "write-mostly" (mdraid) a nechat odmakat cteni pouze z toho rychlejsiho disku. Plati to jak pro SSD+HDD kombo, tak pro NVMe+SATA ssd.

Re:ZFS RAID1 s NVMe a SATA
« Odpověď #8 kdy: 11. 06. 2025, 22:39:19 »
Nevim jak moc tupy je zfs, ale kazdy normalni pole vyhazuje disky ktery vykazujou vetsi latence nez ostatni. Protoze prave to je prvni indikace toho ze failnou.

Je to přesně, jak psal RDa. Pro vykopnutí zařízení z pole je rozhodující timeout IO operace, proto jsem to taky předtím zmiňoval.
V tomhle případě s výchozím nastavením zařízení a systému je tam v podstatě kaskáda.

Nejkratší timeout by měl mít firmware zařízení v sobě, někdo tomu říká TLER, ERC atp. a u serverových disků je to typicky 7 sekund. To je čas, co dáš disku na to, aby si to pořešil sám v sobě (třeba remapováním sektoru). Když to nedá, tak disk systému indikuje chybu média a probublá to nahoru až do filesystému.
Pokud tohle z jakýchkoliv důvodů neproběhne, tak vyprší timeout na blokové vrstvě v systému, což je těch výchozích 30 sekund a zas se to indikuje až do filesystému, který typicky vyřadí dané zařízení.
Nakonec filesystém má ještě své delší 300, 600 sekundové timeouty. Takže pokud není IO operace dokončená v tomhle limitu a nedostane informace se zmíněných dvou předchozích vrstev.
Cílem je to, aby tam nebyl nekonečný výtuh filesystému a procesů, co dělají IO operace. A samozřejmě, aby se redundantní vdev přepnul do degradovaného režimu a přestalo se používat nefunkční zařízení v něm.

Trochu to zjednodušuju, ale víceméně takhle s těmi timeouty fungují i HW RAIDy.
To co ty zmiňuješ, je typicky funce, kdy se v řadiči sbírají nějaká statistiky o discích (přístupová doba, smart countery atp.) a pokud to překročí nějaký práh, tak to začne řvát, posílat alerty atp. Může to být spřažené i s nějakou prediktivní kontrolou, kdy se čtou všechny sektory (Patrol Read atp.).
Nad rámec toho, tam lze povolit i něco jako "Adaptive spare replacement" (opět jmenuje se to různě), tzn. když máš dedikovaný náhradní disk a původní je označen za špatný podle těch zmíněných kritérii, pole se začne automaticky rebuildovat.
Ale nikdy to nesáhne na redundanci pole, že by něco samovolně vykoplo (a přešlo prediktivně do degraded režimu), pokud tam není další připravený disk.

U SMR disků, pokud s tím vyloženě nepočítá ten RAID (ať už HW nebo SW), to snadno může překročit i ty standardní timeouty, proto se to vykopává.
Jde fakt o jinou situaci, než u dvou různých SSD.. v podstatě nevadí, že jeden z nich je pomalejší, jen to s sebou vezme výkon celého pole. Nejde o ty minutové excesy jako u SMR.

Re:ZFS RAID1 s NVMe a SATA
« Odpověď #9 kdy: 11. 06. 2025, 23:04:52 »
Tady se bavíme o NVMe a SATA SSD. Ano NVMe může mít rychlejší odezvu, víc front - větší paralelismus. Byť i to můžeš do jisté míry doladit parametry IO scheduleru a sundat NVMe na úroveň toho SATA SSD, pokud by to bylo nutné.

Proc si to zamerne kazit? Pokud mame v MIRROR RAIDu asymetrii vykonu, tak je lepsi nastavit "write-mostly" (mdraid) a nechat odmakat cteni pouze z toho rychlejsiho disku. Plati to jak pro SSD+HDD kombo, tak pro NVMe+SATA ssd.

Určitě to není nic, co bych rovnou udělal, nebo by s tím v téhle situaci byl nutně problém. Zmínil jsem jen navíc, že pokud by někdo chtěl, může to omezit podle zařízení s menší paralelizací na úrovni systému.

Vyloženě režim s označením specifického disku jako write mostly, co vím, jde jen právě na mdraidu.
ZFS samozřejmě také zapisuje do obou zařízení v mirrorovaném vdevu a čeká na dokončení, což by ani jinak nešlo. U čtení je to pak tak, že je tam určitý bias a nové requesty jdou prioritně na zařízení, co má míň nedokončených operací ve frontě.
Takže byť to není úplně stejný mechanismus jako třeba u read balancingu při čtení z mdraidu mirroru, tak při čtení z víc procesů to rozkládá taky a v podstatě bude preferovat to rychlejší zařízení.

Samozřejmě bych se to snažil poctivě otestovat, ale protože se tady jedná o homelab s nějakým recyklovaným miniPC, na kterém poběží pár virtuálů, nemyslím si že by to SATA SSD mělo být nějaké vyloženě úzké hrdlo při normálním provozu.