btrfs - Jedi-Ritter System - per script ein snapshot vor dem Update

Was ist eigentlich mit dem /@ dem root-System?
das wird später nicht mehr gebraucht, denn Du bootest immer mit dem snapshot TESTING (was ja auch ein subvolume darstellt und unspünglich eine exakte Kopie von /@ war)
Du kannst das subvolume /@ so lassen oder aber auch später löschen, wenn Du Dich dann besser fühlst.
Aber ERST MUSS alles andere laufen !!!
 
Warum ändert sich die Subvolume-ID durch einen Snapshot?

Warum haben wir nicht gleich in das, ein Subvolume installiert?


Basissystem für die Snapshots:

Code:
btrfs subvolume list /
ID 256 gen 94 top level 5 path @
ID 258 gen 7 top level 5 path @home
ID 259 gen 54 top level 5 path @pkg
ID 260 gen 9 top level 5 path @snapshots
ID 262 gen 45 top level 256 path var/lib/portables
ID 263 gen 46 top level 256 path var/lib/machine

Welche Auswirkungen hat das "level"?
Level ID 5, was ist das genau?
 
Zuletzt bearbeitet:
In ./snapshots/TESTING, ./snapshots/STABLE und ./snapshots/OLDSTABLE, werden nur die Änderungen gespeichert?
Nein, es sind komplette "Kopieen" des Originals zu dem Erstellzeitpunkt also auch vollständige Systeme mit denen man booten kann. Darum kannst Du ja auch bei Bedarf mit STABLE, OLDSTABLE oder TESTING booten. Allerdings nur, wenn Du auch 3 passende Versionen von vmlinuz und initramfs in /boot vorhältst. das macht aber später alles das Update-Script - Du musst es nur 1x manuell machen
Der Erstellzeitpunkt macht hier den Unterschied aus.

- - - Beitrag zusammengeführt - - -

Warum ändert sich die subvolume-ID durch einen Snapshot?
weil jeder Snapshot einen andere ID hat mit Bezug auf seinen parent. Das ist BTRFS-Urschleim und gehört hier nicht hin sondern studiert KLICK! KLICK! KLICK!

- - - Beitrag zusammengeführt - - -

Welche Auswirkungen hat das "level"?
Level ID 5, was ist das genau?
Das brauchste Du für die Installation nach meinem Leitfaden nicht wissen, also verplemper damit nicht unnötig Zeit. Du kannst Dich später darüber im Netz informieren oder das Video inkl. Ton nochmal schauen (ab Timecode 10:15), da wird verbal alles erklärt.
 
Zuletzt bearbeitet:
Das Gesamtkonzept erinnert mich irgendwie an LXC oder Docker.

https://linuxcontainers.org/

Interessant wird es bezüglich der Sicherheit, wenn man die Snapshots als readonly auslegt.
 
Zuletzt bearbeitet:
Timeshift

https://github.com/teejee2008/timeshift

In BTRFS mode, snapshots are taken using the in-built features of the BTRFS filesystem. BTRFS snapshots are supported only on BTRFS systems having an Ubuntu-type subvolume layout (with @ and @home subvolumes).

Vielleicht doch besser als die Youtuber Script Lösung?

https://blog.cscholz.io/fedora-btrfs-move-to-subvolume/
Von Christian Scholz am 5. Mai 2019
Debian 10 Beta: Der Installer bietet keinerlei Möglichkeit Subvolumes zu konfigurieren. Nach der Auswahl des Dateisystems BTRFS werden diese automatisch im Hintergrund angelegt.
 
Zuletzt bearbeitet:
Vielleicht doch besser als die Youtuber Script Lösung?
das liegt im Auge des Betrachters.
ICH brauche kein zusätzliches tool mit seinen Config-Dateien die ich durchackern muss, nur um das zu erreichen, was mein Update-Script mit EINEM Doppelklick vom Desktop aus macht.
Und wie siehts mit einem Rollback mit anderen Systemen wie timeshift oder snapper aus ? Bei meinem System ist das nur 1 Doppelklick und ein sudo-Password.

Ich denke zu diesem Thema - wie ich es gemacht habe, ist hier schon alles geschrieben/verlinkt worden.
Mach es so oder wie Du meinst - es gibt viele Wege und jeder hat seinen Lieblingsweg.

- - - Beitrag zusammengeführt - - -

