Solaris Cluster · Kernel Zone Administration

Disk Replacement for Kernel Zone under Solaris Cluster

This document explains the complete process of replacing or expanding a disk assigned to a Solaris Kernel Zone running inside a Solaris Cluster environment. The procedure includes SAN rescan, DID device verification, ZFS pool replacement and cluster synchronization.

1. Change Management Process

Disk replacement activity normally begins with a formal Change Management (CM) request raised by the requesting application or infrastructure team.

  • The requesting team raises a request for additional storage or replacement of an existing LUN.
  • The storage team provisions and presents the new SAN LUN to all required cluster nodes.
  • The UNIX or ESO team performs operating system level disk configuration, Kernel Zone device assignment and ZFS pool replacement activities.
  • All activities should be performed during an approved maintenance window to avoid unexpected service interruptions.

2. Identify Kernel Zones on Cluster Node

Log in to the Solaris Cluster global zone and identify all running Kernel Zones using the zoneadm list -icv command.

terminal — bash
infounix@prod
{op}@ylasg810 # zoneadm list -icv
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
18 yvks3350 running - solaris-kz excl
20 yvks2910 running - solaris-kz excl
21 yvks01d0 running - solaris-kz excl
22 yvks3370 running - solaris-kz excl
23 yvks3380 running - solaris-kz excl
25 yvks0430 running - solaris-kz excl
27 yvks02r0 running - solaris-kz excl
29 yvks00p0 running - solaris-kz excl
{op}@ylasg810 #

The command displays all configured Solaris zones along with their operational state.

In an active-active or active-passive cluster setup:

  • Active node zones usually appear in running state.
  • Passive node zones may appear in configured state.

Identify the Kernel Zone where disk replacement activity needs to be performed.

3. Verify Filesystem and ZFS Pool Inside Kernel Zone

Log in to the target Kernel Zone and identify the filesystem, mountpoint and ZFS pool associated with the disk that needs to be replaced or expanded.

terminal — bash
infounix@prod
# df -h | grep <filesystem>
# df -h <mountpoint>
# zpool status <pool_name>

Example output:

terminal — bash
infounix@prod
root@yvks0430:~# df -h /users99
 
Filesystem Size Used Available Capacity Mounted on
yvks0430dg09/users99vol 139G 5.71G 133G 5% /users99
 
root@yvks0430:~# zpool status yvks0430dg09
 
pool: yvks0430dg09
state: ONLINE
config:
 
NAME STATE READ WRITE CKSUM
yvks0430dg09 ONLINE 0 0 0
c1d26 ONLINE 0 0 0
 
errors: No known data errors

Carefully note the following details before continuing:

  • ZFS pool name
  • Mountpoint or filesystem path
  • Existing disk identifier
  • DID device mapping
  • LUN ID and storage metadata
  • Existing disk capacity

4. Rescan SAN Disks on Cluster Node

After the storage team presents the new LUN, perform a SAN rescan on the Solaris Cluster node to discover newly attached storage devices.

terminal — bash
infounix@prod
{op}@ylasg810 # rescan_san.sh
 
cfgadm -c configure c3
cfgadm -c configure c4
devfsadm -Cv
/usr/cluster/bin/cldevice clear
/usr/cluster/bin/cldevice refresh
/usr/cluster/bin/cldevice populate

The SAN rescan process performs the following operations:

  • Detects newly presented SAN LUNs
  • Refreshes Solaris device tree
  • Updates Solaris Cluster DID mappings
  • Synchronizes shared devices across cluster nodes

Verify newly detected disks using:

terminal — bash
infounix@prod
{op}@ylasg810 # vxfabric.sh -a

Compare old and newly presented disks carefully.

terminal — bash
infounix@prod
New Disk (260GB): 6000097011BD06E444E5008D00000C12 c1d13/d201
Old Disk (170GB): 6000097011BD06E444E5008D0000065D c1d26/d193

Cross-check the DID device assignment in the Kernel Zone configuration.

terminal — bash
infounix@prod
# zonecfg -z <kernel_zone> info

5. Add New Disk to Kernel Zone

Add the newly discovered DID device to the target Kernel Zone using zonecfg .

terminal — bash
infounix@prod
zonecfg -z <kernel_zone>
add device
set storage=dev:did/dsk/<DID_ID>
info
end
verify
commit
exit

Example configuration:

terminal — bash
infounix@prod
zonecfg:yvks0430> add device
zonecfg:yvks0430:device> set storage=dev:did/dsk/d218
zonecfg:yvks0430:device> info
device 30:
storage: dev:did/dsk/d218
id: 2
zonecfg:yvks0430> verify
zonecfg:yvks0430> commit

Apply the updated zone configuration:

terminal — bash
infounix@prod
# zoneadm -z <kernel_zone> verify
# zoneadm -z <kernel_zone> apply

After applying the configuration, log in to the Kernel Zone and verify that the new disk is visible.

terminal — bash
infounix@prod
# zlogin <kernel_zone>
# echo | format

6. Replace Disk in ZFS Pool

Inside the Kernel Zone, replace the old disk with the newly added disk in the ZFS pool.

terminal — bash
infounix@prod
# zpool replace <pool_name> <old_disk> <new_disk>
# zpool status <pool_name>

Example:

terminal — bash
infounix@prod
root@yvks0430:/# zpool replace yvks0430dg09 c1d26 c1d13
root@yvks0430:/# zpool status yvks0430dg09

The replacement process triggers resilvering, where ZFS copies data from the old disk to the new disk.

Continue monitoring the pool status until resilvering completes and the pool state returns to ONLINE.

7. Remove Old Disk from Kernel Zone

Once resilvering completes successfully, remove the old DID device from the Kernel Zone configuration.

terminal — bash
infounix@prod
zonecfg -z <kernel_zone>
remove device id=<old_disk_id>
verify
commit
exit

Example:

terminal — bash
infounix@prod
zonecfg:yvks0430> remove device id=6
zonecfg:yvks0430> verify
zonecfg:yvks0430> commit

Apply the updated zone configuration:

terminal — bash
infounix@prod
# zoneadm -z <kernel_zone> verify
# zoneadm -z <kernel_zone> apply

8. Remove Old Disk from Cluster Node

Offline and remove the old disk from the Solaris Cluster node after confirming that it is no longer used by the Kernel Zone or ZFS pool.

terminal — bash
infounix@prod
# luxadm -e offline /dev/rdsk/<old_LUN>
# /usr/cluster/bin/cldevice clear
# /usr/cluster/bin/cldevice refresh
# /usr/cluster/bin/cldevice populate

These commands refresh Solaris Cluster device mappings and remove stale references to the old disk.

9. Synchronize Zone Configuration Between Cluster Nodes

Synchronize updated Kernel Zone XML configuration files across all cluster nodes to maintain consistency.

terminal — bash
infounix@prod
# scp -p /etc/zones/<kernel_zone>.xml node2:/etc/zones/<kernel_zone>.xml

This ensures failover nodes contain the same Kernel Zone device configuration and DID mappings.

✅ Procedure Completed Successfully

The Kernel Zone is now operating with the newly assigned disk and the previous disk has been completely removed from Solaris Cluster configuration and ZFS pool membership.

⚠️ Important Operational Notes

  • Always verify ZFS resilver completion before removing the old disk.
  • Use /dev/rdsk instead of block devices while offlining storage devices.
  • Confirm cluster DID mappings carefully before assigning disks to Kernel Zones.
  • Keep a backup of Kernel Zone XML configuration files before making changes.