RAID

ZFS nu pot, motive gramada.

Btrfs - am citit un articol despre cat de nasol se comporta btrfs raid cand trebuie sa inlocuiesti un disc.
O sa mai testez o data btrfs-ul dupa ce fac RAID-ul de 12 TB, ca ma atrage optiunea de a avea checksum automat, posibil si compresie daca o sa am nevoie vreodata, dar nu pentru raid. Daca face la fel cu memoria, atunci ext2 sau exfat.

Mai ramasese de testat md, dar nu l-am inclus cand am configurat kernelul, si nici programele de administrare nu cred ca sunt disponibile pe OpenWrt.
 
La capitolul compresie lz este mai rapid decât stocarea fie ea și spinning rust.

Am cochetat cu ideea de btrfs pe raid hardware, am rămas la ext4. Dacă vrei musai snapshots ZFS este singurul pe care l-aș recomanda dintre opțiuni. Mai este și xfs dar nu am stat sa studiez prea mult acolo.


 
Nu stiu daca ajuta sau intereseaza pe cineva, e doar o informatie.

ZFS pe TrueNAS, 2 computere diferite, raidz cu 3 discuri pe unul si cu 4 discuri pe unul. Viteza de copiere intre ele: cam 240MB/sec sustinut. Din pacate si de pe unul din ele catre un nVME local sau invers, tot 240 MB.sec sustinut. Normal ca pleaca pe la 7-800 MB/sec pana se umple cache-ul din TrueNAS, adica o jumatate de secunda (cat sa raporteze Windows Commander viteza aia stelara), apoi se plafoneaza la 240 la copieri de sute de GB. Jumbo frames 9000/9014 (9000 in TrueNAS, 9014 in Windows, ca fiecare masoare altfel dar e aceeasi valoare) si discuri CMR.

Cu discuri SMR pe unul din computere, 50MB/sec. Erau 3 discuri, am inlocuit pe rand cate unul, pana nu le-am inlocuit pe toate 3 nu s-a schimbat absolut nimic. Concluzia? Merge la viteza celui mai lent disc, iar SMR sux.

RAID5 pe Windows Server 2019, 2 computere diferite. Cam 50MB/sec, cu discuri CMR si Jumbo Frames. Nu e problema de CPU sau RAM, ca sunt Threadrippers cu 256GB de RAM. Concluzia: performanta RAID5 pe Windows Server sux.

Pe aceleasi servere copierea de pe nVME pe nVME local, 1700 MB/sec sustinut la fisiere de cate 1 TB sau mai mari. Fara cooler pe SSD intra in termal throttling rapid, cu radiatoare merge bine. Carcase rackmount cu ventilatoare galagioase, tot a fost nevoie de radiatoare. Copierea prin retea sub 500 MB/sec sustinut, nu stiu de ce dar nici nu stau sa caut, nu am aproape niciodata de ce sa copiez intre ele, ca lucreaza in paralel si sunt independente.
 
Deci va puteti opri cu laudatul zfs-ului. N-am si nici n-o sa am vreodata.
- zfs is not mainline, so supporting it would require a significant maintenance burden.
- things like dkms are not viable on OpenWrt, as its runtime environment isn't apt for compiling (no runtime toolchain, no devel packages, no headers).
- the abstraction layers for ZoL are huge, too large for most target platforms generally used for running OpenWrt.
- RAM requirements for zfs are way beyond what most target platforms can provide.
- the licensing dilemma (CDDL vs GPLv2) would be quite difficult - at least prebuilt kernel modules wouldn't be possible (which, combined with no dkms/ runtime compiling, would reduce its practicality considerably.

Facand niste teste, a dat eroare pe unul din HGST-urile alea care au venit cu device-ul. L-am pus in server si am bagat Victoria pe el. Avea 20 de sectoare realocate. L-am frecat cu zerouri cap-coada de vreo 3 ori si s-a stabilizat la vreo 50 de sectoare realocate.
Am pus inca un Seagate in locul lui si acum fac rebuild la RAID5. Dureaza in draci.
 
Nu te obliga nimeni sa ai ZFS. Nu il laud, doar ca asta am pe alea 2 computere de o gramada de ani (nu imi amintesc, dar sunt cel putin 5-6, posibil chiar 10) fara probleme, desi am avut si discuri picate si schimbari complete de discuri, pur si simplu merge. L-am mentionat pentru ca nu e cel mai rapid, dar totusi scot 240MB/sec din hard discuri, ceea ce e probabil limita discurilor si nu a altceva din sistem, sigur nu a ZFS. Am vazut niste cifre mai sus si doar am adaugat informatia pentru comparatie, chiar daca nu se compara un hard disc fabricat in ultimii 5 ani cu un PATA de pe vremea lui Pazvante Chioru'.

Nu am facut comparatie cu RAID sub Linux, nu am avut nici ocazia si nici nevoia. Poate ZFS si RAID5 pe Windows sunt extremele, poate exista ceva mai rapid pe Linux, habar nu am. Daca nu te intereseaza, ignora.
 