Von Christian Scholz am 5. Mai 2019
Debian 10 Beta: Der Installer bietet keinerlei Möglichkeit Subvolumes zu konfigurieren. Nach der Auswahl des Dateisystems BTRFS werden diese automatisch im Hintergrund angelegt.
bei dem Wort "automatisch" gehen bei mir die Nackenhaare hoch. Ich will sowas nicht, denn ich habe gern die Kontolle über mein System - darum bin ich auch bei arch-linux gelandet.
U.a. auch weil ich keinen Bock habe, alle 5 Jahre mein System neu aufzusetzen, wie es bei allen NichtRollingRelease-Distris der Fall ist ....
 
Zuletzt bearbeitet:
OT

Hallo GI-Joe,

und ich dachte schon ich bin nicht mehr zeitgemäß.

https://debianforum.de/forum/viewtopic.php?t=170446


Was er zu sagen hat würde ich vielleicht gern lesen, mit meiner eigenen variablen Geschwindigkeit (Grundsätzliches überfliegen weil bekannt, Arch-spezifisches etwas genauer, langsamer und vielleicht mehrfach), aber in monoton-linearer Videoform kann ich mir das beim besten Willen nicht antun.
Ich frage mich gerade ernsthaft, ob es Menschen gibt, die auf diese Weise wirklich einen Großteil ihrer Informationen aufnehmen.
Nach oben

Im großen und ganzen gibt das meine Meinung wieder.

Ich habe zwei Video runter geladen, den Inhalt nachgebaut, den Ton natürlich abgestellt und per Pfeiltaste den Film weiter gescrollt. Einige Highlights sind in den Filmen, aber viel Zeit geht beim schauen drauf.

Den Zeiteinsatz von mir bereue ich nicht, denn ich habe viel gelernt.

Das System ist witzig, ich werde damit vielleicht noch mal rumspielen.

@GI-Joe
Danke für deine Mühe und deinen Input.

MfG

xsid

- - - Beitrag zusammengeführt - - -

40_custom
https://pastebin.com/dmN9C5y8

Hinweise:
weil grub das so generiert hat und ich habe es so als Basis genommen.

Ersetze die UUID c8145201-c2bb-441c-ac4f-70e8784cacca mit der UUID DEINER Boot-Partition /dev/sda1
Ersetze die UUID c84c4a98-015c-4efa-afd8-937734c104d2 mit der UUID DEINER Root-BTRFS-Partition /dev/sda2

und checke nochmal die korrekt geschriebenen Filenamen deiner Files in /boot/

Für TESTING: vmlinuz-linux und initramfs-linux.img
Für STABLE: vmlinuz-linux-stable und initramfs-linux-stable.img
Für OLDSTABLE: vmlinuz-linux-oldstable und initramfs-linux-oldstabe.img

Hallo btrfs User,

eine eigene Partition ist erforderlich gewesen, weil

https://bugs.archlinux.org/task/23901

Description:

Grub2 won't boot from an lzo compressed btrfs root partition with no additional /boot partition.

Ob das 2019 auch noch so ist, weiß ich nicht.


Gute Anleitung, kein Youtube:

https://gist.github.com/mikroskeem/04ce5adcb63d6d20645a



Gi-Joe Beispiel /etc/grub.d/40_custom

https://pastebin.com/dmN9C5y8
 
Zuletzt bearbeitet:
Hallo btrfs User,

eine eigene Partition ist erforderlich gewesen, weil

https://bugs.archlinux.org/task/23901



Ob das 2019 auch noch so ist, weiß ich nicht.

Der Bug-Report ist fast 9 Jahre alt und seit fast 8 Jahren steht er auf "fixed" ;)

Oder, um es mit eigenen Erfahrungen zu bereichern: Ich habe mein Ubuntu schon vor 5 Jahren von einer LZO-komprimierten BTRFS-Partition gebootet, ohne Probleme. :)
 
Schau dir das mal an,

https://thinkpad-forum.de/threads/2...r-script-ein-snapshot-vor-dem-Update-Nov-2019

Handwerkszeug, Scripte, #50

https://nopaste.linux-dev.org/?1277171

Du wirst es dann sehen, es findet ein verschieben, umbenennen der Kernel statt.

Schade, dass so ein System kein Standardsystem ist, bzw. sich noch nicht richtig durchgesetzt hat.

Bei einem normalem System kann auf die /dev/sda1 /boot verzichten, Isoboot funktionierte bei mir jedoch nicht.

Soweit ich recherchiert habe geht mir OpenSUSE mit btrfs Snapper doch ein wenig zu weit.
Was jemand mit den vielen Snapshots?

Kann man einen Kernel Nummer erkennen, wenn dieser einen anderen Namen hat, wenn ja, wie?
 
Zuletzt bearbeitet:
Schau dir das mal an,

https://thinkpad-forum.de/threads/2...r-script-ein-snapshot-vor-dem-Update-Nov-2019

