6.13.2 Customizing the Guest Image to Add a Storage Volume and File System
The following example workflow shows how to customize a guest image to add a storage volume with a file system. You can adapt the following to perform similar customizations in your environment.
-
Prepare a host with
libguestfspackages and choose a staging server.Modification of the baseline Exadata system image is performed using the
libguestfstools (such asguestfish,virt-resize, andvirt-customize). To avoid potential issues with Oracle Exadata System Software updates, Oracle recommends using a separate Linux host to perform image modification. You can usednfto install the requiredlibguestfspackages. For example:# dnf install libguestfs-xfs libguestfs-toolsAfter image modification, the rest of the workflow is performed as
rooton an Exadata KVM host, also known as the staging server. Choose a suitable KVM host as the staging server. In this example workflow, the staging server isexa01adm05. -
Select the Exadata base system image being customized and copy it to the
libguestfsserver.Note:
The base system image must be from Oracle Exadata System Software release 26.1.0 or later.
In this example workflow, the baseline Exadata system image is
System.first.boot.26.1.0.0.0.260515.rtg.img. -
On the
libguestfsserver, examine the baseline Exadata system image.Note:
On the
libguestfsserver, setLIBGUESTFS_BACKEND=directin the Linux shell environment to avoid potential configuration and permission issues withlibguestfstools.# ls -la ./System.first.boot.26.1.0.0.0.260515.rtg.img -rw-r-----. 1 root root 106622563328 Apr 27 12:03 System.first.boot.26.1.0.0.0.260515.rtg.img # export LIBGUESTFS_BACKEND=direct # virt-filesystems -a ./System.first.boot.26.1.0.0.0.260515.rtg.img --all -h -l Name Type VFS Label MBR Size Parent /dev/sda1 filesystem xfs BOOT - 412M - /dev/sda2 filesystem unknown - - 256M - /dev/VGExaDbDomU/LVDbHome filesystem xfs HOME - 3.9G - /dev/VGExaDbDomU/LVDbKdump filesystem xfs KDUMP - 20G - /dev/VGExaDbDomU/LVDbSwap1 filesystem swap SWAP - 16G - /dev/VGExaDbDomU/LVDbSys1 filesystem xfs DBSYS - 15G - /dev/VGExaDbDomU/LVDbSys2 filesystem unknown - - 15G - /dev/VGExaDbDomU/LVDbTmp filesystem xfs TMP - 2.9G - /dev/VGExaDbDomU/LVDbVar1 filesystem xfs VAR - 1.9G - /dev/VGExaDbDomU/LVDbVar2 filesystem unknown - - 2.0G - /dev/VGExaDbDomU/LVDbVarLog filesystem xfs DIAG - 18G - /dev/VGExaDbDomU/LVDbVarLogAudit filesystem xfs AUDIT - 924M - /dev/VGExaDbDomU/LVDoNotRemoveOrUse filesystem unknown - - 2.5G - /dev/VGExaDbDomU/LVDbHome lv - - - 4.0G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbKdump lv - - - 20G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbSwap1 lv - - - 16G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbSys1 lv - - - 15G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbSys2 lv - - - 15G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbTmp lv - - - 3.0G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbVar1 lv - - - 2.0G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbVar2 lv - - - 2.0G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbVarLog lv - - - 18G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDbVarLogAudit lv - - - 1.0G /dev/VGExaDbDomU /dev/VGExaDbDomU/LVDoNotRemoveOrUse lv - - - 2.5G /dev/VGExaDbDomU /dev/VGExaDbDomU vg - - - 99G /dev/sda3 /dev/sda3 pv - - - 99G - /dev/sda1 partition - - - 512M /dev/sda /dev/sda2 partition - - - 256M /dev/sda /dev/sda3 partition - - - 99G /dev/sda /dev/sda device - - - 99G - # virt-cat -a ./System.first.boot.26.1.0.0.0.260515.rtg.img /etc/fstab libguestfs: error: mount_ro: mount: /crashfiles: mount point is not a directory virt-cat: some filesystems could not be mounted (ignored) LABEL=BOOT /boot xfs defaults,nodev,nosuid 0 0 LABEL=DBSYS / xfs defaults 0 0 LABEL=SWAP swap swap defaults 0 0 LABEL=KDUMP /crashfiles xfs defaults,nodev 0 0 LABEL=TMP /tmp xfs defaults,nodev,nosuid 0 0 LABEL=HOME /home xfs defaults,nodev,nosuid 0 0 LABEL=VAR /var xfs defaults,nodev 0 0 LABEL=DIAG /var/log xfs defaults,nodev,nosuid 0 0 LABEL=AUDIT /var/log/audit xfs defaults,nodev,noexec,nosuid 0 0 tmpfs /dev/shm tmpfs defaults,nodev,size=30831m 0 0 # qemu-img info ./System.first.boot.26.1.0.0.0.260515.rtg.img image: System.first.boot.26.1.0.0.0.260515.rtg.img file format: raw virtual size: 99.3 GiB (106622563328 bytes) disk size: 5.81 GiBTake note of the size and internal structure of the baseline image.
-
Create a clone of the baseline system image and create an image for the new storage volume and file system:
# qemu-img create -f raw custom.img 100G Formatting 'custom.img', fmt=raw size=107374182400 # virt-resize --expand /dev/sda3 ./System.first.boot.26.1.0.0.0.260515.rtg.img ./custom.img [ 0.0] Examining System.first.boot.26.1.0.0.0.260515.rtg.img 25% ... 100% ... ********** Summary of changes: /dev/sda1: This partition will be left alone. /dev/sda2: This partition will be left alone. /dev/sda3: This partition will be resized from 98.5G to 99.2G. The LVM PV on /dev/sda3 will be expanded using the ‘pvresize’ method. ********** [ 4.5] Setting up initial partition table on custom.img [ 15.7] Copying /dev/sda1 [ 16.5] Copying /dev/sda2 [ 16.8] Copying /dev/sda3 ... [ 137.1] Expanding /dev/sda3 using the ‘pvresize’ method Resize operation completed with no errors. Before deleting the old disk, carefully check that the resized disk boots and works correctly # qemu-img create -f raw extra.img 200G Formatting 'extra.img', fmt=raw size=214748364800In the example, the size of the cloned baseline image is 100 GB (
100G) and the size of the image for the new storage volume and file system is 200 GB (200G). -
Customize the base image and new storage volume.
You can use
guestfishto customize a guest image. It is recommended to prepare a script with the desired customizations and then runguestfishto apply the scripted customizations.Note:
You are responsible for all image customizations that you perform. Oracle will not support questions or issues with specific image customizations. If a guest fails, and Oracle suspects the failure may be caused by an image customization, then Oracle may ask for the issue to be reproduced on a standard (uncustomized) system.
The
guestfishutility is a powerful and flexible tool for accessing and customizing a guest image. You can use it to install application binaries and data, create or resize file systems, and perform numerous other offline customizations.The following example shows a
guestfishscript that starts by mounting the guest image and making it bootable. This initialization is a typical requirement for system images. Following the initialization phase, the script continues to perform a set of customizations to add a storage volume and configure it as an XFS file system mounted on/extra. You can use the following example as a template for similar customizations that you want to make.# cat modify.fish # Add target disk/volume to guestfs environment add ./custom.img add ./extra.img # Start execution run # Mount root filesystem (LVM root) as / mount /dev/VGExaDbDomU/LVDbSys1 / # Mount /boot partition mount /dev/sda1 /boot # Install GRUB bootloader to disk (BIOS mode) # NOTE: Not applicable for UEFI systems sh "grub2-install /dev/sda" # NOTE: Alternative for UEFI systems # Mount EFI System Partition (required for UEFI boot files) # mount /dev/sda2 /boot/efi # End of Initialization # Create PV on extra volume pvcreate /dev/sdb # Create VG on extra volume vgcreate vg_extra /dev/sdb # Create LV lvcreate-free lv_extra vg_extra 100 # Format LV with XFS and label mkfs xfs /dev/vg_extra/lv_extra label:EXTRA # Create mount directory mkdir /extra # Append fstab entry write-append /etc/fstab "LABEL=EXTRA /extra xfs defaults 0 2\n" # Exit guestfs session exitNote:
For further
guestfishcommands and examples see thelibguestfshelp at https://libguestfs.org/.After you prepare the customization script, you can run
guestfishto apply it. For example, the followingguestfishcommand runs the script at./modify.fish:# guestfish --rw -f ./modify.fishExamine any output from the
guestfishcommand to ensure that the customizations are performed as planned. -
Create a checksum for each customized image and copy the customized images back to the Exadata staging server.
You can use the Linux
sha256sumutility to create a checksum for each customized image. For example:# sha256sum ./custom.img b796a1f4b38d442f8ce1ab405525c38b92bddf1f37031580b46b7cd4af348bac ./custom.img # sha256sum ./extra.img cd4af348bacb796a1f4bf37031580b46b7cd4af348bacd442f8ce1ab405525c3 ./extra.imgThese checksums are used later to validate the integrity of the customized images after they are copied to the Exadata staging server and loaded into the Exascale volumes used for deployment.
-
On the Exadata staging server, provision volumes for the customized images.
To provision volumes for customized images, use the Exascale command line interface (ESCLI) to create new empty volumes and then attach them to the staging server. For example:
[root@exa01adm05 ~]# escli --wallet <wallet-location> --ctrl <ERS-endpoint> Wallet: <wallet-location> User: admin @> lsinitiator id hostName giClusterName giClusterId d8fd0073-59ac-e40b-d8fd-007359ace40b exa01adm06 f7c2bd74-08c7-b02c-f7c2-bd7408c7b02c exa01adm05 @> mkvolume 100g --attributes vault=sysvault_exa01,name=goldvol_exa01 Created volume with id vol0021_0804568e719c4824bcdb146d4535c5f1 @> mkvolumeattachment vol0021_0804568e719c4824bcdb146d4535c5f1 goldvol_exa01 --attributes initiator=f7c2bd74-08c7-b02c-f7c2-bd7408c7b02c Created edv attachment with id att0021_903462044500465c954358bca5e17510 @> mkvolume 200g --attributes vault=sysvault_exa01,name=extravol_exa01 Created volume with id vol0022_dd1a0d5d3fe94b97b95545d763e4324b @> mkvolumeattachment vol0022_dd1a0d5d3fe94b97b95545d763e4324b extravol_exa01 --attributes initiator=f7c2bd74-08c7-b02c-f7c2-bd7408c7b02c Created edv attachment with id att0022_dc2974e3331745099a05fb8e939b8b80 @> exitIn the example:
-
The first volume size is 100 GB (
100g), matching the size of the customized system image it will accommodate. The second volume size is 200 GB (200g), matching the size of the new storage volume containing the/extrafile system. -
The volumes are named
goldvol_exa01andextravol_exa01. You can choose your own name for each customized image. Also take note of the volume IDs (for example,vol0021_0804568e719c4824bcdb146d4535c5f1andvol0022_dd1a0d5d3fe94b97b95545d763e4324b) as you will require them later to reference the volumes. -
The volumes are created in an Exascale vault named
sysvault_exa01. You can choose an existing vault in your Exascale system or create a specific vault to house your customized images.
After volume provisioning, you can verify each volume by examining the corresponding block device at
/dev/exc/<volume-name>. For example:[root@exa01adm05 ~]# ls -la /dev/exc/*_exa01 brw-rw----. 2 root disk 251, 11 May 7 10:17 /dev/exc/goldvol_exa01 brw-rw----. 2 root disk 251, 12 May 7 10:18 /dev/exc/extravol_exa01 -
-
Copy the customized images into the prepared Exascale volumes.
For example:
[root@exa01adm05 ~]# dd if=./custom.img of=/dev/exc/goldvol_exa01 bs=16M status=progress oflag=direct ... [root@exa01adm05 ~]# dd if=./extra.img of=/dev/exc/extravol_exa01 bs=16M status=progress oflag=direct ... -
Catalog the gold-image volumes.
As an operational best practice, you should maintain a catalog of your customized gold-images. For each image, you should maintain metadata to help you identify the image and its contents. You should also keep checksum information to validate the integrity of each image.
To ensure an enduring read-only copy of the customized image, you can create a snapshot of the underlying Exascale volume. To identify the Exascale volume, use the volume ID reported during volume creation. For example:
[root@exa01adm05 ~]# escli --wallet <wallet-location> --ctrl <ERS-endpoint> @> mkvolumesnapshot vol0021_0804568e719c4824bcdb146d4535c5f1 --attributes name=goldvol_exa01_snap1 Created volume snapshot with id vol0021_snap0001_50e52177583f4be4bad68ac20b65001e @> mkvolumesnapshot vol0022_dd1a0d5d3fe94b97b95545d763e4324b --attributes name=extravol_exa01_snap1 Created volume snapshot with id vol0022_snap0001_5217ad68ac207583fb65001e50e4be4bTake note of the volume snapshot IDs (for example,
vol0021_snap0001_50e52177583f4be4bad68ac20b65001eandvol0022_snap0001_5217ad68ac207583fb65001e50e4be4b) as you will require them to reference the volume snapshots.After you create a volume snapshot, you can continue to use the original volume for further customizations. At any point you can make another snapshot for a different generation of the customized image.
After you have a snapshot for each validated and tested image, you can lock them to prevent accidental deletion. For example:
@> chvolumesnapshot vol0021_snap0001_50e52177583f4be4bad68ac20b65001e --attributes lockExpiryTime=2050-06-30T13:00:00,lockImmutable=true @> chvolumesnapshot vol0022_snap0001_5217ad68ac207583fb65001e50e4be4b --attributes lockExpiryTime=2050-06-30T13:00:00,lockImmutable=trueTo use a set of validated and tested images, make volume clones and associated attachments. For example:
@> mkvolume --attributes volumeSnapshot=vol0021_snap0001_50e52177583f4be4bad68ac20b65001e,name=goldvol_exa01_clone1 Created volume with id vol0039_e9867af0dc03439698e5f6d7edf43a04 @> mkvolumeattachment vol0039_e9867af0dc03439698e5f6d7edf43a04 goldvol_exa01_clone1 --attributes initiator=f7c2bd74-08c7-b02c-f7c2-bd7408c7b02c Created edv attachment with id att0031_690f91c85ad64573a93485426467977b @> mkvolume --attributes volumeSnapshot=vol0022_snap0001_5217ad68ac207583fb65001e50e4be4b,name=extravol_exa01_clone1 Created volume with id vol0040_5f6d7ed43dc690398ef43a04e9867af0 @> mkvolumeattachment vol0040_5f6d7ed43dc690398ef43a04e9867af0 extravol_exa01_clone1 --attributes initiator=f7c2bd74-08c7-b02c-f7c2-bd7408c7b02c Created edv attachment with id att0032_64573a93c85a7b4d2646797854690f91The volume clones behave just like the original Exascale volumes, with the added convenience that it is easy to drop and re-create them to return back to the snapshot state.
You can use the Linux
sha256sumutility to create a checksum for each customized image. For example:[root@exa01adm05 ~]# sha256sum /dev/exc/goldvol_exa01_clone1 b796a1f4b38d442f8ce1ab405525c38b92bddf1f37031580b46b7cd4af348bac /dev/exc/goldvol_exa01_clone1 [root@exa01adm05 ~]# sha256sum /dev/exc/extravol_exa01_clone1 cd4af348bacb796a1f4bf37031580b46b7cd4af348bacd442f8ce1ab405525c3 /dev/exc/extravol_exa01_clone1Compare the checksums with the ones created on the
libguestfsserver to validate that the images have not changed. You can also save the checksums in the image catalog and check them every time you use the images. -
Clone the customized images to the required KVM hosts.
Before you can reference a customized image in an Exadata guest VM, you must clone the image to make it available on the required KVM hosts.
You can use the Oracle Exadata Deployment Assistant (OEDA) Command Line Utility (OEDACLI) to perform the required actions.
Following is an example of the required command sequence. In the example:
-
exa01adm05andexa01adm06identify the KVM hosts that will expose the customized images. The command sequence assumes that the customized images are being cloned to two hosts. However, you can extend this to any required number of hosts. -
goldvol_exa01adm05andextravol_exa01adm05are the volume names used to identify the volumes onexa01adm05.goldvol_exa01adm06andextravol_exa01adm06are used to identify the volumes onexa01adm06. -
vol0039_e9867af0dc03439698e5f6d7edf43a04andvol0040_5f6d7ed43dc690398ef43a04e9867af0are the Exascale volume IDs associated with the customized images. -
/root/es.xmlrepresents the path to the Exadata XML configuration file for your system.
[root@exa01adm05 linux-x64]# cat ./clone.cmd CLONE EDVVOLUME volumename=goldvol_exa01adm05 where volumesource=vol0039_e9867af0dc03439698e5f6d7edf43a04 hostname=exa01adm05 SAVE ACTION MERGE ACTIONS DEPLOY ACTIONS CLONE EDVVOLUME volumename=extravol_exa01adm05 where volumesource=vol0040_5f6d7ed43dc690398ef43a04e9867af0 hostname=exa01adm05 SAVE ACTION MERGE ACTIONS DEPLOY ACTIONS CLONE EDVVOLUME volumename=goldvol_exa01adm06 where volumesource=vol0039_e9867af0dc03439698e5f6d7edf43a04 hostname=exa01adm06 SAVE ACTION MERGE ACTIONS DEPLOY ACTIONS CLONE EDVVOLUME volumename=extravol_exa01adm06 where volumesource=vol0040_5f6d7ed43dc690398ef43a04e9867af0 hostname=exa01adm06 SAVE ACTION MERGE ACTIONS DEPLOY ACTIONS SAVE FILE [root@exa01adm05 linux-x64]# ./oedacli -c /root/es.xml -f ./clone.cmd Version : 260504 SUCCESS - file loaded OK Customer : Example - Example processMerge processMergeActions Merging Action : CLONE EDVVOLUME volumename=goldvol_exa01adm05 where volumesource=vol0039_e9867af0dc03439698e5f6d7edf43a04 hostname=exa01adm05 Merging CLONE EDVVOLUME Action Validated and Merged OK Deploying Action ID : 12 CLONE EDVVOLUME volumename=goldvol_exa01adm05 where volumesource=vol0039_e9867af0dc03439698e5f6d7edf43a04 hostname=exa01adm05 Deploying CLONE EDVVOLUME Found the source EDV volume goldvol_exa01_clone1 for volume source vol0039_e9867af0dc03439698e5f6d7edf43a04 Cloned an EDV volume with Exascale Volume ID vol0053_4bb5b73865774dcd8da0bec3ee73c176 Attached volume vol0053_4bb5b73865774dcd8da0bec3ee73c176 into KVM host exa01adm05.example.com for guest exa01adm05.example.com in /dev/exc/goldvol_exa01adm05_vol0053_4bb5b73865774dcd8da0bec3ee73c176 Done... Done [Elapsed = 16457 mS [0.0 minutes] Thu May 07 11:41:12 PDT 2026]] processMerge processMergeActions Merging Action : CLONE EDVVOLUME volumename=extravol_exa01adm05 where volumesource=vol0040_5f6d7ed43dc690398ef43a04e9867af0 hostname=exa01adm05 Merging CLONE EDVVOLUME Action Validated and Merged OK Deploying Action ID : 13 CLONE EDVVOLUME volumename=extravol_exa01adm05 where volumesource=vol0040_5f6d7ed43dc690398ef43a04e9867af0 hostname=exa01adm05 Deploying CLONE EDVVOLUME Found the source EDV volume extravol_exa01_clone1 for volume source vol0040_5f6d7ed43dc690398ef43a04e9867af0 Cloned an EDV volume with Exascale Volume ID vol0054_b804ab74ccd7400ca5aef861f588be54 Attached volume vol0054_b804ab74ccd7400ca5aef861f588be54 into KVM host exa01adm05.example.com for guest exa01adm05.example.com in /dev/exc/extravol_exa01adm05_vol0054_b804ab74ccd7400ca5aef861f588be54 Done... Done [Elapsed = 10285 mS [0.0 minutes] Thu May 07 11:41:22 PDT 2026]] processMerge processMergeActions Merging Action : CLONE EDVVOLUME volumename=goldvol_exa01adm06 where volumesource=vol0039_e9867af0dc03439698e5f6d7edf43a04 hostname=exa01adm06 Merging CLONE EDVVOLUME Action Validated and Merged OK Deploying Action ID : 14 CLONE EDVVOLUME volumename=goldvol_exa01adm06 where volumesource=vol0039_e9867af0dc03439698e5f6d7edf43a04 hostname=exa01adm06 Deploying CLONE EDVVOLUME Found the source EDV volume goldvol_exa01_clone1 for volume source vol0039_e9867af0dc03439698e5f6d7edf43a04 Cloned an EDV volume with Exascale Volume ID vol0055_1f7d044d6a93435d9bf79c788a811e3e Attached volume vol0055_1f7d044d6a93435d9bf79c788a811e3e into KVM host exa01adm06.example.com for guest exa01adm06.example.com in /dev/exc/goldvol_exa01adm06_vol0055_1f7d044d6a93435d9bf79c788a811e3e Done... Done [Elapsed = 10305 mS [0.0 minutes] Thu May 07 11:41:32 PDT 2026]] processMerge processMergeActions Merging Action : CLONE EDVVOLUME volumename=extravol_exa01adm06 where volumesource=vol0040_5f6d7ed43dc690398ef43a04e9867af0 hostname=exa01adm06 Merging CLONE EDVVOLUME Action Validated and Merged OK Deploying Action ID : 15 CLONE EDVVOLUME volumename=extravol_exa01adm06 where volumesource=vol0040_5f6d7ed43dc690398ef43a04e9867af0 hostname=exa01adm06 Deploying CLONE EDVVOLUME Found the source EDV volume extravol_exa01_clone1 for volume source vol0040_5f6d7ed43dc690398ef43a04e9867af0 Cloned an EDV volume with Exascale Volume ID vol0056_11b7c5feb9c74ca6b1e1e9b45578ea93 Attached volume vol0056_11b7c5feb9c74ca6b1e1e9b45578ea93 into KVM host exa01adm06.example.com for guest exa01adm06.example.com in /dev/exc/extravol_exa01adm06_vol0056_11b7c5feb9c74ca6b1e1e9b45578ea93 Done... Done [Elapsed = 10120 mS [0.0 minutes] Thu May 07 11:41:43 PDT 2026]] File : /root/es.xml saved OK [root@exa01adm05 linux-x64]#Examine the OEDACLI output to determine the corresponding block device for the image volumes on each KVM host. For example,
/dev/exc/goldvol_exa01adm05_vol0053_4bb5b73865774dcd8da0bec3ee73c176and/dev/exc/extravol_exa01adm05_vol0054_b804ab74ccd7400ca5aef861f588be54onexa01adm05, plus/dev/exc/goldvol_exa01adm06_vol0055_1f7d044d6a93435d9bf79c788a811e3eand/dev/exc/extravol_exa01adm06_vol0056_11b7c5feb9c74ca6b1e1e9b45578ea93onexa01adm06. Take note of these block devices as you will require them to reference the customized images in your guest VMs. -
-
Alter the configuration of the Exadata guest VMs to use the customized images.
To use a customized image in Exadata guest VMs, you must first define the VMs using OEDA as you would for any Exadata VM cluster. Then, before deploying the cluster, you must alter the VM definition in the Exadata XML configuration file using OEDACLI.
Following is an example of the required command sequence. In the example:
-
exa01adm05vm01andexa01adm06vm01identify the guest VMs being altered.It is assumed that
exa01adm05vm01resides on the KVM hostexa01adm05, andexa01adm06vm01resides onexa01adm06.The command sequence assumes that the customized image is being used across two guests. However, you can extend this to any required number of guests.
-
The
imagefilesettings reference the block devices for the cloned image volumes on each KVM host (shown in the previous step).exa01adm05vm01references volumes on the KVM hostexa01adm05, where/dev/exc/goldvol_exa01adm05_vol0053_4bb5b73865774dcd8da0bec3ee73c176is the system gold-image and/dev/exc/extravol_exa01adm05_vol0054_b804ab74ccd7400ca5aef861f588be54is the extra volume image.exa01adm06vm01references volumes on the KVM hostexa01adm06, where/dev/exc/goldvol_exa01adm06_vol0055_1f7d044d6a93435d9bf79c788a811e3eis the system gold-image and/dev/exc/extravol_exa01adm06_vol0056_11b7c5feb9c74ca6b1e1e9b45578ea93is the extra volume image. -
The
imagefileoption=ADDEXTRAEXCVOLsetting adds an extra (non-standard) volume to the guest VM. -
/root/cluster01-es.xmlrepresents the path to the Exadata XML configuration file containing the VMs being altered.
[root@exa01adm05 linux-x64]# cat ./update.cmd ALTER MACHINE imagefile=/dev/exc/goldvol_exa01adm05_vol0053_4bb5b73865774dcd8da0bec3ee73c176 where hostname=exa01adm05vm01 SAVE ACTION MERGE ACTIONS ALTER MACHINE imagefileoption=ADDEXTRAEXCVOL imagefile=/dev/exc/extravol_exa01adm05_vol0054_b804ab74ccd7400ca5aef861f588be54 where hostname=exa01adm05vm01 SAVE ACTION MERGE ACTIONS ALTER MACHINE imagefile=/dev/exc/goldvol_exa01adm06_vol0055_1f7d044d6a93435d9bf79c788a811e3e where hostname=exa01adm06vm01 SAVE ACTION MERGE ACTIONS ALTER MACHINE imagefileoption=ADDEXTRAEXCVOL imagefile=/dev/exc/extravol_exa01adm06_vol0056_11b7c5feb9c74ca6b1e1e9b45578ea93 where hostname=exa01adm06vm01 SAVE ACTION MERGE ACTIONS SAVE FILE [root@exa01adm05 linux-x64]# ./oedacli -c /root/cluster01-es.xml -f ./update.cmd Version : 260504 SUCCESS - file loaded OK Customer : Example - Example processMerge processMergeActions Merging Action : ALTER MACHINE imagefile=/dev/exc/goldvol_exa01adm05_vol0053_4bb5b73865774dcd8da0bec3ee73c176 where hostname=exa01adm05vm01 Merging ALTER MACHINE Action Validated and Merged OK processMerge processMergeActions Merging Action : ALTER MACHINE imagefileoption=ADDEXTRAEXCVOL imagefile=/dev/exc/extravol_exa01adm05_vol0054_b804ab74ccd7400ca5aef861f588be54 where hostname=exa01adm05vm01 Merging ALTER MACHINE Action Validated and Merged OK processMerge processMergeActions Merging Action : ALTER MACHINE imagefile=/dev/exc/goldvol_exa01adm06_vol0055_1f7d044d6a93435d9bf79c788a811e3e where hostname=exa01adm06vm01 Merging ALTER MACHINE Action Validated and Merged OK processMerge processMergeActions Merging Action : ALTER MACHINE imagefileoption=ADDEXTRAEXCVOL imagefile=/dev/exc/extravol_exa01adm06_vol0056_11b7c5feb9c74ca6b1e1e9b45578ea93 where hostname=exa01adm06vm01 Merging ALTER MACHINE Action Validated and Merged OK File : /root/cluster01-es.xml saved OK [root@exa01adm05 linux-x64]# -
-
Deploy the Exadata guest VMs using the customized image.
Use the OEDA deployment script (
install.sh) to deploy the customized guest VMs. For example:[root@exa01adm05 linux-x64]# ./install.sh -cf /root/cluster01-es.xml -s 4 Initializing ===== Executing Create Virtual Machine ===== Checking Secure Fabric setup in [exa01celadm09.example.com, exa01celadm07.example.com, exa01celadm08.example.com] Checking status of remote files... Checking status of existing files on remote nodes... Getting status of local files... Creating KVM hosts vaults: sysvault_exa01adm06,sysvault_exa01adm05 Vault sysvault_exa01adm06 was already created Vault sysvault_exa01adm05 was already created Creating EDV volumes and attachments... Setting up exascale on KVM hosts if not already setup Setting up exascale with lock on host: exa01adm05.example.com Setting up exascale with lock on host: exa01adm06.example.com Created 10 EDV volumes in 3163 mS Found 10 volume attachments Created EDV volume attachments in 3875 mS Successfully created EDV volumes and attachments. Creating guests for cluster Cluster-cluster01 Creating KVM guests in cluster Cluster-cluster01 File name is /EXAVMIMAGES/upgrade/linux-x64/WorkDir/exa01adm05vm01.example.com-vm.xml File name is /EXAVMIMAGES/upgrade/linux-x64/WorkDir/exa01adm06vm01.example.com-vm.xml Creating KVM guest using /EXAVMIMAGES/upgrade/linux-x64/WorkDir/exa01adm05vm01.example.com-vm.xml on node exa01adm05.example.com Creating KVM guest using /EXAVMIMAGES/upgrade/linux-x64/WorkDir/exa01adm06vm01.example.com-vm.xml on node exa01adm06.example.com KVM Guests created, waiting for guests to start... No config Keys in the configuration file.. Creating databasemachine.xml for EM discovery Done Creating databasemachine.xml for EM discovery ===== Successfully completed execution of step Create Virtual Machine [elapsed Time [Elapsed = 314491 mS [5.0 minutes] Thu May 07 11:49:36 PDT 2026]] ===== [root@exa01adm05 linux-x64]#Note that the deployment does not specifically identify when customized images are used.
To confirm that the customized images were used, examine the newly created guest VMs and verify that they contain the expected customizations. For example, the following confirms that guest VM
exa01adm05vm01has the new volume with the/extrafile system:[root@exa01adm05 ~]# ssh -l root exa01adm05vm01 root@exa01adm05vm01's password: ... [root@exa01adm05vm01 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 40G 0 40G 0% /dev tmpfs 41G 5.2M 41G 1% /run tmpfs 41G 0 41G 0% /sys/fs/cgroup /dev/mapper/VGExaDbDomU-LVDbSys1 15G 3.0G 12G 21% / /dev/mapper/VGExaDbDomU-LVDbTmp 3.0G 54M 2.9G 2% /tmp /dev/sda1 412M 170M 243M 42% /boot /dev/mapper/VGExaDbDomU-LVDbKdump 20G 175M 20G 1% /crashfiles /dev/mapper/vg_extra-lv_extra 200G 1.5G 199G 1% /extra /dev/mapper/VGExaDbDomU-LVDbVar1 2.0G 146M 1.8G 8% /var /dev/mapper/VGExaDbDomU-LVDbHome 4.0G 61M 3.9G 2% /home /dev/mapper/VGExaDbDomU-LVDbVarLog 18G 191M 18G 2% /var/log /dev/mapper/VGExaDbDomU-LVDbVarLogAudit 924M 40M 885M 5% /var/log/audit tmpfs 81G 4.0K 81G 1% /dev/shm /dev/mapper/VGExaDbDisk.scaqan08adm05vm04_u01_vol0042_f30f22cbc7c94b278b6426d726d9ce3c-LVDBDisk 18G 161M 18G 1% /u01 /dev/mapper/VGExaDbDisk.scaqan08adm05vm04_gih01_vol0031_cc03aa825ac64dfcb52f67a95c7d1705-LVDBDisk 48G 3.1G 45G 7% /u01/app/23.0.0.0/grid /dev/mapper/VGExaDbDisk.scaqan08adm05vm04_dbh01_vol0041_e5f46b7535104263b1126520268d26f7-LVDBDisk 48G 8.6G 40G 18% /u01/app/oracle/product/23.0.0.0/dbhome_4 tmpfs 8.1G 0 8.1G 0% /run/user/0 [root@exa01adm05vm01 ~]#
Parent topic: Customizing the Guest Image