Solaris 10: Clone einer Non-Global Zone mit ZFS Snapshots

Im „Systemverwaltungshandbuch“ von Sun zu Solaris 10 finden wir zum Stichwort „Klonen einer nicht-globalen Zone im gleichen System“:

  1. Erstellen Sie die neue Zone zone1 durch Klonen von my-zone.
    global# zoneadm -z zone1 clone my-zone

    Das System zeigt Folgendes an:

    Cloning zonepath /export/home/my-zone...

    Wenn sich der zonepath der Quelle in einem ZFS-Pool befindet, beispielsweise zeepool, zeigt das System ab Solaris 10 5/09 Folgendes an:

    Cloning snapshot zeepool/zones/my-zone@SUNWzone1
    Instead of copying, a ZFS clone has been created for this zone.

Hört sich gut an, aber…

--($ ~)-- zonecfg -z zone1 export | sed s,zonepath=/zones/zone1/root,zonepath=/zones/zone1/clone, | zonecfg -z zone1clone
zone1clone: No such zone configured
Use 'create' to begin configuring a new zone.

--($ ~)-- zoneadm -z zone1clone clone zone1
Copying /zones/zone1/root...
grep: can't open /a/etc/dumpadm.conf

Die Konfiguration der Zone zone1 ist nun nicht sonderlich komplex gewesen:

--($ ~)-- zonecfg -z zone1 export
create -b
set zonepath=/zones/zone1/root
set autoboot=false
set ip-type=shared

Mit anderen Worten, da ist im Grunde gar nichts konfiguriert. Und zone1clone ist demzufolge auch nicht so komplex:

--($ ~)-- zonecfg -z zone1clone export
create -b
set zonepath=/zones/zone1/clone
set autoboot=false
set ip-type=shared

Wie zu erwarten war: Nur der zonepath ist anders.

--($ ~)-- zoneadm list -cv | head -n1 ; zoneadm list -cv | grep zone1
 ID NAME             STATUS     PATH                           BRAND    IP
 - zone1            installed  /zones/zone1/root              native   shared
 - zone1clone       installed  /zones/zone1/clone             native   shared
--($ ~)-- zfs list -t filesystem | head -n1 ; zfs list -t filesystem | grep /zones/zone1/
NAME                                          USED  AVAIL  REFER  MOUNTPOINT
rpool/ROOT/s10s_u7wos_08/zones/zone1/root    4.90G   178G  4.90G  /zones/zone1/root

Okay, zonepath von zone1 ist auf ZFS; zonepath von zone1clone liegt im gleichen Pool wie der zonepath von zone1. Ergo hätte zoneadm clone einen ZFS Snapshot anlegen müssen und davon dann einen Clone als zonepath für zon1clone verwenden müssen.

Pustekuchen😦

--($ ~)-- zoneadm -z zone1clone clone zone1
Copying /zones/zone1/root...
grep: can't open /a/etc/dumpadm.conf

Aber zum Glück hat schon jemand anderes das gleiche Problem gehabt und im Sun Forum eine Lösung gepostet. Aus irgendeinem Grund stört sich Solaris 10 daran, dass der zonepath in einem Verzeichnis unterhalb von rpool/ROOT liegt. So schreibt er zumindest – testen wir’s mal.

--($ ~)-- zonecfg -z z2
z2: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:z2> create
zonecfg:z2> set zonepath=/rpool/zones/z2/root
zonecfg:z2> add inherit-pkg-dir
zonecfg:z2:inherit-pkg-dir> set dir=/opt/staroffice8
zonecfg:z2:inherit-pkg-dir> end
zonecfg:z2> commit
zonecfg:z2> exit

--($ ~)-- zoneadm -z z2 install
cannot create ZFS dataset rpool/zones/z2/root: dataset already exists
Preparing to install zone <z2>.
Creating list of files to copy from the global zone.
Copying <17196> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1406> packages on the zone.
Initialized <1406> packages on zone.
Zone <z2> is initialized.
Installation of <2> packages was skipped.
The file </rpool/zones/z2/root/root/var/sadm/system/logs/install_log> contains a log of the zone installation.

--($ ~)-- zonecfg -z z2 export | sed s,zonepath=/rpool/zones/z2/root,zonepath=/rpool/zones/z2/clone, | zonecfg -z z2clone
z2clone: No such zone configured
Use 'create' to begin configuring a new zone.

--($ ~)-- zonecfg -z z2 export
create -b
set zonepath=/rpool/zones/z2/root
set autoboot=false
set ip-type=shared
add inherit-pkg-dir
set dir=/lib
end
add inherit-pkg-dir
set dir=/platform
end
add inherit-pkg-dir
set dir=/sbin
end
add inherit-pkg-dir
set dir=/usr
end
add inherit-pkg-dir
set dir=/opt/staroffice8
end

--($ ~)-- zonecfg -z z2clone export
create -b
set zonepath=/rpool/zones/z2/clone
set autoboot=false
set ip-type=shared
add inherit-pkg-dir
set dir=/lib
end
add inherit-pkg-dir
set dir=/platform
end
add inherit-pkg-dir
set dir=/sbin
end
add inherit-pkg-dir
set dir=/usr
end
add inherit-pkg-dir
set dir=/opt/staroffice8
end

Hab ich jetzt die Spannung genug nach oben getrieben? Ja? Dann kommen wir mal zum wesentlichen🙂

--($ ~)-- zoneadm -z z2clone clone z2
Cloning snapshot rpool/zones/z2/root@SUNWzone1
Instead of copying, a ZFS clone has been created for this zone.
grep: can't open /a/etc/dumpadm.conf

Yeah! So soll’s sein!

Aber trotzdem:

#fail

Grund: Solaris 10 verhält sich nicht exakt so, wie es sich laut Dokumentation verhalten müsste; bzw. weil es (zumindest bei zoneadm) undokumentierte Einschränkungen gibt😦

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s