The ZFS snapshot and cloning feature can be used to clones LDOMs. This comes very handy when you need to create multiple ldoms with some softwares already installed. The steps involved are :
1. Setup the primary domain
2. Create a guest LDOM (base LDOM)
3. Unconfigure, stop and unbind the base LDOM
4. Take zfs snapshot of base LDOM (called as golden image)
5. Clone the golden image to create new LDOMs
Setup the primary domain
Setup the primary domain with necessary resources and services and reboot the machine, for configuration changes to take effect.
Create default services
primary# ldm add-vcc port-range=5000-5100 primary-vcc0 primary primary# ldm add-vds primary-vds0 primary primary# ldm add-vsw net-dev=nxge0 primary-vsw0 primary primary# ldm list-services primary VDS NAME VOLUME OPTIONS DEVICE primary-vds0 VCC NAME PORT-RANGE primary-vcc0 5000-5100 VSW NAME MAC NET-DEV DEVICE MODE primary-vsw0 02:04:4f:fb:9f:0d nxge0 switch@0 prog,promisc
Ensure ldmd deamon is online and set CPU, memory resources fro primary domain.
primary# svcs -a | grep ldmd online 14:23:34 svc:/ldoms/ldmd:default primary# ldm set-mau 1 primary primary# ldm set-vcpu 8 primary primary# ldm start-reconf primary (delayed reconfiguration) primary# ldm set-memory 4G primary primary# ldm add-config new_config primary# ldm list-config factory-default new_config [current]
Reboot primary domain for new configuration (new_config) to become active.
primary# shutdown -y -g0 -i6
Enable networking between primary and guest domains
primary# ifconfig nxge0 down unplumb primary# ifconfig vsw0 plumb primary# ifconfig vsw0 192.168.1.2 netmask + broadcast + up primary# mv /etc/hostname.nxge0 /etc/hostname.vsw0
Enable virtual network terminal server daemon if not already enabled.
primary# svcadm enable vntsd primary# svcs vntsd STATE STIME FMRI online Oct_12 svc:/ldoms/vntsd:default
Setting up the base LDOM
Setup the base LDOM (base_ldom) with 8 VCPU, 2GB Memory, virtual network device vnet1 and zfs volume (base_ldom) as a virtual disk (vdisk1).
primary# ldm add-domain base_ldom primary# ldm add-vcpu 8 base_ldom primary# ldm add-memory 2G base_ldom primary# ldm add-vnet vnet1 primary-vsw0 base_ldom primary# zfs create -V 5gb ldompool/base_ldomvol primary# ldm add-vdsdev /dev/zvol/dsk/ldompool/base_ldomvol vol01@primary-vds0 primary# ldm add-vdisk vdisk1 vol01@primary-vds0 base_ldom
Set the boot environment variables
primary# ldm set-var auto-boot?=true base_ldom primary# ldm set-var boot-device=vdisk1 base_ldom
Install Solaris 10 on base ldom using solaris 10 iso image. We will add solaris 10 iso image as a virtual disk and then boot the base LDOM from this disk to install solaris 10.
primary# ldm add-vdsdev options=ro /data/sol_10.iso iso@primary-vds0 primary# ldm add-vdisk sol10_iso iso@primary-vds0 base_ldom
Bind and start the base LDOM. The solaris 10 iso should reflect in the devalias output at OK prompt as sol10_iso. Boot from this image to start the installation.
primary# ldm bind base_ldom primary# ldm start base_ldom LDom base_ldom started ok> devalias sol10_iso /virtual-devices@100/channel-devices@200/disk@1 vdisk0 /virtual-devices@100/channel-devices@200/disk@0 vnet1 /virtual-devices@100/channel-devices@200/network@0 net /virtual-devices@100/channel-devices@200/network@0 disk /virtual-devices@100/channel-devices@200/disk@0 virtual-console /virtual-devices/console@1 name aliases ok> boot sol10_iso
Unconfigure, stop and unbind base LDOM
Unconfigure the base LDOM which automatically halts it. We would then stop the LDOM and unbind it so that we can take a snapshot of the base LDOM boot disk volume (base_ldomvol).
base_ldom# sys-unconfigure (the ldom halts after this) primary-domain# ldm stop base_ldom primary-domain# ldm unbind base_ldom
Create the golden image
To create the golden image take a snapshot of the base_ldomvol from the base ldom.
primary-domain# zfs snapshot ldompool/bas_ldomvol@golden
Clone the golden image to create new LDOM
Clone the base_ldomvol snapshot (golden image) and use it to create the new LDOM, ldom01 with 4 VCPU, 4G, 1 MAU
primary-domain# zfs clone ldompool/bas_ldomvol@golden ldompool/ldom01_bootvol
primary-domain# ldm create ldom01 primary-domain# ldm set-mau 1 ldom01 primary-domain# ldm set-vcpu 4 ldom01 primary-domain# ldm set-mem 4G ldom01 primary-domain# ldm add-vnet vnet1 primary-vsw0 ldom01
primary-domain# ldm add-vdsdev ldompool/ldom01_bootvol vol01@primary-vds0 primary-domain# ldm add-vdisk vdisk1 vol01@primary-vds0 primary-domain# ldm set-variable auto-boot?=false ldom01 primary-domain# ldm bind ldom01 primary-domain# ldm start ldom01
When you boot the new LDOM, you will have to configure it with hostname, IP, timezone etc settings as it is an unconfigured LDOM.