Merge RAID5 cu btrfs peste. L-am conectat la server pe eSATA sa-l umplu. Scrie constant cu 120 MB/s, dar am senzatia ca asta era limita discului (single) de pe care copiam.
L-am pus la router si l-am sharuit cu samba 4. La scrierea prin retea de pe un WinXP ajunge pe la 35 MB/s. Nu cred ca o sa poata fi optimizat mai mult de atat. Am un Win7 pentru gaming, dar pe asta n-am reusit inca sa-l fac sa se conecteze la share.

Alta:
La btrfs am lasat checksum-ul standard, crc32c, dar nu-i accelerat. Procesorul are in schimb accelerare sha256. Cum as putea sa fac un test de viteza crc32c vs. sha256 din perspectiva btrfs? Adica altfel decat sa formatez... Da, am gugaluit inainte sa intreb, dar fara rezultat.
 
N-a spus nimeni că nu merge, doar că nu este indicat să faci asta. Și am scris mai sus de ce, RAID hardware maschează informația SMART pentru OS și implicit pentru FS.

Degeaba te înroși la față :smile:
 
Asadar, ma joc cu md pe niste stick-uri USB, logica fiind ca daca merge in continuare si dupa ce mut stickurile in alte mufe, hub-uri si controllere, atunci n-o sa faca probleme nici cand mut hardurile prin rack.
Dar Linux / Linus are alte idei... cum ar fi varianta absolut superba ca nu mai merge nici dupa un simplu reboot.

Code:
root@GraphRT:/# mdadm --create -vv /dev/md0 -l 1 -n 2 --auto=md --bitmap=internal --name=GRAPHRT /dev/sda /dev/sdb
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 7859200K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
[ 2391.064137] md/raid1:md0: not clean -- starting background reconstruction
[ 2391.070983] md/raid1:md0: active with 2 out of 2 mirrors
[ 2391.084584] md0: detected capacity change from 0 to 8047820800
[ 2391.091317] md: resync of RAID array md0
mdadm: array /dev/md0 started.
...
root@GraphRT:/# reboot
...
[    0.000000] Kernel command line: md=0,/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd console=ttyS0,115200 mtdparts=...
...
[    5.081199] md: Waiting for all devices to be available before autodetect
[    5.088009] md: If you don't use raid, use raid=noautodetect
[    5.093701] md: Autodetecting RAID arrays.
[    5.097809] md: autorun ...
[    5.100611] md: ... autorun DONE.
[    5.104014] md: Loading md0: /dev/sda
[    5.109975] md: invalid raid superblock magic on sda
[    5.114985] md: sda does not have a valid v0.0 superblock, not importing!
[    5.121831] md: md_import_device returned -22
[    5.126893] md: invalid raid superblock magic on sdb
[    5.131898] md: sdb does not have a valid v0.0 superblock, not importing!
[    5.138720] md: md_import_device returned -22
[    5.143235] md: invalid raid superblock magic on sdc
[    5.148232] md: sdc does not have a valid v0.0 superblock, not importing!
[    5.155075] md: md_import_device returned -22
[    5.159537] md: invalid raid superblock magic on sdd
[    5.164539] md: sdd does not have a valid v0.0 superblock, not importing!
[    5.171363] md: md_import_device returned -22
[    5.175734] md: starting md0 failed
...
root@GraphRT:/# mdadm --assemble /dev/md0 /dev/sda /dev/sdb
mdadm: Fail to create md0 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node
[  383.708711] md/raid1:md0: active with 2 out of 2 mirrors
[  383.722594] md0: detected capacity change from 0 to 8047820800
mdadm: /dev/md0 has been started with 2 drives.
Deci cat de greu poate fi sa bootezi un linux cu root pe un raid software? Raspuns: imposibil.
 
Nu ai înțeles despre ce este vorba.

1. Linux nu este Windows deci reboot-ul nu ajută cu absolut nimic în 99.99% din cazuri.
2. dacă muți porturile USB atunci și sda/sdb vor deveni sdc/sdd (de exemplu). Trebuie să creezi un array RAID folosind NU sda/sdb/sdc/etc ci folosind drive IDs din directorul /dev/disk/by-id, unde sunt listate după IDul unic al lor, care nu se schimbă când schimbi porturile, huburile șamd.
 
