Wie du mir, so ich dir.
De default vanuit ZFS-on-Linux is 1* per maand.eheijnen schreef op woensdag 15 maart 2023 @ 11:54:
Nog even over scrubs draaien.
Is er een leidraad over, met welke regelmaat dit gedaan moet worden?
Even niets...
Kopiëren via Samba protocol, zijn vooral grote bestanden.nero355 schreef op woensdag 15 maart 2023 @ 00:28:
[...]
Klinkt als een buffer die elke keer helemaal leegloopt en daarna weer wordt aangevuld, maar waar het precies aan ligt durf ik niet te zeggen...
[...]
Hoe test je dat of via welk protocol doe je de snelheidsmetingen ?
Ik ga vanavond even de pools verwijderen en kijken of bijvoorbeeld een mirror of raidz2 (zonder de extra mirror) het beter gaat.
edit:
Raidz2 aangemaakt wel melding Mixed Disk Capacities maar de snelheid blijft nu stabiel.
70 GB gekopieerd duurde dat gisteren ruim een uur nu met een kleine 20 minuten klaar.
Dan laten we het voorlopig even zo liever 1TB minder maar wel de volle snelheid.
Kan later de 3 TB schijven wel vervangen voor 4TB om zo de ruimte te vergroten.
[ Voor 24% gewijzigd door ComTech op 15-03-2023 22:06 ]
Ter ref:Compizfox schreef op dinsdag 6 september 2022 @ 16:15:
[...]
Ik heb even gekeken (ook naar hoe dat ŭberhaupt moet; nog nooit eerder gedaan): fwupdmgr geeft aan dat er geen updates beschikbaar zijn.
Wel hebben de SSDs verschillende firmware-versies: de eerste, falende SSD heeft versie M3CR043, en de tweede heeft M3CR045.
Na een tijdje ergernis met falende resilver van een pool van 2 x 3 jaar oude CT1000MX500 fw M3CR023 die op hun laatste wearout tellers liepen (92%), naar 2 verse CT2000MX500 fw M3CR045 op een thread gestoten:
https://forums.unraid.net...ain-stay-away-from-these/
Na de update naar M3CR046 ging resilveren wel goed. 2 x gedaan, pool status OK!
SE2200+14xSF170S & SE1500M+4xTSM-375
/f/image/otoEVqRhNrZ6EQ6jpMIfqxPM.png?f=fotoalbum_large)
/f/image/emUwsyhxndiqRghSb2Oaa1qK.png?f=fotoalbum_large)
... all gonna wonder how you ever thought you could live so large and leave so little for the rest of us...
Hoe heb je SMART gecontroleerd? Kan je de SMART en de zpool status via de CLI de output tonen?Zware Unit schreef op dinsdag 18 april 2023 @ 21:10:
Een van mijn disken in mijn TrueNAS server geeft een issue. Geen gekke dingen te zien in de SMART status, maar wel een pool welke aangeeft niet 'healthy'. te zijn. Geen idee waar ik dit kan fixen. Een scrub lost de issues niet op.
[Afbeelding]
[Afbeelding]
Sinds de 2 dagen regel reageer ik hier niet meer
Sinds de 2 dagen regel reageer ik hier niet meer
... all gonna wonder how you ever thought you could live so large and leave so little for the rest of us...
Omdat ZFS errors en SMART errors over verschillende dingen gaan. SMART gaat over hardware en ZFS over filesystems. En hoewel hardware invloed kan hebben op je filesystem en dit ook vaak heeft, hoeft dat niet.Zware Unit schreef op dinsdag 18 april 2023 @ 23:12:
Reboot heeft zo te zien de foutmelding verholpen. Blijf het vreemd dat de betreffende disk een error gaf terwijl er in de SMART niks te vinden was.
Sinds de 2 dagen regel reageer ik hier niet meer
Ik zou me pas zorgen gaan maken als het vaker gebeurt en die teller flink hoog oploopt!Zware Unit schreef op dinsdag 18 april 2023 @ 23:12:
Reboot heeft zo te zien de foutmelding verholpen.
Blijf het vreemd dat de betreffende disk een error gaf terwijl er in de SMART niks te vinden was.
Dan kan je hopelijk ook wat gerichter bepalen waar het vandaan komt als het ooit zover komt...
|| Stem op mooiere Topic Search linkjes! :) " || Pi-Hole : Geen advertenties meer voor je hele netwerk! >:) ||
Dat kan... maak wel gebruik van ECC geheugen. Gewoon effe in de gaten houden de komende tijd.CurlyMo schreef op woensdag 19 april 2023 @ 07:06:
@Zware Unit het was een checksum fout dus het kan ook een bitflip in je geheugen zijn geweest.
... all gonna wonder how you ever thought you could live so large and leave so little for the rest of us...
Het ging er meer om dat een checksum in allerlei hardware kan zitten. Je geheugen, kabels, voeding etc. Alles wat een bitflip kan veroorzaken.Zware Unit schreef op woensdag 19 april 2023 @ 18:28:
[...]
Dat kan... maak wel gebruik van ECC geheugen. Gewoon effe in de gaten houden de komende tijd.
Sinds de 2 dagen regel reageer ik hier niet meer
ZFS has finished a scrub: eid: 254 class: scrub_finish host: backupper time: 2023-04-26 12:13:02+0200 pool: FD state: ONLINE scan: scrub repaired 0B in 22 days 00:40:41 with 0 errors on Wed Apr 26 12:13:02 2023 config: NAME STATE READ WRITE CKSUM thijs ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 SG-SMR-1-xxxxxxxx ONLINE 0 0 0 SG-SMR-2-xxxxxxxx ONLINE 0 0 0 SG-SMR-3-xxxxxxxx ONLINE 0 0 0 SG-SMR-5-xxxxxxxx ONLINE 0 0 0 SG-SMR-6-xxxxxxxx ONLINE 0 0 0 errors: No known data errors
Ergens ook wel "normaal", dit is een offline backup machine die telkens ongeveer max een half uurtje staat te kachelen... Dan gaat ie weer down vanzelf. Probleem daarbij is dat scrubs niet altijd terug resumen waar hij gestopt is, dat heeft iets te maken met een soort checkpoints en het is heel verschillend wanneer hij dit vastlegt en ook niet zelf te sturen.
Een scrub met reboots duurt dus dan wel even want hij verliest ook telkens een paar procenten per keer.
[ Voor 23% gewijzigd door HyperBart op 26-04-2023 16:27 ]
Helpt het niet als je voor het afsluiten een pause doet? Mogelijk dat hij dan wel de exacte positie bijhoudt?HyperBart schreef op woensdag 26 april 2023 @ 16:25:
In de categorie "doe es lang over je scrub":
ZFS has finished a scrub: eid: 254 class: scrub_finish host: backupper time: 2023-04-26 12:13:02+0200 pool: FD state: ONLINE scan: scrub repaired 0B in 22 days 00:40:41 with 0 errors on Wed Apr 26 12:13:02 2023 config: NAME STATE READ WRITE CKSUM thijs ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 SG-SMR-1-xxxxxxxx ONLINE 0 0 0 SG-SMR-2-xxxxxxxx ONLINE 0 0 0 SG-SMR-3-xxxxxxxx ONLINE 0 0 0 SG-SMR-5-xxxxxxxx ONLINE 0 0 0 SG-SMR-6-xxxxxxxx ONLINE 0 0 0 errors: No known data errors
Ergens ook wel "normaal", dit is een offline backup machine die telkens ongeveer max een half uurtje staat te kachelen... Dan gaat ie weer down vanzelf. Probleem daarbij is dat scrubs niet altijd terug resumen waar hij gestopt is, dat heeft iets te maken met een soort checkpoints en het is heel verschillend wanneer hij dit vastlegt en ook niet zelf te sturen.
Een scrub met reboots duurt dus dan wel even want hij verliest ook telkens een paar procenten per keer.
Op dat soort machines heb ik een extra check. Is er een scrub aan de gang, wacht dan even met afsluiten.HyperBart schreef op woensdag 26 april 2023 @ 16:25:
Ergens ook wel "normaal", dit is een offline backup machine die telkens ongeveer max een half uurtje staat te kachelen... Dan gaat ie weer down vanzelf. Probleem daarbij is dat scrubs niet altijd terug resumen waar hij gestopt is, dat heeft iets te maken met een soort checkpoints en het is heel verschillend wanneer hij dit vastlegt en ook niet zelf te sturen.
Een scrub met reboots duurt dus dan wel even want hij verliest ook telkens een paar procenten per keer.
Sinds de 2 dagen regel reageer ik hier niet meer
Die heb ik ook! Maar die machine wordt echt airgapped gehouden: een mechanische klok cut de power na 45min. Dus ik heb maar 35 online minuten (booten, shut down en marge bij unattended upgrades).CurlyMo schreef op woensdag 26 april 2023 @ 17:19:
[...]
Op dat soort machines heb ik een extra check. Is er een scrub aan de gang, wacht dan even met afsluiten.
Dat heb ik om die reden dus niet om de scrub de mogelijkheid te geven te voltooien.HyperBart schreef op woensdag 26 april 2023 @ 17:51:
[...]
Die heb ik ook! Maar die machine wordt echt airgapped gehouden: een mechanische klok cut de power na 45min. Dus ik heb maar 35 online minuten (booten, shut down en marge bij unattended upgrades).
Sinds de 2 dagen regel reageer ik hier niet meer
Snap ik. Hier doet ie een check, als scrub in progress dan blijft ie extenden tot max 35 min en dan gaat ie down… 22x 30 min, 11h, klinkt nog niet zo slecht voor 5 x 2tb smr.CurlyMo schreef op woensdag 26 april 2023 @ 17:53:
[...]
Dat heb ik om die reden dus niet om de scrub de mogelijkheid te geven te voltooien.
Waarom SMR HDD'sHyperBart schreef op woensdag 26 april 2023 @ 16:25:
raidz1-0 SG-SMR-1 SG-SMR-2 SG-SMR-3 SG-SMR-5 SG-SMR-6
Wees blij dat het geen Rebuild was die moest voltooien...