Handwerkszeug, Scripte, #50

https://nopaste.linux-dev.org/?1277171

Du wirst es dann sehen, es findet ein verschieben, umbenennen der Kernel statt.

Ahh, danke. Ja, wenn man nochmal darüber nachdenkt, ergibt es Sinn, dass das schwierig wird... Da die Snapshots nicht Read-only sind, geht es vermutlich auch ohne, aber nicht auf die dort beschriebene Weise. Und mein Arbeitstag war gerade zu lang, als dass mir noch Ideen kommen, was für Nachteile das sonst haben könnte, wenn man die Kernel-Umbenennungen/Verschiebungen innerhalb der Snapshots statt auf der Boot-Partition macht. ^^

Schade, dass so ein System kein Standardsystem ist, bzw. sich noch nicht richtig durchgesetzt hat.
Ja, btrfs bringt alles mit, was man dafür braucht. Mit wenig Magie kann man sich so seine gesnapshotteten "working copies" erstellen und bei Problemen einfach den letzten Stand booten. Aber Arch bringt keinen Automatismus dafür mit. Ubuntu auch nicht wirklich. Unter Suse Linux gibt es AFAIK eine ganz gut integrierte Lösung mit dem Tool "Snapper", inkl. booten älterer Snapshots mit "grub2-snapper-plugin". Das Tool macht aber schon wieder sehr viel Magie für das bisschen, was für die hier angesprochene Lösung gebraucht wird. Theoretisch gibt es Snapper auch für andere Systeme, ich hab's mal unter Ubuntu probiert, aber bootfähige Snaphots hab' ich nicht hinbekommen und der Rest war am Ende viel komplizierter, als einfach so Snapshots zu erstellen (und auf die Bootfähigkeit der Snapshots zu verzichten).

Bei einem normalem System kann auf die /dev/sda1 /boot verzichten, Isoboot funktionierte bei mir jedoch nicht.
Ok, danke für den Test, ob Isoboot dann noch geht...

Soweit ich recherchiert habe geht mir OpenSUSE mit btrfs Snapper doch ein wenig zu weit.
Ja, sehe ich auch so, siehe hier im Post weiter oben.
 

Handwerkszeug, Scripte, #50


https://thinkpad-forum.de/threads/2...ift-Nov-2019?p=2211214&viewfull=1#post2211214

weitere Scripte, nicht von mir:

"snapshot+systemupdate.sh": https://pastebin.com/ps0i5NFb

"rollback_stable_nach_testing.sh": https://pastebin.com/XZC0e5Ad

"rollback_oldstable_nach_stable_und_testing.sh": https://pastebin.com/8YXjpnFH

abspeichern in ~/.scripte/ oder /usr/local/bin oder wo man möchte

Code:
sudo chmod 750 snapshot+systemupdate.sh
sudo chmod 750 rollback_stable_nach_testing.sh
sudo chmod 750 rollback_oldstable_nach_stable_und_testing.sh


##################################################################
##################################################################

Hallo, mit den erweiterten Scripten komme ich nicht zurecht, vom Scripten habe ich zur Zeit auch keinen Plan.

Das Script wie im ersten Posting benannt, funktioniert einwandfrei.

Warum funktionieren die erweiterten Scripte nicht?

Gibt es weitere Anwender außer GI-Joe und mir als "Über"?

Das System mach Snapshots blitzschnell, man kann gar nicht so schnell Luft holen, zack alles fertig, wie ein Blitz.

Wie bekomme ich, wenn TESTING defekt, das STABLE wieder in TESTING?
Es geht mit, wenn STABLE gemountet mit "btrfs sub snap / ./snapshots/TESTING", weiter händische Anpassungen sind erforderlich.
Ein Script dafür habe ich leider nicht gefunden.

MfG

xsid
 
Zuletzt bearbeitet:
Wie bekomme ich, wenn TESTING defekt, das STABLE wieder in TESTING?
Es geht mit, wenn STABLE gemountet mit "btrfs sub snap / ./snapshots/TESTING", weiter händische Anpassungen sind erforderlich.
Ein Script dafür habe ich leider nicht gefunden.
Du will uns jetzt hier nicht vereimern, oder ?
Die Rollback-Scripte hast DU oben selbst verlinkt !!



z.B. "rollback_stable_nach_testing.sh": https://pastebin.com/XZC0e5Ad
1. mit STABLE booten,
2. das Script rollback_stable_nach_testing.sh ausführen
3. reboot mit TESTING.

mach es so, mehr ist nicht nötig, denn es macht alles das script !
Schau einfach mal ins script, dann weißt Du, welche Schritte nötig sind, um dieses Ziel zu erreichen !

