FreeBSD-10.3 Server bootet nicht mehr nach "reboot"

testit

Well-Known Member
Hallo,

ich hoffe, mir kann jemand von Euch weiterhelfen.

Nach einem Upgrade von Virtualbox gab die Installation aus, dass der Server rebootet werden müsse. Daher gab ich ein "reboot" ein und stellte fest, dass der FreeBSD-10.3-Server anschließend nicht mehr erreichbar war.

Hetzner koppelte dann ein Lantronix-Konsole an, der sich folgendes entnehmen ließ:

freebsdboot.jpg



Ein Hardwarefehler an den Platten liegt m. E. nicht vor.

Konnte dann mittels Hetzner-Rescue-System (FreeBSD 10.3 64 Bit)

mit
mkdir /tmp/bootpool
zpool import -f zroot


auf die Verzeichnisse auf den beiden SATA-Platten zugreifen.

Es scheint so, als ob der ZFS-Dienst Probleme macht oder möglicherweise nicht kompatibel ist, weil er vlt. nach einem OS-Upgrade nicht aktualisiert worden war.

[root@rescue ~]# zpool status zroot
internal error: failed to initialize ZFS library

[root@rescue ~]# zpool get all zroot
internal error: failed to initialize ZFS library

Sowohl in rc.conf als auch in loader.conf ist zfs aktiviert.

Es handelt sich bei dem OS auf dem Server um ein FreeBSD 10.3 64 Bit (dieses habe ich daher auch als Rescuemedium gewählt!).

Ich vermute, dass die Tatsache, dass ich bei diversen Kommandos ein
"failed to initialize ZFS library" erhalte, die Ursache des Problems ist:

[root@rescue ~]# zpool import
internal error: failed to initialize ZFS library

[root@rescue ~]# service zfs start
ps: empty file: Invalid argument
ps: empty file: Invalid argument
internal error: failed to initialize ZFS library
internal error: failed to initialize ZFS library

vgl. auch unten "Ausgaben".

Für hilfreiche Hinweise und Ideen wäre ich sehr dankbar, da ich nun schon einige Stunden versucht habe, das Ganze wieder zum Laufen zu bringen.

Viele Grüße
testit


Ausgaben:

gpart show:

=> 34 5860533101 ada1 GPT (2.7T)
34 1024 1 freebsd-boot (512K)
1058 4194304 2 freebsd-swap (2.0G)
4195362 5856337773 3 freebsd-zfs (2.7T)

=> 34 5860533101 diskid/DISK-WD-WMC130D1NZWV GPT (2.7T)
34 1024 1 freebsd-boot (512K)
1058 4194304 2 freebsd-swap (2.0G)
4195362 5856337773 3 freebsd-zfs (2.7T)

root@rescue ~]# mount