1. Exact. N-am dat reboot ca sa repar ceva ci ca vad ce se strica. Era primul si cel mai basic test de rezilienta. Un fail glorios, as putea spune.
2a. Da, se vor muta si ala este urmatorul test de rezilienta pe care urma sa-l fac, dar n-am mai ajuns acolo ca a murit la primul.
2b. In a doua propozitie aberezi complet:
- Cand creezi un array poti folosi oricare referinta la discuri, nu conteaza cata vreme sunt gasite si li se scrie superblock-ul pe ele. N-are nici o treaba cu reboot-ul.
- Cand dai reboot md: Autodetecting RAID arrays. scaneaza dupa partitii 0xFE. Daca folosesti tot discul, ghinion, autodetectia nu merge.
- Daca specific kernel command line: md=0,/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd, asta ar trebui sa scaneze toate 4 discurile (2 raid, 2 single) dupa superblock-uri. Bug major ca superblock-ul v1.2 nu-i gasit pe niciunele.
- Daca fac RAID-ul cu superblock v0.9 (mdadm --create --metadata=0.90 ...), surpriza! Merge! Nu inteleg, astia chiar nu fac nici cele mai basic teste? :facepalm:
- Degeaba scriu /dev/disk/by-id, pentru ca ala apare abia dupa ce incarci udev, dar udev este in root partition, care e pe raid. Deci fail oricum ai da-o.

Bootlog cu superblock v0.90:
Code:
[    5.548563] md: Waiting for all devices to be available before autodetect
[    5.555399] md: If you don't use raid, use raid=noautodetect
[    5.561097] md: Autodetecting RAID arrays.
[    5.565206] md: autorun ...
[    5.568008] md: ... autorun DONE.
[    5.571457] md: Loading md0: /dev/sda
[    5.596462] md: invalid raid superblock magic on sdc
[    5.601468] md: sdc does not have a valid v0.0 superblock, not importing!
[    5.608285] md: md_import_device returned -22
[    5.637933] md: invalid raid superblock magic on sdd
[    5.642934] md: sdd does not have a valid v0.0 superblock, not importing!
[    5.649749] md: md_import_device returned -22
[    5.654558] md/raid1:md0: active with 2 out of 2 mirrors
[    5.659937] md0: detected capacity change from 0 to 8052998144
 
Last edited:
surpriza! Merge! Nu inteleg, astia chiar nu fac nici cele mai basic teste? :facepalm:
E Linux. Uneori cat dai atata face. "astia" sunt o gramada de oameni, unii se pricep, altii nu, altii doar troleaza, e un ecosistem foarte ... special. Nu zic ca la altii e mai ieftin halatul, dar nu inteleg de ce te miri ca un copil mic.
 
2b. In a doua propozitie aberezi complet:
- Cand creezi un array poti folosi oricare referinta la discuri, nu conteaza cata vreme sunt gasite si li se scrie superblock-ul pe ele. N-are nici o treaba cu reboot-ul.
- Cand dai reboot md: Autodetecting RAID arrays. scaneaza dupa partitii 0xFE. Daca folosesti tot discul, ghinion, autodetectia nu merge.
- Daca specific kernel command line: md=0,/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd, asta ar trebui sa scaneze toate 4 discurile (2 raid, 2 single) dupa superblock-uri. Bug major ca superblock-ul v1.2 nu-i gasit pe niciunele.
- Daca fac RAID-ul cu superblock v0.9 (mdadm --create --metadata=0.90 ...), surpriza! Merge! Nu inteleg, astia chiar nu fac nici cele mai basic teste? :facepalm:
- Degeaba scriu /dev/disk/by-id, pentru ca ala apare abia dupa ce incarci udev, dar udev este in root partition, care e pe raid. Deci fail oricum ai da-o.
Tu discuți din ce crezi că-i adevărat, eu am un server Proxmox care funcționează pe principiile pe care le-am expus și pe care refuzi să le pricepi.
1. NU, nu poți folosi orice referință pentru că /dev/sda/b/c/d/e/etc se pot schimba la un reboot; /dev/disk/by-id folosește numărul de serie al dispozitivului conectat;
2. autodetect este o prostie de când a apărut, de la detectarea de drivere în Windows 98 și până azi poate da erori catastrofale și tu crezi că-n Linux funcționează; bold. And wrong. Dar din alte motive, nu cele la care te gândești -> citește 3.
3. Din nou refuzi să înțelegi că dacă schimbi portul USB sda va deveni sdc și atunci specificațiile tale din kernel command line au valoarea unei cepe degerate.
4. Există conceptul de task failed successfully și dacă tu dai peste asta și te gândești iară că nu poți bate cuie cu pisica pentru că pisica are 4 lăbuțe... este treaba ta.
5. That is not how shit works, ai încercat? Aruncă și un ochi aici.
 
Si ceea ce tot refuzi sa intelegi este ca nu m-am bazat pe autodetect-ul chior si i-am scris explicit toate 4 device-urile in linia de comanda, desi doar primele 2 sunt in raid. Mutandu-se in orice ordine, tot alea 4 sunt toate.
 
Last edited:
Ai scris prost ce ai scris în linia de comandă și continui pe aceeași idee. Am impresia uneori că doar îți place să te plângi.

Linux este OSS. Fă-ți tu distribuția personalizată. Vezi că există și TempleOS, care-i și mai barebones, te-ar putea interesa.
 
Back
Top