|| Stem op mooiere Topic Search linkjes! :) " || Pi-Hole : Geen advertenties meer voor je hele netwerk! >:) ||
Ik heb hier ook alleen maar SMR HDD's in mijn NAS. De bekende 2.5" Seagate 5TB in een drieweg mirror.nero355 schreef op vrijdag 28 april 2023 @ 23:51:
[...]
Waarom SMR HDD's
Wees blij dat het geen Rebuild was die moest voltooien...
Sinds de 2 dagen regel reageer ik hier niet meer
Omdat ik die in bruikleen kreeg van een heel goede vriend, wiens backups ik hier ook stockeer.nero355 schreef op vrijdag 28 april 2023 @ 23:51:
[...]
Waarom SMR HDD's
Wees blij dat het geen Rebuild was die moest voltooien...
De langere rebuilds kan ik wel hebben, het is ook maar een backupserver. Als die twee weken moet rebuilden kan ik dat prima af.
Ja ik wist dat het pas tot zijn recht komt met dedidacted hardware, dat het onder Linux in het algemeen en ReHat in het bijzonder wat haken en ogen heeft en vooral dat het materie is waar je wel even de tijd voor moet nemen.
Goed even dacht ik dat ik toch een major issue had gevonden: podman en libvirt ook, gebruiken het SELinux category attribuut (als ik het nou helemaal goed zeg
Ik liep er tegenaan dat plex juist hierop stuk liep op een eigen dataset binnen mijn ZFS pool, wat op zich al even zoeken was .... was al bezig met zvols en xfs en de tranen stonden bij wijze van spreke al in mijn ogen
Wellicht heeft iemand anders hier wat aan, kon hier nl. niet veel over vinden. Sowieso de MLS/MLC optie van SELinux wordt dus wel gebruikt al in het wild op default installaties maar is erg onderbelicht.
Ik wil een home server installeren op een oude NUC 7th i5. Bedoeling is wat te experimenteren met docker containers en bepaalde taken te automatiseren (e.g. upload of download taakje op de server doen, misschien ook Plex Mediaserver gebruiken).
Is TrueNAS Scale hier een goede keuze?
Opslag zou op een 500 GB mnve SSD en een SATA 750 GB SSD zijn die ook heb liggen. Nuc heeft 16 GB ram.
M.v.g. Klokslag
In de logs kwam naar voren dat de usb verbinding van die specifieke drive verbroken is geweest "log" zal ik straks nog even copy pasten.
Nu heb ik de error simpelweg gecleared aangezien ik ervanuit ga dat het een hikje is geweest in het usb protocol/hub.
Maar wanneer fault een schijf onder zfs ik heb een aantal weken terug een schijf vervangen vanwege surface errors welke een honderdtal fouten gaf.
Wat is zeg maar de threshold?
Ik heb aardig wat gegoogled maar kan hier geen duidelijk antwoord op vinden.
De betreffende schijven zijn verder 100 uur door badblocks gegaan zonder enig probleem het lijkt voort te komen uit het in standby staan van de disks.
Overigens is er ten tijde van de error geen disk activity geweest.
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
| 2023-05-15T01:28:21.744997+00:00 pixelserver kernel: [612201.696975] usb 2-4.1: USB disconnect, device number 8 2023-05-15T01:28:21.804956+00:00 pixelserver kernel: [612201.753430] sd 6:0:0:0: [sdf] Synchronizing SCSI cache 2023-05-15T01:28:22.044911+00:00 pixelserver kernel: [612201.993369] sd 6:0:0:0: [sdf] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK 2023-05-15T01:28:22.268915+00:00 pixelserver kernel: [612202.217426] usb 2-4.1: new SuperSpeed USB device number 12 using xhci_hcd 2023-05-15T01:28:22.288948+00:00 pixelserver kernel: [612202.238444] usb 2-4.1: New USB device found, idVendor=0bc2, idProduct=331a, bcdDevice= 9.15 2023-05-15T01:28:22.288961+00:00 pixelserver kernel: [612202.238446] usb 2-4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 2023-05-15T01:28:22.288962+00:00 pixelserver kernel: [612202.238447] usb 2-4.1: Product: Expansion Desk 2023-05-15T01:28:22.288962+00:00 pixelserver kernel: [612202.238448] usb 2-4.1: Manufacturer: Seagate 2023-05-15T01:28:22.288963+00:00 pixelserver kernel: [612202.238449] usb 2-4.1: SerialNumber: NAABLDQC 2023-05-15T01:28:22.296908+00:00 pixelserver kernel: [612202.246132] scsi host10: uas 2023-05-15T01:28:22.296913+00:00 pixelserver kernel: [612202.246571] scsi 10:0:0:0: Direct-Access Seagate Expansion Desk 0915 PQ: 0 ANSI: 6 2023-05-15T01:28:22.296913+00:00 pixelserver kernel: [612202.248621] sd 10:0:0:0: Attached scsi generic sg5 type 0 2023-05-15T01:28:22.296914+00:00 pixelserver kernel: [612202.248818] sd 10:0:0:0: [sdj] 31251759103 512-byte logical blocks: (16.0 TB/14.6 TiB) 2023-05-15T01:28:22.296914+00:00 pixelserver kernel: [612202.248820] sd 10:0:0:0: [sdj] 4096-byte physical blocks 2023-05-15T01:28:22.296915+00:00 pixelserver kernel: [612202.248971] sd 10:0:0:0: [sdj] Write Protect is off 2023-05-15T01:28:22.296915+00:00 pixelserver kernel: [612202.248973] sd 10:0:0:0: [sdj] Mode Sense: 53 00 00 08 2023-05-15T01:28:22.296916+00:00 pixelserver kernel: [612202.249267] sd 10:0:0:0: [sdj] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA 2023-05-15T01:28:22.300939+00:00 pixelserver kernel: [612202.249470] sd 10:0:0:0: [sdj] Preferred minimum I/O size 4096 bytes 2023-05-15T01:28:22.300943+00:00 pixelserver kernel: [612202.249472] sd 10:0:0:0: [sdj] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes) 2023-05-15T01:28:33.656932+00:00 pixelserver kernel: [612213.608465] sdj: sdj1 sdj9 2023-05-15T01:28:33.656942+00:00 pixelserver kernel: [612213.608599] sd 10:0:0:0: [sdj] Attached SCSI disk 2023-05-15T02:00:49.984942+00:00 pixelserver kernel: [614149.934595] zio pool=dataraid vdev=/dev/disk/by-id/scsi-SSeagate_Expansion_Desk_NAABLDQC-part1 error=5 type=2 offset=1662156537856 size=4096 flags=180880 2023-05-15T02:00:49.984947+00:00 pixelserver kernel: [614149.934618] zio pool=dataraid vdev=/dev/disk/by-id/scsi-SSeagate_Expansion_Desk_NAABLDQC-part1 error=5 type=1 offset=270336 size=8192 flags=b08c1 2023-05-15T02:00:49.984948+00:00 pixelserver kernel: [614149.934624] zio pool=dataraid vdev=/dev/disk/by-id/scsi-SSeagate_Expansion_Desk_NAABLDQC-part1 error=5 type=2 offset=1700811243520 size=4096 flags=180880 2023-05-15T02:00:49.984948+00:00 pixelserver kernel: [614149.934627] zio pool=dataraid vdev=/dev/disk/by-id/scsi-SSeagate_Expansion_Desk_NAABLDQC-part1 error=5 type=1 offset=16000889659392 size=8192 flags=b08c1 2023-05-15T02:00:49.984949+00:00 pixelserver kernel: [614149.934632] zio pool=dataraid vdev=/dev/disk/by-id/scsi-SSeagate_Expansion_Desk_NAABLDQC-part1 error=5 type=1 offset=16000889921536 size=8192 flags=b08c1 2023-05-15T02:00:49.984950+00:00 pixelserver kernel: [614149.934674] zio pool=dataraid vdev=/dev/disk/by-id/scsi-SSeagate_Expansion_Desk_NAABLDQC-part1 error=5 type=2 offset=1662156541952 size=4096 flags=180880 2023-05-15T02:00:49.984951+00:00 pixelserver kernel: [614149.934684] zio pool=dataraid vdev=/dev/disk/by-id/scsi-SSeagate_Expansion_Desk_NAABLDQC-part1 error=5 type=2 offset=1700811247616 size=4096 flags=180880 |
Heb wel nog wat terug gevonden over usb autosuspend en zal sowieso de kabel maar vervangen.
[ Voor 71% gewijzigd door TRAXION op 20-05-2023 05:52 ]
1
| cannot import 'tank': no such pool available |
Dit zijn mijn pools:
1
2
3
| NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 3.62T 752G 2.89T - - 0% 20% 1.00x ONLINE - zroot 1.86T 753G 1.12T - - 2% 39% 1.00x ONLINE - |
Wat ik heb gedaan:
Ik heb enige tijd geleden mijn Arch installatie verplaatst van EXT4 naar een ZFS pool met enkele SSD. De SSD heeft een ~600mb grote fat32 partitie voor de EFI partitie en grub zit op de pool. Dit ging redelijk eenvoudig en werkt sinds die tijd vlekkeloos. Nu wil ik die enkele SSD vervangen door een stripe van 2 nieuwe SSD's (ik aanvaard het risico).
Als eerste had ik het idee dat ik de stripe als mirror toe kan voegen aan mijn bestaande pool, dan na resilver de enkele mirror te verwijderen, maar volgens mij kan dat niet. Dus ik heb een nieuwe pool aangemaakt met de stripe (tank) en vervolgens de single disk pool (zroot) ge-zfs send naar de stripe. Dit ging goed en nu heb ik twee pools met identieke dataset.
Het probleem is echter dat ik niet van de nieuwe pool kan booten. Ik heb GRUB opnieuw geinstalleerd en alle relevante GRUB config files die ik eerder aangeraakt heb aangepast zodat ze nu wijzen naar tank in plaats van zroot. Als ik in GRUB de entry aanpas van tank naar zroot dan importeert hij succesvol zroot en start het systeem zonder problemen op, maar als hij verwijst naar tank dan kan hij de pool niet vinden. Na booten handmatig zpool import tank werkt ook gewoon vlekkeloos.
Dit is de GRUB entry.
1
2
3
4
5
6
7
8
9
10
| load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod zfs search --no-floppy --fs-uuid --set=root 850410a262eb2b81 echo 'Loading Linux linux-zen ...' linux /ROOT/default@/boot/vmlinuz-linux-zen root=ZFS=tank/ROOT/default rw loglevel=3 quiet echo 'Loading initial ramdisk ...' initrd /ROOT/default@/boot/amd-ucode.img /ROOT/default@/boot/initramfs-linux-zen.img |
Iemand enig idee wat hier fout gaat?
1
| journalctl -b -1 |
Got Leenucks? | Debian Bookworm x86_64 / ARM | OpenWrt: Empower your router | Blogje
Dit had ik inderdaad gelezen. Volgens mij heb ik niet dit probleem maar ik had de stappen al doorlopen, mijn /etc/grub.d/10_linux is al aangepast zodat hij direct naar de tank pool verwijst maar dit helpt niet.willemw12 schreef op zaterdag 20 mei 2023 @ 07:07:
Die "Install_Arch_Linux_on_ZFS" link noemt o.a. ZFS/GRUB bugs en ZFS/GRUB-compatible pool creation (compatible zpool features).
Nog niet geprobeerd, bedankt voor de suggestie.
Edit:
Inmiddels opgelost. Ik gebruikte het commando mkinitcpio -p linux terwijl ik de zfs kernel modules alleen voor linux-zen geinstalleerd had en GRUB als default entry Linux-zen gebruikt (en de rest standaard weglaat). Ik had even niet door dat ik mkinitcpio -p linux-zen moest gebruiken en ik had de warnings over het missen van zfs modules over het hoofd gezien omdat het eerder wel werkte. Bedankt in ieder geval voor de suggesties en ik heb weer wat geleerd over het Linux boot process