Funzt alles bei mir hier problemlos !

- - - Beitrag zusammengeführt - - -

Warum funktionieren die erweiterten Scripte nicht?
hast Du alle Programme installiert, die oben im Script aufgeführt sind ?
z.B. reflector ;)
 
Zuletzt bearbeitet:
Hallo GI-Joe,

reflector habe ich nicht installiert.

pacaur, wie vom im Youtuberscript enthalten auch, das Script funktioniert trotzden.

Deine Scripte werde ich erneut testen, die reflector-Zeile mit # kennzeichnen.
 
Zuletzt bearbeitet:
Deine Scripte werde ich erneut testen, die reflector-Zeile mit # kennzeichnen.
Voraussetzung von Rollbacks ist natürlich, dass sich STABLE und OLDSTABLE problemlos booten lassen und auch funktionieren.
Bei mir ist das jederzeit der Fall, nur Du solltest es bei Dir vor dem Rollback alles testen, sonst kommt schnell Frust auf ;).
Bin nun erstmal offline - mal was analoges machen --> Weinachtsfeier :)

- - - Beitrag zusammengeführt - - -

pacaur, wie vom im Youtuberscript enthalten auch, das Script funktioniert trotzden.
Ich habe pacaur bei meinen Scripten gar nicht drin. Es geht hier aber um diese hier oben verlinkten Scripte, nicht um die vom Youtuber Nick.
Wenn Du Sachen änderst/anpasst/ignorierst, dann solltest Du wissen, was Du tust und nicht hier posten, dass "dies und das" nicht funzt ... ;)
 
Zuletzt bearbeitet:
TESTING, STABLE und OLDSTABLE lassen sich ohne Probleme booten, jeweils geprüft mit

Code:
sudo mount | grep subvol

Jetzt habe ich STABLE gebootet:

Das verwendete Script, snapshot+systemupdate.sh :
https://nopaste.linux-dev.org/?1277244
Auszug:
Code:
# PIKAUR=/usr/bin/pikaur
PACMAN=/usr/bin/pacman
# REFLECTOR=/usr/bin/reflector


Code:
[xsid@arch ~]$ cd /home/xsid/.scripte
[xsid@arch .scripte]$ sudo mount | grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=277,subvol=/@snapshots/STABLE)
/dev/sda2 on /.snapshots type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=259,subvol=/@snapshots)
/dev/sda2 on /btrfs type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=5,subvol=/)
/dev/sda2 on /var/cache/pacman/pkg type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=258,subvol=/@pkg)
/dev/sda2 on /home type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=260,subvol=/@home)

[xsid@arch .scripte]$ sudo ./snapshot+systemupdate.sh
Keine Updates vorhanden - ENDE !
[xsid@arch .scripte]$

Laut Script, snapshot+systemupdate.sh hätte mir ein "System ist nicht mit TESTING hochgefahren !" angezeigt werden müssen, ich habe aber nichts gezeigt bekommen.

Was mache ich falsch?

@GI-Joe
Deine Scripten würden genau das machen, was ich gerne haben möchte.
Wo Du anfängst, hört der Youtuber auf.
 
Zuletzt bearbeitet:
Laut Script, snapshot+systemupdate.sh hätte mir ein "System ist nicht mit TESTING hochgefahren !" angezeigt werden müssen, ich habe aber nichts gezeigt bekommen.
Was mache ich falsch?
1. NIEMALS unter STABLE oder OLDSTABLE snapshot+systemupdate.sh ausführen, dann damit machst Du deine fallback-Lösung kaputt. Dein Arbeits-System ist TESTING ! Und nur dieses System wird auch mit Updates versorgt ! STABLE oder OLDSTABLE solltest Du nur booten, wenn die Notwendigkeit besteht, also falls ein Update mal fehlgeschlagen ist oder zum kurzen Test beim Einrichten ob es sauber bootet. Oder falls Du mal einen Rollback machen willst. Danach aber gleich wieder ein Reboot mit TESTING, denn DAS ist Dein Arbeitssystem !

2. hast Du /usr/bin/checkupdates auf Deinem System installiert ? Ohne dem läuft das Script nicht. Du musst schon ALLE Voraussetzungen schaffen (= Programme installieren ), damit die Scripte sauber laufen. Wenn Du das nicht willst, dann schreibe Deine eigenen Scripte und beschwere Dich nicht. Alle Scripte laufen bei mir problemlos so wie sie sind und OHNE Modifikationen. Wenn Du was ändern und/oder "optimieren" willst, dann musst Du wissen was Du tust. Ansonsten nimm die Scripte wie sie sind und gut ist !

