Create a ZFS Pool
First, you need a virtual device for ZFS. Normally this would be raw disk (or raw
disk slice, if you prefer). However, for testing/demonstration, I'll create a regular
file (this takes a few minutes):
# mkfile 5g /ForZones
4m12.95s
Now I create a "ZFS Storage Pool" for one or more ZFS filesystems:
# zpool create zonepool /ForZone
# zpool list
NAME
SIZE
USED
Zonepool
4.97G
32.5K
AVAIL
4.97G
CAP HEALTH
0% ONLINE
ALTROOT
Create a ZFS Filesystem
Now, I'll create a ZFS filesystem using the ZFS pool I just created:
# zfs create zonepool/zone1
# zfs set mountpoint=/zone1 zonepool/zone1
# zpool status -z
pool: zonepool
state: ONLINE
scrub: none requested
config:
NAME
zonepool
/ForZones
STATE
ONLINE
ONLINE
0
READ WRITE CKSUM
0
0
0
0
0
# mount |grep zone1
/zone1 on zonepool/zone1
read/write/setuid/devices/exec/atime/dev=3f50004 on Mon Nov 14 12:34:37
2005
# df -k /zone1
Filesystem
kbytes
used
avail capacity Mounted on
zonepool/zone1
5169408
8 5169341
1%
/zone1
# ls -l /zone1
total 0
Note that /zone1 is not in /etc/vfstab. Mounting is done automatically at boot time
by ZFS:
# grep /zone1 /etc/vfstab
#
If you want to allow the filesystem to be managed inside the zone, use the zfs
zoned=on option when creating or modifying the filesystem.
Create a Solaris Zone
Use zonecfg to setup your zone:
# zonecfg -z zone1
zone1: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create
zonecfg:zone1> set zonepath=/zone1
zonecfg:zone1> set autoboot=true
zonecfg:zone1> add net
zonecfg:zone1:net> set address=10.140.1.25
zonecfg:zone1:net> set physical=ce0
zonecfg:zone1:net> end
zonecfg:zone1> verify
zonecfg:zone1> commit
zonecfg:zone1> exit
Install a Solaris Zone
# ls -ld /zone1
drwxr-xr-x
2 root
# chmod go-rxw /zone1
# ls -ld /zone1
drwx-----2 root
sys
2 Nov 14 12:34 /zone1
sys
2 Nov 14 12:34 /zone1
Try install with zoneadm again.
This takes several minutes:
# zoneadm -z zone1 install
Preparing to install zone <zone1>.
Creating list of files to copy from the global zone.
Copying <2808> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <946> packages on the zone.
Initializing package <252> of <946>: percent complete: 26%
. . .
Initialized <946> packages on zone.
Zone <zone1> is initialized.
The file </zone1/root/var/sadm/system/logs/install_log> contains a log
of the zone installation.
# zoneadm list -v
ID NAME
0 global
STATUS
running
PATH
/
Boot and Configure a Solaris Zone
Lets boot the zone and login to the console with zoneadm and zlogin. The initial
boot prompts for basic configuration information (language, locale, terminal,
hostname, name service, time zone, and root password):
# zoneadm -z zone1 boot
# zlogin -C zone1
[Connected to zone 'zone1' console]
Loading smf(5) service descriptions:
. . .
zone12 console login: root
. . .
~.
1/108