Chapter 16 Non-Global Zone Configuration (Overview)
This chapter provides an introduction to non-global zone configuration.
The following topics are covered in this chapter:
After you have learned about zone configuration, go to Chapter 17, Planning and Configuring Non-Global Zones (Tasks) to configure non-global zones for installation on your
system.
For information about lx branded zone configuration,
see Chapter 30, Planning the lx Branded Zone Configuration (Overview) and Chapter 31, Configuring the lx Branded Zone (Tasks).
About Resources in Zones
A zone that includes resource management features is called a container.
Resources that can be controlled in a container include the following:
-
Resource pools or assigned CPUs, which are used for partitioning
machine resources.
-
Resource controls, which provide a mechanism for the constraint
of system resources.
-
Scheduling class, which enables you to control the allocation
of available CPU resources among zones, based on their importance. This importance
is expressed by the number of shares of CPU resources that you assign to each
zone.
Pre-Installation Configuration Process
Before you can install a non-global zone and use it
on your system, the zone must be configured.
The zonecfg command is used to create the configuration
and to determine whether the specified resources and properties are valid
on a hypothetical system. The check performed by zonecfg for
a given configuration verifies the following:
For more information about the zonecfg command, see
the zonecfg(1M) man
page.
Zone Components
This section covers the required and optional zone components that can
be configured. Additional information is provided in Zone Configuration Data.
Zone Name and Path
You must choose a name and a path for your zone.
Zone Autoboot
The autoboot property setting determines whether
the zone is automatically booted when the global zone is booted. The zones
service, svc:/system/zones:default must also be enabled.
Resource Pool Association
If you have configured resource pools on your system as described in Chapter 13, Creating and Administering Resource Pools (Tasks), you can use the pool property to
associate the zone with one of the resource pools when you configure the zone.
If you do not have resource pools configured, you can still specify
that a subset of the system's processors be dedicated to a non-global zone
while it is running by using the dedicated-cpu resource.
The system will dynamically create a temporary pool for use while the zone
is running. With specification through zonecfg, pool settings
propagate during migrations.
Note –
A zone configuration using a persistent pool set through the pool property is incompatible with a temporary pool configured through
the dedicated-cpu resource. You can set only one of these
two properties.
dedicated-cpu Resource
The dedicated-cpu resource specifies that a
subset of the system's processors should be dedicated to a non-global zone
while it is running. When the zone boots, the system will dynamically create
a temporary pool for use while the zone is running.
With specification in zonecfg, pool settings propagate
during migrations.
The dedicated-cpu resource sets limits for ncpus, and optionally, importance.
-
ncpus
-
Specify the number of CPUs or specify a range, such as 2–4
CPUs. If you specify a range because you want dynamic resource pool behavior,
also do the following:
-
importance
-
If you are using a CPU range to achieve dynamic behavior,
also set the importance property, The importance property,
which is optional, defines the relative importance of
the pool. This property is only needed when you specify a range for ncpus and are using dynamic resource pools managed by poold.
If poold is not running, then importance is
ignored. If poold is running and importance is
not set, importance defaults to 1. For
more information, see pool.importance Property Constraint.
Note –
The capped-cpu resource and the dedicated-cpu resource are incompatible. The cpu-shares rctl
and the dedicated-cpu resource are incompatible.
capped-cpu Resource
The capped-cpu resource
provides an absolute fine-grained limit on the amount of CPU resources that
can be consumed by a project or a zone. When used in conjunction with processor
sets, CPU caps limit CPU usage within a set. The capped-cpu resource
has a single ncpus property that is a positive decimal
with two digits to the right of the decimal. This property corresponds to
units of CPUs. The resource does not accept a range. The resource does accept
a decimal number. When specifying ncpus, a value of 1 means 100 percent of a CPU. A value of 1.25 means
125 percent, because 100 percent corresponds to one full CPU on the system.
Note –
The capped-cpu resource and the dedicated-cpu resource are incompatible.
Scheduling Class
You
can use the fair share scheduler (FSS) to control the
allocation of available CPU resources among zones, based on their importance.
This importance is expressed by the number of shares of
CPU resources that you assign to each zone. Even if you are not using FSS
to manage CPU resource allocation between zones, you can set the zone's scheduling-class
to use FSS so that you can set shares on projects within the zone.
When you explicitly set the cpu-shares property,
the fair share scheduler (FSS) will be used as the scheduling class for that
zone. However, the preferred way to use FSS in this case is to set FSS to
be the system default scheduling class with the dispadmin command.
That way, all zones will benefit from getting a fair share of the system CPU
resources. If cpu-shares is not set for a zone, the zone
will use the system default scheduling class. The following actions set the
scheduling class for a zone:
-
You can use the scheduling-class property
in zonecfg to set the scheduling class for the zone.
-
You can set the scheduling class for a zone through the resource
pools facility. If the zone is associated with a pool that has its pool.scheduler property set to a valid scheduling class, then processes running
in the zone run in that scheduling class by default. See Introduction to Resource Pools and How to Associate a Pool With a Scheduling Class.
-
If the cpu-shares rctl is set and FSS has
not been set as the scheduling class for the zone through another action, zoneadmd sets the scheduling class to FSS when the zone boots.
-
If the scheduling class is not set through any other action,
the zone inherits the system default scheduling class.
Note that you can use the priocntl described in the priocntl(1) man page to
move running processes into a different scheduling class without changing
the default scheduling class and rebooting.
Physical Memory Control and the capped-memory Resource
The capped-memory resource sets limits for physical, swap, and locked memory.
Each limit is optional, but at least one must be set.
-
Determine
values for this resource if you plan to cap memory for the zone by using rcapd from the global zone. The physical property
of the capped-memory resource is used by rcapd as
the max-rss value for the zone.
-
The swap property of the capped-memory resource is
the preferred way to set the zone.max-swap resource control.
-
The locked property of the capped-memory resource
is the preferred way to set the zone.max-locked-memory resource
control.
Note –
Applications
generally do not lock significant amounts of memory, but you might decide
to set locked memory if the zone's applications are known to lock memory.
If zone trust is a concern, you can also consider setting the locked memory
cap to 10 percent of the system's physical memory, or 10 percent of the zone's
physical memory cap.
For more information, see Chapter 10, Physical Memory Control Using the Resource Capping Daemon (Overview), Chapter 11, Administering the Resource Capping Daemon (Tasks), and How to Configure the Zone. To temporarily
set a resource cap for a zone, see How to Specify a Temporary Resource Cap for a Zone.
Zone Network Interfaces
Zone network interfaces configured by the zonecfg command
to provide network connectivity will automatically be set up and placed in
the zone when it is booted.
The Internet Protocol (IP) layer accepts and delivers packets for the
network. This layer includes IP routing, the Address Resolution Protocol (ARP),
IP security architecture (IPsec), and IP Filter.
There are two IP types available for non-global zones, shared-IP and
exclusive-IP. The shared-IP zone shares a network interface and the exclusive-IP
zone must have a dedicated network interface.
For information about IP features in each type, see Networking in Shared-IP Non-Global Zones and Networking in Exclusive-IP Non-Global Zones.
Shared-IP Non-Global Zones
The
shared-IP zone is the default type. The zone must have one or more dedicated
IP addresses. A shared-IP zone shares the IP layer configuration and state
with the global zone. The zone should use the shared-IP instance if both of
the following are true:
-
The zone is to be connected to the same data-link, that is,
be on the same IP subnet or subnets as the global zone
-
You do not want the other capabilities that the exclusive-IP
zone provides.
Shared-IP zones are assigned one or more IP addresses using the zonecfg command. The data-link names must also be configured in the global
zone.
In the zonecfg net resource, the address and the physical properties must be set.
The defrouter property is optional.
These addresses are associated with logical network interfaces. The ifconfig command can be used from the global zone to add or remove
logical interfaces in a running zone. For more information, see Shared-IP Network Interfaces.
Exclusive-IP Non-Global Zones
Full
IP-level functionality is available in an exclusive-IP zone.
An exclusive-IP zone has its own IP-related state.
This includes the ability to use the following features in an exclusive-IP
zone:
-
DHCPv4 and IPv6 stateless address autoconfiguration
-
IP Filter, including network address translation
(NAT) functionality
-
IP Network Multipathing (IPMP)
-
IP routing
-
ndd for setting TCP/UDP/SCTP as well as
IP/ARP-level knobs
-
IP security (IPsec) and Internet Key Exchange (IKE), which automates
the provision of authenticated keying material for IPsec security association
An exclusive-IP zone is assigned its own set of data-links using
the zonecfg command. The zone is given a data-link name
such as xge0, e1000g1, or bge32001, using the physical property of the net resource.
The address and the defrouter properties
of the net resource are not set.
Note that the assigned data-link enables the snoop command
to be used.
The dladm command can be used with the show-linkprop subcommand to show the assignment of data-links to running exclusive-IP
zones. The dladm command can be used with the set-linkprop subcommand to assign additional data-links to running zones. See Administering Data-Links in Exclusive-IP Non-Global Zones for
usage examples.
Inside a running exclusive-IP zone, the ifconfig command
can be used to configure IP, which includes the ability to add or remove logical
interfaces. The IP configuration in a zone can be set up in the same way as
for the global zone, by using the sysidtools described
in sysidcfg(4).
Note –
The IP configuration of an exclusive-IP zone can only be viewed
from the global zone by using the zlogin command. An example
follows.
global# zlogin zone1 ifconfig -a
|
Security Differences Between Shared-IP and Exclusive-IP
Non-Global Zones
In a shared-IP zone, applications in the zone, including the superuser,
cannot send packets with source IP addresses other than the ones assigned
to the zone through the zonecfg utility. This type of zone
does not have access to send and receive arbitrary data-link (layer 2) packets.
For an exclusive-IP zone, zonecfg instead grants
the entire specified data-link to the zone. As a result, the superuser in
an exclusive-IP zone can send spoofed packets on those data-links, just as
can be done in the global zone.
Using Shared-IP and Exclusive-IP Non-Global Zones
at the Same Time
The shared-IP zones always share the IP layer with the global zone,
and the exclusive-IP zones always have their own instance of the IP layer.
Both shared-IP zones and exclusive-IP zones can be used on the same machine.
File Systems Mounted in Zones
Generally, the file systems mounted in a zone include the following:
This can include, for example, the following file systems:
-
File systems specified in a zone's /etc/vfstab file
-
AutoFS and AutoFS-triggered
mounts
-
Mounts explicitly performed by a zone administrator
Certain restrictions are placed on mounts performed from within the
application environment. These restrictions prevent the zone administrator
from denying service to the rest of the system, or otherwise negatively impacting
other zones.
There are security restrictions associated with mounting certain file
systems from within a zone. Other file systems exhibit special behavior when
mounted in a zone. See File Systems and Non-Global Zones for more information.
Host
ID in Zones
You can set a hostid property for the non-global
zone that is different from the hostid of the global zone.
This would be done, for example, in the case of a machine migrated into a
zone on another system. Applications now inside the zone might depend on the
original hostid. See Resource and Property Types for more information.
Configured Devices in Zones
The zonecfg command uses a rule-matching system to
specify which devices should appear in a particular zone. Devices matching
one of the rules are included in the zone's /dev file system.
For more information, see How to Configure the Zone.
Setting Zone-Wide Resource Controls
The
global administrator can set privileged zone-wide resource controls for a
zone. Zone-wide resource controls limit the total resource usage of all process
entities within a zone.
These limits are specified for both the global and non-global zones
by using the zonecfg command. See How to Configure the Zone.
The preferred, simpler method for setting a zone-wide resource control
is to use the property name instead of the rctl resource.
The zone.cpu-cap resource control sets an absolute
limit on the amount of CPU resources that can be consumed by a zone. A value
of 100 means 100 percent of one CPU as the project.cpu-cap setting. A value of 125 is 125 percent, because
100 percent corresponds to one full CPU on the system when using CPU caps.
Note –
When setting the capped-cpu resource, you can
use a decimal number for the unit. The value correlates to the zone.capped-cpu resource control, but the setting is scaled down by 100. A setting
of 1 is equivalent to a setting of 100 for
the resource control.
The zone.cpu-shares resource control sets a
limit on the number of fair share scheduler (FSS) CPU shares for a zone. CPU
shares are first allocated to the zone, and then further subdivided among
projects within the zone as specified in the project.cpu-shares entries.
For more information, see Using the Fair Share Scheduler on a Solaris System With Zones Installed. The global
property name for this control is cpu-shares.
The zone.max-locked-memory resource
control limits the amount of locked physical memory available to a zone The
allocation of the locked memory resource across projects within the zone can
be controlled by using the project.max-locked-memory resource
control. See Table 6–1 for
more information.
The zone.max-lwps resource control enhances
resource isolation by preventing too many LWPs in one zone from affecting
other zones. The allocation of the LWP resource across projects within the
zone can be controlled by using the project.max-lwps resource
control. See Table 6–1 for
more information. The global property name for this control is max-lwps.
The zone.max-msg-ids, zone.max-sem-ids, zone.max-shm-ids, and zone.max-shm-memory resource controls are used to limit System V resources used by
all processes within a zone. The allocation of System V resources across projects
within the zone can be controlled by using the project versions of these resource
controls. The global property names for these controls are max-msg-ids, max-sem-ids, max-shm-ids, and max-shm-memory.
The zone.max-swap resource control limits swap
consumed by user process address space mappings and tmpfs mounts
within a zone. The output of prstat -Z displays
a SWAP column. The swap reported is the total swap consumed by the zone's
processes and tmpfs mounts. This value assists in monitoring
the swap reserved by each zone, which can be used to choose an appropriate zone.max-swap setting.
Table 16–1 Zone-Wide Resource Controls
|
Control Name
|
Global Property Name
|
Description
|
Default Unit
|
Value Used For
|
|
zone.cpu-cap
|
|
Absolute limit on the amount of CPU resources for this zone
|
Quantity (number of CPUs), expressed as a percentage
Note –
When setting as the capped-cpu resource, you
can use a decimal number for the unit.
|
|
|
zone.cpu-shares
|
cpu-shares
|
Number of fair share scheduler (FSS) CPU shares for this zone
|
Quantity (shares)
|
|
|
zone.max-locked-memory
|
|
Total amount of physical locked memory available to a zone.
If priv_proc_lock_memory is assigned to a zone, consider
setting this resource control as well, to prevent that zone from locking all
memory.
|
Size (bytes)
|
locked property of capped-memory
|
|
zone.max-lwps
|
max-lwps
|
Maximum number of LWPs simultaneously available to this zone
|
Quantity (LWPs)
|
|
|
zone.max-msg-ids
|
max-msg-ids
|
Maximum number of message queue IDs allowed for this zone
|
Quantity (message queue IDs)
|
|
|
zone.max-sem-ids
|
max-sem-ids
|
Maximum number of semaphore IDs allowed for this zone
|
Quantity (semaphore IDs)
|
|
|
zone.max-shm-ids
|
max-shm-ids
|
Maximum number of shared memory IDs allowed for this zone
|
Quantity (shared memory IDs)
|
|
|
zone.max-shm-memory
|
max-shm-memory
|
Total amount of System V shared memory allowed for this zone
|
Size (bytes)
|
|
|
zone.max-swap
|
|
Total amount of swap that can be consumed by user process address space
mappings and tmpfs mounts for this zone.
|
Size (bytes)
|
swap property of capped-memory
|
These limits can be specified for running processes by using the prctl command. An example is provided in How to Set FSS Shares in the Global Zone Using the prctl Command.
Limits specified through the prctl command are not persistent.
The limits are only in effect until the system is rebooted.
Configurable Privileges
When a zone is booted, a default set of safe privileges
is included in the configuration. These privileges are considered safe because
they prevent a privileged process in the zone from affecting processes in
other non-global zones on the system or in the global zone. You can use the zonecfg command to do the following:
-
Add to the default set of privileges, understanding that such
changes might allow processes in one zone to affect processes in other zones
by being able to control a global resource.
-
Remove from the default set of privileges, understanding that
such changes might prevent some processes from operating correctly if they
require those privileges to run.
Note –
There are a few privileges that cannot be removed from the zone's
default privilege set, and there are also a few privileges that cannot be
added to the set at this time.
For more information, see Privileges in a Non-Global Zone, How to Configure the Zone, and privileges(5).
Including a Comment for a Zone
You can add a comment for a zone by using the attr resource
type. For more information, see How to Configure the Zone.
Using the zonecfg Command
The zonecfg command,
which is described in the zonecfg(1M) man page, is used to configure a
non-global zone.
The zonecfg command can also be used to persistently
specify the resource management settings for the global zone. For example,
you can use the command to configure the global zone to use a dedicated CPU
by using the dedicated-cpu resource.
The zonecfg command can be used in interactive mode,
in command-line mode, or in command-file mode. The following operations can
be performed using this command:
-
Create or delete (destroy) a zone configuration
-
Add resources to a particular configuration
-
Set properties for resources added to a configuration
-
Remove resources from a particular configuration
-
Query or verify a configuration
-
Commit to a configuration
-
Revert to a previous configuration
-
Rename a zone
-
Exit from a zonecfg session
The zonecfg prompt is of the following form:
When you are configuring a specific resource type, such as a file system,
that resource type is also included in the prompt:
For more information, including procedures that show how to use the
various zonecfg components described in this chapter, see Chapter 17, Planning and Configuring Non-Global Zones (Tasks).
zonecfg Modes
The concept of a scope is used
for the user interface. The scope can be either global or resource specific. The default scope is global.
In the global scope,
the add subcommand and the select subcommand
are used to select a specific resource. The scope then changes to that resource
type.
-
For the add subcommand, the end or cancel subcommands are used to complete the resource specification.
-
For the select subcommand, the end or cancel subcommands are used to complete the resource modification.
The scope then reverts back to global.
Certain subcommands, such as add, remove,
and set, have different semantics in each scope.
zonecfg Interactive Mode
In interactive mode, the following subcommands are
supported. For detailed information about semantics and options used with
the subcommands, see the zonecfg(1M) man page for options. For any subcommand
that could result in destructive actions or loss of work, the system requests
user confirmation before proceeding. You can use the -F (force)
option to bypass this confirmation.
-
help
-
Print general help, or display help about a given resource.
zonecfg:my-zone:inherit-pkg-dir> help
|
-
create
-
Begin configuring an in-memory configuration for the specified
new zone for one of these purposes:
-
To apply the Sun default settings to a new configuration.
This method is the default.
-
With the -t template option,
to create a configuration that is identical to the specified template. The
zone name is changed from the template name to the new zone name.
-
With the -F option, to overwrite an existing
configuration.
-
With the -b option, to create a blank configuration
in which nothing is set.
-
export
-
Print the configuration to standard output, or to the output
file specified, in a form that can be used in a command file.
-
add
-
In the global scope, add the specified resource type to the
configuration.
In the resource scope, add a property of the given name with the given
value.
See How to Configure the Zone and
the zonecfg(1M) man page for more information.
-
set
-
Set a given property name to the given property value. Note
that some properties, such as zonepath, are global, while
others are resource specific. Thus, this command is applicable in both the
global and resource scopes.
-
select
-
Applicable only in the global scope. Select the resource of
the given type that matches the given property name-property value pair criteria
for modification. The scope is changed to that resource type. You must specify
a sufficient number of property name-value pairs for the resource to be uniquely
identified.
-
clear
-
Clear the value for optional settings. Required settings cannot
be cleared. However, some required settings can be changed by assigning a
new value.
-
remove
-
In the global scope, remove the specified resource type. You
must specify a sufficient number of property name-value pairs for the resource
type to be uniquely identified. If no property name-value pairs are specified,
all instances will be removed. If more than one exists, a confirmation is
required unless the -F option is used.
In the resource scope, remove the specified property name-property value
from the current resource.
-
end
-
Applicable only in the resource scope. End the resource specification.
The zonecfg command then verifies that the current
resource is fully specified.
-
If the resource is fully specified, it is added to the in-memory
configuration and the scope will revert back to global.
-
If the specification is incomplete, the system displays an
error message that describes what needs to be done.
-
cancel
-
Applicable only in the resource scope. End the resource specification
and reset the scope to global. Any partially specified resources are not retained.
-
delete
-
Destroy the specified configuration. Delete the configuration
both from memory and from stable storage. You must use the -F (force)
option with delete.
Caution – This action is instantaneous. No commit is required, and a
deleted zone cannot be reverted.
-
info
-
Display information about the current configuration or the
global resource properties zonepath, autoboot,
and pool. If a resource type is specified, display information
only about resources of that type. In the resource scope, this subcommand
applies only to the resource being added or modified.
-
verify
-
Verify current configuration for correctness. Ensure that
all resources have all of their required properties specified.
-
commit
-
Commit current configuration from memory to stable storage.
Until the in-memory configuration is committed, changes can be removed with
the revert subcommand. A configuration must be committed
to be used by zoneadm. This operation is attempted automatically
when you complete a zonecfg session. Because only a correct
configuration can be committed, the commit operation automatically does a
verify.
-
revert
-
Revert configuration back to the last committed state.
-
exit
-
Exit the zonecfg session. You can use
the -F (force) option with exit.
A commit is automatically attempted if needed. Note
that an EOF character can also be used to exit the session.
zonecfg Command-File
Mode
In command-file mode, input is taken from a file. The export subcommand
described in zonecfg Interactive Mode is
used to produce this file. The configuration can be printed to standard output,
or the -f option can be used to specify an output file.
Zone Configuration Data
Zone configuration data consists of two kinds of entities:
resources and properties. Each resource has a type, and each resource can
also have a set of one or more properties. The properties have names and values.
The set of properties is dependent on the resource type.
Resource and Property Types
The resource and property types are
described as follows:
-
zonename
-
The name of the zone. The following rules apply to zone names:
-
Each zone must have a unique name.
-
A zone name is case-sensitive.
-
A zone name must begin with an alphanumeric character.
The name can contain alphanumeric characters, underbars (_),
hyphens (-), and periods (.).
-
The name cannot be longer than 64 characters.
-
The name global and all names beginning
with SUNW are reserved and cannot be used.
-
zonepath
-
The zonepath property is the path to the
zone root. Each zone has a path to its root directory that is relative to
the global zone's root directory. At installation time, the global zone directory
is required to have restricted visibility. It must be owned by root with
the mode 700.
The non-global zone's root path is one level lower. The zone's root
directory has the same ownership and permissions as the root directory (/) in the global zone. The zone directory must be owned by root with the mode 755. These directories are created
automatically with the correct permissions, and do not need to be verified
by the zone administrator. This hierarchy ensures that unprivileged users
in the global zone are prevented from traversing a non-global zone's file
system.
|
Path
|
Description
|
|
/home/export/my-zone
|
zonecfg zonepath
|
|
/home/export/my-zone/root
|
Root of the zone
|
|
/home/export/my-zone/root/dev
|
Devices created for the zone
|
See Traversing File Systems for a further discussion of this issue.
Note –
You can move a zone to another location on the same system by
specifying a new, full zonepath with the move subcommand
of zoneadm. See Moving a Non-Global Zone for instructions.
-
autoboot
-
If this property is set to true, the zone is automatically
booted when the global zone is booted. Note that if the zones service, svc:/system/zones:default is disabled, the zone will not autoboot, regardless of the setting
of this property. You can enable the zones service with the svcadm command
described in the svcadm(1M) man
page:
global# svcadm enable zones
|
-
bootargs
-
This property is used to set a boot argument for the zone. The
boot argument is applied unless overridden by the reboot, zoneadm boot, or zoneadm reboot commands. See Zone Boot Arguments.
-
pool
-
This property is used to associate the zone with a resource pool
on the system. Multiple zones can share the resources of one pool. Also see dedicated-cpu Resource.
-
limitpriv
-
This property is used to specify a privilege mask other than the
default. See Privileges in a Non-Global Zone.
Privileges are added by specifying the privilege name, with or without
the leading priv_. Privileges are excluded by preceding
the name with a dash (-) or an exclamation mark (!).
The privilege values are separated by commas and placed within quotation marks
(“).
As described in priv_str_to_set(3C), the special privilege sets
of none, all, and basic expand
to their normal definitions. Because zone configuration takes place from the
global zone, the special privilege set zone cannot be used.
Because a common use is to alter the default privilege set by adding or removing
certain privileges, the special set default maps to the
default, set of privileges. When default appears at the
beginning of the limitpriv property, it expands to the
default set.
The following entry adds the ability to use DTrace programs that only
require the dtrace_proc and dtrace_user privileges
in the zone:
global# zonecfg -z userzone
zonecfg:userzone> set limitpriv="default,dtrace_proc,dtrace_user"
|
If the zone's privilege set contains a disallowed privilege, is missing
a required privilege, or includes an unknown privilege, an attempt to verify,
ready, or boot the zone will fail with an error message.
-
scheduling-class
-
This property sets the scheduling class
for the zone. See Scheduling Class for additional
information and tips.
-
ip-type
-
This property is required to be set only if the zone is an exclusive-IP
zone. See Exclusive-IP Non-Global Zones and How to Configure the Zone.
-
dedicated-cpu
-
This resource dedicates a subset of the system's processors to
the zone while it is running. The dedicated-cpu resource
provides limits for ncpus and, optionally, importance. For more information, see dedicated-cpu Resource.
-
capped-cpu
-
This resource sets a limit on the amount of CPU resources that
can be consumed by the zone while it is running. The capped-cpu resource
provides a limit for ncpus. For more information, see capped-cpu Resource.
-
capped-memory
-
This resource groups the properties used when capping memory for
the zone. The capped-memory resource provides limits for physical, swap, and locked memory.
At least one of these properties must be specified.
-
dataset
-
Adding a ZFSTM dataset resource enables the
delegation of storage administration to a non-global zone. The zone administrator
can create and destroy file systems within that dataset, and modify properties
of the dataset. The zone administrator cannot affect datasets that have not
been added to the zone or exceed any top level quotas set on the dataset assigned
to the zone.
ZFS datasets can be added to a zone in the following ways.
See Chapter 10, ZFS Advanced Topics, in Solaris ZFS Administration Guide and File Systems and Non-Global Zones.
Also see Chapter 28, Troubleshooting Miscellaneous Solaris Zones Problems for information on dataset issues.
-
fs
-
Each zone can have various file systems that are mounted when
the zone transitions from the installed state to the ready state. The file
system resource specifies the path to the file system mount point. For more
information about the use of file systems in zones, see File Systems and Non-Global Zones.
-
inherit-pkg-dir (native brand only)
-
OpenSolaris native brand: This
resource should not be configured in a whole root zone.
In a native branded sparse root zone, the inherit-pkg-dir resource
is used to represent directories that contain packaged software that a non-global
zone shares with the global zone.
The contents of software packages transferred into the inherit-pkg-dir directory are inherited in read-only mode by the non-global zone.
The zone's packaging database is updated to reflect the packages. These resources
cannot be modified or removed after the zone has been installed using zoneadm.
Note –
Four default inherit-pkg-dir resources are
included in the configuration. These directory resources indicate which directories
should have their associated packages inherited from the global zone. The
resources are implemented through a read-only loopback file system mount.
-
/lib
-
/platform
-
/sbin
-
/usr
-
net
-
The network interface resource is the interface name. Each
zone can have network interfaces that should be set up when the zone transitions
from the installed state to the ready state.
-
device
-
The device resource is the device matching specifier. Each
zone can have devices that should be configured when the zone transitions
from the installed state to the ready state.
-
rctl
-
The rctl resource is used for zone-wide
resource controls. The controls are enabled when the zone transitions from
the installed state to the ready state.
See Setting Zone-Wide Resource Controls for
more information.
Note –
To configure zone-wide controls using the set global_property_name subcommand of zonefig instead
of the rctl resource, see How to Configure the Zone.
-
hostid
-
A hostid that is different from the hostid of the global zone can be set.
-
attr
-
This generic attribute can be used for user comments or by
other subsystems. The name property of an attr must
begin with an alphanumeric character. The name property
can contain alphanumeric characters, hyphens (-), and periods
(.). Attribute names beginning with zone. are
reserved for use by the system.
Resource Type Properties
Resources also have properties to configure. The following properties
are associated with the resource types shown.
-
dedicated-cpu
-
ncpus, importance
Specify the number of CPUs and, optionally, the relative importance
of the pool. The following example specifies a CPU range for use by the zone my-zone. importance is also set.
zonecfg:my-zone> add dedicated-cpu
zonecfg:my-zone:dedicated-cpu> set ncpus=1-3
zonecfg:my-zone:dedicated-cpu> set importance=2
zonecfg:my-zone:dedicated-cpu> end
|
-
capped-cpu
-
ncpus
Specify the number of CPUs. The following example specifies a CPU cap
of 3.5 CPUs for the zone my-zone.
zonecfg:my-zone> add capped-cpu
zonecfg:my-zone:capped-cpu> set ncpus=3.5
zonecfg:my-zone:capped-cpu> end
|
-
capped-memory
-
physical, swap, lockedSpecify the memory limits for the zone my-zone.
Each limit is optional, but at least one must be set.
zonecfg:my-zone> add capped-memory
zonecfg:my-zone:capped-memory> set physical=50m
zonecfg:my-zone:capped-memory> set swap=100m
zonecfg:my-zone:capped-memory> set locked=30m
zonecfg:my-zone:capped-memory> end
|
-
fs
-
dir, special, raw, type, options
The fs resource parameters supply the values that
determine how and where to mount file systems. The fs parameters
are defined as follows:
-
dir
-
Specifies the mount point for the file system
-
special
-
Specifies the block special device name or directory from
the global zone to mount
-
raw
-
Specifies the raw device on which to run fsck before
mounting the file system
-
type
-
Specifies the file system type
-
options
-
Specifies mount options similar to those found with the mount command
The lines in the following example specify that /dev/dsk/c0t0d0s2 in
the global zone is to be mounted as /mnt in a zone being
configured. The raw property specifies an optional device
on which the fsck command is to be run before an attempt
is made to mount the file system. The file system type to use is UFS. The
options nodevices and logging are added.
zonecfg:my-zone> add fs
zonecfg:my-zone:fs> set dir=/mnt
zonecfg:my-zone:fs> set special=/dev/dsk/c0t0d0s2
zonecfg:my-zone:fs> set raw=/dev/rdsk/c0t0d0s2
zonecfg:my-zone:fs> set type=ufs
zonecfg:my-zone:fs> add options [nodevices,logging]
zonecfg:my-zone:fs> end
|
For more information, see The -o nosuid Option, Security Restrictions and File System Behavior,
and the fsck(1M) and mount(1M) man pages. Also note that
section 1M man pages are available for mount options that are unique to a
specific file system. The names of these man pages have the form mount_filesystem.
Note –
To add a ZFS file system using the fs resource
property, see Adding ZFS File Systems to a Non-Global Zone in Solaris ZFS Administration Guide.
-
dataset
-
name
The lines in the following example specify that the dataset sales is to be visible and mounted in the non-global zone and no
longer visible in the global zone.
zonecfg:my-zone> add dataset
zonecfg:my-zone> set name=tank/sales
zonecfg:my-zone> end
|
-
inherit-pkg-dir
-
dir
The lines in the following example specify that /opt/sfw is
to be loopback mounted from the global zone.
zonecfg:my-zone> add inherit-pkg-dir
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:my-zone:inherit-pkg-dir> end
|
-
net
-
address, physical, defrouter
Note –
For a shared-IP zone, both the IP address and the device are specified.
Optionally, the default router can be set. For an exclusive-IP zone, only
the physical interface is specified.
In the following example for a shared-IP zone, the IP address 192.168.0.1 is added to the zone. An hme0 card is used for
the physical interface. To determine which physical interface to use, type ifconfig -a on your system. Each line of the output,
other than loopback driver lines, begins with the name of a card installed
on your system. Lines that contain LOOPBACK in the descriptions
do not apply to cards. The default route is set to 10.0.0.1 for
the zone.
zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=hme0
zonecfg:my-zone:net> set address=192.168.0.1
zonecfg:my-zone:net> set defrouter=10.0.0.1
zonecfg:my-zone:net> end
|
In the following example for an exclusive-IP zone, a bge32001 link
is used for the physical interface, which is a VLAN on bge1.
To determine which data-links are available, use the command dladm show-link. Note that ip-type=exclusive must also
be specified.
zonecfg:my-zone> set ip-type=exclusive
zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=bge32001
zonecfg:my-zone:net> end
|
Note –
The OpenSolarisTM OS supports all Ethernet-type interfaces, and their data-links
can be administered with the dladm command. Prior
to OpenSolaris build snv_83, the data-link must be GLDv3 to be used with exclusive-IP
zones. Network interface cards (NICs)
that support GLDv3 include bge, e1000g, xge, nge, and rge.
The ce legacy
device can also support an exclusive-IP zone.
-
device
-
match
In the following example, a /dev/pts device is included
in a zone.
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/pts*
zonecfg:my-zone:device> end
|
Note –
See Device Use in Non-Global Zones.
-
rctl
-
name, value
The following zone-wide resource controls are available.
-
zone.cpu-cap
-
zone.cpu-shares (preferred: cpu-shares)
-
zone.max-locked-memory
-
zone.max-lwps (preferred: max-lwps)
-
zone.max-msg-ids (preferred: max-msg-ids)
-
zone.max-sem-ids (preferred: max-sem-ids)
-
zone.max-shm-ids (preferred: max-shm-ids)
-
zone.max-shm-memory (preferred: max-shm-memory)
-
zone.max-swap
Note that the preferred, simpler method for setting a zone-wide resource
control is to use the property name instead of the rctl resource,
as shown in How to Configure the Zone.
If zone-wide resource control entries in a zone are configured using add rctl, the format is different than resource
control entries in the project database. In a zone configuration,
the rctl resource type consists of three name/value pairs.
The names are priv, limit, and action. Each of the names takes a simple value.
zonecfg:my-zone> add rctl
zonecfg:my-zone:rctl> set name=zone.cpu-shares
zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)zonecfg:my-zone:rctl> end
|
zonecfg:my-zone> add rctl
zonecfg:my-zone:rctl> set name=zone.max-lwps
zonecfg:my-zone:rctl> add value (priv=privileged,limit=100,action=deny)
zonecfg:my-zone:rctl> end
|
For general information about resource controls and attributes, see Chapter 6, Resource Controls (Overview) and Resource Controls Used in Non-Global Zones.
-
attr
-
name, type, value
In the following example, a comment about a zone is added.
zonecfg:my-zone> add attr
zonecfg:my-zone:attr> set name=comment
zonecfg:my-zone:attr> set type=string
zonecfg:my-zone:attr> set value="Production zone"
zonecfg:my-zone:attr> end
|
You can use the export subcommand to print a zone
configuration to standard output. The configuration is saved in a form that
can be used in a command file.
Tecla Command-Line Editing Library
The Tecla command-line editing library is included for use with the zonecfg command. The library provides a mechanism for command-line
history and editing support.
The Tecla command-line editing library is documented in the following
man pages:
-
enhance(1)
-
libtecla(3LIB)
-
ef_expand_file(3TECLA)
-
gl_get_line(3TECLA)
-
gl_io_mode(3TECLA)
-
pca_lookup_file(3TECLA)
-
tecla(5)