OpenIndiana: Panic beim Import eines ZFS-Pools

Eine OpenIndiana 151a2 Installation stellte plötzlich den Dienst ein. Beim Import des Root-Pools (rpool) gibt es eine System-Panic und das System steckt in einem Reboot-Cycle. Dummerweise befinden sich auch Daten im rpool, die es zu retten gilt. Hierzu muss ein USB-Bootmedium erzeugt werden (Wer will kann auch eine DVD dieses ISO-Files brennen.) um wieder Zugriff auf den Rechner zu bekommen: Zuerst das Live-USB-Image herunterladen. Unter Solaris/OpenIndiana kann das Image einfach mit usbcopy auf den Stick übertragen werden. Unter Linux und Mac OS X muss zusätzlich dieser Header heruntergeladen werden. Mit cat und dd werden dann beide Files auf den USB-Key übertragen:

cat 1G.header oi-dev-151a-x86.usb | dd bs=1024k of=/dev/USBDEVICE

/dev/USBDEVICE ist das raw-Device des USB-Sticks. Unter Linux so etwas wie /dev/sdg bzw. unter Mac OS X /dev/rdisk2. Das korrekte Device findet man leicht heraus, indem man die Ausgabe von dmesg betrachtet, nachdem man den USB-Stick mit dem Linux/Mac-Rechner verbunden hat. Weiterhin setzt die Codezeile voraus, dass sich Header- und Image-File im aktuellen Verzeichnis befinden.

Jetzt das Live-System booten. Vor dem Import des rpools folgende Zeilen ausführen

# sudo mdb -kw
> aok/W 0x1
> zfs_recover/E 0x1

Jetzt kann der rpool mittels

# sudo zpool import -f -o readonly=on -R /a rpool

im Nur-Lese-Zugriff unter der alternativen Root /a gemountet werden. Da das Filesystem read-only ist, kann zfs send nicht benutzen werden, um die Daten auf einen anderen Pool zu übertragen. Stattdessen habe ich sie stumpf mit rsync über das Netzwerk weggeschafft.