| name | solaris |
| description | Solaris 9/10/11 administration on SPARC (UltraSPARC III/IV/T-series) and x86. Covers SMF (svcs/svcadm/svccfg), ZFS (pools/datasets/snapshots/send-receive/scrub), Zones (sparse/whole-root/branded/LDoms), DTrace, IPMP, LACP/dladm/ipadm, VxVM/VxFS, UFS, OpenBoot (OBP), Jumpstart/AI install, hardware diagnostics (prtdiag/prtconf/luxadm/cfgadm), Solaris RBAC, and process management. Use when working on production Solaris systems or migrating Solaris workloads. |
| metadata | {"author":"Ryan Loiselle","version":"1.0"} |
| compatibility | Solaris 9, 10, 11. SPARC UltraSPARC-III/IV, T1/T2/T4/T5/M-series. And x86 where noted. |
Solaris Skill
Expert Solaris administration reference — SPARC production focus.
Ryan's context: Expert-level Solaris 9/10/11 SPARC admin. UltraSPARC III/IV (Sun Blade, Sun Fire, E6900), T-series (T1/T2/T4/T5), M-series. Managed production systems including Jumpstart infrastructure, ZFS migrations, Solaris Zones, and VxVM storage stacks.
SMF — Service Management Framework (Solaris 10/11)
svcs -a
svcs -x
svcs -xv <svc-name>
svcs -l apache22
svcadm enable <svc>
svcadm disable <svc>
svcadm restart <svc>
svcadm refresh <svc>
svcadm clear <svc>
svccfg import /var/svc/manifest/...
svccfg -s <svc> listprop
svccfg -s <svc> setprop <pg>/<prop>=<type>:<value>
svccfg -s <svc> delprop <pg>/<prop>
svcs -L <svc>
tail -f $(svcs -L <svc>)
svc:/network/http:apache22
svcs http
Service States
| State | Meaning |
|---|
| online | Running normally |
| offline | Stopped; dependencies not yet met |
| disabled | Administratively disabled |
| maintenance | Failed; requires svcadm clear after fix |
| degraded | Running but not fully functional |
| uninitialized | Not yet evaluated |
| legacy_run | Pre-SMF init.d service that is running |
ZFS
Pool Management
zpool create -f rpool mirror c1t0d0 c1t1d0
zpool status
zpool status -v
zpool list
zpool scrub rpool
zpool status rpool
zpool replace rpool c1t0d0 c1t2d0
zpool add rpool log c2t0d0
zpool add rpool cache c2t1d0
zpool export rpool
zpool import rpool
zpool import -d /dev/dsk
Dataset Management
zfs create rpool/data
zfs create -o mountpoint=/var/www rpool/www
zfs get all rpool/data
zfs set compression=lz4 rpool/data
zfs set quota=100G rpool/data
zfs set reservation=10G rpool/data
zfs set atime=off rpool/data
zfs set recordsize=128k rpool/data
zfs snapshot rpool/data@snap1
zfs list -t snapshot
zfs diff rpool/data@snap1 rpool/data
zfs rollback rpool/data@snap1
zfs destroy rpool/data@snap1
zfs clone rpool/data@snap1 rpool/data-clone
zfs send rpool/data@snap1 | ssh backup-host zfs receive tank/data
zfs send -R rpool/data@snap1 | gzip > /backup/data.zfs.gz
zfs send -i rpool/data@snap1 rpool/data@snap2 | ...
Solaris Zones
zoneadm list -cv
zonecfg -z myzone
create
set zonepath=/zones/myzone
set autoboot=true
add net
set address=10.0.0.50/24
set physical=e1000g0
set defrouter=10.0.0.1
end
verify; commit; exit
zoneadm -z myzone install
zoneadm -z myzone boot
zlogin myzone
zlogin -C myzone
zonecfg -z myzone
create -b
set brand=solaris
...
zoneadm -z myzone halt
zoneadm -z myzone uninstall
zonecfg -z myzone delete
zonecfg -z legacy8
set brand=solaris8
...
IPMP — IP Network Multipathing
ifconfig e1000g0 plumb
ifconfig e1000g0 10.0.0.10/24 group ipmp0 up
ifconfig e1000g1 plumb
ifconfig e1000g1 10.0.0.11/24 group ipmp0 standby up
ifconfig ipmp0
ipmpstat -g
ipmpstat -i
dladm create-ipmp ipmp0
dladm add-ipmp -i net0 ipmp0
dladm add-ipmp -i net1 ipmp0
ipadm create-addr -T static -a 10.0.0.10/24 ipmp0/v4
Network Administration (Solaris 11)
dladm show-link
dladm show-phys
dladm show-bridge
dladm create-vlan -l net0 -v 100 net0.100
dladm create-aggr -l net0 -l net1 aggr0
dladm show-aggr
ipadm show-addr
ipadm create-addr -T dhcp net0/dhcp
ipadm create-addr -T static -a 10.0.0.5/24 net0/v4
ipadm delete-addr net0/v4
snoop -d net0
snoop -o /tmp/cap.snoop
snoop -i /tmp/cap.snoop
snoop host 10.0.0.1 and port 443
snoop -v
DTrace
dtrace -n 'syscall:::entry { @[execname] = count(); }'
dtrace -n 'io:::start { @[execname] = sum(args[0]->b_bcount); }'
dtrace -n 'profile-997 /arg0/ { @[stack()] = count(); }'
dtrace -n 'syscall::read:entry /pid == $1/ { trace(arg2); }' <pid>
dtrace -n 'zfs::: { @lat[probename] = quantize(arg0); }'
dtrace -n 'io:::done /args[0]->b_flags & B_READ &&
(timestamp - self->start) > 10000000/
{ printf("%s %s %d\n", execname, args[2]->fi_pathname,
(timestamp - self->start)/1000000); }
io:::start { self->start = timestamp; }'
Hardware Diagnostics (SPARC)
prtconf
prtconf -v
prtdiag
prtdiag -v
psrinfo -v
psrinfo -p
luxadm display /dev/rdsk/c1t0d0s2
luxadm probe
cfgadm -al
cfgadm -c configure c1
cfgadm -c unconfigure c1
iostat -xnz 2
fmadm faulty
fmadm repaired <uuid>
fmdump -e
fmsconfig
OpenBoot PROM (OBP) — SPARC
# Reach OBP:
Halt system: init 0 → ok prompt
Break from console: ~# (telnet), Break key, or Stop-A (keyboard)
# Key OBP commands
ok boot # boot default device
ok boot disk1 # boot disk 1
ok boot disk1 -s # single-user mode
ok boot cdrom # boot from CD/DVD
ok boot net # net boot (RARP/TFTP/Jumpstart)
ok boot -r # reconfigure boot (rescans devices)
ok probe-scsi-all # scan all SCSI/FC buses
ok probe-ide # scan IDE
ok show-disks # list disk aliases
ok show-devs # device tree
ok devalias # list all device aliases
ok setenv auto-boot? false # prevent auto-boot
ok setenv boot-device disk1 net # set boot order
ok printenv # show all NVRAM variables
ok reset-all # hard reset (like power cycle)
LDoms — Logical Domains (Oracle VM Server for SPARC)
LDoms virtualise T-series SPARC hardware (T1/T2/T4/T5/M-series) at the CPU/memory/IO level. Requires Solaris 10 Update 5+ or Solaris 11 on a CMT processor. The hypervisor runs in firmware; ldm is the management tool.
Domain Roles
| Domain | Role | Notes |
|---|
| Primary (control) | Boots first; owns hardware; runs ldmd | Cannot be suspended or migrated |
| Service (I/O) | Hosts virtual disk/network switches | Usually primary also acts as service domain |
| Guest | Standard Solaris instance with virtual resources | Can be live-migrated (T4/T5) |
| Root | Has direct PCIe bus ownership | For physical I/O pass-through to a guest |
Initial Setup (after enabling hypervisor)
ldm set-core 4 primary
ldm set-memory 4G primary
ldm start-reconf primary
virtinfo -a
ldm ls
Virtual Switch and VDS
ldm add-vswitch net-dev=net0 primary-vsw0 primary
zfs create -V 80G rpool/vdisk-guest1
ldm add-vdsdev /dev/zvol/dsk/rpool/vdisk-guest1 vol1@primary-vds0
ldm add-vds primary-vds0 primary
Creating a Guest Domain
ldm add-domain guest1
ldm set-core 2 guest1
ldm set-memory 4G guest1
ldm add-vnet vnet0 primary-vsw0 guest1
ldm add-vdisk vdisk0 vol1@primary-vds0 guest1
ldm set-variable boot-device=vdisk0 guest1
ldm bind-domain guest1
ldm start-domain guest1
ldm attach-console guest1
Guest Domain Lifecycle
ldm ls
ldm ls -l guest1
ldm stop-domain guest1
ldm stop-domain -f guest1
ldm start-domain guest1
ldm destroy guest1
ldm add-spconfig saved-config
ldm list-spconfig
ldm remove-spconfig <name>
Live Migration (T4/T5 — requires identical hardware generation)
ldm migrate-domain guest1 root@target-host
ldm migrate-domain -p guest1 root@target-host
Resource Inspection
ldm ls-devices
ldm ls-devices -a core
ldm ls-devices memory
ldm ls-io
virtinfo
prtconf | grep -i "virtual"
Console Access
ldm attach-console guest1
T-Series Hardware Notes
T1 (Niagara 1): 8 cores × 4 threads = 32 strands. Single CMT chip.
T2 (Niagara 2): 8 cores × 8 threads = 64 strands. Integrated 10GbE.
T4: 8 cores × 8 threads. Out-of-order exec; much stronger single-thread perf vs T1/T2.
T5: 16 cores × 8 threads = 128 strands per socket. Up to 8 sockets (T5-8 = 1024 strands).
Core allocation must be in whole cores (4 threads each on T1/T4; 8 on T2/T5).
Memory allocation must be aligned to Memory Address Range boundary (typically 256MB granularity).
LDom guests on T4/T5 support crypto acceleration (Camellia, AES, RSA) via virtual crypto service.
Jumpstart / AI Install
add_install_client -d -e <mac> -s <server>:<path> <arch> <type>
installadm create-service
installadm create-client -e <mac>
installadm set-criteria -n <svc>
ai_manifest.xml
Solaris VxVM / VxFS
vxdisk list
vxdg list
vxprint -htg rootdg
vxassist make vol1 10g mirror diskgroup=datadg
vxstat
fsck -F vxfs /dev/vx/dsk/datadg/vol1
vxtunefs /mountpoint
Key Solaris Log Locations
| Log | Purpose |
|---|
/var/adm/messages | Main system log (syslog output) |
/var/svc/log/<svc>.log | SMF service log |
/var/log/syslog | Alternative on some configs |
/var/crash/<host> | Kernel crash dumps |
/var/adm/sulog | su attempts |
/var/adm/wtmpx | Login history (last) |
/var/adm/lastlog | Last login per user |
fmdump -e | FMA error events |
SOLARIS_KNOWLEDGE
Append discoveries here. Format: YYYY-MM-DD: <note>