FreeBSD ZFS-on-root Partition verkleinern

lockna

Member
Hallo!
Mir ist ein kleines Missgeschick passiert:o
Soweit nichts schlimmes passiert.
Zur Ausgangssituation:
Ich habe folgende Festplatten in meinem PC verbaut.
2 TB NVMe (EFI Boot Partition und der Rest Windows)
1 TB NVMe (NTFS formatiert, Datengrab)
2 TB SATA SSD (FreeBSD-ZFS und FreeBSD-Swap)
1 TB SATA SSD (NTFS, Games)
500GB SSD (Linux und Windows Games)

Windows, FreeBSD und Linux teilen sich allesamt die EFI Boot Partition.
Funktioniert soweit super.
Ich hatte bei der 2 TB SATA wo ich FreeBSD draufhab, vorher die Partition für zfs auf 128GB.
Da es langsam eng wurde (also hatte noch Spatz, aber 70% gefüllt) dachte ich mir, ich erhöhe das mal auf 256 oder 512.
Leider hab ich beim gpart resize command die Option -s vergessen und wie man sich denken kann, hat dann FreeBSD sich die ganzen 2TB geschnappt. (bis auf die paar gb von swap halt).

Nun würde ich das gerne auch wieder verkleinern, aber das funktioniert ja mit ZFS nicht ganz so einfach.
Ich hab mich eingelesen, wollte aber nochmal checken ob diese Schritte die richtigen sind, die ich mir da vorgenommen habe.

Mein Vorgang würde wie folgt aussehen:
zfs snap zroot/ROOT@today ein Snapshot vom pool/dataset machen

Daraufhin würde ich den snapshot in eine File schreiben und mit gzip compressen
zfs send -R zroot/ROOT@today > gzip /tmp/backup.gz

Dann halt den zpool destroyen, die Partition resizen und einen neuen zpool erstellen.
Dann halt den snapshot von der Datei restoren
zcat /tmp/backup.gz | zfs recv -F zroot/ROOT@backup

und auf ein rollback zu diesen snapshot machen

zfs rollback zroot/ROOT@backup

Würde das so funktionieren?

Ich müsste das ganze von nem Bootstick praktisch aus machen, richtig? Weil im single-user mode bringt es mir ja auch nichts, weil ich ja auf der installation bin und wenn ich den zpool destroye ist das blöd wenn ich da drauf bin.
Also müsste ich halt in den Boot Stick und halt ne Linux Partition mounten auf /mnt, wo ich dann meine snapshot file ablegen kann.
Wenn ich den zpool dann wieder erstellt habe, einfach wieder mounten und den snapshot runterziehen.

Sollte doch eigentlich funktionieren, oder nicht?

LG
 
Wenn zroot/ROOT das einzige Dataset auf den Pool ist müsste das klappen. Ich bin mir halt gerade nicht sicher, ob beim booten nach poolname oder nach IDs vorgegangen wird, bei letzterem müsstest du diese anpassen. Vielleicht weiß da noch jemand was dazu. Ach und nimm zstd, gzip ist für Dinosaurier. Das rollback am schluss bewirkt eigentlich auch nichts, aber schadet auch nicht.
 
Wenn zroot/ROOT das einzige Dataset auf den Pool ist müsste das klappen. Ich bin mir halt gerade nicht sicher, ob beim booten nach poolname oder nach IDs vorgegangen wird, bei letzterem müsstest du diese anpassen. Vielleicht weiß da noch jemand was dazu. Ach und nimm zstd, gzip ist für Dinosaurier. Das rollback am schluss bewirkt eigentlich auch nichts, aber schadet auch nicht.
ist das einzige Dataset auf den Pool.
Das rollback brauch ich doch, oder nicht?
Mit zfs recv habe ich doch nur den Snapshot praktisch reinkopiert, aber mein Stand noch nicht auf diesen Snapshot gesetzt, oder?
 
mE macht er das automatisch, da der aktuelle Stand im Filesystem nicht älter als der letzte Snapshot sein kann. Aber kannts ja dann sehen :)
 
Zurück
Oben