[ Voor 27% gewijzigd door soulcrusher op 20-05-2023 18:36 ]
errors: Permanent errors have been detected in the following files: backup/nas/tank/user/robert/data@2020-07-02-000000:<0xe2991>
Ik neem aan dat gezien de <0xe2991> dit eerder duid op een metadata error dan op een daadwerkelijke error in een bestand?
Tot voor kort draaide de boel ook in mirror, maar "de andere" HDD (die ~jaartje nieuwer was

Hmm, worth a shot (gaat in beide gevallen om Linux, eenmaal Proxmox gebaseerd op Debian Bullseye en eenmaal ARMBian gebaseerd op bullseye, dus beide OpenZFS).willemw12 schreef op donderdag 1 juni 2023 @ 14:21:
Ik dacht dat een scrub de enige mogelijkheid was. OpenZFS heeft nu een corrective receive voor data maar niet meta-data, denk ik (Is it possible to repair a ZFS snapshot by re-sending it?).
Die SO link doet mij dan wel twijfelen of het inderdaad een metadata fout is, gezien die post aangeeft dat de metadata meerdere keren wordt opgeslagen. Dan zou het dus ook al meerdere keren corrupt moeten zijn.
Nu even aan het kijken. Deze feature komt pas in 2.2 en die is dus "nog" niet uitwillemw12 schreef op donderdag 1 juni 2023 @ 14:21:
Ik dacht dat een scrub de enige mogelijkheid was. OpenZFS heeft nu een corrective receive voor data maar niet meta-data, denk ik (Is it possible to repair a ZFS snapshot by re-sending it?).

Wat ook leerzaam is om, evt. na een scrub, te kijken hoeveel snapshots (of nog meer) je moet verwijderen om van die meta-data fout af te komen.Metadata can not be healed by corrective receive
Het is natuurlijk ook een beetje vaag. In dat die vervolgens faalt op de filename. En met metadata die AFAIK vaker, op meerdere plekken, wordt opgeslagen zou ik ook verwachten dat er meer moet falen? Nu lijkt het maar om een bestand te gaan naar mijn idee. Of i.p.v. op meerdere plekken falen enige indicatie dat er ook iets hersteld is (metadata die op "dezelfde" plek staat die hersteld is vanaf de "kopie"). Terwijl de scrub uit komt op "0B repaired".willemw12 schreef op woensdag 7 juni 2023 @ 21:05:
Het is zeker het proberen waard maar het ziet erna uit dat het niet gaat werken. https://openzfs.github.io.../man/8/zfs-receive.8.html:
[...]
Afgaande op de error alleen dat ene snapshot?Wat ook leerzaam is om te kijken hoeveel snapshots (of nog meer) je moet verwijderen om van die meta-data fout af te komen.

Context: momenteel heb ik een systeem met Proxmox met ZFS (on root), en vervolgens nog een additionele (RAIDZ) pool waarbij een aantal datasets encrypted zijn (en ook raw / encrypted met send & receive gebackupped worden). De encryption key daarvan staat "in plain text" op de root pool. Niet heel handig dus, maar hey, het staat in ieder geval niet op dezelfde pool (en de pool/dataset waar het op staat wordt niet gebackupped. Uiteraard staat de key wel ook nog ergens anders opgeslagen).
Intussen bezig met een nieuw systeempje, Debian met ZFS on root, en zou nu (weer / de) encrypted data op dezelfde pool willen zetten. Echter zet ik dan liever niet de encryption key op dezelfde pool. Van wat ik nu gelezen heb zou het vrij eenvoudig moeten zijn om dropbear op te zetten in het initramfs image en daarmee remote te unlocken. Echter betekent dat handwerk, en dat wil ik niet. Wat ik zo lees zijn er echter ook mogelijkheden om zelf een script te schrijven dat de key inlaad? Wat ik nu aan het denken ben is om de key op mijn (zelfbouw, eveneens Debian based) router te plaatsen (want "24/7" bereikbaar). En op het servertje dan een script dat via SSH inlogt op de router en de keyfile leest en dan dus inlaad. Dus zeg maar een ssh router cat /pad/naar/key | zfs load-key pad/naar/dataset.
Enige catch die ik nu echter al kan zien is bv iets van stroomuitval en dat de router nog (net) niet beschikbaar is. Maar dat is wellicht nog te overzien, al dan niet door een delay in te bakken.
Concreteet dus: hebben jullie hier nog creatieve ideeën / oplossingen voor?
Waarom is dat handwerk? En waarin is jouw voorgestelde methode zo anders.RobertMe schreef op dinsdag 13 juni 2023 @ 21:00:
Van wat ik nu gelezen heb zou het vrij eenvoudig moeten zijn om dropbear op te zetten in het initramfs image en daarmee remote te unlocken. Echter betekent dat handwerk, en dat wil ik niet.
Sinds de 2 dagen regel reageer ik hier niet meer
Omdat ik dan via SSH moet inloggen (in dropbear) om vervolgens de passphrase in te vullen / zfsunlock te doen? (voor zover ik het begrijp)
Ik zou dan het servertje zelf de passphrase van een ander systeem laten lezen. Dus i.p.v. dat "iets" inlogt op het servertje en passphrase invoert omdraaien zodat het servertje zelf van op een andere locatie de passphrase leest. Waarbij naar mijn idee de veiligheid ook niet echt in het geding komt. Als het servertje niet meer in huis zou zijn kan die natuurlijk ook niet de passphrase van de router lezen, en daarnaast valt in geval van diefstal / ... natuurlijk ook de SSH key van mijn router te verwijderen waardoor die uberhaupt niet meer kan inloggen en dus ook niet de passphrase kan lezen.En waarin is jouw voorgestelde methode zo anders.
Je moet het niet via dropbear doen. Je kan ook gewoon een wget / fetch achtig iets programmeren in je initramfs. Als je dan ook zorgt dat hij de cmdline.txt gebruikt om parameters in te lezen kan je het zo modulair maken als je wil.RobertMe schreef op dinsdag 13 juni 2023 @ 21:46:
[...]
Omdat ik dan via SSH moet inloggen (in dropbear) om vervolgens de passphrase in te vullen / zfsunlock te doen? (voor zover ik het begrijp)
Sinds de 2 dagen regel reageer ik hier niet meer
Ja true, SSH (client) is natuurlijk maar een optie. Had ik nog niet zo bij stil gestaan. De "met dropbear / SSH server kun je vanaf remote inloggen en invullen" duwde mij meteen in het SSH pad, terwijl lezen met wget etc natuurlijk net zo goed kan. Behalve dat een HTTP endpoint by default weer niet beveiligd is.CurlyMo schreef op dinsdag 13 juni 2023 @ 21:47:
[...]
Je moet het niet via dropbear doen. Je kan ook gewoon een wget / fetch achtig iets programmeren in je initramfs.
Denk dat dat nog even 5 bruggen te ver isAls je dan ook zorgt dat hij de cmdline.txt gebruikt om parameters in te lezen kan je het zo modulair maken als je wil.
Maar leest alsof je er ervaring mee hebt. Dus heb je toevallig een opzetje?

Als je wil weten hoe we dat ooit hebben opgezet voor XBian, zie: https://github.com/xbianonpi/xbian-package-initramfs.RobertMe schreef op dinsdag 13 juni 2023 @ 21:53:
[...]
Denk dat dat nog even 5 bruggen te ver isMaar neem aan dat je dus gewoon de kernel boot cmdline bedoelt (dus dat ding dat je in Grub / refind / systemd-boot / ... kunt editten en bij kernel aftrap wordt meegegeven)? (Die in initramfs beschikbaar is als een cmdline.txt naar ik aanneem dan).
Maar leest alsof je er ervaring mee hebt. Dus heb je toevallig een opzetje?![]()
Het parsen van de cmdline.txt t.b.v. een modulaire configuratie van je initramfs:
https://github.com/xbiano...an-initramfs/init#L56-L67
Sinds de 2 dagen regel reageer ik hier niet meer

Gezien het maar om een aantal datasets gaat die niet essentieel zijn "voor het OS" (dus puur user data die er op staat, en dus niet /home, /usr of zo) kan die natuurlijk ook tijdens de normale boot geunlocked worden, middels een systemd unit. By default is er sowieso de zfs-load-key.service die vrij letterlijk de zfs load-key -a doet. Maar in diezelfde fase (After = zfs-import.target, Before = zfs-mount.service & WantedBy = zfs-mount.service) kan ik dus net zo goed een eigen service laten runnen die deze specifieke keys inlaad en "klaar". Dan hoef ik ook nog niet zo, voor mijn idee, tricky te doen met het initramfs image "aanpassen" (/scripts aan toevoegen etc, lastiger debuggen, ...). En door dan de load-key te doen vooraf aan de zfs-mount.service worden ze ook weer automatisch gemount doordat de key beschikbaar is.
Hmms, blijkt allemaal toch meer voeten in de aarde te hebben. Uiteraard niet stil gestaan bij het feit dat zo vroeg in het boot proces de netwerkverbinding ook nog niet is opgezet. Dus dat lijdt gewoon tot een "could not resolve hostname" en op IP basis "Network is unreachable".RobertMe schreef op dinsdag 13 juni 2023 @ 22:35:
Hmm, volgens mij ben ik sowieso te moeilijk aan het denken
Gezien het maar om een aantal datasets gaat die niet essentieel zijn "voor het OS" (dus puur user data die er op staat, en dus niet /home, /usr of zo) kan die natuurlijk ook tijdens de normale boot geunlocked worden, middels een systemd unit. By default is er sowieso de zfs-load-key.service die vrij letterlijk de zfs load-key -a doet. Maar in diezelfde fase (After = zfs-import.target, Before = zfs-mount.service & WantedBy = zfs-mount.service) kan ik dus net zo goed een eigen service laten runnen die deze specifieke keys inlaad en "klaar". Dan hoef ik ook nog niet zo, voor mijn idee, tricky te doen met het initramfs image "aanpassen" (/scripts aan toevoegen etc, lastiger debuggen, ...). En door dan de load-key te doen vooraf aan de zfs-mount.service worden ze ook weer automatisch gemount doordat de key beschikbaar is.
Dat wordt dus dit pas uitvoeren na network online. En dan nog een keer een zfs mount -a doen nadat alle keys zijn geladen. Gaat ook om encryption roots met meerdere sub-datasets, dus direct na de load-key een mount van die dataset doen zal de "subsets" niet mounten.
Edit:
Toch makkelijker dan gedacht. Wachten tot het netwerk online is:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [Unit] Description = Load ZFS encryption keys DefaultDependencies = no Wants = network-online.target After = zfs-import.target network-online.target Before = zfs-mount.service [Service] Type = oneshot RemainAfterExit = yes ExecStart=/bin/bash -c 'ssh -i /etc/zfs/ssh_id zfs-keys@192.168.1.1 %i | gpg --batch --decrypt --passphrase-file /boot/zfs-enc-key.txt | zfs load-key %I' ExecStop=zfs unload-key %I [Install] WantedBy = zfs-mount.service |
Oftewel, de Wants & After op network-online.target. Dan werkt het prima.
[ Voor 16% gewijzigd door RobertMe op 23-06-2023 10:11 ]
En toch, klopt ook dit nog nietRobertMe schreef op vrijdag 23 juni 2023 @ 10:03:
[...]
Hmms, blijkt allemaal toch meer voeten in de aarde te hebben. Uiteraard niet stil gestaan bij het feit dat zo vroeg in het boot proces de netwerkverbinding ook nog niet is opgezet. Dus dat lijdt gewoon tot een "could not resolve hostname" en op IP basis "Network is unreachable".
Dat wordt dus dit pas uitvoeren na network online. En dan nog een keer een zfs mount -a doen nadat alle keys zijn geladen. Gaat ook om encryption roots met meerdere sub-datasets, dus direct na de load-key een mount van die dataset doen zal de "subsets" niet mounten.
Edit:
Toch makkelijker dan gedacht. Wachten tot het netwerk online is:
INI:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [Unit] Description = Load ZFS encryption keys DefaultDependencies = no Wants = network-online.target After = zfs-import.target network-online.target Before = zfs-mount.service [Service] Type = oneshot RemainAfterExit = yes ExecStart=/bin/bash -c 'ssh -i /etc/zfs/ssh_id zfs-keys@192.168.1.1 %i | gpg --batch --decrypt --passphrase-file /boot/zfs-enc-key.txt | zfs load-key %I' ExecStop=zfs unload-key %I [Install] WantedBy = zfs-mount.service
Oftewel, de Wants & After op network-online.target. Dan werkt het prima.

Nu faalt die tijdens de boot weer met een systemd-ask-password prompt. Waarom nu, geen idee. Maar wat dus blijkbaar gebeurt is dat er een "zfs-mount-generator" is. Op basis van een cache file maakt deze (systemd) mount units aan. Daarbij wordt ook gekeken naar de ZFS properties. Heeft de dataset een encroot wordt er een dependency naar zfs-load-key@<encroot> gedefinieerd, en ook daarvoor een service unit gedefinieerd (die op basis van de keylocation weer optioneel dependencies heeft op network-online of local-fs).
Idealiter fix ik dus dat dit gebruik maakt van mijn logica/"script"/commando. Alleen moet ik dan dus puzzelen hoe dat voor elkaar te krijgen. Of worst case org.openzfs.systemd:ignore op on zetten zodat er helemaal niks met dit mount verhaal wordt gedaan.
Problem solved, met deze service unit:RobertMe schreef op zaterdag 24 juni 2023 @ 11:08:
[...]
En toch, klopt ook dit nog nietNu ik een sub-dataset heb aangemaakt, die ook nog eens een afwijkend mountpoint heeft (encryption root is rpool/user, nu rpool/user/robert aangemaakt met /home/robert/data als mountpoint).
Nu faalt die tijdens de boot weer met een systemd-ask-password prompt. Waarom nu, geen idee. Maar wat dus blijkbaar gebeurt is dat er een "zfs-mount-generator" is. Op basis van een cache file maakt deze (systemd) mount units aan. Daarbij wordt ook gekeken naar de ZFS properties. Heeft de dataset een encroot wordt er een dependency naar zfs-load-key@<encroot> gedefinieerd, en ook daarvoor een service unit gedefinieerd (die op basis van de keylocation weer optioneel dependencies heeft op network-online of local-fs).
Idealiter fix ik dus dat dit gebruik maakt van mijn logica/"script"/commando. Alleen moet ik dan dus puzzelen hoe dat voor elkaar te krijgen. Of worst case org.openzfs.systemd:ignore op on zetten zodat er helemaal niks met dit mount verhaal wordt gedaan.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| [Unit] Description = Load ZFS encryption keys DefaultDependencies = no Wants = network-online.target After = network-online.target Before = zfs-load-key@%i.service [Service] Type=oneshot RemainAfterExit=yes # This avoids a dependency loop involving systemd-journald.socket if this # dataset is a parent of the root filesystem. StandardOutput=null StandardError=null ExecStart=/bin/bash -c 'ssh -i /etc/zfs/ssh_id zfs-keys@192.168.1.1 %i | gpg --batch --decrypt --passphrase-file /boot/efi/zfs-enc-key.txt | zfs load-key %I' [Install] WantedBy = zfs-load-key@%i.service |
De service depend nu dus alleen op network-online.target, en moet worden uitgevoerd vooraf aan, en is nodig voor, zfs-load-key@%i.service.
Als ik nu dus bv systemctl enable zfs-load-remote-key@rpool-user doe zal deze service automatisch worden uitgevoerd vooraf aan zfs-load-key@rpool-user en zal de key als alles goed is worden ingeladen. Deze vorm zorgt er ook nog eens voor dat de fallback naar de prompt (systemd-ask-password | zfs load-key) blijft werken. Want de door ZFS gegenereerde zfs-load-key@....service controleert eerst de keystatus propery (van de dataset) en doet zijn ding alleen als die unavailable is.
Echter... was dit vrij makkelijk te verzinnen, alleen werkte het niet


Heb vandaag deze Sabrent ontvangen. Maar uhm, die doet het niet (goed?)
Langer verhaal:
Zoals hier al vaker aangegeven heb ik offsite een OrangePi liggen die backups maakt. Nadat eerder dit jaar een van de twee (Seagate 2,5") schijfjes stuk bleek (in mirror, dus "geen" issue), en later de ander strub failures begon te geven (ook hier over geschreven) maar eens wat ter vervanging gekocht (Samsung 870 Evo 4TB

`--> sudo fdisk -l /dev/sdc Disk /dev/sdc: 3,64 TiB, 4000787030016 bytes, 976754646 sectors Disk model: Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 32768 bytes / 32768 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdc1 1 4294967295 4294967295 16T ee GPT
SSD is intussen dus ook 4x zo groot
Mijn vermoeden is dus dat de adapter de boel niet 1 op 1 doorgeeft? Volgens mij is dat bv een quirk die de adapter in WD Elements HDDs heeft, die snoept ergens wat sectoren op. Maar volgens mij wordt dat dan weer gedetecteerd als corrupte paritietabel? Doordat die aan begin & eind staat? En maar aan 1 kant de sectoren "wegvallen".
Oftewel: mijn vertrouwen in deze adapter ben ik nu al kwijt

Edit:
Als "second opinion" maar eens mijn Ewent HDD dock uit gehaald. Die "pakt" hem wel gewoon zoals het hoort.
Morrelen aan ashift is nog steeds onnodig en overbodig, laat dat gewoon aan zfs over.RobertMe schreef op vrijdag 21 juli 2023 @ 22:24:
In eerste instantie dacht ik aan faal van block size (geen ashift=12 opgegeven).
Thralas in "Het grote ZFS topic"
Tenzij de adapter de physical sector size niet goed doorgeeft natuurlijk
Dat is precies de kern van je 'probleem'. Sommige adapters emuleren een logical sector size van 4096, daardoor klopt je partitietabel niet meer.Met Seagate adapter geeft fdisk een block size van 512 aan, met Sabrent adapter 4096.
Dat is zo verholpen. Kwestie van een nieuwe GPT schrijven met alle sector offsets /8 of *8 afhankelijk van welke kant je opgaat.
[ Voor 5% gewijzigd door Thralas op 21-07-2023 22:44 ]
ZFS heeft de pool aangemaakt terwijl deze in mijn NAS "fysiek" was aangesloten direct op SATA van het moederbord). En een 512B sector size lijkt mij voor een "nieuwe" SSD van 4TB toch wel onlogisch? 4K is naar mijn weten toch echt de standaard sinds "meerdere" jaren al. zpool get ashift backup gaf als ashift 0 (unset / auto?). zdb -C backup gaf echter een sector size van 9, dus deze was (inderdaad) 512 en geen quirk door een adapter of zo (+ dus "direct" op moederbord aangesloten geweest toen die was aangemaakt).Thralas schreef op vrijdag 21 juli 2023 @ 22:43:
[...]
Morrelen aan ashift is nog steeds onnodig en overbodig, laat dat gewoon aan zfs over.
Thralas in "Het grote ZFS topic"
Tenzij de adapter de physical sector size niet goed doorgeeft natuurlijk
Gek genoeg heb ik overigens paar maanden terug dezelfde SSD gekocht, ik meen ook gewoon een zfs create tank ... gedaan, zonder ashift dus, maar die heeft wel een ashift van 12 (volgens zdb -C, maar ook volgens zpool get ashift, dus twijfel nu toch of ik hem niet alsnog met -o ashift=12 heb aangemaakt).
Ik wil gewoon iets hebben dat werkt zonder "hacks". Het moet gewoon goed, out of the box, werken. Anders weet ik natuurlijk ook niet of het nog werkt als het ding stuk gaat of wat dan ook.[...]
Dat is precies de kern van je 'probleem'. Sommige adapters emuleren een logical sector size van 4096, daardoor klopt je partitietabel niet meer.
Dat is zo verholpen. Kwestie van een nieuwe GPT schrijven met alle sector offsets /8 of *8 afhankelijk van welke kant je opgaat.
pool: poolname
Wordt gemount in /poolname
Hier onder een aantal datasets, laten we zeggen:
poolname/data1
poolname/data2
poolname/data3
Als ik poolname importeer en mount zijn er geen datasets in /poolname/ óf zijn het wel de namen van de datasets maar zijn ze 'leeg'. (zfs list laat duidelijk zien dat er genoeg data overal staat.)
Als ik dan doe:
1
2
| zfs set mountpoint=none poolname zfs set mmountpoint=/poolname poolname |
En dan unmount en mount, is het er opeens wel...
Ook de datasets per stuk mounten zorgt voor de data.
Het is alsof de poolname root alles wat er onder ligt eerst bedekt.
Hoe dit op te lossen?
Of mis ik iets en moet je daadwerkelijk per dataset mounten?
Edit:
Eens getest in een VM. Daar gebeurt hetzelfde na het mounten van poolname op /poolname. Bij het schrijven naar map /poolname/data1, is met het zfs list commando te zien dat poolname groeit maar dataset poolname/data1 niet.
[ Voor 21% gewijzigd door Saturnus op 29-07-2023 20:01 ]
[ Voor 202% gewijzigd door GioStyle op 29-07-2023 20:20 ]
Het zijn sowieso datasets maar ook folders als zijnde mountpoint folders. Echter had ik die ‘childs’ automatisch gemount verwacht. Maar misschien is mijn verwachting fout.GioStyle schreef op zaterdag 29 juli 2023 @ 20:13:
Weet je zeker dat /data1 /data2 en /data3 datasets zijn en niet stiekem folders? Of dat /data123 datasets zijn, maar dat er ook folders zijn met dezelfde namen?
Als ik een pool importeer, dan importeert ie ook automatisch de datasets inclusief mountpoints.Saturnus schreef op zaterdag 29 juli 2023 @ 20:23:
[...]
Het zijn sowieso datasets maar ook folders als zijnde mountpoint folders. Echter had ik die ‘childs’ automatisch gemount verwacht. Maar misschien is mijn verwachting fout.
Kan je de pool exporteren, importeren en dan de output van de commando 'zfs list' tonen?
GioStyle schreef op zaterdag 29 juli 2023 @ 20:32:
[...]
Als ik een pool importeer, dan importeert ie ook automatisch de datasets inclusief mountpoints.
Kan je de pool exporteren, importeren en dan de output van de commando 'zfs list' tonen?
1
2
3
4
5
| root@VM:/home/saturnus# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 18.1M 9.34G 16.4M /tank tank/data1 234K 9.34G 234K /tank/data1 tank/data2 234K 9.34G 234K /tank/data2 |
Vervolgens doe ik: zfs mount tank
En verwacht ik dat de datasets data1 en data2 'meekomen', maar dat blijkt niet het geval. Zoals ik zei, misschien zit mijn verwachting fout.
Edit:
https://www.reddit.com/r/...y_to_mount_all_the_child/
https://www.reddit.com/r/...id_zfs_mount_a_mount_all/
https://forum.proxmox.com...tasets-bind-mounts.55852/
Deze links wijzen erop dat mijn verwachting fout is.
[ Voor 18% gewijzigd door Saturnus op 29-07-2023 20:49 ]
Yes.GioStyle schreef op zaterdag 29 juli 2023 @ 20:49:
code:
1 zfs get -r canmount tank
Staat deze eigenschap bij alle datasets op 'on'?
(Vorige post bijgewerkt met nieuwe info.)
1
| zfs mount -a |
1
| zfs mount <filesystem> |
[ Voor 10% gewijzigd door willemw12 op 30-07-2023 00:13 ]
Dit is inderdaad correct.willemw12 schreef op zondag 30 juli 2023 @ 00:04:
Probeercode:Dit mount alle datasets.
1 zfs mount -a
code:mount misschien alleen die ene filesystem/dataset.
1 zfs mount <filesystem>
Al met al ga ik er vanuit dat mijn initiële verwachting incorrect was.
Even niets...
Dat ligt nogal aan de hoe en wat. ZFS levert onder Linux ook systemd generators mee. Daarbij wordt een situatie gecreëerd dat bij het "beheer" van de datasets een ZED script wordt uitgevoerd dat (IIRC per zpool) een file genereert met alle datasets, mountpoints, en relevante (overige) properties. Tijdens boot draait vervolgens de systemd generator voor ZFS die dynamisch allemaal .mount units genereert. Deze mount units hebben vervolgens een WantedBy local-fs.target (of remote-fs.target als je ZFS encryptie gebruikt met remote keys). Waardoor deze ook al vroeg in de boot worden uitgevoerd.FireDrunk schreef op maandag 31 juli 2023 @ 10:45:
ZFS doet bij een reboot een `zfs mount -a`
De "klassieke" zfs-mount.service, die dan zfs mount -a doet bestaat wel nog. Maar deze wordt pas later in het boot proces uitgevoerd, en is dus niet (meer) nodig.
Ter voorbeeld zo'n gegenereerde mount unit file:
`--> cat /run/systemd/generator/home-robert.mount # Automatically generated by zfs-mount-generator [Unit] SourcePath=/etc/zfs/zfs-list.cache/rpool Documentation=man:zfs-mount-generator(8) Before=zfs-mount.service local-fs.target After= Wants= [Mount] Where=/home/robert What=rpool/home/robert Type=zfs Options=defaults,atime,relatime,dev,exec,rw,suid,nomand,zfsutil
Wat dan is gegeneerd op basis van:
`--> grep rpool/home/robert /etc/zfs/zfs-list.cache/rpool rpool/home/robert /home/robert on on on on on off on off - none - - - - - -
En dan ook maar een linkje naar de man page van het script: https://openzfs.github.io...fs-mount-generator.8.html
Je hebt helemaal gelijk, mijn `zfs mount -a` was een sterke vereenvoudiging van het procesRobertMe schreef op maandag 31 juli 2023 @ 11:32:
[...]
Dat ligt nogal aan de hoe en wat. ZFS levert onder Linux ook systemd generators mee. Daarbij wordt een situatie gecreëerd dat bij het "beheer" van de datasets een ZED script wordt uitgevoerd dat (IIRC per zpool) een file genereert met alle datasets, mountpoints, en relevante (overige) properties. Tijdens boot draait vervolgens de systemd generator voor ZFS die dynamisch allemaal .mount units genereert. Deze mount units hebben vervolgens een WantedBy local-fs.target (of remote-fs.target als je ZFS encryptie gebruikt met remote keys). Waardoor deze ook al vroeg in de boot worden uitgevoerd.
De "klassieke" zfs-mount.service, die dan zfs mount -a doet bestaat wel nog. Maar deze wordt pas later in het boot proces uitgevoerd, en is dus niet (meer) nodig.
Ter voorbeeld zo'n gegenereerde mount unit file:
`--> cat /run/systemd/generator/home-robert.mount # Automatically generated by zfs-mount-generator [Unit] SourcePath=/etc/zfs/zfs-list.cache/rpool Documentation=man:zfs-mount-generator(8) Before=zfs-mount.service local-fs.target After= Wants= [Mount] Where=/home/robert What=rpool/home/robert Type=zfs Options=defaults,atime,relatime,dev,exec,rw,suid,nomand,zfsutil
Wat dan is gegeneerd op basis van:
`--> grep rpool/home/robert /etc/zfs/zfs-list.cache/rpool rpool/home/robert /home/robert on on on on on off on off - none - - - - - -
En dan ook maar een linkje naar de man page van het script: https://openzfs.github.io...fs-mount-generator.8.html
Dat is met de jaren sterk verbeterd in ZoL gelukkig.
Even niets...
Ik heb altijd mijn disks gepartitioneerd volgens de guide van @FireDrunk , helaas is die recent verdwenen door het verdwijnen van Tweakblogs, dus voor de volledigheid geef ik die hier ook nog even mee via waybackmachine:
"Probleem" of gevolg van mijn risicobeperking was dat ik bij mijn uitbreiding van 12TB naar 20TB ook op de 20TB disks partities had aangemaakt die even groot waren als de partities op de 12TB, zodat als er toch problemen waren ik niet vast zat en snel 1 oude disk terug in dienst kon stellen.De meest aan mij gestelde vraag de afgelopen tijd is wel: "Hoe richt ik mijn schijven nou in onder Linux als ik ZFS wil gebruiken?".
Dat is eigenlijk heel simpel: met gdisk!
Gdisk is eigenlijk fdisk, maar dan (fatsoenlijk) geschikt voor GPT partities.
apt-get install gdisk
Let op: SOMMIGE WIJZIGINGEN MET GDISK ZIJN DIRECT VAN TOEPASSING, EN HOEF JE DUS NIET MEER TE BEVESTIGEN, LET DUS OP DAT JE DE GOEDE DISK KIEST!
Je kan een disk gewoon aanspreken via zijn standaard linux Identifier.
gdisk /dev/sdb
Kies optie O voor nieuwe GPT layout.
Kies optie N voor een nieuwe partitie.
Partition Number
Druk op [enter] omdat we het standaard Partitienummer willen.
First Sector
Kies hier voor +2M, dat zorgt er voor dat je een offset hebt van 2MB wat eigenlijk altijd goed is om een fatsoenlijke alignment te krijgen.
Last Sector
Je kan hier kiezen wat je wil, voor SSD's kan je hier iets als +50G kiezen, voor hardeschijven kan je hier iets als +3.5T kiezen, het is maar net wat je zelf wil.
Partition Type:
We kiezen hier voor FreeBSD ZFS, omdat Linux geen eigen ZFS partitie ID heeft, (en dat is ook helemaal niet nodig, want ZFSonLinux herkend gewoon FreeBSD ZFS partities). Het Type ID is dan dus: a504.
Als het goed is kom je nu weer terug in het hoofdmenu, en kan je met p zien dat je schijf een partitie bevat!
Nu gaan we deze een GPT naam geven zodat deze straks herkenbaar is in je Operating System en ZFS.
Kies in het menu voor optie c en kies de partitie die je wil hernoemen (of een nieuwe naam wil geven) als je maar 1 partitie hebt, neemt gdisk aan dat je die partitie bedoeld en zal je geen keuze meer geven.
Mijn advies: Zet het serienummer van de schijf (of een gedeelte er van) in de naam! Op die manier weet je precies welke schijf er kapot is als je ooit problemen ondervindt!
Je kan het serienummer van een schijf achterhalen met het commando:
hdparm -i /dev/sda | grep SerialNo
Je krijgt dan het type van de schijf, de firmwareversie en het serienummer.
root@NAS:~# hdparm -i /dev/sda | grep SerialNo
Model=ST4000DM000-1F2168, FwRev=CC51, SerialNo=Z3009899
Als voorbeeld zou je dus: DATAPOOL-A-Z3009899 als naam kunnen gebruiken.
Druk op enter om de naam te bevestigen.
Kies daarna voor w om de wijzigingen door te voeren op de schijf.
Herhaal bovenstaande stappen tot je alle partities hebt aangemaakt.
Om nu een mooie pool te maken met ZFS kunnen we de partities benaderen via hun naam!
En wel zo:
zpool create datapool raidz /dev/disk/by-partlabel/DATAPOOL-A-Z3009899 /dev/disk/by-partlabel/DATAPOOL-B-Z3009891 /dev/disk/by-partlabel/DATAPOOL-C-Z3009892 /dev/disk/by-partlabel/DATAPOOL-D-Z3009893 /dev/disk/by-partlabel/DATAPOOL-E-Z3009894
Als je het op deze manier doet zie je in zpool status -v
pool: datapool
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
datapool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
datapool-A-Z3009899 ONLINE 0 0 0
datapool-B-Z3009891 ONLINE 0 0 0
datapool-C-Z3009892 ONLINE 0 0 0
datapool-D-Z3009893 ONLINE 0 0 0
datapool-E-Z3009894 ONLINE 0 0 0
errors: No known data errors
En is je ZFS pool klaar voor gebruik!
Ik had niet veel zin om manueel partities te zitten gaan aanpassen dus was op zoek naar een eenvoudig commando/manier om de partities te resizen. Via Gparted was geen oplossing (kan geen ZFS partities resizen) maar uiteindelijk bleed parted wel de oplossing te bieden en dan zelfs nog heel eenvoudig:
parted /dev/sde resizepart 1 100%
Bij deze wel even een bevestiging dat bij het manueel aanpassen van partitie grootte middels bijv. fdisk het ook gewoon werktHyperBart schreef op donderdag 3 augustus 2023 @ 10:39:
Ik had niet veel zin om manueel partities te zitten gaan aanpassen dus was op zoek naar een eenvoudig commando/manier om de partities te resizen.
Sinds de 2 dagen regel reageer ik hier niet meer
Het kan beter zijn om aan het eind van de harddisk wat ruimte te reserveren (bijv. 10GiB) door de paritite iets kleiner te maken. Je kan dan later nog een harddisk aan je pool toevoegen, die net iets kleiner is (bijv. 4GB kleiner).
Met sgdisk (of sfdisk) kan je het aanmaken van een partitie evt. in een scriptje zetten (als documentatie), zodat je dat niet handmatig hoef te doen.
[ Voor 3% gewijzigd door willemw12 op 03-08-2023 12:26 ]
In 2020 3x 8TB in een RAIDZ pool gezet. In 2021 een vervangen door een 14TB model, in 2022 eentje vervangen door een 18TB model. Met de prime days nu vergeten te kijken of ze weer in de aanbieding waren.
Dan kan ik en geen last hebben van "allemaal uit dezelfde batch en hetzelfde gebruikt" en beetje bij beetje zou uiteindelijk de pool kunnen resizen (als laatste 8TB vervangen is, door dan waarschijnlijk 18TB+, komt er netto dus ~12TB bij), en ik hoef niet weer alles in een keer te vervangen.
En v.w.b. dezelfde (grote) schijven die toch verschillen: ik meen eens gelezen te hebben dat dat of een broodje aap was en ze wel altijd identieke aantal sectoren hebben, en dat ZFS, als je hele HDD opgeeft, daar ook al rekening mee houd (aangezien die alsnog de HDD formateerd en dan ook net iets minder sectoren gebruikt).
10GB ruimte vrijhouden lijkt mij in ieder geval sowieso zwaar overdreven. Áls er al een afwijking is zal dat in de orde van KBs of MBs zijn. Tenzij je bewust iets anders koopt (Pricewatch staan IIRC SSDs in van 2TB en 1,98TB. Dan weet je natuurlijk dat het verschil er is. Maar twee verschillende die beiden als 2TB verkocht worden zal niet een enkele GBs kleiner bij zijn. En die 10GB ongebruikte ruimte helpt in dit geval ook niet).
Misschien reserveert ZFS (nu wel) voldoende ruimte op een harddisk voor alle gevallen (variaties tussen harddisks), wanneer je de hele schijf aan ZFS geeft i.p.v. een partitie. Als dat zo is, dan is dat misschien de beste optie.
Mijn ervaring:
ZFS op partities, niet op hele schijven. 8TB harddisks. 2GiB reserve aan het einde van de partitietabel.
De details weet ik niet meer. Misschien tijdens het creeren van een pool of tijdens experimenteren met ZFS maar 1 harddisk was net te klein. Met meer reserve (10GiB) op de andere schijf/schijven was de harddisk niet te klein. (De afwijking zal wel ongeveer 4GiB zijn geweest.)
Voor een 20TB harddisk zou ik zelf meer reserveren: 20 GiB.
[ Voor 4% gewijzigd door willemw12 op 03-08-2023 17:46 ]
Dat is inmiddels al opgelost. Er is volgens mij al heel wat jaren een standaard tussen de fabrikanten dat ze dezelfde grootte disks hebben om uitwisseling van disks te versimpelen.willemw12 schreef op donderdag 3 augustus 2023 @ 11:59:
Harddisken van dezelfde grootte (bijv. 20TB) kunnen onderling in grootte een beetje verschillen.
Het kan beter zijn om aan het eind van de harddisk wat ruimte te reserveren (bijv. 10GiB) door de paritite iets kleiner te maken. Je kan dan later nog een harddisk aan je pool toevoegen, die net iets kleiner is (bijv. 4GB kleiner).
Met sgdisk (of sfdisk) kan je het aanmaken van een partitie evt. in een scriptje zetten (als documentatie), zodat je dat niet handmatig hoef te doen.
Voor zover ik weet doen alle grote vendors daar aan mee.
Even niets...
Ikzelf heb ~1,5 jaar terug een herinstallatie gedaan en daarbij ZFS on root toegepast. Maar nu ik vandaag een nieuw systeem (/onderdelen) krijg denk ik dat ik maar weer van ZFS af ga zien. Ik maak eigenlijk geen gebruik van de ZFS features zoals scrubbing, quotas, reservations, send & receive, .... Waarbij er eigenlijk dus ook geen belangrijke zaken op het systeem staan (documenten etc gaan via SyncThing naar twee systemen, waar wel ZFS op gebruikt wordt incl. snapshots, send & receive etc) en de data integriteit voordelen van ZFS eigenlijk niet nodig zijn.
Nu maakt dat an zich allemaal natuurlijk niet uit, zolang... het werkt. En ik gebruik Arch Linux. Daarbij zit ZFS echter niet in de officiële repos. Nu is er wel een 3th party repo voor, met precompiled packages (IIRC ook van een Arch core member), alleen is Arch dus ook rolling release en bleeding edge. Gevolg daarvan is dat de precompiled packages sowieso hard gekoppeld zijn aan Linux versies/packages en daardoor (zeer regelmatig) systeem updates niet mogelijk zijn (doordat een update van de kernel niet kan door de harde eependency van ZFS op de huidige kernel versie). Maar daarnaast is een switch naar het zfs-dkms package ook lastig doordat Arch bleeding edge is. Bij bv de 6.13 kernel update heeft het nog weken geduurd voordat er uberhaupt een upstream ZFS versie was die ook compatible was met 6.13. Dus met DKMS loop ik dan een nog groter risico: kernel updates waarna het DKMS proces faalt en dus een niet werkend systeem als gevolg.
Oplossing daarvoor zou dan wel kunnen zijn het switchen naar de LTS kernel (minder frequent updates en wat ouder dus ook compatible met ZFS upstream). Maar in combinatie met dat ik geen ZFS features gebruik neig ik toch meer naar weer gewoon teruggaan naar ext4.
Op het systeem (de "ZFS send" kant) met de ZFS data pool en de backups van andere systemen:
- root op Ext4. Misschien ga ik later over op Btrfs (single disk) on root, niet naar ZFS on root.
- ZFS is geïnstalleerd met DKMS voor de normale kernel en de LTS kernel.
Op andere "kleine" systemen (laptop, Raspberry Pi, ...):
- geen ZFS.
- root op Btrfs (single disk). Voordelen t.o.v. Ext4: file checksums, lokaal meerdere snapshots, snapshots maken is "instant", Btrfs send/receive is, bij mij, vele malen sneller dan rsync.
- SyncThing synct enkele folders tussen de systemen en tussen Android.
- Backups: Btrfs send/receive van alle subvolumes (inclusief de SyncThing folders) en vervolgens rsync van de laatst ontvangen snapshots naar de ZFS (data) pool.
De enige fijne functie die voor een workstation handig kan zijn is snapshots maken voordat je een 'major' upgrade gaat doen. Dan kan je terug als het mis gaat.
Maar aan de andere kant, hoe vaak gaan die dingen nog echt mis. En het is misschien ook juist wel leuk om dan het probleem op te zoeken en te fixen.
In mijn server ook geen ZFS on Root, ik draai 99% in Docker, en kan na een verse installatie een `docker stack deploy -c <file>.yaml` doen om mijn hele server weer in de lucht te krijgen.
Die Docker files staan op mijn pool, dus raak ik ook niet zomaar kwijt.
Enige wat ik even met de hand moet doen is NFS en Samba (want dat draait niet in Docker).
Even niets...
Werkt op zich prima, maar het vergt wel een beetje discipline. Heeft iemand nog een goede tip om zfs snapshots automatisch te backuppen?
[ Voor 10% gewijzigd door willemw12 op 05-08-2023 12:13 ]
Ik gebruik sanoid om automatisch backups te maken, en @HyperBart haalt ze hier via SSH & ZFS receive automatisch op. Volgens mij ging dat ook met sanoid, maar ik kan het mis hebben.GioStyle schreef op zaterdag 5 augustus 2023 @ 12:00:
Ik gebruik nu op mijn server zfs-auto-snapshot, deze snapshots stuur ik handmatig door middel van zfs send and receive naar een andere ssd op de server, via ssh naar een tweede server en om de zoveel tijd ook nog eens naar een externe harde schijf.
Werkt op zich prima, maar het vergt wel een beetje discipline. Heeft iemand nog een goede tip om zfs snapshots automatisch te backuppen?
Even niets...
Syncoid is de ZFS send/receive tool voor Sanoid snapshots.
Even niets...
Sanoid doet automatische snapshotting, dus dat is je vervanger voor ZFS auto snapshot.GioStyle schreef op zaterdag 5 augustus 2023 @ 14:27:
Sanoid sluit inderdaad goed bij mijn wensen aan. Ik heb momenteel zfs-auto-snapshot uitgezet/verwijderd en Sanoid ingesteld. Even de komende dagen kijken hoe dat uitpakt...
Syncoid vult het gat op wat je nu nog manueel doet: snapshotjes overpompen.
En. Dat. Werkt. Magnifiek.
Die setup die je beschrijft is zelfs bijna een van de demo cases dacht ik. Alleen de externe hdd detectie weet ik niet.
De server in het tuinhuis/schuur gaat 45 min per dag aan via een geschakelde klok, doet zijn ding met least privilege en zfs permissions, schrijft een logje weg naar de server die gebackupped wordt en sluit zich netjes af. Als er iets is gooi ik het door naar een Telegram script.
Echt boilerplate sequentieel scriptje, ik ben geen coder en ik ben geen held in Bash maar een paar ifjes en datjes kan ik wel 🫣
[ Voor 35% gewijzigd door HyperBart op 05-08-2023 15:02 ]
Jep, het is idd prachtig.HyperBart schreef op zaterdag 5 augustus 2023 @ 14:53:
[...]
Syncoid vult het gat op wat je nu nog manueel doet: snapshotjes overpompen.
En. Dat. Werkt. Magnifiek.
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.
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:
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:
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 moest wel een kleine aanpassing doen bij de smb shares. Omdat sanoid gebruik maakt van colon (dubbele puntjes) in de naam van de snapshots werkten de schaduwkopies via Windows niet meer. Met een omweg is het nu weer werkend. Bij elke smb share waar ik schaduwkopies beschikbaar wil hebben via Windows heb ik het volgende gewijzigd:
1
2
3
4
5
6
7
8
| vfs objects = shadow_copy2, catia catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6 shadow:snapdir = .zfs/snapshot shadow:sort = desc shadow:format = _%Y-%m-%d_%H:%M:%S shadow:snapprefix = ^autosnap shadow:delimiter = _ shadow:localtime = no |
Nu ben ik verder aan het kijken naar syncoid. Ook dat werkt goed, precies wat ik in gedachten heb. Alleen hoe kan ik dit op een nette manier automatiseren?
Ik wil het commando:
1
| 15 6 * * * syncoid --no-sync-snap rpool/documents dpool/backups/documents |
toevoegen aan crontab -e.
Ik wil eigenlijk nog wel een specifieke user aanmaken voor deze automatisering en de juiste rechten (zfs allow) toekennen aan deze user, zodat het niet onder root gedraaid hoeft te worden. Is dit een nette manier? Of kan ik dit beter anders aanpakken?
Als jouw systeem / OS systemd gebruikt kun je er waarschijnlijk beter een systemd service van maken die je via een systemd timer periodiek laat uitvoeren. Timers is dan het cronjob equivalent. service is het ding dat een of meerdere commando's uitvoert waarbij je precies de omgeving kunt "regelen", waaronder ook de user waaronder de commando's worden uitgevoerd.GioStyle schreef op zondag 6 augustus 2023 @ 19:47:
Ik wil eigenlijk nog wel een specifieke user aanmaken voor deze automatisering en de juiste rechten (zfs allow) toekennen aan deze user, zodat het niet onder root gedraaid hoeft te worden. Is dit een nette manier? Of kan ik dit beter anders aanpakken?
IIRC heeft zelfs iemand een voorbeeld van een shell script + systemd service (die het script aanroept) + systemd timer geplaatst hier afgelopen dagen ergens?
Dat voorbeeld staat trouwens exact boven jouw postGioStyle schreef op zondag 6 augustus 2023 @ 21:25:
@RobertMe
Thanks, nog meer leesvoer om door te nemen. Ik ga even terug naar de tekentafel.
Ja, ik zie het, maar soms is het even abracadabra voor mij. Het zag er voor mij te moeilijk uit, maar nu begint het langzaam te dagen.RobertMe schreef op zondag 6 augustus 2023 @ 21:33:
[...]
Dat voorbeeld staat trouwens exact boven jouw post"Hoe laat ik syncoid periodiek uitvoeren?" => zie de post boven de vraag
Sinds de 2 dagen regel reageer ik hier niet meer
Nouja, gezien @GioStyle het rootless wilt draaien... Uiteraard kan cron ook onder een andere user het commando uitvoeren. Maar als dan toch gepuzzeld moet worden daarop kan het zijstapje naar systemd stuff ook wel erbijCurlyMo schreef op zondag 6 augustus 2023 @ 21:56:
Om de pret niet te drukken zou ik vooral uit gaan van een "if it works it works". Bij mij staat ook alles gewoon in cronjobs. Dat werkt.
Alles hier in cron hoor, zonder root.RobertMe schreef op zondag 6 augustus 2023 @ 22:03:
[...]
Nouja, gezien @GioStyle het rootless wilt draaien... Uiteraard kan cron ook onder een andere user het commando uitvoeren. Maar als dan toch gepuzzeld moet worden daarop kan het zijstapje naar systemd stuff ook wel erbijScheelt ook weer het draaien van extra software en potentieel dus iets zuiniger
Gezien GioStyle ook in zuinige server topic rond hangt.
Heb wel wat permissions moeten geven aan de user die ik er voor aangemaakt had.
Ik vind het hier thuis echt een heel elegante oplossing: offline automated backup, van de stroom af en alles met unattended upgrades wordt gepatched.
Ik kan nu met een gerust hart zeggen: ik heb backups op orde.
Al moeten we nog altijd eens een restore-test doen he @FireDrunk
Dat is het nadeel van een 'pickup'-ssh user. Je kan niet remote weer bij je backup.
Even niets...
Ik schreef ook niet dat het niet kon. Alleen zou het voor mij (meer) uitzoek werk zijn. Bij systemd weet ik dat ik maar User=pietje toe hoef te voegen in de service unit file. En als GioStyle nog onbekend is / zou zijn met cron en met systemd (hiervoor) dan lijkt mij dat ee opgedane kennis v.w.b. veel breder toepasbaar is (immers kun je met services ook gewoon software starten tijdens boot ("maar dat kan cron ook met @reboot"), dependencies opgeven om een start volgorde te hebben (en dat kan cron niet)).HyperBart schreef op maandag 7 augustus 2023 @ 09:43:
[...]
Alles hier in cron hoor, zonder root.
Heb wel wat permissions moeten geven aan de user die ik er voor aangemaakt had.
Is het trouwens uberhaupt niet raar dat je een cron gebruikt om iets uit te voeren op een systeem dat altijd uit staat?
Overigens is leuke feature van systemd timers die cron AFAIK niet dat timers persistent kunnen zijn. Dan slaat die de volgende runtime echt op en als het systeem opstart worden de (persistent) timers die die in het verleden uitgevoerd hadden moeten worden alsnog uitgevoerd. Dus bv een timer met "elke maandag om 10 uur" en dat dan net het systeem uit staat wordt netjes ingehaald de volgende boot. Bij cron kan dat AFAIK niet en zou die het pas een week later gebeuren, of dus dubbele regel met een keer een @reboot, maar dan wordt het (bij boots) dus extra uitgevoerd terwijl het niet nodig is.
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:
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.
Als je later die data overschreven hebt, is er geen 'actieve' referentie meer naar die data, anders dan dat snapshot.
Dat is wat mijn gevoel zegt, maar zeker weten is lastig.
Even niets...
Gezien het format blijkbaar [dataset / snapshot]:[inode / filename] is, lijkt mij dat die met 0x0 juist naar iets anders dan een (oude) file verwijst? Ik zou dan eerder verwachten dat 0x0 een plekje in de metadata is.FireDrunk schreef op zondag 13 augustus 2023 @ 13:04:
In theorie kan de data in een 'sector' zitten die alleen nog relevant is in dat snapshot.
Als je later die data overschreven hebt, is er geen 'actieve' referentie meer naar die data, anders dan dat snapshot.
Dat is wat mijn gevoel zegt, maar zeker weten is lastig.
Overigens zou ik als het goed is wel een offsite backup hiervan moeten hebben. Naast dat hier alleen data in staat die via SyncThing gevuld wordt en de bron (PC/laptop) zowel rechtstreeks naar dit "servertje" schrijft als naar mijn oude "server" die nu alleen als nas dienst doet. Dus ook buiten ZFS snapshots en send & receive staat de data op twee plekken. Dus daar ook maar eens in neuzen.
Jammer dat ZFS 2.2 nog niet uit is (/in RC en dus nog zeer zeker niet in Debian stable repos). Dan kon ik de corrective receive (mogelijk) proberen
Wat ik in de case at hand wellicht kan doen is het snapshot gewoon verwijderen en opnieuw scrubben (?). Daily snapshots bewaar ik sowieso niet lang. Als zonder dit snapshot de scrub op een ander (/snapshot van vandaag) begint te rammelen is er duidelijk meer aan de hand. Maar ik verwacht dat een (checksum) fout tijdens de scrub (onterecht) als permanent is aangemerkt en niet meer "cleared" for whatever reason. Ook gezien:
1
2
3
4
5
| Media and Data Integrity Errors: 0 Error Information Log Entries: 0 ... Error Information (NVMe Log 0x01, 16 of 64 entries) No Errors Logged |
Aldus smartctl. Anders had ik ook ergens wel iets in SMART verwacht.
Ik zou dat overigens wel een 'bugje' vinden omdat het natuurlijk netter is als hij de oude filename zou weergeven.
Jouw argument dat het metadata is, kan natuurlijk ook, maar ik zou verwachten dat het dan nog steeds te relateren is aan een file.
Of het zou een superblock moeten zijn, maar dat zou denk ik wat meer alarmbellen af moeten laten gaan...
Even niets...
1
2
| `--> sudo zfs send rpool/user/<knip>@pyznap_2023-08-12_00:00:02_daily | cat > /dev/null warning: cannot send 'rpool/user/<knip>@pyznap_2023-08-12_00:00:02_daily': Input/output error |
Maar er overheen springen werkt wel:
1
| `--> sudo zfs send -i rpool/user/<knip>@pyznap_2023-08-11_00:00:02_daily rpool/user/<knip>@pyznap_2023-08-13_00:00:02_daily | cat > /dev/nul |
| cat > /dev/null omdat die anders een invalid argument error geeft. Rechtstreeks outputten naar /dev/null mag niet waarbij meteen deze workaround als suggestie wordt gegeven.
En dit op basis van dat offsite ook de snapshots van deze dataset missen sinds het bewuste moment / snapshot dus. ZFS krijgt het snapshot dus echt niet meer verwerkt. En daardoor heb ik offsite geen backups meer sinds dat moment waarvan ik niet op de hoogte ben gebracht

Dus @FireDrunk, ik doelde met metadata op snapshot metadata, wat dan dus de door jouw genoemde superblocks zijn? En daar lijkt dus ook daadwerkelijk wat te rammelen.
1
2
3
| errors: Permanent errors have been detected in the following files: <0x7c6b>:<0x0> |

Dat wordt zeker de hele pool "dumpen" naar een file / andere drive, en op deze drive een nieuwe pool maken en de hele shebang weer terug zetten vanaf de file. * RobertMe is not amused.
Je mag het snapshot in kwestie niet verwijderen?
Even niets...
Just to be sure, gezien waarschijnlijk gekruist: RobertMe in "Het grote ZFS topic"FireDrunk schreef op zondag 13 augustus 2023 @ 14:07:
Als je een realtime input/output error krijgt, kan ZFS het intern ook niet oplossen, dat is wel heel gek, want alle metadata zou redundant moeten zijn
Je mag het snapshot in kwestie niet verwijderen?
Ah ja, mogelijk kan je die wel `zpool clear`-en, waarna een scrub geen fouten meer zou moeten geven (hoop ik).RobertMe schreef op zondag 13 augustus 2023 @ 14:08:
[...]
Just to be sure, gezien waarschijnlijk gekruist: RobertMe in "Het grote ZFS topic"
Even niets...
FireDrunk schreef op zondag 13 augustus 2023 @ 14:10:
[...]
Ah ja, mogelijk kan je die wel `zpool clear`-en, waarna een scrub geen fouten meer zou moeten geven (hoop ik).
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.
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.