zpool clear zet alleen de error count op nul, verder niets.
Dus dan zou het (inderdaad) de dubbele scrub zijn geweest? Want de eerste hielp dus niet.willemw12 schreef op zondag 13 augustus 2023 @ 14:26:
zpool clear zet alleen de error count op nul, verder niets.
Of zou het iets te maken kunnen hebben met dat bv op de achtergrond nog zaken plaatsvinden na de destroy? (Snapshots die opnieuw aan elkaar geknoopt moet worden, dus 11_daily => 12_daily => 13_daily dat 11_daily => 13_daily moet worden). Waardoor het snapshot dus wel al "uit de lijst was" en daardoor niet van locatie / hex code vertaald kon worden naar een label maar wel nog in de metadata/superblocks zat. En dat bij de tweede scrub dan wel alle achtergrond werk was afgerond en dus de "fout locatie" ook verdwenen was.
zfs destroy <snapshot> is synchrone operatie. Er is wel een async_destroy property die je kan zetten, maar die is by default false dacht ik.RobertMe schreef op zondag 13 augustus 2023 @ 14:21:
[...]
code:
1 errors: No known data errors
Pfoe, dus toch. Maar clear heeft toch alleen betrekking op device errors (ook volgens de man page)? Of zou het de dubbele scrub zijn geweest? Waarbij de tweede scrub nu toevallig na een clear kwam. Error was ook pas weg toen de scrub klaar was. Na de clear was die er nog, tijdens de scrub ook nog aantal keren gekeken en was die er ook nog.
Even niets...
Hmm, blijkbaar is het toch nog steeds niet in orde. "Zomaar" een scrub gestart, zonder vooraf de status te bekijken (ook geen mail ontvangen dat iets zou zijn). Vervolgens meteen na starten de status bekijken en "al" (van nu, of eerder):
Waarbij de SMART data ook nog steeds pico bello is:
Toch maar eens gaan kijken wat ik hier nu weer mee ga doen... In principe kan (/wilde ik mogelijk sowieso al) ik de redundant NVME drive uit de NAS halen (mirror setup). In principe zou ik dan (middels een tweede systeem met dubbel NVME) een volledige clone kunnen doen (en niet vergeten de EFI partitie te clonen), middels een nieuwe pool en send & receive. Evt zou ik dan ook tijdelijk op die drive kunnen draaien, en als dan alles in orde zou zijn / blijven de pool recreëren op de huidige SSD. Maarja, blij wordt ik er niet van en "vertrouwen" in het systeem is momenteel ook nogal "laag" (zij het het PCtje zelf, zij het de SSD, ergens gaat toch iets serieus mis).
Edit:
En na tweede scrub is weer alles weg
(zonder clear tussendoor dus)
Edit2:
* zucht *. Dus de status van de scrub die om 10:03 was afgerond was "alles in orde" maar om 10:20 blijkt toch dat alweer iets aan de hand is...
Vanavond dus maar eens rebooten en wellicht even de SSD eruit halen en opnieuw er in zetten. Dit is naar mijn idee te random om daadwerkelijk een issue te zijn.
code:
1
2
3
4
5
6
7
| errors: Permanent errors have been detected in the following files: <0x8a2f>:<0x0> <0x9636>:<0x0> <0x54cc>:<0x0> <0x73cc>:<0x0> <0xad2>:<0x0> |
Waarbij de SMART data ook nog steeds pico bello is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| === START OF SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED SMART/Health Information (NVMe Log 0x02) Critical Warning: 0x00 Temperature: 63 Celsius Available Spare: 100% Available Spare Threshold: 10% Percentage Used: 1% Data Units Read: 8,333,344 [4.26 TB] Data Units Written: 20,073,813 [10.2 TB] Host Read Commands: 50,353,712 Host Write Commands: 606,935,533 Controller Busy Time: 930 Power Cycles: 138 Power On Hours: 480 Unsafe Shutdowns: 66 Media and Data Integrity Errors: 0 Error Information Log Entries: 0 Warning Comp. Temperature Time: 0 Critical Comp. Temperature Time: 0 Temperature Sensor 1: 63 Celsius Temperature Sensor 2: 66 Celsius Thermal Temp. 2 Transition Count: 1 Error Information (NVMe Log 0x01, 16 of 64 entries) No Errors Logged |
Toch maar eens gaan kijken wat ik hier nu weer mee ga doen... In principe kan (/wilde ik mogelijk sowieso al) ik de redundant NVME drive uit de NAS halen (mirror setup). In principe zou ik dan (middels een tweede systeem met dubbel NVME) een volledige clone kunnen doen (en niet vergeten de EFI partitie te clonen), middels een nieuwe pool en send & receive. Evt zou ik dan ook tijdelijk op die drive kunnen draaien, en als dan alles in orde zou zijn / blijven de pool recreëren op de huidige SSD. Maarja, blij wordt ik er niet van en "vertrouwen" in het systeem is momenteel ook nogal "laag" (zij het het PCtje zelf, zij het de SSD, ergens gaat toch iets serieus mis).
Edit:
En na tweede scrub is weer alles weg