3.
boote mal mit TESTING und poste mal die Ausgabe von
Code:
checkupdates
wenn da keine Ausgabe kommt, dann läuft das script auch nicht weil keine Updates gefunden wurden. Denn es macht keinen Sinn snapshots zu erstellen wenn danach kein Systemupdate erfolgt.


boote mal mit TESTING und poste mal die Ausgabe von
Code:
mount | grep "[B][COLOR=#ff0000]on / type btrfs[/COLOR][/B]" | grep "[COLOR=#ff0000][B]subvol=/@snapshots/TESTING[/B][/COLOR]"
wenn hier nichts kommt, dann läuft das script auch nicht.
Dann solltest Du deinen /etc/fstab - Eintrag von / mal prüfen, ob der String Deiner Mountoptionen evtl anders lautet - was wiederum zeigen würde, dass Du Dich nicht an die Anleitung gehalten hast. ;)

und nochmal: wenn man vom beschriebenen Pfad abweicht, muss man wissen was man tut sonst hat das ggf. woanders Konsequenzen !

- - - Beitrag zusammengeführt - - -

boote mal mit TESTING
poste mal die Ausgabe von

cat /etc/fstab
 
Zuletzt bearbeitet:
Hallo GI-Joe, danke für deine Bemühungen.
Eigeninitiative, dazu muss ich erst das richtige Verständnis entwickeln, dein System möchte ich nachbauen.
Nicht mal das bekomme ich bis jetzt hin.


TESTING gebootet und geprüft ob wirklich gebootet

Code:
mount |grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=273,subvol=/@snapshots/TESTING)

Ausgabe checkupdates

Code:
checkupdates
bash: checkupdates: Kommando nicht gefunden.

gewünschte Ausgabe

Code:
 mount | grep "on / type btrfs" | grep "subvol=/@snapshots/TESTING"
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=273,subvol=/@snapshots/TESTING)

poste mal die Ausgabe von cat /etc/fstab

Code:
cat /etc/fstab 
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /               btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=/@,subvol=@snapshots/TESTING    0 0

# /dev/sda1 UUID=d4076e51-e674-4a9d-b0a8-c4e198aff7fe
LABEL=BOOT              /boot           ext4            rw,relatime     0 2

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /home           btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@home   0 0

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /var/cache/pacman/pkg   btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@pkg    0 0

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /.snapshots     btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@snapshots      0 0

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /btrfs          btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=/       0 0

# /dev/sda3 UUID=cdd9ff7a-9dc6-4c29-bca7-78dd4840eb29
LABEL=SWAP              none            swap            defaults        0 0

Hallo GI-Joe, es fehlt bei mir "checkupdates"


https://wiki.archlinux.org/index.php/System_maintenance

The bash script checkupdates, included with the pacman-contrib package, provides a safe way to check for upgrades to installed packages without running a system update at the same time.


Code:
pacman -S pacman-contrib

Dann erneut checkupdates

Code:
[root@arch xsid# checkupdates
[root@arch xsid]#

Code:
sudo ./snapshot+systemupdate.sh
Keine Updates vorhanden - ENDE !

- - - Beitrag zusammengeführt - - -

################################################
Jetzt habe ich STABLE gebootet

Code:
mount | grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=275,subvol=/@snapshots/STABLE)

Und STABLE zurück nach TESTING

Code:
[root@arch .scripte]# ./rollback_stable_nach_testing.sh
Delete subvolume (no-commit): '/.snapshots/TESTING'
Create a snapshot of '/' in '/.snapshots/TESTING'
Done, had to relocate 0 out of 7 chunks
[root@arch .scripte]# ./rollback_stable_nach_testing.sh
Delete subvolume (no-commit): '/.snapshots/TESTING'
Create a snapshot of '/' in '/.snapshots/TESTING'
Done, had to relocate 0 out of 7 chunks
[root@arch .scripte]#

Das sieht doch schon ok aus.


Jetzt "bewußt" etwas falsch gemacht um Fehlermeldung zu erhalten, ich bin in STABLE:

Code:
root@arch .scripte]# ./snapshot+systemupdate.sh
Keine Updates vorhanden - ENDE !
[root@arch .scripte]#

Die Meldung aus dem snapshot+systemupdate.sh-Script "System ist nicht mit TESTING hochgefahren !" habe ich nicht erhalten

Ich bin, war immer noch in STABLE.

Wie bekomme ich den Warnhinweis?
 
Zuletzt bearbeitet:
  • ok1.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen
Zurück
Oben