Creating a base LDOM image
Now that the Control domain is setup, you can start creating LDOM's at will. The idea here is to create a base LDOM image that can be cloned to quickly provision new servers.
1. Create a ZFS file system to store the disk image for our LDOM
zfs create storage/base
This will create a ZFS file system called storage/base that will be mounted at /storage/base
2. Create a ZFS disk image to hold the LDOM's data
zfs create -V 36gb storage/base/disk0
This will create a 36Gb disk image. You can see the results in the zfs list output:
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 25.4G 109G 93K /rpool rpool/ROOT 5.36G 109G 18K legacy rpool/ROOT/s10s_u7wos_08 5.36G 109G 5.36G / rpool/dump 10.0G 109G 10.0G - rpool/swap 10G 118G 16.4M - storage 37.1G 630G 36.5K /storage storage/base 37.1G 630G 34.9K /storage/base storage/base/disk0 37.1G 667G 26.6K -
3. Create the new LDOM
ldm add-domain base
4. Assign virtual CPU's to the new LDOM
ldm add-vcpu 8 base
5. Assign memory to the new LDOM
ldm add-memory 2G base
6. Create a virtual disk device and assign it to the new LDOM
ldm add-vdsdev /dev/zvol/dsk/storage/base/disk0 base-vol1@primary-vds0 ldm add-vdisk vdisk1 base-vol1@primary-vds0 base
This creates a virtual disk device called base-vol1@primary-vds0 that is then assigned to the LDOM base. ldm list-services should now look like this:
# ldm list-services
VCC
NAME LDOM PORT-RANGE
primary-vcc0 primary 5000-5100
VSW
NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE
primary-vsw0 primary 00:14:4f:fa:40:c8 e1000g0 0 switch@0 1 1 1500
VDS
NAME LDOM VOLUME OPTIONS MPGROUP DEVICE
primary-vds0 primary base-vol1 /dev/zvol/dsk/storage/base/disk0
7. Add a virtual network interface to the new LDOM
ldm add-vnet vnet1 primary-vsw0 base
8. Adjust boot parameters of the LDOM so that it will automatically boot when the host system starts up and it knows that the vdisk1 device is it's boot device:
# ldm set-var auto-boot\?=true base # ldm set-var boot-device=vdisk1 base svcadm enable vntsd
You can also change other boot parameters as you see fit
# ldm set-var boot-file="-v -mverbose" base
9. Bind the new LDOM
ldm bind base
10. Check the parameters associated with your LDOM
# ldm list-bindings base
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
base bound ------ 5000 8 2G
UUID
16277b70-4c8c-c240-da5b-f73075ba2a89
MAC
00:14:4f:f9:33:a5
HOSTID
0x84f933a5
CONTROL
failure-policy=ignore
DEPENDENCY
master=
CORE
CID CPUSET
1 (8, 9, 10, 11, 12, 13, 14, 15)
VCPU
VID PID CID UTIL STRANDK99mksysidcfg
0 8 1 100%
1 9 1 100%
2 10 1 100%
3 11 1 100%
4 12 1 100%
5 13 1 100%
6 14 1 100%
7 15 1 100%
MEMORY
RA PA SIZE
0x8000000 0x88000000 2G
VARIABLES
auto-boot?=true
boot-device=vdisk1
boot-file=-v -mverbose
NETWORK
NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP
vnet1 prod-vsw0@primary 0 network@0 00:14:4f:f8:78:9c 1 1500
PEER MAC MODE PVID VID MTU LINKPROP
prod-vsw0@primary 00:14:4f:fa:40:c8 1 1500
DISK
NAME VOLUME TOUT ID DEVICE SERVER MPGROUP
vdisk1 base-vol1@primary-vds0 0 disk@0 primary
VCONS
NAME SERVICE PORT
base primary-vcc0@primary 5000
This shows that the console port for telnet is 5000, the MAC address of the virtual NIC is 00:14:4f:f8:78:9c, amongst other valuable information :-)
11. Start the new LDOM
ldm start-domain base
12. Log on to the console of the new LDOM. It should be waiting at the OK prompt for you to do a Jumpstart install. Use the MAC address you got from the previous step and Jumpstart install an OS on the LDOM over the network.
telnet localhost 5000
NOTE: The MAC address that you get from the OBP banner command is NOT the MAC adderess of the vnet1 interface! You will need the MAC address you got from the previous step!
13. Once you've built the LDOM OS and have customized it to your liking, you will need to create a sysidcfg file. However, in this instance make the file /etc/sysidcfg.bk. The reasons will become evident shortly.
You can find details of how to create a sysidcfg using man sysidcfg. My sysidcfg file looks like this:
system_locale=en_US.UTF-8
timezone=Australia/Victoria
timeserver=localhost
terminal=vt100
name_service=DNS{domain_name=mydomain.com.au
name_server=192.168.1.101
search=mydomain.com.au}
network_interface=PRIMARY {default_route=192.168.1.1
netmask=255.255.255.0
protocol_ipv6=no}
security_policy=NONE
root_password=my_password_hash
nfs4_domain=dynamic
14. Create the script /etc/rc0.d/K99mksysidcfg with the following contents
#!/bin/sh /usr/bin/cp -p /etc/sysidcfg.bk /etc/sysidcfg /usr/bin/rm /etc/rc0.d/K99mksysidcfg
15. Create the script /etc/rc3.d/S99ldomreconfig to add host file entries and sendmail configs
S99ldomreconfig
16.