Edit2:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| `--> sudo zpool status -v rpool pool: rpool state: ONLINE status: One or more devices has experienced an error resulting in data corruption. Applications may be affected. action: Restore the file in question if possible. Otherwise restore the entire pool from backup. see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A scan: scrub repaired 0B in 00:03:13 with 0 errors on Mon Aug 14 10:03:05 2023 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 nvme-Samsung_SSD_980_1TB_<knip>-part2 ONLINE 0 0 0 errors: Permanent errors have been detected in the following files: rpool/user/<knip>@pyznap_2023-08-14_09:45:11_frequent:<0x0> |
* zucht *. Dus de status van de scrub die om 10:03 was afgerond was "alles in orde" maar om 10:20 blijkt toch dat alweer iets aan de hand is...
Vanavond dus maar eens rebooten en wellicht even de SSD eruit halen en opnieuw er in zetten. Dit is naar mijn idee te random om daadwerkelijk een issue te zijn.
[ Voor 20% gewijzigd door RobertMe op 14-08-2023 10:23 ]
Dit draadje op GitHub is wel interessant, in mijn "case".
First off: de dubbele scrub is (soms) nodig om (niet zo) permanent errors te fixen omdat zpool status de errors van van de laatste twee scrubs laat zien. Dus na de eerste scrub is het (mogelijk) wel gefixt maar laat die nog steeds de error(s) van de voorlaatste runs zien. Door nog een scrub te doen waren de laatste twee runs (mogelijk) wel zonder error en dus is de lijst dan wel leeg.
Daarnaast staan er ook wat posts m.b.t. dat deze errors optreden na een send & receive. Iets dat bij mij potentieel ook het geval is (die van vanmorgen, scrub om 10:03 afgerond zonder errors, om 10:20 wel error(s), heeft om/vanaf 10:05 een send & receive gelopen).
Daarnaast kan encryptie er ook een rol in spelen, en de twee verschillende dataset/snapshot namen die ik gezien heb zijn beiden encrypted (ZFS native encryption dus, doh).
En daar bovenop is er nog een post van iemand die de (encryptie) code aandachtig aan het bestuderen is en die blijkbaar vol bugs zit. Van (mogelijke) race conditions tot "undefined behaviour". Dus ook dat speelt er potentieel een rol in(?).
En v.w.b. "waarom nu". Dit was gisteren de eerste, maandelijkse, scrub nadat het offsite systeem een week of twee offline is geweest. Daarnaast is het offsite systeem dan opnieuw "geïnitialiseerd" doordat de HDD bad sectors had en deze door een SSD is vervangen, en ik dus from scratch ben begonnen. Mogelijk dat daardoor de send & receive net iets anders loopt.
First off: de dubbele scrub is (soms) nodig om (niet zo) permanent errors te fixen omdat zpool status de errors van van de laatste twee scrubs laat zien. Dus na de eerste scrub is het (mogelijk) wel gefixt maar laat die nog steeds de error(s) van de voorlaatste runs zien. Door nog een scrub te doen waren de laatste twee runs (mogelijk) wel zonder error en dus is de lijst dan wel leeg.
Daarnaast staan er ook wat posts m.b.t. dat deze errors optreden na een send & receive. Iets dat bij mij potentieel ook het geval is (die van vanmorgen, scrub om 10:03 afgerond zonder errors, om 10:20 wel error(s), heeft om/vanaf 10:05 een send & receive gelopen).
Daarnaast kan encryptie er ook een rol in spelen, en de twee verschillende dataset/snapshot namen die ik gezien heb zijn beiden encrypted (ZFS native encryption dus, doh).
En daar bovenop is er nog een post van iemand die de (encryptie) code aandachtig aan het bestuderen is en die blijkbaar vol bugs zit. Van (mogelijke) race conditions tot "undefined behaviour". Dus ook dat speelt er potentieel een rol in(?).
En v.w.b. "waarom nu". Dit was gisteren de eerste, maandelijkse, scrub nadat het offsite systeem een week of twee offline is geweest. Daarnaast is het offsite systeem dan opnieuw "geïnitialiseerd" doordat de HDD bad sectors had en deze door een SSD is vervangen, en ik dus from scratch ben begonnen. Mogelijk dat daardoor de send & receive net iets anders loopt.
Heb je in de dmesg output gekeken, voor hardware fouten o.i.d?
Ah, jup, gisteren al gedaan. Niet heel uitgebreid maar ook niks opvallends gezien. (Als in: alleen maar messages van nftables die ik denies laat loggen en dat lijkt enige te zijn de afgelopen dagen).willemw12 schreef op maandag 14 augustus 2023 @ 21:31:
Heb je in de dmesg output gekeken, voor hardware fouten o.i.d?
En dan ook maar meteen een "update". Eerder op de avond (/eind middag) liet zpool status -v rpool wederom een error in een snapshot zien. Later op de avond, en nu nog steeds, is het "weer" met een vage hex code. Naar mijn idee dus "snapshot is verwijderd" (zal een "frequent" snapshot zijn geweest dat elke 15 minuten gemaakt wordt en er maar 6 van bewaard blijven). Als in: de eerder gelogde error zal verwijzen naar een dataset / snapshot die intussen niet meer bestaat. En waar die eerder nog de "hex code" (/verwijzing naar dataset / snapshot) kon vertalen naar een naam is die naam nu weg.
Gezien het ook elke keer gaat om inode 0x0 gaat kan ik mij dan eigenlijk ook niets anders dan indenken dat het te maken heeft met dat vage gedrag dat in de gelinkte GitHub discussie staat. (Potentieel) buggy implementatie die (soms) false flags geeft.
Enige "zorgzame" is dan de situatie van gisteren (/zaterdag) waarbij een snapshot daadwerkelijk onleesbaar was en daardoor send & receive faalde.
Waarbij ik vandaag op een gegeven moment nog gecontroleerd heb of de snapshots aan de andere kant arriveerden, wat het geval was. En dat zal ik in ieder geval komende dagen blijven doen. Naast dat ik moet kijken naar iets van monitoring / dagelijkse status mail vanaf de andere kant / ....
Een vergelijkbare issue met daarin weer links naar andere issues.
Wat zou dan de trigger zijn? Ik draai ZFS 2.1.11, met Encryption, en doe ook veel send/receives.
Ik doe sends vanaf een mirrored pool en vanaf een RAIDZ2 pool.
Ik doe sends vanaf een mirrored pool en vanaf een RAIDZ2 pool.
Even niets...
Dat lijkt voornamelijk upgrade gerelateerd waarbij er iets met de encryptie veranderd is? Dat in 2.1.0 iets gewijzigd is waardoor encrypted datasets vanaf 2.0 een foutmelding / mount error geven? Waarbij een send & receive een workaround lijkt te zijn (send -w & receive naar een nieuwe dataset, oude verwijderen, nieuwe hernoemen, waarna de accounting metadata in orde is, of als alternatief twee snapshots maken, incremental stream in een file zetten, rollbacken naar eerste snapshot, en dan de update stream receiven).willemw12 schreef op dinsdag 15 augustus 2023 @ 09:04:
Een vergelijkbare issue met daarin weer links naar andere issues.
Uhm, geen idee? Wellicht te oude ZFS versie aan de andere kant? Maar lijkt mij ook gek aangezien er geen bidirectionele communicatie is (omdat het AFAIK uberhaupt niet kan over een pipe?).FireDrunk schreef op dinsdag 15 augustus 2023 @ 09:21:
Wat zou dan de trigger zijn? Ik draai ZFS 2.1.11, met Encryption, en doe ook veel send/receives.
Ik doe sends vanaf een mirrored pool en vanaf een RAIDZ2 pool.
Gaat bij mij in ieder geval om een nieuw systeem, eerder dit jaar op gezet met Bookworm (toen nog "testing") en intussen ook weer (semi) up-to-date met ook zfs 2.1.11 (zowel zfs als zfs-kmod).
Ik draai al jaren een server met ZFS on linux (Ubuntu server) in een RAIDZ2 opsteling met 6 schijven. Dit draait al zo lang stabiel, dat ik eingelijk helemaal weer moet inlezen nu ik wat wil gaan wijzigen. Gelukkig heeft het al die jaren mijn bestand goed beschermd en kan ik weer even bijspijkeren nu.
Recent heb ik een nieuw mobo gekocht met ruimte voor 2 nvme ssd's. Het leek me interessant om een SLOG en L2ARC aan de pool toe te voegen. Kan dit zomaar of alleen bij een nieuwe pool? Is het best practice om daar 2 ssd's voor te gebruiken of kan het ook prima met een enkele SSD.
Ik heb een SSD (WD RED van 500GB die zou ik dan zo partitioneren:
- 60GB voor boot/OS
- 16 GB voor SLOG
- 120 GB voor L2ARC.
Recent heb ik een nieuw mobo gekocht met ruimte voor 2 nvme ssd's. Het leek me interessant om een SLOG en L2ARC aan de pool toe te voegen. Kan dit zomaar of alleen bij een nieuwe pool? Is het best practice om daar 2 ssd's voor te gebruiken of kan het ook prima met een enkele SSD.
Ik heb een SSD (WD RED van 500GB die zou ik dan zo partitioneren:
- 60GB voor boot/OS
- 16 GB voor SLOG
- 120 GB voor L2ARC.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
@Beninho Kan altijd op latere ZFS versies, maar is vrijwel altijd zinloos.
Sinds de 2 dagen regel reageer ik hier niet meer
Moest even lachen. Want dat had ik zelf inderdaad ook al 'een beetje' geconcludeerd op basis van wat ik had gelezen. 't is meer een soort whishfull thinking dat het wel iets toevoegdCurlyMo schreef op dinsdag 15 augustus 2023 @ 13:53:
@Beninho Kan altijd op latere ZFS versies, maar is vrijwel altijd zinloos.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Op mijn servertje heb ik 32GB geheugen aan ram, waarvan 24GB voor ARC. Opslagruimte is een nvme ssd van 2TB. Ik denk dat in mijn geval L2ARC toevoegen de boel juist zou vertragen. Als ik ergens nog voor een prikkie 2x32GB kan kopen, dan overweeg ik dat te doen, omdat het kan. 
Als snelheid een 'probleem' is in een thuisomgeving, dan is meer geheugen toevoegen in mijn ogen de beste oplossing en niet L2ARC. Zeker met de huidige geheugenprijzen.
Als snelheid een 'probleem' is in een thuisomgeving, dan is meer geheugen toevoegen in mijn ogen de beste oplossing en niet L2ARC. Zeker met de huidige geheugenprijzen.
Daarbij komt ook nog dat het pas echt goed werkt met Enterprise SSD's met een hoge QD=1 prestatie. Consumenten SSD's vinden dit soort workflows helemaal niet leuk.Beninho schreef op dinsdag 15 augustus 2023 @ 14:04:
[...]
Moest even lachen. Want dat had ik zelf inderdaad ook al 'een beetje' geconcludeerd op basis van wat ik had gelezen. 't is meer een soort whishfull thinking dat het wel iets toevoegd
Sinds de 2 dagen regel reageer ik hier niet meer
Ah, gelukkig heb ik 64GB ramgeheugen geprikt afgelopen weekend. Hoe heb je dat gereserveerd als ARC? *zoekt het even op.GioStyle schreef op dinsdag 15 augustus 2023 @ 14:05:
Op mijn servertje heb ik 32GB geheugen aan ram, waarvan 24GB voor ARC. Opslagruimte is een nvme ssd van 2TB. Ik denk dat in mijn geval L2ARC toevoegen de boel juist zou vertragen. Als ik ergens nog voor een prikkie 2x32GB kan kopen, dan overweeg ik dat te doen, omdat het kan.
Als snelheid een 'probleem' is in een thuisomgeving, dan is meer geheugen toevoegen in mijn ogen de beste oplossing en niet L2ARC. Zeker met de huidige geheugenprijzen.
Ik denk dat snelheid vooral een probleem was, doordat ik op een AMD zacate boardje uit 2011 werkte tot vorige week.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Beninho schreef op dinsdag 15 augustus 2023 @ 14:09:
[...]
Ah, gelukkig heb ik 64GB ramgeheugen geprikt afgelopen weekend. Hoe heb je dat gereserveerd als ARC? *zoekt het even op.
Ik denk dat snelheid vooral een probleem was, doordat ik op een AMD zacate boardje uit 2011 werkte tot vorige week.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| nano /etc/modprobe.d/zfs.conf # Setting up ZFS ARC size on Debian # 1GB == 1073741824 Bytes # 2GB == 2147483648 Bytes # 8GB == 8589934592 Bytes # 16GB == 17179869184 Bytes # 24GB == 25769803776 Bytes # Set Max ARC size options zfs zfs_arc_max=25769803776 # Set Min ARC size options zfs zfs_arc_min=2147483648 update-initramfs -u -k all |
Standaard reserveert ZFS onder Debian volgens mij de helft van het geheugen voor ARC. Ik heb deze omhoog geschroefd, omdat het OS + Dockercontainers in mijn geval meer dan genoeg hebben aan 8GB.
[ Voor 11% gewijzigd door GioStyle op 16-09-2023 21:33 ]
Ja, exact, dat las ik op mijn eerste zoekactie ook. Maar fijn dat je hier een min-max kan toedienen. Ga ik daar even beginnen.GioStyle schreef op dinsdag 15 augustus 2023 @ 14:11:
[...]
Standaard reseveert ZFS onder Debian volgens mij de helft van het geheugen voor ARC. Ik heb deze omhoog geschroefd, omdat het OS + Dockercontainers in mijn geval meer dan genoeg hebben aan 8GB.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Je bedoeld zoals de intel optane's (die niet meer gemaakt worden)?CurlyMo schreef op dinsdag 15 augustus 2023 @ 14:06:
[...]
Daarbij komt ook nog dat het pas echt goed werkt met Enterprise SSD's met een hoge QD=1 prestatie. Consumenten SSD's vinden dit soort workflows helemaal niet leuk.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Bijv. de product: Intel DC S3710 2,5" of de product: Intel SSD DC S3510. Dan zie je ook direct de prijsverschillen t.o.v. consumenten SSD'sBeninho schreef op dinsdag 15 augustus 2023 @ 14:28:
[...]
Je bedoeld zoals de intel optane's (die niet meer gemaakt worden)?
Sinds de 2 dagen regel reageer ik hier niet meer
Die S3510 zijn nog een beetje te betalen zie ik. Maar loopt idd wel lekker op t.o.v. consumentenspul.CurlyMo schreef op dinsdag 15 augustus 2023 @ 14:30:
[...]
Bijv. de product: Intel DC S3710 2,5" of de product: Intel SSD DC S3510. Dan zie je ook direct de prijsverschillen t.o.v. consumenten SSD's
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Ik heb als experiment een keer een paar 1.8" versies gekocht. Heeft geen enkel enig merkbaar verschil opgeleverd in mijn workflow. Boel uiteindelijk kunnen verkopen voor hetzelfde geld als dat ik ze gekocht had.Beninho schreef op dinsdag 15 augustus 2023 @ 14:34:
[...]
Die S3510 zijn nog een beetje te betalen zie ik. Maar loopt idd wel lekker op t.o.v. consumentenspul.
Sinds de 2 dagen regel reageer ik hier niet meer
Ah helder. Ik ben blij dat ik even hier ingeheckt heb dan. Ik ga eerst even de RAM setting neerzetten, schoon OS installeren en de VM's activeren. Ik had het OS altijd nog draaien via een USB drive. Maar ik had zelfs daar geen echte issues met snelheid. Dat kwam vooral wanneer ik veel of grote bestanden moest benaderen of wat complexere software zoals nextcloud. Dan trok dat kleine cpu'tje het gewoon niet.CurlyMo schreef op dinsdag 15 augustus 2023 @ 14:37:
[...]
Ik heb als experiment een keer een paar 1.8" versies gekocht. Heeft geen enkel enig merkbaar verschil opgeleverd in mijn workflow. Boel uiteindelijk kunnen verkopen voor hetzelfde geld als dat ik ze gekocht had.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
En dan ook nog MLC? En geen SLC. * RobertMe heeft toentertijd nog een van de eerste semi betaalbare SSDs gekocht, Intel, 120GB, SLC opslag. Vervolgens kwam MLC en was dat toch best wel tricky. Want toch wel wat trager door die 2 bits per cel en slijtage zou er ook hoger door worden (lees: sneller stuk). En toen kwam TLC en weer hetzelfde verhaal. En toen kwam QLC en weer hetzelfde verhaal.CurlyMo schreef op dinsdag 15 augustus 2023 @ 14:30:
[...]
Bijv. de product: Intel DC S3710 2,5" of de product: Intel SSD DC S3510. Dan zie je ook direct de prijsverschillen t.o.v. consumenten SSD's
Als je vanaf USB draaide zal dat hopelijk met een ram-disk zijn. De belabberde performance van USB merk je dan (hopelijk) niet veel van. Doordat dus alle files in RAM worden geplaatst i.p.v. elke keer van de stick lezen.Beninho schreef op dinsdag 15 augustus 2023 @ 14:47:
[...]
Ah helder. Ik ben blij dat ik even hier ingeheckt heb dan. Ik ga eerst even de RAM setting neerzetten, schoon OS installeren en de VM's activeren. Ik had het OS altijd nog draaien via een USB drive. Maar ik had zelfs daar geen echte issues met snelheid. Dat kwam vooral wanneer ik veel of grote bestanden moest benaderen of wat complexere software zoals nextcloud. Dan trok dat kleine cpu'tje het gewoon niet.
Nee, het was met een sata-naar usb adaptertje, eerst vanaf een hdd, later een ssd'tje.RobertMe schreef op dinsdag 15 augustus 2023 @ 14:51:
[...]
Als je vanaf USB draaide zal dat hopelijk met een ram-disk zijn. De belabberde performance van USB merk je dan (hopelijk) niet veel van. Doordat dus alle files in RAM worden geplaatst i.p.v. elke keer van de stick lezen.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Ben een beetje aan het puzzelen met de componenten die ik heb liggen:
ryzen 5700g / 128gb ram / 10gbe
2x 16tb 7200 rpm
1x 8tb sata 870 qvo ssd
1x 2tb sata 860 pro 2tb ssd
2x 2tb 980 pro nvme
2x 2tb 970 evo plus nvme
Ik heb in totaal ongeveer 4tb nodig voor vm's / containers. Sommige vragen redelijk wat aan disk IO.
verder heb ik op dit moment ongeveer 8tb aan data welke ik wel vlot wil kunnen benaderen, maar vooral redundantie daarvan is belangrijk.
Mijn idee:
De 2x16tb in raid1 met lz4 in een eigen pool voor de data.
de 2 snelste (980 pro's) inzetten voor VM's. (zonder ZFS?)
Dan houd ik nog een hele bups aan ssd storage over: Een idee: L2ARC?
Een ander idee is om alle 2TB nvme schijven in bijvoorbeeld raidz1 te zetten. Het voordeel is dat ik dan 1 groter volume krijg met een klein beetje redundantie. Het nadeel is denk ik wel een flinke performance hit voor vm's?
Iemand ideeën?
ryzen 5700g / 128gb ram / 10gbe
2x 16tb 7200 rpm
1x 8tb sata 870 qvo ssd
1x 2tb sata 860 pro 2tb ssd
2x 2tb 980 pro nvme
2x 2tb 970 evo plus nvme
Ik heb in totaal ongeveer 4tb nodig voor vm's / containers. Sommige vragen redelijk wat aan disk IO.
verder heb ik op dit moment ongeveer 8tb aan data welke ik wel vlot wil kunnen benaderen, maar vooral redundantie daarvan is belangrijk.
Mijn idee:
De 2x16tb in raid1 met lz4 in een eigen pool voor de data.
de 2 snelste (980 pro's) inzetten voor VM's. (zonder ZFS?)
Dan houd ik nog een hele bups aan ssd storage over: Een idee: L2ARC?
Een ander idee is om alle 2TB nvme schijven in bijvoorbeeld raidz1 te zetten. Het voordeel is dat ik dan 1 groter volume krijg met een klein beetje redundantie. Het nadeel is denk ik wel een flinke performance hit voor vm's?
Iemand ideeën?
[ Voor 86% gewijzigd door savale op 19-08-2023 01:00 ]
Ik zou inderdaad gaan voor een mirror van de 2× 16 TB schijven. Mirrors zijn de makkelijkst te gebruiken vdevs in ZFS. Je kunt een pool met mirrors makkelijk uitbreiden door nog een mirror bij te koppelen. Je kunt (zie hieronder) bij mirrors ook makkelijk een special device toevoegen en (!) verwijderen.
Aangezien het aantal IOPS schaalt met het aantal vdevs heb je voor je VMs ook meer aan een mirror van de SSDs dan aan een RAIDZ1. (De SSDs voor VMs dus in hun eigen zpool, los van de 16TB mirror)
Waar gebruik je de 10 Gb ethernet kaart voor? Iets met schrijven via Samba of NFS? Zo ja, dan zou je op een paar SSDs een aparte partitie van een paar GB aan kunnen maken voor een SLOG. Daarmee versnel je schrijftoegang tot je spinning disk pool, aangezien NFS sync write gebruikt.
Ik zou ook zeker overwegen om een tweetal SSDs als gemirrord special device in te schakelen bij je 16TB pool. Op zo'n special device worden de metadata opgeslagen van je pool. Dus zaken als het listen van ZFS snapshots of het doen van een `find` of `ls` worden erdoor versneld. Eventueel kun je er zelfs voor kiezen (zeker omdat je 2TB SSDs hebt) om kleine blocks op zo'n special device op te slaan. Afhankelijk van de gekozen recordsize (standaard 128 kB) kun je bijvoorbeeld alle bestanden van <= 32 kB op SSDs opslaan (dit is een dataset property). Dat scheelt weer in de toegangstijd voor dit soort kleine bestanden (bijvoorbeeld bij het laden van thumbnails bij een dataset met foto's). Het is wel handig om vantevoren te kijken hoeveel kleine bestanden van een bepaalde grootte (4kB, 8kB, 16kB, 32kB, 64kB) je in je dataset hebt. Voor meer info zie bijvoorbeeld https://forum.level1techs...a-special-device-z/159954.
Noot: een special device kan, als het niet bevalt, alleen bij een mirror pool verwijderd worden, niet bij een RAIDZ pool.
Over L2ARC: dat is voor huis-, tuin- en keukenservertjes bijna nooit de moeite. Je kunt het natuurlijk altijd proberen en kijken wat je hit % is, want een L2ARC kan altijd weer uit een zpool verwijderd worden.
Aangezien het aantal IOPS schaalt met het aantal vdevs heb je voor je VMs ook meer aan een mirror van de SSDs dan aan een RAIDZ1. (De SSDs voor VMs dus in hun eigen zpool, los van de 16TB mirror)
Waar gebruik je de 10 Gb ethernet kaart voor? Iets met schrijven via Samba of NFS? Zo ja, dan zou je op een paar SSDs een aparte partitie van een paar GB aan kunnen maken voor een SLOG. Daarmee versnel je schrijftoegang tot je spinning disk pool, aangezien NFS sync write gebruikt.
Ik zou ook zeker overwegen om een tweetal SSDs als gemirrord special device in te schakelen bij je 16TB pool. Op zo'n special device worden de metadata opgeslagen van je pool. Dus zaken als het listen van ZFS snapshots of het doen van een `find` of `ls` worden erdoor versneld. Eventueel kun je er zelfs voor kiezen (zeker omdat je 2TB SSDs hebt) om kleine blocks op zo'n special device op te slaan. Afhankelijk van de gekozen recordsize (standaard 128 kB) kun je bijvoorbeeld alle bestanden van <= 32 kB op SSDs opslaan (dit is een dataset property). Dat scheelt weer in de toegangstijd voor dit soort kleine bestanden (bijvoorbeeld bij het laden van thumbnails bij een dataset met foto's). Het is wel handig om vantevoren te kijken hoeveel kleine bestanden van een bepaalde grootte (4kB, 8kB, 16kB, 32kB, 64kB) je in je dataset hebt. Voor meer info zie bijvoorbeeld https://forum.level1techs...a-special-device-z/159954.
Noot: een special device kan, als het niet bevalt, alleen bij een mirror pool verwijderd worden, niet bij een RAIDZ pool.
Over L2ARC: dat is voor huis-, tuin- en keukenservertjes bijna nooit de moeite. Je kunt het natuurlijk altijd proberen en kijken wat je hit % is, want een L2ARC kan altijd weer uit een zpool verwijderd worden.
@savale dit (korte) draadje op het Practical ZFS forum gaat over een vergelijkbare use case: https://discourse.practic...l-vdev-for-containers/662
Hallo ZFSsertjes,
Eens even een vraag over dit bord:
uitvoering: ASUS Pro B550M-C/CSM
Dat twee M2 slots heeft: M.2 (PCI-e 3.0 x4 + SATA), M.2 (PCI-e 4.0 x4 + SATA)
Nou is die PCIe 4.0 een keer zo snel als het 3.0 slot.
Hoe werk zicht dit uit op de snelheid als ik hier met 2 repen een ZFS mirror op zou draaien?
Eens even een vraag over dit bord:
uitvoering: ASUS Pro B550M-C/CSM
Dat twee M2 slots heeft: M.2 (PCI-e 3.0 x4 + SATA), M.2 (PCI-e 4.0 x4 + SATA)
Nou is die PCIe 4.0 een keer zo snel als het 3.0 slot.
Hoe werk zicht dit uit op de snelheid als ik hier met 2 repen een ZFS mirror op zou draaien?
Wie du mir, so ich dir.
Schrijven wordt sowieso altijd naar beide gedaan en is pas "akkoord" als dat naar beide gedaan is. Dus schrijven kan nooit sneller dan de langzaamste disk.eheijnen schreef op zaterdag 26 augustus 2023 @ 10:42:
Hallo ZFSsertjes,
Eens even een vraag over dit bord:
uitvoering: ASUS Pro B550M-C/CSM
Dat twee M2 slots heeft: M.2 (PCI-e 3.0 x4 + SATA), M.2 (PCI-e 4.0 x4 + SATA)
Nou is die PCIe 4.0 een keer zo snel als het 3.0 slot.
Hoe werk zicht dit uit op de snelheid als ik hier met 2 repen een ZFS mirror op zou draaien?
Hoe het met lezen zit durf ik niet te zeggen. Idealiter leest die van beiden en retourneert de eerste response, echter wil je waarschijnlijk wel dat die dan van beiden de data valideert (om silent bitrot te voorkomen op de "trage" disk die dan nooit gevalideerd zou worden). Daarnaast kan het zijn dat ZFS afwisselend van een van beide leest (en IO load dus verdeeld en sneller kan lezen dan de snelste disk). Maar ook daarbij, hoe zit het dan met checksumming? Mogelijk dus dat die altijd van beide disks leest, van beiden het antwoord valideert (checksumming en onderling) en vervolgens pas het antwoord geeft? Waarmee de leessnelheid dus zo snel als de traagste disk is.
@RobertMe
Ja, wat ik er nu nog van gelezen heb is het gestaafd op een raid1 mirror implementate.
Waarbij van twee schijven word gelezen. Dat zou uitsluiten dat ZFS een schijf boven de andere zal prefereren op basis van snelheid.
Zou dus bij een gelijke verdeling van de leesopdrachten een gedeeltelijke snelheids winst opleveren.
Ja, wat ik er nu nog van gelezen heb is het gestaafd op een raid1 mirror implementate.
Waarbij van twee schijven word gelezen. Dat zou uitsluiten dat ZFS een schijf boven de andere zal prefereren op basis van snelheid.
Zou dus bij een gelijke verdeling van de leesopdrachten een gedeeltelijke snelheids winst opleveren.
Wie du mir, so ich dir.
Daarvoor heb je toch je scrubs?RobertMe schreef op zaterdag 26 augustus 2023 @ 11:00:
[...]
echter wil je waarschijnlijk wel dat die dan van beiden de data valideert (om silent bitrot te voorkomen op de "trage" disk die dan nooit gevalideerd zou worden).
No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.
Nee, de leessnelheid wordt bij ZFS ook verhoogd bij RAID1 net als bij andere RAID1 implementaties. Zie o.a. https://serverfault.com/a/676980 die weer doorlinkt naar de ZFS documentatie.RobertMe schreef op zaterdag 26 augustus 2023 @ 11:00:
[...]
Mogelijk dus dat die altijd van beide disks leest, van beiden het antwoord valideert (checksumming en onderling) en vervolgens pas het antwoord geeft? Waarmee de leessnelheid dus zo snel als de traagste disk is.
Sinds de 2 dagen regel reageer ik hier niet meer
Klopt,CurlyMo schreef op zaterdag 26 augustus 2023 @ 12:19:
[...]
Nee, de leessnelheid wordt bij ZFS ook verhoogd bij RAID1 net als bij andere RAID1 implementaties. Zie o.a. https://serverfault.com/a/676980 die weer doorlinkt naar de ZFS documentatie.
Als de checksum klopt is de read valide anders wordt ie nog eens van de andere disk getrokken...
Wie du mir, so ich dir.
Afhankelijk of het een server of een werk/gamePC is.eheijnen schreef op zaterdag 26 augustus 2023 @ 10:42:
Nou is die PCIe 4.0 een keer zo snel als het 3.0 slot.
Hoe werk zicht dit uit op de snelheid als ik hier met 2 repen een ZFS mirror op zou draaien?
Is het een server, maakt de snelheid dan wat uit?, want dan zit je met de 1 of 10Gbit netwerk snelheid als belemmering, de toegangstijd blijft gelijk onder zowel PCIe 3.0 als 4.0.
Is het een PC dan haal je max de snelheid van PCIe 3.0, tenzij je een bord neemt met twee gedeelde PCIe x16 sloten, die 1x PCIe x16 of 2x PCIe x8 kunnen doen.
Dan zou een Dual NVMe PCIe Adapter een optie kunnen zijn, mits dat bord wel 'PCIe Bifurcation' ondersteund.
Bordje werkt perfect in mijn PC, heb op dat bordje 2x NVMe voor mijn werk, program en game files in raid 0, om als een grotere schijf te hebben, met als bonus hogere doorvoer.
[dislectie] hoeveel forum deelnemers heb je nodig om een peertje te vervangen ?
@player-x
Gigabit krijg je met HDDs wel ongeveer verzadigd.
Gaat hier niet voor de netwerkdoorvoer, maar met het oog op zware interne doorvoer.
Met 4.0 kom je (grofweg) op 10 x SDD snelheid en 2 x tov. 3.0
Een 4.0 mirror lijkt me een goede zet.
Denk niet dat je een dual 4.0 NVME adapter nodig hebt maar al een enkele genoeg is. Dat weer gecombineerd met de onboard 4.0. Dan sla je bifurcation/multiplexing tussen twee drives binnen dezelfde mirror over.
Dan zou je aan deze rakker al eens genoeg kunnen hebben:
uitvoering: Savio AK-41 - PCI-E to M2 NVME Adapter M-KEY
Gigabit krijg je met HDDs wel ongeveer verzadigd.
Gaat hier niet voor de netwerkdoorvoer, maar met het oog op zware interne doorvoer.
Met 4.0 kom je (grofweg) op 10 x SDD snelheid en 2 x tov. 3.0
Een 4.0 mirror lijkt me een goede zet.
Denk niet dat je een dual 4.0 NVME adapter nodig hebt maar al een enkele genoeg is. Dat weer gecombineerd met de onboard 4.0. Dan sla je bifurcation/multiplexing tussen twee drives binnen dezelfde mirror over.
Dan zou je aan deze rakker al eens genoeg kunnen hebben:
uitvoering: Savio AK-41 - PCI-E to M2 NVME Adapter M-KEY
Wie du mir, so ich dir.
Het verschil tussen PCIe 3.0 en 4.0 (beide x4) is vrijwel niet merkbaar. Kan je prima doen.
De snelheden die je met ZFS op NVMe haalt zijn toch vaak niet 'wire-speed', dus boeit het weinig.
De snelheden die je met ZFS op NVMe haalt zijn toch vaak niet 'wire-speed', dus boeit het weinig.
Even niets...
@FireDrunk
Maar als ik dan kijk naar deze twee waarvan een 4.0 kan en de andere 3.0.
Op welke hardware komt een 980 dan wel tot zijn recht?
Maar als ik dan kijk naar deze twee waarvan een 4.0 kan en de andere 3.0.
Op welke hardware komt een 980 dan wel tot zijn recht?
Wie du mir, so ich dir.
Bifurcation 'overslaan' is geen ding: het is letterlijk opdelen van een PCIe-aansluiting over meerdere apparaten.eheijnen schreef op maandag 28 augustus 2023 @ 10:12:
Denk niet dat je een dual 4.0 NVME adapter nodig hebt maar al een enkele genoeg is. Dat weer gecombineerd met de onboard 4.0. Dan sla je bifurcation/multiplexing tussen twee drives binnen dezelfde mirror over.
ZFS is niet echt geoptimaliseerd voor NVMe drives. Als je echt volle bak performance wil, is het beter om geen ZFS te gebruiken. ZFS is geen snelheidsmonster, maar een enterprise stabiel filesystem bedoeld voor proffesioneel gebruik.eheijnen schreef op maandag 28 augustus 2023 @ 10:27:
@FireDrunk
Maar als ik dan kijk naar deze twee waarvan een 4.0 kan en de andere 3.0.
Op welke hardware komt een 980 dan wel tot zijn recht?
Dat wil niet zeggen dat het niet kan op NVMe (ik draai zelf ook een mirror op NVMe drives icm ZFS), maar je moet er geen miljoenen IOPS van verwachten.
Ik haal tijdens een scrub ~1GB/s
199G scanned at 6.42G/s, 28.2G issued at 933M/s, 199G total
CPU belasting is dan ongeveer 1.5 core vol belast.
Of dat genoeg is, moet je voor jezelf bepalen.
Even niets...
Dan kun je met bifurcation van twee individuele disks simultaan de maximum snelheid halen?dcm360 schreef op maandag 28 augustus 2023 @ 10:33:
[...]
Bifurcation 'overslaan' is geen ding: het is letterlijk opdelen van een PCIe-aansluiting over meerdere apparaten.
Of is dit nog afhankelijk van de adapter zelf?
Wie du mir, so ich dir.
Bifurcation zorgt er voor dat je meer apparaten op 1 PCIe slot aan kan sluiten.
Zie het als een USB Hub, maar dan voor PCIe.
Als je een x16 slot dmv bifuration opdeelt, kan je bijvoorbeeld (maar niet altijd), 1 poort van x8 en 2 poorten van x4 maken.
Dan kan je over die poorten de maximale snelheid halen.
Zie het als een USB Hub, maar dan voor PCIe.
Als je een x16 slot dmv bifuration opdeelt, kan je bijvoorbeeld (maar niet altijd), 1 poort van x8 en 2 poorten van x4 maken.
Dan kan je over die poorten de maximale snelheid halen.
Even niets...
Daar heb ik idd nog wat over gelezen gisteren. Dat er nog aan gewerkt wordt om ZFS ook beter op NVME disks tot zijn recht te laten komen.FireDrunk schreef op maandag 28 augustus 2023 @ 10:54:
[...]
ZFS is niet echt geoptimaliseerd voor NVMe drives. Als je echt volle bak performance wil, is het beter om geen ZFS te gebruiken. ZFS is geen snelheidsmonster, maar een enterprise stabiel filesystem bedoeld voor proffesioneel gebruik.
Dat wil niet zeggen dat het niet kan op NVMe (ik draai zelf ook een mirror op NVMe drives icm ZFS), maar je moet er geen miljoenen IOPS van verwachten.
Ik haal tijdens een scrub ~1GB/s
199G scanned at 6.42G/s, 28.2G issued at 933M/s, 199G total
CPU belasting is dan ongeveer 1.5 core vol belast.
Of dat genoeg is, moet je voor jezelf bepalen.
Wie du mir, so ich dir.
Met dien verstande dat het alleen lanes split, terwijl je op een hub meer apparaten aan kan sluiten. Op één US-bus kun je (ff uit mijn hoofd) 127 apparaten aansluiten, maar op één PCIe-lane kun je maar één apparaat aansluiten. Je 16-lane slot kun je dus opknippen naar 16 x 1, 8 x 2, 4 x 4, 2 8 of een combinatie, zolang het totaal niet boven de 16 uitkomt.FireDrunk schreef op maandag 28 augustus 2023 @ 10:57:
Bifurcation zorgt er voor dat je meer apparaten op 1 PCIe slot aan kan sluiten.
Zie het als een USB Hub, maar dan voor PCIe.
Iedere lane behoudt de snelheid, ook bij simultaan gebruik (want 1:1 koppeling), alleen heb je per apparaat uiteraard minder lanes beschikbaar. Aangezien een SSD maximaal 4 lanes kan gebruiken kun je een 16x slot dus bifurcaten naar 4x4 en alle vier de SSD's met maximale snelheid en maximale aantal lanes bedienen.
In principe staat dit los van de adapter, maar je adapter moet dan wel daadwerkelijk 4 lanes naar het M2-slot sturen; een adapter met 8 sloten zal naar ieder slot maar 2 lanes sturen.
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
Klopt helemaal, de analogie met USB Hubs gaat een beetje mank.
Ook ondersteund niet elk bord alle vormen van Bifurcation.
De veelgebruikte Fujitsu D3644 doet dacht ik alleen x8/x4/x4.
Ook ondersteund niet elk bord alle vormen van Bifurcation.
De veelgebruikte Fujitsu D3644 doet dacht ik alleen x8/x4/x4.
Even niets...
Is 16 dan de max voor een 16x slot of zijn er nog technieken om daar overheen te gaan.Paul schreef op maandag 28 augustus 2023 @ 11:56:
[...]
In principe staat dit los van de adapter, maar je adapter moet dan wel daadwerkelijk 4 lanes naar het M2-slot sturen; een adapter met 8 sloten zal naar ieder slot maar 2 lanes sturen.
(snelheid even buiten beschouwing gelaten)
Wie du mir, so ich dir.
Ja, maar niet met Bifurcation, dan heb je een PCIe Switch nodig.
Soms ook wel een PLX Chip genoemd.
Die krengen zijn duur en vreten vaak energie helaas
Soms ook wel een PLX Chip genoemd.
Die krengen zijn duur en vreten vaak energie helaas

[ Voor 22% gewijzigd door FireDrunk op 28-08-2023 12:46 ]
Even niets...
Zonder al teveel details weg te geven wil ik even vermelden dat ik bovenstaande script heb aangepast naar mijn smaak en wensen en het werkt hier ook prima.Kaspers schreef op zaterdag 5 augustus 2023 @ 18:31:
[...]
Jep, het is idd prachtig.
Hier mijn script, wat dagelijks via een systemd timer wordt afgetrapt.
Via wake-on-lan wordt de target eerst gewekt. Na de backup wordt de target weer in suspend gezet.
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #!/bin/sh set -e # Any subsequent(*) commands which fail will cause the shell script to exit immediately echo "Waking up backup.lan via WoL" wakeonlan <mac:ad:res> echo "Wait 10 seconds" sleep 10 #target: USER=koos HOST=backup.lan # alleen datasets opnemen waarvan ook daadwerkelijk backups worden gemaakt. dus skip bijvoorbeeld zfspool/koos! echo "Sending snapshots of koos/configuration" syncoid --no-sync-snap zfspool/koos/configuration $USER@$HOST:zfspool2/koos/configuration --no-privilege-elevation echo "Sending snapshots of koos/documents" syncoid --no-sync-snap zfspool/koos/documents $USER@$HOST:zfspool2/koos/documents --no-privilege-elevation echo "Sending snapshots of koos/home" syncoid --no-sync-snap zfspool/koos/home $USER@$HOST:zfspool2/koos/home --no-privilege-elevation echo "Sending snapshots of koos/kubernetes" syncoid --no-sync-snap zfspool/koos/kubernetes $USER@$HOST:zfspool2/koos/kubernetes --no-privilege-elevation echo "Sending snapshots of koos/macbook" syncoid --no-sync-snap zfspool/koos/macbook $USER@$HOST:zfspool2/koos/macbook --no-privilege-elevation echo "Sending snapshots of koos/photos" syncoid --no-sync-snap zfspool/koos/photos $USER@$HOST:zfspool2/koos/photos --no-privilege-elevation echo "Sending snapshots of koos/videos" syncoid --no-sync-snap zfspool/koos/videos $USER@$HOST:zfspool2/koos/videos --no-privilege-elevation echo "Sending snapshots of koos/books" syncoid --no-sync-snap zfspool/koos/books $USER@$HOST:zfspool2/koos/books --no-privilege-elevation echo "Sending snapshots of koos/zfsmngmnt" syncoid --no-sync-snap zfspool/koos/zfsmngmnt $USER@$HOST:zfspool2/koos/zfsmngmnt --no-privilege-elevation echo "Finished sending snapshots to $HOST" echo "Suspending $HOST" #now suspend the backup target: ssh koos@backup.lan -t 'sudo systemctl suspend' echo "Done."
Systemd service:
code:
1 2 3 4 5 6 7 [Unit] Description=Run syncoid OnFailure=email-notification@%i.service [Service] Type=simple ExecStart=/zfspool/koos/configuration/storage-server/syncoid/backup.sh
Zoals je ziet: bij een failure word ik via een email hierop geattendeerd:
code:
1 2 3 4 5 6 [Unit] Description=%i failure email notification [Service] Type=oneshot ExecStart=/bin/bash -c ' ( echo "Subject: [%i] failure notification" & /bin/systemctl status %i ) | ssmtp -vvv koos@kaspe.rs -f root@storage '
Ik zit intussen nog steeds met dit issueRobertMe schreef op zondag 13 augustus 2023 @ 12:53:
Ik kreeg net een mailtje waar ik minder blij van werd, namelijk Zed.
Scrub waarbij er op de rpool (Samsung 980, non Pro) errors waren opgetreden. zpool status -v rpool melde 17 errors, waarvan 16x alleen maar hex codes en 1x verwijzing naar een snapshot. Vervolgens weer een scrub gedaan en bleef alleen het snapshot over. Nog een scrub en wederom alleen het snapshot. Oftewel:
code:
1 2 3 errors: Permanent errors have been detected in the following files: rpool/user/<knip>@pyznap_2023-08-12_00:00:02_daily:<0x0>
Gevoelsmatig is dit een "stale" error die ik zou moeten kunnen clearen (zpool clear) en klaar? Alleen beetje gek dan dat die andere errors (die ik dus niet meer bij de hand heb) ineens weg zijn.
Scrub heeft (blijkbaar) ook overdag gedraaid terwijl er wat CPU intensieve zaken liepen. Dus ik gok dat er daardoor "kortsluiting" is ontstaan. Systeempje is ook maar een no-name Chinese mini PC met N5105. Dus kwaliteit wellicht net wat minder.

Hopelijk dus dat "het werkt". Moet ik alleen weer wat actiever gaan monitoren. Had nu wel een lijstje met errors maar allemaal met de hex verwijzingen, van intussen dus verwijderde snapshots. Dus dan weet ik niet of de error in "mijn" dataset zat of in een van de andere. Dus weer beetje opletten of "mijn" dataset geen errors (meer) geeft (heb ik wel gezien, dat ook "mijn" dataset de error gaf).
Edit:
Na het destroyen van het snapshot (/beide snapshots) is die 8K used als sneeuw voor de zon verdwenen (uiteraard had ik verwacht dat die in het latere (frequently) snapshot zou belanden).
[ Voor 4% gewijzigd door RobertMe op 05-09-2023 22:43 ]
Vraag: ik draai een homeservertje (Home Assistant, DNS, e-mail, web, mediaserver, cloudserver), met een 1TB nvme SSD werkschijf waarop ik tot nu toe alles kwijt kan (OS, progs, audio, foto's, video's).
Servertje (Pentium Gold 6405, 16GB) draait Ubuntu server headless 22.04. Voor backup heb ik o.a. Nextcloud versioning, Duplicity naar een offsite NAS, en een local RAID1 2x1TB USB HDD, die ik af en toe handmatig aanzwengel en rsync.
Maar backups, zeker van eigen foto's en video's, heb je nooit genoeg. Dus heb ik met de huidige bodemprijzen een 2TB SATA SSD bijgekocht, die ik in de server bij wil pluggen als online backup, liefst met gemakkelijke versioning die ik (vanuit een bash-shell?) kan beheren en restoren, indien nodig.
Stap 1 is kijken welk filesystem, en daarom ben ik hier. Is ZFS een filesystem dat zich leent voor mijn doeleinden en mijn setup, en waar ik eens goed naar moet kijken? Of zeggen jullie hier "Hou maar op, verkeerde tool, dat wordt pas interessant bij (bijvoorbeeld) multiple disks"?
Dank!
Servertje (Pentium Gold 6405, 16GB) draait Ubuntu server headless 22.04. Voor backup heb ik o.a. Nextcloud versioning, Duplicity naar een offsite NAS, en een local RAID1 2x1TB USB HDD, die ik af en toe handmatig aanzwengel en rsync.
Maar backups, zeker van eigen foto's en video's, heb je nooit genoeg. Dus heb ik met de huidige bodemprijzen een 2TB SATA SSD bijgekocht, die ik in de server bij wil pluggen als online backup, liefst met gemakkelijke versioning die ik (vanuit een bash-shell?) kan beheren en restoren, indien nodig.
Stap 1 is kijken welk filesystem, en daarom ben ik hier. Is ZFS een filesystem dat zich leent voor mijn doeleinden en mijn setup, en waar ik eens goed naar moet kijken? Of zeggen jullie hier "Hou maar op, verkeerde tool, dat wordt pas interessant bij (bijvoorbeeld) multiple disks"?
Dank!
Alleen het feit dat ZFS alles doet checksummen maakt het al interessant voor opslag van zaken die je niet wilt verliezen. Dat garandeert in ieder geval dat bitrot gedetecteerd wordt (maar met single disk niet hersteld kan worden natuurlijk*). Maar uiteraard moet je daarvoor periodiek alle bestaande lezen (wat een " zpool scrub" voor je kan doen).glaswerk schreef op zaterdag 9 september 2023 @ 18:26:
Vraag: ik draai een homeservertje (Home Assistant, DNS, e-mail, web, mediaserver, cloudserver), met een 1TB nvme SSD werkschijf waarop ik tot nu toe alles kwijt kan (OS, progs, audio, foto's, video's).
Servertje (Pentium Gold 6405, 16GB) draait Ubuntu server headless 22.04. Voor backup heb ik o.a. Nextcloud versioning, Duplicity naar een offsite NAS, en een local RAID1 2x1TB USB HDD, die ik af en toe handmatig aanzwengel en rsync.
Maar backups, zeker van eigen foto's en video's, heb je nooit genoeg. Dus heb ik met de huidige bodemprijzen een 2TB SATA SSD bijgekocht, die ik in de server bij wil pluggen als online backup, liefst met gemakkelijke versioning die ik (vanuit een bash-shell?) kan beheren en restoren, indien nodig.
Stap 1 is kijken welk filesystem, en daarom ben ik hier. Is ZFS een filesystem dat zich leent voor mijn doeleinden en mijn setup, en waar ik eens goed naar moet kijken? Of zeggen jullie hier "Hou maar op, verkeerde tool, dat wordt pas interessant bij (bijvoorbeeld) multiple disks"?
Dank!
Daarnaast zou je jezelf met snapshots kunnen beschermen tegen "per ongeluk verwijderen", waarbij je uit het snapshot de bestanden terug kunt halen.
Wil je meerdere backups hebben zou je dat weer kunnen inregelen met een zfs send & receive. Dan kun je het hele "filesystem" over zetten middels de snapshots. Waarbij die ook redelijk efficiënt is doordat ZFS weet wat veranderd is op filesystem niveau tussen de snapshots. Andere kant hoeft daarbij ook geen ZFS filesystem te zijn, doordat "zfs send" een stream oplevert die je ook als een bestand kunt opslaan. Later kun je vanaf het bestand dan weer een "zfs receive" doen.
Owja, en met ZFS native encryption kun je er voor zorgen dat de data encrypted at rest is. Dus mocht de HDD gestolen worden kan de data niet gelezen worden (tenzij de key op de disk staat in een onversleuteld bestand).
* tenzij je ergens een propterty instelt dat elk bestand 2, 3, ... keer opgeslagen moet worden
Ben benieuwd naar de ervaringen van mensen hier die een upgrade van Debian 11 naar 12 hebben gedaan en daarin hun ZFS pools 1-op-1 hebben meegenomen.
Zijn daar eigenaardigheden bij naarvoren gekomen vwb ZFS?
Of verliep alles gladjes?
Zijn daar eigenaardigheden bij naarvoren gekomen vwb ZFS?
Of verliep alles gladjes?
Wie du mir, so ich dir.
Ik geloof dat het redelijk gladjes verliep. M'n geheugen laat wel wat te wensen over, want ik had wel een paar keer rond die tijd dat ik bij een reboot problemen had - wat veroorzaakt werd, vermoed ik, door een kernel-upgrade terwijl ik package linux-headers-amd64 niet (meer?) geinstalleerd had. Da's dacht ik nodig om de ZFS modules te kunnen gebruiken. Dus misschien even voor de upgrade (en wellicht vlak voor de reboot) kijken of je die nog hebt.eheijnen schreef op zondag 10 september 2023 @ 09:46:
Ben benieuwd naar de ervaringen van mensen hier die een upgrade van Debian 11 naar 12 hebben gedaan en daarin hun ZFS pools 1-op-1 hebben meegenomen.
Zijn daar eigenaardigheden bij naarvoren gekomen vwb ZFS?
Of verliep alles gladjes?
Ging vlekkeloos hier.eheijnen schreef op zondag 10 september 2023 @ 09:46:
Ben benieuwd naar de ervaringen van mensen hier die een upgrade van Debian 11 naar 12 hebben gedaan en daarin hun ZFS pools 1-op-1 hebben meegenomen.
Zijn daar eigenaardigheden bij naarvoren gekomen vwb ZFS?
Of verliep alles gladjes?
Even niets...
Ik draai al jaren stabiel een FreeNas/TrueNas server zonder problemen. Een tijdje terug liep deze echter vol, waarna ik de HDD's ben beginnen vervangen door nieuwe (4x4TB -> 4x10TB, met 1 redundante schijf).
Ik heb de disks 1 voor offline gehaald en vervangen, elke keer met een resilver getriggered door de "replace disk" actie in Truenas. Alle disks zijn gechecked voor SMART errors en ok bevonden.
Bij het resilveren van de derde disk liep het echter fout; plots was m'n pool status "degraded". Eerst enkel die disk, dan een 2de en ondertussen alle disks (heb ook de 4de vervangen nadat de vorige resilver voltooid was).
Ik heb wat gegoogled, maar ik vind meer over SMART errors dan echte "degraded" disks. Van wat ik begrijp, zou een resilver moeten helpen. Kan me ook moeilijk voorstellen dat al die disks ineens slecht zijn (zijn NAS geschikte disks, nieuw).
Iemand een idee?
/f/image/roTjPZoMhbsfF5chedVMfyl6.png?f=fotoalbum_large)
Ik heb de disks 1 voor offline gehaald en vervangen, elke keer met een resilver getriggered door de "replace disk" actie in Truenas. Alle disks zijn gechecked voor SMART errors en ok bevonden.
Bij het resilveren van de derde disk liep het echter fout; plots was m'n pool status "degraded". Eerst enkel die disk, dan een 2de en ondertussen alle disks (heb ook de 4de vervangen nadat de vorige resilver voltooid was).
Ik heb wat gegoogled, maar ik vind meer over SMART errors dan echte "degraded" disks. Van wat ik begrijp, zou een resilver moeten helpen. Kan me ook moeilijk voorstellen dat al die disks ineens slecht zijn (zijn NAS geschikte disks, nieuw).
Iemand een idee?
/f/image/roTjPZoMhbsfF5chedVMfyl6.png?f=fotoalbum_large)
:fill(white):strip_exif()/f/image/WHEFEG2vlG5rvhEsmfjtJMHS.png?f=user_large)
Als je een goede disk er uit haalt en daarna pas een replace doet, klopt het dat de pool degraded is. Je mist immers een disk...
Na de resilver gaat dat weer weg.
Na de resilver gaat dat weer weg.
Even niets...
Maar als je eerst A, B, C en D hebt, vervolgens A vervangt door A' en een resilver laat doen, vervolgens als je dus A', B, C, D hebt B vervangt door B' etc dan kan het toch niet dat die bij C vervangen door C' ineens ook A' & B' op degraded zet? Terwijl dat is wat er gebeurt bij @bertp1 als ik het goed lees.FireDrunk schreef op dinsdag 12 september 2023 @ 18:50:
Als je een goede disk er uit haalt en daarna pas een replace doet, klopt het dat de pool degraded is. Je mist immers een disk...
Na de resilver gaat dat weer weg.
Of heeft @bertp1 niet netjes gewacht tot elke resilver klaar is? Maar dan had die al er uit moeten vliegen bij het vervangen van B. Immers is het een RAIDZ1 pool die dus maar beschermd tegen uitval van 1 disk.
@bertp1, het doen van een replace van een disk met zowel de "oude" als de nieuwe/lege in het systeem is IMO sowieso aan te bevelen. Als je de oude uit het systeem haalt moet ZFS de data echt gaan herberekenen wat een nogal zware operatie is. Of in ieder geval veel zwaarder dan kinda één op één de data van de oude disk kopiëren naar de nieuwe dat gedaan zal worden als beide nog in het systeem zitten. Daarnaast stel je je in de situatie met oude verwijderen en nieuwe plaatsen bloot aan een risico van een daadwerkelijk corrupte pool als tijdens de resilver een andere disk faalt. Immers heb je maar single redundancy en maak je daar gebruik van vanaf het moment dat je de oude schijf verwijderd, nog een falende disk en daarvoor heb je geen redundancy. Terwijl je het makkelijk kunt voorkomen door tijdelijk beide disks aangesloten te hebben. (Uiteraard onder voorwaarde dat je zoveel SATA aansluitingen hebt, maar desnoods kun je tijdelijk met een goede externe HDD behuizing / dock werken)
Hij zei 1 voor 1 offline gehaald. Dat interpreteer ik als, eerst disk er uit, daarna nieuwe disk er in. Verder heb je gelijk.
Even niets...
Ik heb inderdaad altijd een goede disk eruit gehaald, nieuwe erin, replace, resilver. Daarna pas aan de volgende disk begonnen. Dus als er tijdens het resilveren data corruptie optreedt, heb ik geen redundantie meer.
Dat ik een schijf kon vervangen zonder die eruit te halen, wist ik niet. Zal het volgende keer zo doen dan.
Hoe dan ook is mn pool nu "degraded". Wat kan ik doen om die situatie op te lossen? Ik heb de oude schijven nog.
Dat ik een schijf kon vervangen zonder die eruit te halen, wist ik niet. Zal het volgende keer zo doen dan.
Hoe dan ook is mn pool nu "degraded". Wat kan ik doen om die situatie op te lossen? Ik heb de oude schijven nog.
[ Voor 3% gewijzigd door bertp1 op 12-09-2023 19:23 ]
Hij is nog aan het resilveren. Daarna zou hij weer healthy moeten worden.
Even niets...
Ik vermoed dat je met die oude disks niks meer kunt. Die zijn immers uit de pool gehaald (en de data zal (mogelijk) veranderd zijn). Wil je deze disks weer gebruiken zul je ze effectief weer met een replace moeten toevoegen en daarbij zal niet gezien worden dat ze (voorheen) onderdeel van de pool waren (disk identifier in de metadata zal niet matchen met (een van de) disks die in de metadata van de pool staan als zijnde "deze disks zitten in de pool". Dus de pool zegt nu dat die uit A', B', C' en D bestaat. Dus als je disk A aansluit wordt die niet meer herkent).bertp1 schreef op dinsdag 12 september 2023 @ 19:21:
Hoe dan ook is mn pool nu "degraded". Wat kan ik doen om die situatie op te lossen? Ik heb de oude schijven nog.
Maar horen dan 3/4 disks op degraded te staan? In combinatie met (uniek aantal) checksums op elke disk? Dat vind ikzelf wel raar staan zo.FireDrunk schreef op dinsdag 12 september 2023 @ 19:26:
Hij is nog aan het resilveren. Daarna zou hij weer healthy moeten worden.
De hoeveelheid checksum errors heb ik idd overheen gekeken. Dat klinkt niet goed.
Even niets...
Straf is ook dat ik voorlopig geen kapotte files ed kan vinden...
Is er een manier om gewoon de checksums te herberekenen adhv de data die er nu is? Dat gewoon alle errors gereset zijn en ik achteraf wel uitvindt waar ik iets kwijt ben... Dan weet ik tenminste of het erger word of niet.
Is er een manier om gewoon de checksums te herberekenen adhv de data die er nu is? Dat gewoon alle errors gereset zijn en ik achteraf wel uitvindt waar ik iets kwijt ben... Dan weet ik tenminste of het erger word of niet.
scrub, status en clear zijn dan je vrienden.bertp1 schreef op woensdag 13 september 2023 @ 23:03:
Straf is ook dat ik voorlopig geen kapotte files ed kan vinden...
Is er een manier om gewoon de checksums te herberekenen adhv de data die er nu is? Dat gewoon alle errors gereset zijn en ik achteraf wel uitvindt waar ik iets kwijt ben... Dan weet ik tenminste of het erger word of niet.
Ik zou eerst een scrub doen zodat alles gelezen (en herberekend) wordt. Met status vervolgens controleren of er fouten zijn ontdekt (met -v kun je evt ook zien welke files corrupt zijn). En als er geen fouten zijn met clear de error counters (van de disks) op 0 zetten. Eventueel daarna nog eens scrubben om nogmaals te verifiëren dat er geen fouten zijn, en de counters van de schijven ook op 0 blijven staan.
Oei, das wel onhandig inderdaad. Kabels nalopen kan geen kwaad nee.
Even niets...
Ik heb vandaag 6 verse 14TB (WD-ultrastrar) schijven in mijn nieuwe servertje gestoken. Het is de bedoeling om weer een RAIDZ2 pool te maken.
In mijn vorige setup had ik eerst alligment toegepast op basis van de input van @FireDrunk's blog (+2M en -200M) voor 2TB. Nu heb ik inmiddels gelezen dat dit niet (meer) nodig is. Alleen wil ik eigenlijk wel /dev/disk/by-partlabel toepassen zodat ik gemakkelijk op basis van serienummer een schijf kan vervangen indien nodig.
Ik ben een beetje lost wat hiermee nu best practice is. Hoe pakken jullie dit tegenwoordig op?
In mijn vorige setup had ik eerst alligment toegepast op basis van de input van @FireDrunk's blog (+2M en -200M) voor 2TB. Nu heb ik inmiddels gelezen dat dit niet (meer) nodig is. Alleen wil ik eigenlijk wel /dev/disk/by-partlabel toepassen zodat ik gemakkelijk op basis van serienummer een schijf kan vervangen indien nodig.
Ik ben een beetje lost wat hiermee nu best practice is. Hoe pakken jullie dit tegenwoordig op?
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Ik gebruik nog steeds zelfgemaakte GPT labels met serienummers er in.
Even niets...
Bij de, geshuckte, WDs die ik heb zit het serienummer ook in het id, van /dev/disk/by-id. Dat vind ik prima werken.
Helder, en de uitlijning doe je dan ook nog gewoon?FireDrunk schreef op zaterdag 28 oktober 2023 @ 21:06:
Ik gebruik nog steeds zelfgemaakte GPT labels met serienummers er in.
Ja, zo had ik mijn eerste pool ook gemaakt, volgens mij stonden vroeger in de WD-Green en Red's ook gewoon de serienummers erin.RobertMe schreef op zaterdag 28 oktober 2023 @ 22:02:
Bij de, geshuckte, WDs die ik heb zit het serienummer ook in het id, van /dev/disk/by-id. Dat vind ik prima werken.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Zou ik even moeten checken, maar volgens mij heb ik wel de offset, maar niet de ruimte aan het einde. Die is niet meer nodig omdat er inmiddels een standaard is tussen fabrikanten over de grootte van disks.Beninho schreef op zondag 29 oktober 2023 @ 08:30:
[...]
Helder, en de uitlijning doe je dan ook nog gewoon?
Even niets...
@Beninho
Die serienummers staan er al:
Voorbeeld van een zfs miror.
Waarbij 21FYKZKAS het serienummer van een van de schijven is.
Met "zpool status" kun je die strings (ata-TOSHIBA_HDWD120_21FYKZKAS) ook zien.
Ook bij VMs kun je zelf een serienummer invullen of een soort van unieke string waarmee je de disk kunt identifceren op deze manier.
Die serienummers staan er al:
Voorbeeld van een zfs miror.
Waarbij 21FYKZKAS het serienummer van een van de schijven is.
Bash:
1
2
3
4
5
6
7
8
| ls /dev/disk/by-id/*T* /dev/disk/by-id/ata-TOSHIBA_HDWD120_21FYKZKAS -> ../../sda /dev/disk/by-id/ata-TOSHIBA_HDWD120_21FYKZKAS-part1 -> ../../sda1 /dev/disk/by-id/ata-TOSHIBA_HDWD120_21FYKZKAS-part9 -> ../../sda9 /dev/disk/by-id/ata-TOSHIBA_HDWD120_21FYLJNAS -> ../../sdc /dev/disk/by-id/ata-TOSHIBA_HDWD120_21FYLJNAS-part1 -> ../../sdc1 /dev/disk/by-id/ata-TOSHIBA_HDWD120_21FYLJNAS-part9 -> ../../sdc9 |
Met "zpool status" kun je die strings (ata-TOSHIBA_HDWD120_21FYKZKAS) ook zien.
Ook bij VMs kun je zelf een serienummer invullen of een soort van unieke string waarmee je de disk kunt identifceren op deze manier.
Wie du mir, so ich dir.
@eheijnen check, ik zie het, bij deze ultrastars ook in beeld bij ls /dev/disk/by-id/*T* @FireDrunk is de +2M voldoende voor het begin. Ik vind het wel overzichtelijk om die partlabels te gebruiken. Dan moet ik toch gewoon handmatig met gdisk even een partitie per disk aanmaken?
[ Voor 3% gewijzigd door Beninho op 29-10-2023 14:44 ]
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
@Beninho
Als er iets met je zfs volume aan de hand is dan heeft dat misschien iets met een partitie te maken maar niet per sé. Het serienummer is hard en daarmee is ook de schijf op zich te vinden als die vervangen moet worden. Ga je labels gebruiken zul je een aparte "administratie" moeten bijhouden....
Als er iets met je zfs volume aan de hand is dan heeft dat misschien iets met een partitie te maken maar niet per sé. Het serienummer is hard en daarmee is ook de schijf op zich te vinden als die vervangen moet worden. Ga je labels gebruiken zul je een aparte "administratie" moeten bijhouden....
Wie du mir, so ich dir.
@eheijnen Das waar. Misschien denk ik er te moelijk over.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
@Beninho
Dat is de voor de hand liggende manier.
Maar als jjij dat graag wil doen op jouw manier dan doe je dat.
Dat is de voor de hand liggende manier.
Maar als jjij dat graag wil doen op jouw manier dan doe je dat.
Wie du mir, so ich dir.
Ik heb het even opgezocht, ik heb zelfs niet eens meer manueel partities gemaakt bij mijn laatste pool.
ZFS heeft zelf alle partitionering gedaan.
Alignment is dus offset van 2048 sectoren en 8MB aan het einde overlaten.
root@nas:~# zpool status pool: abzu state: ONLINE status: Some supported and requested features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(7) for details. scan: scrub repaired 0B in 00:05:26 with 0 errors on Sun Oct 8 00:29:27 2023 config: NAME STATE READ WRITE CKSUM abzu ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 nvme-Samsung_SSD_980_1TB_S649NF1R815995R-part1 ONLINE 0 0 0 nvme-Samsung_SSD_980_1TB_S649NF1R816771L-part1 ONLINE 0 0 0 errors: No known data errors pool: shenron state: ONLINE status: Some supported and requested features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(7) for details. scan: scrub repaired 0B in 09:59:40 with 0 errors on Sun Oct 8 10:23:52 2023 config: NAME STATE READ WRITE CKSUM shenron ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 ata-WDC_WD140EDFZ-11A0VA0_9LGD8UAG ONLINE 0 0 0 ata-WDC_WD140EDFZ-11A0VA0_9LGPSXZH ONLINE 0 0 0 ata-WDC_WD140EDFZ-11A0VA0_9MGJ8EXU ONLINE 0 0 0 ata-WDC_WD140EDGZ-11B1PA0_9MGGA4HK ONLINE 0 0 0 ata-WDC_WD140EDGZ-11B1PA0_Y5HYH1AC ONLINE 0 0 0 ata-WDC_WD140EDGZ-11B1PA0_Y5HYP8XC ONLINE 0 0 0 cache nvme-Samsung_SSD_980_1TB_S649NF1R815995R-part2 ONLINE 0 0 0 nvme-Samsung_SSD_980_1TB_S649NF1R816771L-part2 ONLINE 0 0 0 errors: No known data errors root@nas:~# gdisk /dev/disk/by-id/ata-WDC_WD140EDGZ-11B1PA0_Y5HYP8XC GPT fdisk (gdisk) version 1.0.9 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): p Disk /dev/disk/by-id/ata-WDC_WD140EDGZ-11B1PA0_Y5HYP8XC: 27344764928 sectors, 12.7 TiB Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): 20DF6AC8-ACCE-CF4D-A246-6101CFB8A78E Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 27344764894 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 27344746495 12.7 TiB BF01 zfs-dd9167317143a014 9 27344746496 27344762879 8.0 MiB BF07
ZFS heeft zelf alle partitionering gedaan.
Alignment is dus offset van 2048 sectoren en 8MB aan het einde overlaten.
Even niets...
@FireDrunk check. Easy does it tegenwoordig. Ik heb mijn zpool inmiddels ook draaien. Thanks.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Ik probeer data over te sturen van mijn oude machine naar mijn nieuwe machine. Gewoon lokaal. Misschien zie ik iets geks over het hoofd hoor, maar het lukt me niet.
Vervolgens heb ik dit geprobeerd
Dan volgt een foutmelding.sudo zfs send pool/data@snapshot_name | ssh username@IP 'sudo zfs receive -F pool/data'
Wanneer ik -S invoeg, dan krijg ik wel een interactief invoerveld, maar dat reageert dus niet op mijn input en verteld me na 5 sec dat ik drie keer verkeerd een password heb ingevoerd.Enter passphrase for key '/home/beninho/.ssh/id_edx'
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a password is required
Vervolgens heb ik dit geprobeerd
code:
te maken met:1
| sudo visudo -f /etc/sudoers.d/username |
ik heb ook nog dit geprobeerd: sudo visudo met dezeflde input. Ik mis iets triviaals waarschijnlijk, maar wat?mijn_username ALL=(othermachne_username) NOPASSWD: /usr/sbin/zfs receive -F pool/data
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Je moet de sudo passwordless permissies op de ontvangende kant zetten.
Als je user lid is van de groep wheel of admins (in ubuntu is dat de default dacht ik).
Kan je prima:
gebruiken.
Let op dat je in het commando het volle pad moet gebruiken, anders werkt de sudo regel niet.
Je moet dus doen:
Als je user lid is van de groep wheel of admins (in ubuntu is dat de default dacht ik).
Kan je prima:
code:
1
| %wheel ALL = (ALL) NOPASSWD: /usr/sbin/zfs receive -F pool/data |
gebruiken.
Let op dat je in het commando het volle pad moet gebruiken, anders werkt de sudo regel niet.
Je moet dus doen:
sudo zfs send pool/data@snapshot_name | ssh username@IP 'sudo /usr/sbin/zfs receive -F pool/data'
[ Voor 38% gewijzigd door FireDrunk op 01-11-2023 21:06 ]
Even niets...
code:
1
2
3
| # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL %beninho ALL = (ALL) NOPASSWD: ALL |
of moet ik user beninho toevoegen aan group admin?
Ik had inderdaad ook niet het volledige pad in het commondo staan. Maar ik houd een het zelfe resultaat.
Cannot unmount, no persmission.
[ Voor 31% gewijzigd door Beninho op 01-11-2023 21:19 ]
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Het % teken is de groep, als je een groep beninho hebt is dat prima.
Die melding zegt mij niet zoveel, ik kan niet zo goed inschatten of die lokaal of remote gebeurt.
Die melding zegt mij niet zoveel, ik kan niet zo goed inschatten of die lokaal of remote gebeurt.
Even niets...
Ja, mijn user is lid van de groep %admin
Dus zo staat het nu:
Wanneer ik nu op de andere machine invoer:
Krijg ik dit terug:
--edit--
Oke, die typo stond op de verzendende machine. Na die gecorrigeeerd te hebben, blijft dezelfde melding komen.
--edit--
Op de ontvangende machine heb staat de verse dataset ook in pool/data | is dat dan het issue?
Dus zo staat het nu:
code:
1
| %admin ALL=(ALL) NOPASSWD: /usr/sbin/zfs receive -F pool/data |
Wanneer ik nu op de andere machine invoer:
code:
1
| sudo zfs send pool/data@snapshot_name | ssh beninho@IP /usr/sbin/zfs receive -F pool/data |
Krijg ik dit terug:
terwijl ik dit typ, zie ik dat ik een typo lijk te hebben gemaakt. Maar in het bestand, /etc/sudoers/beninho of met visudo vind ik die typfout niet../etc/sudoers:48:20: syntax error
%beninho ALl=(All) All
^~~
Enter passphrase for key '/home/beninho/.ssh/id_ed25519':
cannot unmount '/pool/data': permission denied
--edit--
Oke, die typo stond op de verzendende machine. Na die gecorrigeeerd te hebben, blijft dezelfde melding komen.
code:
1
| cannot unmount '/pool/data': permission denied |
--edit--
Op de ontvangende machine heb staat de verse dataset ook in pool/data | is dat dan het issue?
[ Voor 27% gewijzigd door Beninho op 01-11-2023 21:52 ]
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Je moet wel `sudo` voor je commando zetten bij de ontvangende kant.
Even niets...
Ja. Maar dan krijg ik dus weer dit:FireDrunk schreef op woensdag 1 november 2023 @ 21:53:
Je moet wel `sudo` voor je commando zetten bij de ontvangende kant.
code:
1
| sudo zfs send pool/data@snapshot_name | ssh beninho@IP sudo -S /usr/sbin/zfs receive -F pool/data |
Dan krijg ik drie keer 2 sec om het password in te voeren, maar die invoer komt niet over. En dan heb ik mijn drie kansen weer gehad.
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Ligt het aan mij of is het sowieso wel erg stil op het ZFS front. Ik lees hier in ieder geval weinig over nieuwe features.
Sinds de 2 dagen regel reageer ik hier niet meer
2.2 is intussen een tijdje uit, met o.a. ondersteuning voor "corrective receive". Waarbij je een oud snapshot opnieuw kunt ontvangen, als er bv bitrot zou zijn opgetreden en je de boel wilt corrigeren. Anderzijds moet je je afvragen of je dat moet willen, want die bitrot komt natuurlijk uit een defecte/"defecte" disk, wil je die dan nog blijven gebruiken?CurlyMo schreef op woensdag 1 november 2023 @ 22:01:
Ligt het aan mij of is het sowieso wel erg stil op het ZFS front. Ik lees hier in ieder geval weinig over nieuwe features.
Die nieuwe mogelijkheid kende ik inderdaad.RobertMe schreef op woensdag 1 november 2023 @ 22:09:
[...]
2.2 is intussen een tijdje uit, met o.a. ondersteuning voor "corrective receive". Waarbij je een oud snapshot opnieuw kunt ontvangen, als er bv bitrot zou zijn opgetreden en je de boel wilt corrigeren. Anderzijds moet je je afvragen of je dat moet willen, want die bitrot komt natuurlijk uit een defecte/"defecte" disk, wil je die dan nog blijven gebruiken?
Sinds de 2 dagen regel reageer ik hier niet meer
Ik zit te denken of het uberhaupt niet verplicht was om dit passwordless te doen.Beninho schreef op woensdag 1 november 2023 @ 21:58:
[...]
Ja. Maar dan krijg ik dus weer dit:
code:
1 sudo zfs send pool/data@snapshot_name | ssh beninho@IP sudo -S /usr/sbin/zfs receive -F pool/data
Dan krijg ik drie keer 2 sec om het password in te voeren, maar die invoer komt niet over. En dan heb ik mijn drie kansen weer gehad.
Ik twijfel of een pipe icm een interactive sudo terminal over een ssh sessie goed ging, maar dat kan mijn donderdagmorgen-zonder-koffie brein zijn.
Even niets...
Juist. Je had die koffie niet nodig voor de logische gedachtenlijn ;-) ..Ik heb nu gewoon ingesteld dat ik passwordless via ssh heen en weer kan zenden. Daar ontbrak nog een stukje linux kennis bij mij. Dat kan ik nu, en morgen probeer ik die dataset nog een keer over te zetten.FireDrunk schreef op donderdag 2 november 2023 @ 08:00:
[...]
Ik zit te denken of het uberhaupt niet verplicht was om dit passwordless te doen.
Ik twijfel of een pipe icm een interactive sudo terminal over een ssh sessie goed ging, maar dat kan mijn donderdagmorgen-zonder-koffie brein zijn.
Ik heb op de verzendende machine een rsa.pub key gemaakt voor root. Een root password ingesteld op de ontvangende en verzendende machine. Vervolgens heb ik de pub key van de verzendende machine naar de root user van ontvangende machine gekopieerd in --> .ssh/authorized_keys en nu kan ik zonder password inloggen en bestanden versturen.
[ Voor 9% gewijzigd door Beninho op 15-11-2023 09:06 ]
panasonic 5KW L-serie | 300L SWW | 3700+3200 Wp oost-west
Voor het synchroniseren van ZFS snapshots kan ik syncoid uit Jim Salters sanoid project bijzonder aanraden.
Sanoid is een tool voor het automatisch maken van snapshots, terwijl syncoid gemaakt is om de snapshots op simpele wijze te 'zfs send/recv'-en, bijvoorbeeld naar een ander systeem. Dat kan naar wens in een pull of push configuratie. En, na het geven van de juiste zfs permissies, zelfs zonder root/sudo.
Zodra je je SSH keys in orde hebt voor een login zonder wachtwoord, zorgt syncoid ervoor dat alleen de benodigde snapshots worden overgestuurd. Zo hoef je zelf niet bij te houden wat de start en stop snapshots zijn.
Sanoid is een tool voor het automatisch maken van snapshots, terwijl syncoid gemaakt is om de snapshots op simpele wijze te 'zfs send/recv'-en, bijvoorbeeld naar een ander systeem. Dat kan naar wens in een pull of push configuratie. En, na het geven van de juiste zfs permissies, zelfs zonder root/sudo.
Zodra je je SSH keys in orde hebt voor een login zonder wachtwoord, zorgt syncoid ervoor dat alleen de benodigde snapshots worden overgestuurd. Zo hoef je zelf niet bij te houden wat de start en stop snapshots zijn.
Uit de ZFS mailing list:
I'm happy to announce that the long-awaited RAIDZ Expansion feature has officially landed in the OpenZFS master branch. This feature will need some soak time, but will be available in the OpenZFS 2.3 release, which is probably about a year out.
Even niets...
TLDR: hieronder een veel te lange post die waarschijnlijk voor niemand interessant is en eigenlijk maar zijdelings iets met ZFS te maken heeft - maar voor het geval er hier toch iemand is die er wat aan heeft (en omdat ik stiekenm wel een beetje trots ben dat ik het werkend gekregen heb) doe ik het toch hier plaatsen. Al zou het beter in een TweakBlog passen...
Naar aanleiding van @RobertMe in:
RobertMe in "Het grote ZFS topic"
...en
RobertMe in "Het grote ZFS topic"
...wilde ik iets vergelijkbaars doen. Ik heb hier een Debian 'stable' Linux server met ZFS & native encryption er op. Enkel heb ik in tegenstelling tot @RobertMe de hele disk (minus de /boot spullen) encrypted, dus zijn oplossing kon ik niet gebruiken.
Ik had destijds al de initrd/initramfs uitgebreid met een dropbear oplossing - iets wat je overal op het internet wel kan terugvinden - zodat ik na een reboot via SSH kon inloggen om het systeem te unlocken. Werkt leuk, maar vereist interactie. Zo had ik onlangs 's-nachts een stroomstoring in de wijk; het systeem gaat automatisch uit en automatisch aan wanneer de spanning weer terugkomt - en staat vervolgens de rest van de nacht te wachten tot ik de boel unlock. Niet gewenst.
Dus, wat was mijn doel: unlock-mogelijkheid via keyboard (standaard), via ssh/dropbear (niet standaard maar ook niet ongebruikelijk) en met een externe key die automagisch via ssh opgehaald wordt. En dat alles in een initramfs ingebouwd.
De externe key heb ik op een Raspberry Pi Zero 2 W en een bijpassende PoE/ETH/USB hat. Verbruikt 2W en hoeft verder niets te doen behalve een wachtwoord te antwoorden. Enkel een ethernet-kabeltje (power-over-ethernet) er aan, verder helemaal niets.
Config van de pi:
Was leuk om uit te zoeken en nog leuker om het werkend te krijgen. Debuggen is wel een uitdaging, vooral veel met echo en sleep statements gewerkt. Kan ook zinnig zijn om zo'n initrd file uit te pakken en te inspecteren (unmkinitramfs).
Er zal vast wel het nodige aan te merken zijn op wat ik gemaakt heb, maar wellicht heeft iemand er wat aan.
Naar aanleiding van @RobertMe in:
RobertMe in "Het grote ZFS topic"
...en
RobertMe in "Het grote ZFS topic"
...wilde ik iets vergelijkbaars doen. Ik heb hier een Debian 'stable' Linux server met ZFS & native encryption er op. Enkel heb ik in tegenstelling tot @RobertMe de hele disk (minus de /boot spullen) encrypted, dus zijn oplossing kon ik niet gebruiken.
Ik had destijds al de initrd/initramfs uitgebreid met een dropbear oplossing - iets wat je overal op het internet wel kan terugvinden - zodat ik na een reboot via SSH kon inloggen om het systeem te unlocken. Werkt leuk, maar vereist interactie. Zo had ik onlangs 's-nachts een stroomstoring in de wijk; het systeem gaat automatisch uit en automatisch aan wanneer de spanning weer terugkomt - en staat vervolgens de rest van de nacht te wachten tot ik de boel unlock. Niet gewenst.
Dus, wat was mijn doel: unlock-mogelijkheid via keyboard (standaard), via ssh/dropbear (niet standaard maar ook niet ongebruikelijk) en met een externe key die automagisch via ssh opgehaald wordt. En dat alles in een initramfs ingebouwd.
De externe key heb ik op een Raspberry Pi Zero 2 W en een bijpassende PoE/ETH/USB hat. Verbruikt 2W en hoeft verder niets te doen behalve een wachtwoord te antwoorden. Enkel een ethernet-kabeltje (power-over-ethernet) er aan, verder helemaal niets.
Config van de pi:
- standaard raspberry pi OS er op, want met een Debian install kreeg ik de ethernet poort niet goed werkend.
- Behalve een eigen login-user heb ik ook een user "key_owner" aangemaakt. In de home-dir van die user heb ik een file "unlock_key.txt" met daarin het ZFS unlock password.
- Vervolgens een SSH public/private keypair aangemaakt (ssh-keygen) en de public key gebruikt om een .ssh/authorized_keys te maken:
code:1
command="cat unlock_key.txt" ssh-rsa AAAAB4NzaC1Yc2EA...bdydCC9TOQE0= key_owner@rpi3-20230612
- Let op het eerste stukje van die regel: het command zorgt er voor dat iemand die met ssh als key_owner inlogt (en daarvoor de private key gebruikt) dus geen command prompt krijgt, maar direct het unlock-password ontvangt.
- Vervolgens overlay filesystem aangezet zodat er geen writes naar de SD-kaart meer plaats vinden. Handig, want als er dan een stroomstoring optreedt vind er geen corruptie plaats.
- file toegevoegd: /etc/initramfs-tools/key_owner.id_rsa. Niet heel spannend, de private key behorende bij de key_owner user van de Raspberry Pi. File protections op 400.
- file toegevoegd: /etc/initramfs-tools/conf.d/fetch_remote.conf. Inhoud:
code:1 2 3
SERVER=192.168.1.6 USER=key_owner KEY=/etc/key_owner.id_rsa
...spreekt denk ik voor zich. IP adres van de Raspberry, de ssh username om mee in te loggen en de locatie van de private key. Let op: dat is de locatie binnen de initramfs, dus NIET de locatie op het systeem zelf (die staat al bij de vorige bullet). - file toegevoegd: /etc/initramfs-tools/hooks/fetch_remote_key. Deze file (of eigenlijk al die hook scripts) wordt uitgevoerd bij het aanmaken/updaten van initramfs, dus dit beinvloed wat er in de initramfs komt. Inhoud:
Het grootste deel is de standaard template; het meest interessante stuk is het kopieeren van spullen: De eerder genoemde private key (en voor de zekerheid de protections weer op 400), een 'fetch_remote_loop.sh' script die verderop nodig is en wat executables/configs die niet standaard in de initramfs zitten.code:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case "$1" in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions copy_file private_key /etc/initramfs-tools/key_owner.id_rsa /etc/key_owner.id_rsa chown 400 $DESTDIR/etc/key_owner.id_rsa copy_exec /etc/initramfs-tools/scripts/fetch_remote_loop.sh /bin copy_exec /bin/nohup /bin copy_exec /bin/ssh /bin copy_file ssh_config /etc/ssh/ssh_config /etc/ssh/ssh_config
- file toegevoegd: /etc/initramfs-tools/scripts/init-premount/fetch_remote.sh. Dit script wordt uitgevoerd tijdens het opstarten, voordat het filesysteem unlocked nodig is. Ongeveer gelijk met dropbear. Inhoud:
Ook hier, het eerste stuk is wat standaard template. Daarna bovengenoemde config uitvoeren zodat wat variabelen gedefinieerd zijn en middels een 'nohup' het feitelijke key-ophaal-script starten. De PID van dat script wordt vervolgens opgeslagen in /run/fetch_remote.pid. Ik twijfel nu even of de nohup wel echt nodig is - maar kwaad zal het niet kunnen. Wellicht dat dit script ook in nfs-premount zou kunnen, volgens de documentatie wordt 'ie dan pas uitgevoerd wanneer het netwerk klaar is - maar maakt niet echt uit doordat het systeem hier blijft proberen de key op te halen tot het gelukt is.code:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/bin/sh PREREQ="udev" prereqs() { echo "$PREREQ" } case "$1" in prereqs) prereqs exit 0 ;; esac if [ -e /conf/conf.d/fetch_remote.conf ]; then . /conf/conf.d/fetch_remote.conf fi . /scripts/functions echo "Attempting to fetch remote key from ${USER}/${SERVER}" nohup /bin/fetch_remote_loop.sh & echo $! > /run/fetch_remote.pid echo "PID = $(cat /run/fetch_remote.pid)"
- file toegevoegd: /etc/initramfs-tools/scripts/fetch_remote_loop.sh. Was wellicht een meer elegante plek voor te bedenken. Inhoud:
Ook hier weer wat copy/paste van de dropbear scripts, dus niet alles snap ik helemaal, maar goed: om de vijf secondes via ssh proberen de sleutel op te halen en als dat lukt het filesystem unlocken. Meeste werk zat nog in het ssh commando zelf: de 'QUIET' optie zorgt er voor dat je echt enkel het wachtwoord ontvangt en geen meldingen over afgesloten verbindingen enzo. En ook: StrictHostKeyChecking=no, want anders wil het systeem aan je vragen of de onbekende raspberry pi wel OK is om mee te verbinden (en kan dat niet, want geen tty of zo). Zie dit topic voor de achtergrond.code:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#!/bin/sh if [ -e /conf/conf.d/fetch_remote.conf ]; then . /conf/conf.d/fetch_remote.conf fi . /scripts/functions while [ ! -e /run/zfs_unlock_complete ]; do echo "Attempting key fetch" unlock_key=$(/bin/ssh ${USER}@${SERVER} -i ${KEY} -o LogLevel=QUIET -o StrictHostKeyChecking=no) if [[ $? -eq 0 ]]; then echo "key=${unlock_key}" zfs_fs_name=$(cat /run/zfs_fs_name) zfs_console_askpwd_cmd=$(cat /run/zfs_console_askpwd_cmd) echo ${unlock_key} | /sbin/zfs load-key "$zfs_fs_name" if [ "$(/sbin/zfs get -H -ovalue keystatus "$zfs_fs_name" 2> /dev/null)" = "available" ]; then zfs_console_askpwd_pid=$(ps | awk '!'"/awk/ && /$zfs_console_askpwd_cmd/ { print \$1; exit }") if [ -n "$zfs_console_askpwd_pid" ]; then kill "$zfs_console_askpwd_pid" fi # Wait for another filesystem to unlock. while [ "$(cat /run/zfs_fs_name)" = "$zfs_fs_name" ] && [ ! -e /run/zfs_unlock_complete ]; do sleep 1 done else echo "Fetched wrong password. Try again." fi else sleep 5 fi done
- file toegevoegd: /etc/initramfs-tools/scripts/init-bottom/fetch_remote.sh. Deze wordt uitgevoerd als het filesystem unlocked is en zorgt er voor dat het fetch_remote_loop.sh process hierboven wordt afgeschoten en niet eeuwig door blijft lopen. Inhoud:
Ook hier weer heel veel copy/paste van het dropbear script. Waarbij ik niet echt een goed idee heb hoe dit alles werkt - behalve de PID ophalen van het loop-script hierboven en daar een kill op doen.code:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
[/li]#!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case "$1" in prereqs) prereqs exit 0 ;; esac . /scripts/functions EXE="$(readlink -f /usr/bin/sh)" && [ -f "$EXE" ] || exit 1 PIDFILE="/run/fetch_remote.pid" IFDOWN="*" FETCH_REMOTE_SHUTDOWN_TIMEOUT=60 if [ -e /conf/conf.d/fetch_remote.conf ]; then . /conf/conf.d/fetch_remote.conf fi wait_for_fetch_remote() { local pid exe timer="$FETCH_REMOTE_SHUTDOWN_TIMEOUT" pid="$(cat "$PIDFILE" 2>/dev/null)" || return 1 # when configure_networking() is run asynchronously fetch_remote might # not have started yet; ipconfig doesn't react to SIGTERM so we wait # for the network stack to be configured (and fetch_remote to start) # rather than terminating the shell and its children while [ $timer -gt 0 ] && exe="$(readlink -f "/proc/$pid/exe" 2>/dev/null)"; do if [ "$exe" = "$EXE" ]; then echo "$pid" return 0 fi sleep 1 timer=$(( timer - 1 )) done return 1 } if PID="$(wait_for_fetch_remote)"; then log_begin_msg "Stopping fetch_remote" # Kill all process groups the leader of which is a child of the # fetch_remote process, i.e., SSH sessions and their sub processes # (busybox's kill doesn't accept multiple -PGID so we use a while loop) sed -nr "s/^([0-9]+) \\(.*\\) \\S $PID \\1 .*/\\1/p" \ /proc/[0-9]*/stat 2>/dev/null | \ while read pgid; do kill -TERM -"$pgid"; done # Kill remaining children (there shouldn't be any) sed -nr "s/^([0-9]+) \\(.*\\) \\S $PID [0-9]+ .*/\\1/p" \ /proc/[0-9]*/stat 2>/dev/null | \ while read pid; do kill -TERM "$pid"; done kill -TERM "$PID" log_end_msg fi if [ "$BOOT" != nfs ] && [ "$IFDOWN" != none ]; then for IFACE in /sys/class/net/$IFDOWN; do [ -e "$IFACE" ] || continue IFACE="${IFACE#/sys/class/net/}" log_begin_msg "Bringing down $IFACE" ip link set dev "$IFACE" down ip address flush dev "$IFACE" ip route flush dev "$IFACE" log_end_msg done fi
- En dat is het wel zo'n beetje. Vervolgens 'update-initramfs -u' en dan is het klaar.
Er zal vast wel het nodige aan te merken zijn op wat ik gemaakt heb, maar wellicht heeft iemand er wat aan.
Knap staaltje werk!vanaalten schreef op zaterdag 18 november 2023 @ 11:51:
TLDR: hieronder een veel te lange post die waarschijnlijk voor niemand interessant is en eigenlijk maar zijdelings iets met ZFS te maken heeft - maar voor het geval er hier toch iemand is die er wat aan heeft (en omdat ik stiekenm wel een beetje trots ben dat ik het werkend gekregen heb) doe ik het toch hier plaatsen. Al zou het beter in een TweakBlog passen...
Naar aanleiding van @RobertMe in:
RobertMe in "Het grote ZFS topic"
...en
RobertMe in "Het grote ZFS topic"
...wilde ik iets vergelijkbaars doen. Ik heb hier een Debian 'stable' Linux server met ZFS & native encryption er op. Enkel heb ik in tegenstelling tot @RobertMe de hele disk (minus de /boot spullen) encrypted, dus zijn oplossing kon ik niet gebruiken.
Ik had destijds al de initrd/initramfs uitgebreid met een dropbear oplossing - iets wat je overal op het internet wel kan terugvinden - zodat ik na een reboot via SSH kon inloggen om het systeem te unlocken. Werkt leuk, maar vereist interactie. Zo had ik onlangs 's-nachts een stroomstoring in de wijk; het systeem gaat automatisch uit en automatisch aan wanneer de spanning weer terugkomt - en staat vervolgens de rest van de nacht te wachten tot ik de boel unlock. Niet gewenst.
Dus, wat was mijn doel: unlock-mogelijkheid via keyboard (standaard), via ssh/dropbear (niet standaard maar ook niet ongebruikelijk) en met een externe key die automagisch via ssh opgehaald wordt. En dat alles in een initramfs ingebouwd.
De externe key heb ik op een Raspberry Pi Zero 2 W en een bijpassende PoE/ETH/USB hat. Verbruikt 2W en hoeft verder niets te doen behalve een wachtwoord te antwoorden. Enkel een ethernet-kabeltje (power-over-ethernet) er aan, verder helemaal niets.
Config van de pi:Dan het lastigere stuk: de initramfs aanpassing. Dat heb ik grotendeels gebaseerd op wat dropbear ook doet - ik heb dus flink wat copy/paste toegepast. Je kan veel leren en afkijken van wat er in /usr/share/initramfs-tools staat - en vervolgens je eigen aanpassingen doen in /etc/initramfs-tools. Ook de man-page bekijken helpt wel wat. Wat ik dus heb gedaan:
- standaard raspberry pi OS er op, want met een Debian install kreeg ik de ethernet poort niet goed werkend.
- Behalve een eigen login-user heb ik ook een user "key_owner" aangemaakt. In de home-dir van die user heb ik een file "unlock_key.txt" met daarin het ZFS unlock password.
- Vervolgens een SSH public/private keypair aangemaakt (ssh-keygen) en de public key gebruikt om een .ssh/authorized_keys te maken:
code:
1 command="cat unlock_key.txt" ssh-rsa AAAAB4NzaC1Yc2EA...bdydCC9TOQE0= key_owner@rpi3-20230612- Let op het eerste stukje van die regel: het command zorgt er voor dat iemand die met ssh als key_owner inlogt (en daarvoor de private key gebruikt) dus geen command prompt krijgt, maar direct het unlock-password ontvangt.
- Vervolgens overlay filesystem aangezet zodat er geen writes naar de SD-kaart meer plaats vinden. Handig, want als er dan een stroomstoring optreedt vind er geen corruptie plaats.
En: dat werkt. En ook via dropbear/ssh inloggen werkt nog.
- file toegevoegd: /etc/initramfs-tools/key_owner.id_rsa. Niet heel spannend, de private key behorende bij de key_owner user van de Raspberry Pi. File protections op 400.
- file toegevoegd: /etc/initramfs-tools/conf.d/fetch_remote.conf. Inhoud:
code:
1 2 3 SERVER=192.168.1.6 USER=key_owner KEY=/etc/key_owner.id_rsa
...spreekt denk ik voor zich. IP adres van de Raspberry, de ssh username om mee in te loggen en de locatie van de private key. Let op: dat is de locatie binnen de initramfs, dus NIET de locatie op het systeem zelf (die staat al bij de vorige bullet).- file toegevoegd: /etc/initramfs-tools/hooks/fetch_remote_key. Deze file (of eigenlijk al die hook scripts) wordt uitgevoerd bij het aanmaken/updaten van initramfs, dus dit beinvloed wat er in de initramfs komt. Inhoud:
[...]
Het grootste deel is de standaard template; het meest interessante stuk is het kopieeren van spullen: De eerder genoemde private key (en voor de zekerheid de protections weer op 400), een 'fetch_remote_loop.sh' script die verderop nodig is en wat executables/configs die niet standaard in de initramfs zitten.- file toegevoegd: /etc/initramfs-tools/scripts/init-premount/fetch_remote.sh. Dit script wordt uitgevoerd tijdens het opstarten, voordat het filesysteem unlocked nodig is. Ongeveer gelijk met dropbear. Inhoud:
[...]
Ook hier, het eerste stuk is wat standaard template. Daarna bovengenoemde config uitvoeren zodat wat variabelen gedefinieerd zijn en middels een 'nohup' het feitelijke key-ophaal-script starten. De PID van dat script wordt vervolgens opgeslagen in /run/fetch_remote.pid. Ik twijfel nu even of de nohup wel echt nodig is - maar kwaad zal het niet kunnen. Wellicht dat dit script ook in nfs-premount zou kunnen, volgens de documentatie wordt 'ie dan pas uitgevoerd wanneer het netwerk klaar is - maar maakt niet echt uit doordat het systeem hier blijft proberen de key op te halen tot het gelukt is.- file toegevoegd: /etc/initramfs-tools/scripts/fetch_remote_loop.sh. Was wellicht een meer elegante plek voor te bedenken. Inhoud:
[...]
Ook hier weer wat copy/paste van de dropbear scripts, dus niet alles snap ik helemaal, maar goed: om de vijf secondes via ssh proberen de sleutel op te halen en als dat lukt het filesystem unlocken. Meeste werk zat nog in het ssh commando zelf: de 'QUIET' optie zorgt er voor dat je echt enkel het wachtwoord ontvangt en geen meldingen over afgesloten verbindingen enzo. En ook: StrictHostKeyChecking=no, want anders wil het systeem aan je vragen of de onbekende raspberry pi wel OK is om mee te verbinden (en kan dat niet, want geen tty of zo). Zie dit topic voor de achtergrond.- file toegevoegd: /etc/initramfs-tools/scripts/init-bottom/fetch_remote.sh. Deze wordt uitgevoerd als het filesystem unlocked is en zorgt er voor dat het fetch_remote_loop.sh process hierboven wordt afgeschoten en niet eeuwig door blijft lopen. Inhoud:
[...]
Ook hier weer heel veel copy/paste van het dropbear script. Waarbij ik niet echt een goed idee heb hoe dit alles werkt - behalve de PID ophalen van het loop-script hierboven en daar een kill op doen.- En dat is het wel zo'n beetje. Vervolgens 'update-initramfs -u' en dan is het klaar.
Was leuk om uit te zoeken en nog leuker om het werkend te krijgen. Debuggen is wel een uitdaging, vooral veel met echo en sleep statements gewerkt. Kan ook zinnig zijn om zo'n initrd file uit te pakken en te inspecteren (unmkinitramfs).
Er zal vast wel het nodige aan te merken zijn op wat ik gemaakt heb, maar wellicht heeft iemand er wat aan.
Heb je ook nog overwogen om de ZFS key encrypted op de Pi te zetten, met het unlock password op de server? Persoonlijk heb ik daarvoor gekozen omdat in mijn geval de "ZFS key host" (router) ook weer gebackupd wordt en het systeem altijd aan staat en kinda leesbaar is. Als for whatever reason de key files uitlekken heeft de "ontvanger" er nog steeds niks aan doordat die de encrypted key file niet kan lezen.
En het password voor de file te decrypten staat dan op de /boot partitie die (uiteraard) niet gebackupd wordt.
Bij diefstal van de server ontbreekt dus toegang tot de encrypted key (file) die op de router staat. En bij diefstal van de backup ontbreekt het password om de encrypted file te openen.
Dank!
Ik heb er wel kort over nagedacht (en sluit niet uit zo iets nog te gaan doen), maar kon voor mijzelf nog geen goede reden verzinnen waarom het nodig zou zijn.Heb je ook nog overwogen om de ZFS key encrypted op de Pi te zetten, met het unlock password op de server? Persoonlijk heb ik daarvoor gekozen omdat in mijn geval de "ZFS key host" (router) ook weer gebackupd wordt en het systeem altijd aan staat en kinda leesbaar is. Als for whatever reason de key files uitlekken heeft de "ontvanger" er nog steeds niks aan doordat die de encrypted key file niet kan lezen.
En het password voor de file te decrypten staat dan op de /boot partitie die (uiteraard) niet gebackupd wordt.
Bij diefstal van de server ontbreekt dus toegang tot de encrypted key (file) die op de router staat. En bij diefstal van de backup ontbreekt het password om de encrypted file te openen.
Het unlock password staat plain-text op de Pi en dat voelde wel wat ongemakkelijk - maar als bij diefstal de Pi gestolen wordt heb je er niets aan zonder de server (en andersom), je hebt ze beide nodig. De server wordt gebackupped, maar enkel wat user-data gaat (encrypted) naar een externe backup. Het systeem zelf wordt 100% gebackupped maar enkel naar een lokale machine, dus de toegangsinformatie om bij de Pi te komen is enkel lokaal aanwezig.
Dus, wat is dan de mogelijkheid voor een inbreker om aan het unlock-password te komen: de Pi stelen, of op een of andere manier inbreken op m'n netwerk (en dan root-toegang op de Pi te krijgen). Allemaal behoorlijk onwaarschijnlijke scenario's, dus zag ik geen reden om het password encrypted op de Pi te zetten.
Maar goed, het is denk ik niet ingewikkeld om erbij te doen. De basis ligt er en werkt.
Ik heb een probleem met mijn ZFS setup. Mijn pool reageerde traag, ik met smartctl gekeken welke schijf issues gaf. Die schijf heb ik vervangen door een nieuwe en vervolgens een replace uitgevoerd. Tijdens het resilver proces stopte de andere schijf uit de mirror er ook mee (too many errors). Ik heb de nieuwe schijf eruit gehaald en de oude terug gestoken. Vervolgens het replace proces gestopt. Wat kan ik nu het beste doen om mirror-2 weer in een fatsoenlijke staat te krigen ? Mss schijf bijsteken en dan?
Ik dacht mss een scrub maar dan krijg ik een response "resilvering proces busy" ..
edit, het resilvering proces is gestopt. Heb vervolgens een zpool clear tank1 gedaan gevolgt door een scrub:
Nogmaals, wat kan ik het beste doen derde schijf bijprikken bij mirror-2, vervolgens resilveren om daarna ata-ST5000LM000-2AN170_WCJ3HBTV te removen en daarna ata-ST5000LM000-2AN170_WCJ01M2P te replacen?
Ik dacht mss een scrub maar dan krijg ik een response "resilvering proces busy" ..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| root@pve:~# zpool status tank1 pool: tank1 state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Fri Nov 24 15:37:51 2023 1.21T / 9.53T scanned at 523M/s, 11.5G / 8.77T issued at 4.84M/s 12K resilvered, 0.13% done, no estimated completion time config: NAME STATE READ WRITE CKSUM tank1 DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 ata-WDC_WD50NPZZ-00A9JT0_WD-WX52D701RADN ONLINE 0 0 0 ata-ST5000LM000-2U8170_WCJ4SL4E ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 ata-ST2000LM003_HN-M201RAD_S34RJ9FF717085 ONLINE 0 0 0 ata-ST2000LM003_HN-M201RAD_S32WJ9FF462626 ONLINE 0 0 0 mirror-2 DEGRADED 0 0 0 ata-ST5000LM000-2AN170_WCJ3HBTV DEGRADED 0 0 475 too many errors ata-ST5000LM000-2AN170_WCJ01M2P ONLINE 0 0 20 (awaiting resilver) logs pve/slog ONLINE 0 0 0 errors: 1014 data errors, use '-v' for a list |
edit, het resilvering proces is gestopt. Heb vervolgens een zpool clear tank1 gedaan gevolgt door een scrub:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| root@pve:~# zpool status tank1 pool: tank1 state: ONLINE status: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected. action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or replace the device with 'zpool replace'. see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-9P scan: scrub in progress since Fri Nov 24 17:18:06 2023 1.06T / 9.53T scanned at 4.77G/s, 4.34M / 9.53T issued at 19.6K/s 0B repaired, 0.00% done, no estimated completion time config: NAME STATE READ WRITE CKSUM tank1 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-WDC_WD50NPZZ-00A9JT0_WD-WX52D701RADN ONLINE 0 0 0 ata-ST5000LM000-2U8170_WCJ4SL4E ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 ata-ST2000LM003_HN-M201RAD_S34RJ9FF717085 ONLINE 0 0 0 ata-ST2000LM003_HN-M201RAD_S32WJ9FF462626 ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 ata-ST5000LM000-2AN170_WCJ3HBTV ONLINE 0 0 1 ata-ST5000LM000-2AN170_WCJ01M2P ONLINE 0 0 0 logs pve/slog ONLINE 0 0 0 errors: No known data errors |
Nogmaals, wat kan ik het beste doen derde schijf bijprikken bij mirror-2, vervolgens resilveren om daarna ata-ST5000LM000-2AN170_WCJ3HBTV te removen en daarna ata-ST5000LM000-2AN170_WCJ01M2P te replacen?
[ Voor 33% gewijzigd door WeaZuL op 24-11-2023 17:25 ]
NSLU2, SheevaPlug, Pogoplug, Espressobin and Odroid H2 addict
Ik heb een Freenas installatie waar ik een aantal pools op heb. Onlangs is een pool degraded geraakt (mirror, twee schijven van 4TB). Ik heb beslist om de kapotte schijf niet te vervangen maar een nieuwe pool aan te maken in zfs raid met 3 schijven.
De nieuwe pool is in gebruik en de data is gekopieerd maar het lukt me niet om de degraded pool te exporten; ik krijg telkens de melding 'device is busy'. Ook het unmounten van de resterende schijf lukt niet en zelfs een zpool destroy lukt niet (ook niet met de -f optie). Er zijn ook geen shares of symlinks meer actief op die pool.
Herstarten van het systeem leverde niets op.
Vervolgens heb ik gewoon de schijf fysiek uit mijn NAS gehaald omdat ik het zo wel een beetje gehad had en de schijf toch buiten gebruik gesteld wordt. Zonder die schijf start mijn NAS gewoon op en kan ik pingen naar het ip adres maar de web UI is niet bereikbaar. Vervolgens de schijf teruggeplaatst, herstart en de UI is weer bereikbaar. Is het mogelijk dat er ergens config van de UI op die oude pool is opgeslagen? En hoe vind ik zoiets terug?
De nieuwe pool is in gebruik en de data is gekopieerd maar het lukt me niet om de degraded pool te exporten; ik krijg telkens de melding 'device is busy'. Ook het unmounten van de resterende schijf lukt niet en zelfs een zpool destroy lukt niet (ook niet met de -f optie). Er zijn ook geen shares of symlinks meer actief op die pool.
Herstarten van het systeem leverde niets op.
Vervolgens heb ik gewoon de schijf fysiek uit mijn NAS gehaald omdat ik het zo wel een beetje gehad had en de schijf toch buiten gebruik gesteld wordt. Zonder die schijf start mijn NAS gewoon op en kan ik pingen naar het ip adres maar de web UI is niet bereikbaar. Vervolgens de schijf teruggeplaatst, herstart en de UI is weer bereikbaar. Is het mogelijk dat er ergens config van de UI op die oude pool is opgeslagen? En hoe vind ik zoiets terug?
Ja, TrueNAS gebruikt een pool om data van zichzelf op te slaan en het kan zijn dat dat die is. Je kunt dat veranderen/bekijken hier. LinkWaking_The_Dead schreef op zondag 26 november 2023 @ 16:30:
Ik heb een Freenas installatie waar ik een aantal pools op heb. Onlangs is een pool degraded geraakt (mirror, twee schijven van 4TB). Ik heb beslist om de kapotte schijf niet te vervangen maar een nieuwe pool aan te maken in zfs raid met 3 schijven.
De nieuwe pool is in gebruik en de data is gekopieerd maar het lukt me niet om de degraded pool te exporten; ik krijg telkens de melding 'device is busy'. Ook het unmounten van de resterende schijf lukt niet en zelfs een zpool destroy lukt niet (ook niet met de -f optie). Er zijn ook geen shares of symlinks meer actief op die pool.
Herstarten van het systeem leverde niets op.
Vervolgens heb ik gewoon de schijf fysiek uit mijn NAS gehaald omdat ik het zo wel een beetje gehad had en de schijf toch buiten gebruik gesteld wordt. Zonder die schijf start mijn NAS gewoon op en kan ik pingen naar het ip adres maar de web UI is niet bereikbaar. Vervolgens de schijf teruggeplaatst, herstart en de UI is weer bereikbaar. Is het mogelijk dat er ergens config van de UI op die oude pool is opgeslagen? En hoe vind ik zoiets terug?
Bedankt voor de tip, maar dat is het dus nietorvintax schreef op zondag 26 november 2023 @ 17:43:
[...]
Ja, TrueNAS gebruikt een pool om data van zichzelf op te slaan en het kan zijn dat dat die is. Je kunt dat veranderen/bekijken hier. Link

Let op:
Voor het bouwen van een ZFS NAS en andere hardwarevragen kun je beter terecht in Het grote DIY RAID NAS topic deel 3, zodat we dit topic reserveren voor ZFS-specifieke vragen en discussies.
Voor het bouwen van een ZFS NAS en andere hardwarevragen kun je beter terecht in Het grote DIY RAID NAS topic deel 3, zodat we dit topic reserveren voor ZFS-specifieke vragen en discussies.