Difference between revisions of "Creating a base LDOM image"

From Peter Pap's Technowiki
Jump to: navigation, search
Line 91: Line 91:
 
   CONTROL
 
   CONTROL
 
       failure-policy=ignore
 
       failure-policy=ignore
 
+
 
 
   DEPENDENCY
 
   DEPENDENCY
 
       master=  
 
       master=  

Revision as of 05:58, 1 June 2011

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

16. We now unconfigure the LDOM to remove it's identity. This will remove it's hostname, IP, host file entries. Hence the reason for steps 13 and 14! To do this:

 # sys-unconfig 
                       WARNING
 This program will unconfigure your system.  It will cause it
 to revert to a "blank" system - it will not have a name or know
 about other systems or networks.
 
 This program will also halt the system.
 
 Do you want to continue (y/n) ? y

The LDOM will now shutdown and will have no identity!

17. Exit out of the telnet console, and unbind the LDOM

 ldm stop-domain base
 ldm unbind base

The LDOM is now ready to clone!!!