FreeBSD 14.0: freebsd-update install dauert fast 5 Stunden bei Jails?

-Nuke-

Well-Known Member
Grüße,

da FreeBSD 12 ja nun aus dem Support raus ist, habe ich mich dann auch mal wieder an ein Major-Upgrade ran gemacht. Das Upgrade vom Host 12.4 auf 14.0 ging eigentlich ganz OK. Jetzt bin ich aber dabei die 12er Jails zu aktualisieren.

Es ist jetzt schon die zweite Jail, wo das zweite freebsd-update -b /path/to/jail install (das was das Userland aktualisiert) fast 5 Stunden (!) dauert.

Falls jemand mehr damit anfangen kann, bei der zweiten Jail habe ich mal time mitlaufen lassen:

Code:
76.406u 114.491s 4:40:33.12 1.1%        69+167k 537+201802io 0pf+0w

Ich kann jetzt aber so allgemein keine Ursache finden. Ich sehe halt während der Zeit via zpool iostat, dass da dauernd was mit 10-20 MByte/s auf die Platte geschrieben wird. Aber sonst meldet top keine weitere größere Auslastung, sprich: Gar keine.

Hat das jemand schon einmal bei sich beobachtet? Also dass freebsd-update sich gerne viel Zeit lässt, wusste ich ja, aber 5h ist schon eine andere Hausnummer.
 
freebsd-update -b /path/to/jail install
by the way: Es gibt inzwischen den Schalter -j um freebsd-update direkt auf Jails loslassen zu können.

Hat das jemand schon einmal bei sich beobachtet?
Nein. Bisher noch nicht. Ich hab allerdings auch noch nie ein Sprung über 2 Major-Versionen gemacht. Wird auch nicht empfohlen das zu tun. Ob das jetzt daran liegt, das es so lange dauert würde ich zwar erst mal verneinen. Aber ist natürlich eine mögliche Fehlerquelle.

Wenn man mal genauer herausfinden möchte, was da die Ursache sein könnte, dann kann man natürlich mal via truss draufschauen. Evtl. "sieht" man dann schon, wo es hängt und kann sich dann die konkrete Stelle näher anschauen:
truss -o /tmp/truss.log -f freebsd-update -b /path/to/jail install
Das schreib die Ausgabe von truss nach /tmp/truss.log, so das es nicht mit in unserer Konsole dazwischen gerät. Die Ausgabe von truss kann man dann in einer zweiten Konsole mit
tail -f /tmp/truss.log
live beobachten.
Da kommt recht viel zusammen, aber es sollte zumindest auffallen, wenn er bei irgendeinem Syscall lange hängt.
 
@Andy_m4 Der funktioniert aber nur wenn die Jail läuft

@-Nuke- Läuft deine Jail in dem Moment oder hast du die ausgeschaltet?
Ich fahr die Jails immer für Updates/Upgrades runter und hatte das Problem bisher nicht.
 
Ich probiere das mit truss mal, danke.

@gadean
Die Jails laufen nebenbei. Ich hatte sie auch noch nie diesbezüglich runtergefahren. Das Hauptsystem fährt man ja derweil auch nicht herunter. Ich würde halt gerne längere Downtimes vermeiden.
 
Ja. Die Jail muss laufen wenn man den -j Schalter benutzt.

Wenn man das via freebsd-update -b ... install kann die Jail auch gestoppt sein, muss sich aber nicht notwendigerweise.
Noch ein Wort dazu: Das updatet auch den Kernel mit. Im Grunde ist der Kernel aber für Jails irrelevant, weil der gar nicht benutzt wird (das /boot/-Verzeichnis innerhalb der Jail ist überflüssig und kann sogar gelöscht werden). Man kann auch erzwingen, das freebsd-update den ignoriert, wenn man eine angepasste freebsd-update.conf benutzt, in der man aus der Zeile
Code:
# Components of the base system which should be kept updated.
Components world kernel
das kernel entfernt.

Ich probiere das mit truss mal
Man muss gucken ob man damit dem Problem auf die Spur kommt, wäre aber zumindest mal ein leicht auszuprobierender Ansatzpunkt. Es sei denn, Du hast bei Deinem Server die Security hochgeschraubt und deshalb Debug-"Capabilities" ausgeschaltet.
Ich denk da an Sachen wie die sysctl security.bsd.allow_ptrace.
 
Mir ist zumimdest aufgefallen, dass das Upgrade auf 14.0 signifikant länger gedauert (5 Stunden kommt hin...) hat als die früheren Upgrades. Und das nicht nur (aber auch) in Jails. Wenn ich versucht habe, ein wenig nachzuverfolgen was freebsd-update gerade macht (mit lsof und einem ls in den gerade bearbeiteten Verzeichnissen) konnte ich sehen, wie die Dateien eine nach der anderen fast tröpfchenweise geschrieben wurden. War recht nervig. Ich kann aber nicht mehr sagen, bei welchen Maschinen / Jails das auftrat und wie genau ich die Jails aktualisiert habe (also mit -b, -j, oder direkt im laufenden Jail).

Irgendwas scheint freebsd-update da heftig auszubremsen.
 
Hmm, es könnte sein, dass ich den Übeltäter gerade sehe. Ich sehe gerade, dass die Sourcen installiert sind. Ich hab zwar keine Ahnung warum sie das sind, aber nunja. Scheinbar hat irgend ein freebsd-update die mit rein gebracht. freebsd-update scheint sich im Verlauf des Updates jede Datei einzeln anzuschauen, auch die Sourcen.

Wenn ich das richtig im Hinterkopf habe sammelt er die Datei ja ein für ein Rollback und schreibt dann die neue Datei. Und das ist an sich schon ziemlich träge umgesetzt. Wenn da jetzt noch die Sourcen mit dabei sind... puh.

Gut, dann werde ich für die nächsten Jails mal /usr/src löschen. Danke für die Hilfe soweit. Ich melde mich dann, wie es gelaufen ist. Jetzt erst mal dieses Update abwarten.
 
Scheinbar hat irgend ein freebsd-update die mit rein gebracht.
Kann sein.
Bezugnehmend auf #5 könnte mach mal ein Blick auf die freebsd-update.conf werfen. Ich würde mir für Jails eine eigene freebsd-update.conf basteln, wo man dann halt für Components nur world stehen lässt (kernel, src etc. braucht man ja i.d.R. nicht).
Und dann kann man upgraden via:
freebsd-update -f /path/to/jail-freebsd-update.conf -b /path/to/myjail --currently-running `freebsd-version -j myjail` -r 14.0-RELEASE upgrade
 
Sooo, ich hab jetzt überall /usr/src gelöscht und nun dauert das freebsd-update "nur noch" 35min.

Wenn ich übrigens die freebsd-update.conf Variante nehme, wo nur "world" drin steht, kriegt man übrigens beim ersten freebsd-update -j jailname install unschöne Fehlermeldungen, die dann aber mit einem "Kernel updates have been installed" beendet werden:

Code:
Installing updates...mtree: /prison/jail.local//boot/kernel: No such file or directory  
cd: /prison/jail.local//boot/kernel: No such file or directory                          
                                                                                           
Kernel updates have been installed.  Please reboot and run                                 
"/usr/sbin/freebsd-update install" again to finish installing updates.

Vorher sagte freebsd-update aber, dass es nur "world" findet und auch nur das updated. xD Wird langsam mal Zeit für PkgBase...
 
Zurück
Oben