[
/dev/md0 on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
tmpfs on /tmp (tmpfs, local)
tmpfs on /usr (tmpfs, local)
nfs.hetzner.de:/nfs/freebsd on /nfs (nfs)
zroot/ROOT/default on / (zfs, local, noatime, nfsv4acls)
zroot/tmp on /tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/home on /usr/home (zfs, local, noatime, nfsv4acls)
zroot/usr/ports on /usr/ports (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/src on /usr/src (zfs, local, noatime, nfsv4acls)
zroot/var/crash on /var/crash (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/log on /var/log (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/mail on /var/mail (zfs, local, nfsv4acls)
zroot/var/tmp on /var/tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot/vms on /vms (zfs, local, noatime, nfsv4acls)

[root@rescue ~]# geom disk list

Geom name: ada0
Providers:
1. Name: ada0
Mediasize: 3000592982016 (2.7T)
Sectorsize: 512
Mode: r1w1e3
descr: WDC WD3000FYYZ-01UL1B2
lunid: 50014ee003f4cf78
ident: WD-WMC130D1NZWV
rotationrate: 7200
fwsectors: 63
fwheads: 16

Geom name: ada1
Providers:
1. Name: ada1
Mediasize: 3000592982016 (2.7T)
Sectorsize: 512
Mode: r1w1e3
descr: WDC WD3000FYYZ-01UL1B2
lunid: 50014ee20b6bcb65
ident: WD-WCC135FTXZTY
rotationrate: 7200
fwsectors: 63
fwheads: 16


Ausgabe von dmesg.boot

egrep 'da[0-9]|cd[0-9]' /var/run/dmesg.boot
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <WDC WD3000FYYZ-01UL1B2 01.01K03> ATA8-ACS SATA 3.x device
ada0: Serial Number WD-WMC130D1NZWV
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 2861588MB (5860533168 512 byte sectors)
ada0: Previously was known as ad4
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: <WDC WD3000FYYZ-01UL1B2 01.01K03> ATA8-ACS SATA 3.x device
ada1: Serial Number WD-WCC135FTXZTY
ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 2861588MB (5860533168 512 byte sectors)
ada1: Previously was known as ad6

Der Versuch, den Bootcode neu anzulegen und damit ggf. auch die ZFS-Kompatibilität herzustellen, warf folgende Fehler:

[root@rescue ~]# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart: No such geom: ada0.
[root@rescue ~]# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0
gpart: No such geom: ad0.
 
Guten Morgen,

seh ich das richtig das DU nicht vom zpool bootest? Sonden von UFS?
Geh ich richtig in der Annahme?
Oder hast DU die Maschine von einem Rettungssystem gebootet, sorry ich kenne mich bei Hetzner leider nicht aus, daher die blöde Frage.
IMHO sieht das für mich so aus das beim Upgrade was kaputt gemacht wurde...
und die ZFS Libraries zwar versucht wird zu laden, die Datei aber entweder nicht da ist, oder beschädigt wurde.

Code:
ps: empty file: Invalid argument
ps: empty file: Invalid argument
internal error: failed to initialize ZFS library
internal error: failed to initialize ZFS library

Oder das /dev wird nicht gemountet und die Maschine geht deswegen auf die Bretter.

Wahrscheinlich wäre es est mal sinnvoll die gpart Experimente einzustellen...

Schau mal ob sich die Kernelmodule sauber laden lassen..
Wobei die ja schon geladen da sein müssten, wenn Du den Pool siehst. Aber zum verifzizeren schadet es nicht.

Code:
kldload opensolaris.ko
kldload zfs.ko


Den Pool würde ich mal mit ALTROOT unter z.B. /mnt mounten

Code:
 zpool import -o mountpoint=/mnt

Du hast nicht zufällig mit dem Virtualbox Upgrade auch noch ein OS Upgrade gemacht?

Wie sieht den die /
Code:
/etc/fstab
aus?
 
Guten Morgen,

herzlichen Dank, dass Du Dir die Zeit genommen hast, mein Problem nachzuvollziehen und hier zu posten!

Ich habe - wie eingangs beschrieben - vom Rescuesystem von Hetzner, also einem Rettungssystem. Hetzner hierzu:

Beim Aktivieren vom Rescue-System wird auf unserem DHCP-Server eine Konfigurationsdatei angelegt. Beim nächsten Neustart Ihres Servers wird dieser vom Netzwerk gebootet, holt sich diese Konfigurationsdatei für das Rescue-System und lädt ein minimales Grundsystem von unserem TFTP-Server. Sie können das Rescue-System dann solange verwenden wie Sie es benötigen.

Es wurden hier schon gleichartige Fehlermeldungen diskutiert:
http://www.bsdforen.de/threads/moun...ed-with-error-2-und-ein-dummes-gesicht.32135/
und
http://www.bsdforen.de/threads/booten-von-zfs-klappt-nicht-mehr.30558/

Es wurde lediglich Virtualbox upgegraded und nicht FreeBSD!

Allerdings scheint das beschriebene Problem auch dann aufzutauchen, wenn man bei einem der letzten 10er-FreeBSD-Upgrades ZPOOL nicht upgedated hat.
FOXIT (MOD hier) weist in einem der o. a. Threads auch darauf hin, dass Bootloader zur ZFS-Version passen müssen

Der Einsatz von gpart in der Form

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 (bzw. andere Bezeichnung)

wird überall in FreeBSD-Quellen gleichartig beschrieben, um den Bootloader neu anzulegen. Aber er schlug ja offensichtlich ohnehin fehl.


Gebe ich
[root@rescue ~]# zpool import

VOR
Eingabe von

mkdir /tmp/bootpool
zpool import -f zroot

ein, werden übrigens andere Ausgaben bei diversen Befehlen angezeigt:


pool: zroot
id: 17173164405820143608
state: ONLINE
status: Some supported features are not enabled on the pool.
action: The pool can be imported using its name or numeric identifier, though
some features will not be available without an explicit 'zpool upgrade'.
config:

zroot ONLINE
mirror-0 ONLINE
diskid/DISK-WD-WMC130D1NZWVp3 ONLINE
gpt/zfs1 ONLINE

DANN wird bei Eingabe von kldload zfs.ko ausgegeben:
kldload: can't load zfs.ko: module already loaded or in kernel

[root@rescue ~]# zpool status zroot

führt dann nicht mehr zu der eingangs genannten Fehlermeldung "internal error: failed to initialize ZFS library", sondern zur Ausgabe
cannot open 'zroot': no such pool

Das von Dir vorgeschlagene
[root@rescue ~]# zpool import -o mountpoint=/mnt führt bei mir zu
property 'mountpoint' is not a valid pool property

Deine Frage zu fstab:
[root@rescue /mnt]# more /etc/fstab
/dev/md0 / ufs rw 0 0
tmpfs /tmp tmpfs rw,mode=1777 0 0


Mein Problem ist, dass ich mit ZPOOL, ZFS und den ganzen notwendigen Imports, Exports etc. nicht auskenne. Aber nach allem, was ich bislang einschlägigen FreeBSD-Quellen entnehmen konnte, könnte es etwas damit zu tun haben, dass eine ZFS-Versionsinkompatibilität vorliegt.

Ich bin mir nicht mal sicher, ob das

mkdir /tmp/bootpool
zpool import -f zroot


korrekt ist, da ja erst danach die Fehlermeldungen "internal error: failed to initialize ZFS library" auftauchen.
Aber immerhin kann ich nach diesen Kommandos wenigstens auf die Inhalte meiner Platten zugreifen.


Viele Grüße und Besten Dank für die Hilfestellung
testit
 
Lassen wir mal das Bootproblem für's Erste weg und bleiben alleine bei der Rescue-Konsole:
Code:
mkdir /tmp/bootpool
zpool import -f zroot

'zroot' ist der Pool, auf dem das Root-Dateisystem / liegt, oder? Dann übermountest du an dieser Stelle dein /, was erklären würde wieso anschließend kaum mehr was funktioniert. Probiere mal:

Code:
zpool import -f -R /mnt zroot

Das setzt vor alle Mountpoints deines Pools das Verzeichnis /mnt, also wird aus / stattdessen /mnt/. Aus /home wird /mnt/home und so weiter. Danach sollten die ZFS-Kommandos funktionieren und wir können weitersehen.
 
Code:
kldload: can't load zfs.ko: module already loaded or in kernel

Das er hier meckert weil das Modul geladen wurde ist ja schon mal gut.

Positiv ist ja schon mal
er spuckt die ZPOOL id aus.
Code:
id: 17173164405820143608


Die Ausgabe
Code:
cannot open 'zroot': no such pool

Würde suggerieren..... entweder gibts den pool zroot nicht, oder er heisst anders.

Oder.... Du bist über das Problem mit dem On Disk Format gestolpert das irgendwann bei einem OS Upgrade ein
Code:
zpool upgrade
Hätte durch geführt werden sollen.

Was spuck eigentlich eine
Code:
zpool history
aus?
Findet der da noch was? Wenn der Pool intakt ist sollte da noch was raus kommen.
 
Vielen Dank für Eure Hinweise und Fragen!

Ich kann zur Zeit nicht in die Rescueconsole. Sobald dies wieder möglich ist, gehe ich die o. a. Tips durch und gebe hier Feedback!

Viele Grüße
testit
 
Oder.... Du bist über das Problem mit dem On Disk Format gestolpert das irgendwann bei einem OS Upgrade ein
Das würde sich anders äußern. Ich habe die Fehlermeldung nicht im Kopf, aber sagt genau welche vom Pool genutzten Features nicht unterstützt werden und auch, ob man drum herum frickeln kann.
 
Ach ja eins... noch... bevor zu ein
Code:
zpool upgrade
Durch führst...
Prüf noch mal folgendes.
Die FreeBSD Version deines Servers.

die ZFS Version deines Pools
Folgende Werte
Code:
zfs get version  namedespools

Bei mir sieht das beispielsweise so aus....

Code:
 mcorleone: /etc# zfs get version datapool
NAME      PROPERTY  VALUE    SOURCE
datapool  version   5        -
mcorleone: /etc#

Und wie @Yamagi schon gesagt hat Du hast Dir das / übermountet...
Exportiere dann noch mal den Pool

Code:
zpool export zroot

Leg ein Directory unter
Code:
mkdir /mnt/rescuezroot

Dort hin importierst Du den Pool mittels ALTROOT

Code:
zpool import -R /mnt/rescuezroot  zroot

Jetzt kannst Du dort erst mal sauber arbeiten ohne das Du Dir das / wieder übermountest.

Viel Erfolg
 
Hallo,

kurze Info, damit nicht weiter unnütz Eure Zeit gebunden wird: Es geht alles wieder, melde mich nochmal später!

Vielen Dank an alle, die mir o. a. Tipps gegeben haben!

Viele Grüße
testit
 
Hallo,

ich merke gerade, dass hier noch ein Feedback aussteht:

Es war das von mir schon eingangs beschriebene
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
mit dem das Ganze wieder zum Laufen gebracht werden konnte.

Unglücklicherweise hatte ich zuvor mit anderen Versuchsvarianten einen Rechtschreibfehler in einer Datei (weiß leider nicht mehr welche) eingebracht, der dazu führte, dass trotz des eigentlich korrekten o. a. gpart-Befehls das System immer noch nicht richtig bootete.

Viele Grüße
testit
 
Zurück
Oben