[OpenIndiana-discuss] Migrating zones between OpenIndiana machines
Dave Koelmeyer
davekoelmeyer at me.com
Fri Jun 3 09:11:17 UTC 2011
On 28/05/11 02:23 AM, Dave Koelmeyer wrote:
> On 28/05/11 01:29 AM, Dave Koelmeyer wrote:
>>
>>> From: Dave Koelmeyer<davekoelmeyer at me.com>
>>> Date: Wed, 25 May 2011 06:03:41
>>> To: Discussion list for
>>> OpenIndiana<openindiana-discuss at openindiana.org>
>>> Reply-To: Discussion list for
>>> OpenIndiana<openindiana-discuss at openindiana.org>
>>> Subject: [OpenIndiana-discuss] Migrating zones between OpenIndiana
>>> machines
>>>
>>> Hi,
>>>
>>> I'm having a hell of a time trying to simply migrate a zone from one
>>> OI machine to another, wondering if anyone can help. Both machines
>>> are running oi_147
>>>
>>> I have configured and install a NGZ on machine 1, and wish to detach
>>> and install it on machine 2.
>>>
>>> I am following the guide here:
>>>
>>> http://download.oracle.com/docs/cd/E19044-01/sol.containers/819-2450/gcgnc/index.html
>>>
>>>
>>>
>>> On machine 1:
>>>
>>> First I have run zoneadm -z myzone detach
>>> Then, cd /rpool/zones/zone_roots and tar cvf myzone.tar myzone/
>>>
>>> This creates a .tar file of the zone, which I've then copied over to
>>> machine 2
>>>
>>> On machine 2:
>>>
>>> I've extracted the .tar file to /rpool/zones/zone_roots
>>>
>>> The above steps so far are all covered at:
>>>
>>> http://download.oracle.com/docs/cd/E19044-01/sol.containers/819-2450/gcglo/index.html
>>>
>>>
>>> So, next I run:
>>> zonecfg -z myzone
>>> create -a /rpool/zones/zone_roots/myzone
>>>
>>> I alter the zone configuration properties as needed for networking
>>> etc, then commit and exit.
>>>
>>> Finally, I attempt to attach the zone:
>>> pfexec zoneadm -z myzone attach
>>>
>>> at which point I get:
>>> Log File: /var/tmp/myzone.attach_log.Wsaq8n
>>> ERROR: no active dataset.
>>> Result: Attach Failed.
>>>
>>> What is this referring to, and why can I not find any reference to
>>> it in the documentation? Any pointers welcome :)
>>>
>>> Cheers,
>>> Dave
>>
>>
>> On 25/05/11 06:16 PM, Okky Hendriansyah wrote:
>>> Hi Dave,
>>>
>>> What are the output of "zfs list" on both machines? I think you have
>>> to create the "myzone" ZFS dataset on machine 2 before attaching the
>>> zone to it.
>>>
>>> Regards,
>>> Okky Hendriansyah
>>
>> Hi Okky,
>>
>> Thanks for your reply, output of machine 1 (the source machine) and
>> machine 2 (the target):
>>
>> Machine 1:
>>
>> NAME USED AVAIL
>> REFER MOUNTPOINT
>> rpool/zones 7.80G 214G
>> 34K /rpool/zones
>> rpool/zones/zone_roots 7.80G 214G
>> 35K /rpool/zones/zone_roots
>> rpool/zones/zone_roots/myzone 4.08G 214G 33K
>> /rpool/zones/zone_roots/myzone
>> rpool/zones/zone_roots/myzone/ROOT 4.08G 214G 31K legacy
>> rpool/zones/zone_roots/myzone/ROOT/zbe 4.08G 214G 4.01G legacy
>>
>>
>> Machine 2:
>>
>> NAME USED AVAIL
>> REFER MOUNTPOINT
>> rpool/zones 7.59G 18.8G
>> 32K /rpool/zones
>> rpool/zones/zone_roots 7.59G 18.8G
>> 7.59G /rpool/zones/zone_roots
>>
>>
>> So yes, the ""myzone" ZFS data set does not exist, but wouldn't this
>> get created when the zone is attached? Alternatively, creating the
>> dataset manually before the zone is attached does not change the
>> behaviour, and I get the same error message.
>>
>> I'm clearly getting something confused here, any ideas?
>>
>
>
> As tends to happen, right after sending this I located a guide which
> apparently doesn't make the assumptions in the first documentation
> link I sent, specifically the section headed "Containers Residing on
> an Oracle Solaris ZFS Filesystem":
>
> http://developers.sun.com/solaris/docs/howto_movesolariscontainer_051410-1.pdf
>
>
> Will work thought this and shout if I have questions...
>
Well, if this wasn't the biggest pain in the arse to actually get going
(the document linked above was useless) - a brief summary of what to do
(pieced together from a bunch of places on the web) follows in case
anyone else needs it in the future (will blog this too):
In summary, I want to migrate the zone "myzone" on machine 1 to machine 2.
On Machine 1:
1) Detach myzone, e.g.:
#zoneadm -z myzone detach
2) Make snapshots of the following ZFS filesystems relevant to the zone
"myzone":
rpool/zones/zone_roots/myzone
rpool/zones/zone_roots/myzone/ROOT
rpool/zones/zone_roots/myzone/ROOT/zbe
e.g.
# zfs snapshot -r rpool/zones/zone_roots/myzone at snap1
3) Archive the snapshots into files in preparation for copying to
machine 2, e.g.:
# zfs send rpool/zones/zone_roots/myzone at snap1 >
/export/home/davek/myzone.snap1
# zfs send rpool/zones/zone_roots/myzone/ROOT at snap1 >
/export/home/davek/myzone_root.snap1
# zfs send rpool/zones/zone_roots/myzone/ROOT/zbe at snap1 >
/export/home/davek/myzone_root_zbe.snap1
4) Copy the archived snapshot files to machine 2 in any way you see fit
On Machine 2:
1) Assuming the desired zonepath for your zones is
/rpool/zones/zone_roots, create the ZFS filesystems if necessary, e.g.:
# zfs create rpool/zones
# zfs create rpool/zones/zone_roots
2) Restore the snapshot files into the relevant ZFS filesystems (these
will be created on the fly), e.g.:
# zfs receive rpool/zones/zone_roots/myzone <
/export/home/davek/myzone.snap1
# zfs receive rpool/zones/zone_roots/myzone/ROOT <
/export/home/davek/myzone_root.snap1
# zfs receive rpool/zones/zone_roots/myzone/ROOT/zbe <
/export/home/davek/myzone_root_zbe.snap1
3) Change the mountpoint type to legacy for the following two ZFS
filesystems:
rpool/zones/zone_roots/myzone/ROOT
rpool/zones/zone_roots/myzone/ROOT/zbe
e.g.:
# zfs set mountpoint=legacy rpool/zones/zone_roots/myzone/ROOT
# zfs set mountpoint=legacy rpool/zones/zone_roots/myzone/ROOT/zbe
4) Mount the following filesystem using a legacy mount command:
rpool/zones/zone_roots/myzone/ROOT/zbe
We want to mount this to /rpool/zones/zone_roots/myzone/root
e.g.:
# mount -F zfs rpool/zones/zone_roots/myzone/ROOT/zbe
/rpool/zones/zone_roots/myzone/root
5) Now, configure the zone:
# zonecfg -z myzone
When prompted to create a zone, use the XML configuration file that will
be sitting in /rpool/zones/zone_roots/myzone. Use the create command in
the following way:
create -a /rpool/zones/zone_roots/myzone
If this is successful, you won't receive any confirmation (only an error
if the configuration file cannot be found).
Continue to use zonecfg to customise any properties relevant to machine
2 (e.g. set a different IP address), then commit the changes and exit
zonecfg
6) Attach the zone
Finally, run the follwing:
# zoneadm -z myzone attach -u
Zone will attach and can now be booted.
--
Dave Koelmeyer
http://davekoelmeyer.wordpress.com/
More information about the OpenIndiana-discuss
mailing list