mkcdsl(8)mkcdsl(8)NAMEmkcdsl - Make a context-dependent symbolic link (CDSL)
SYNOPSIS
/usr/sbin/mkcdsl [-bfnqv] [-i | -c | -a] [sourcename] [targetname]
OPTIONS
All members. Copy the existing file or directory to a member-specific
area on all members. Boot partition. In a cluster, the CDSL is placed
on the boot partition. On a standalone system, an entry in added to the
CDSL inventory file, and the CDSL will be created on the boot partition
when the system is converted to a cluster by running clu_create. Copy
the existing file or directory to a member-specific area on this member
only. Force the overwriting of the existing CDSL or member-specific
file or directory. When the force option is used with a copy option,
mkcdsl will overwrite an existing member-specific file or directory.
Without the force (-f) option, mkcdsl issues an error or message when‐
ever the physical path of the target differs from the specified target‐
name (for example, when targetname resolution traverses a symbolic
link), or when the source for a specified copy option cannot be found.
Unless the -f option is specified, mkcdsl will exit when it encounters
a situation that would generate an error message. The mkcdsl command
issues a warning message if the specified sourcename differs from the
calculated sourcename. However, you do not need the -f option to stop
mkcdsl from exiting when it encounters a situation that generates a
warning message. Inventory only. Check the files and update the inven‐
tory: If targetname is a CDSL, add a new entry or update the existing
entry in /var/adm/cdsl_admin.inv. If targetname is not a CDSL or does
not exist, remove its entry from /var/adm/cdsl_admin.inv. No execute
mode. Display what would be done but do not create or change anything.
Quiet. Stdout and stderr are redirected to /dev/null. Verbose. The
pathname of the member-specific file to be linked. By default, each
CDSL created by mkcdsl has a sourcename that points to the default mem‐
ber-specific area in the file system where the targetname resolves. For
example, /usr/cluster/members/{memb}/ is the default member-specific
area for the /usr file system. When issued without an explicit source‐
name, mkcdsl creates a sourcename that points to this default member-
specific area using a relative pathname. In most cases, this default
behavior is satisfactory. It creates a relative link that resolves
properly regardless of where the file system is mounted. If you spec‐
ify a sourcename, mkcdsl uses this value as the pathname to the member-
specific file or directory. The sourcename must include the member-con‐
text path component {memb}. The pathname of the new CDSL entry to be
created. If targetname exists, the -f, -c or -a options are required.
If the resolution of the targetname traverses any symbolic links or
file system mount points, the default value of sourcename is adjusted
such that the member-specific files are placed in the same file system
to which targetname resolves.
DESCRIPTION
A context-dependent symbolic link (CDSL) is a special form of a sym‐
bolic link, described in ln(1), whose target pathname includes a vari‐
able ({memb}). The value of {memb} is determined during pathname reso‐
lution, making it possible to maintain member-specific configuration
and data files within the clusterwide namespace.
The mkcdsl command creates a CDSL, effectively making the specified
targetname file or directory member-specific. The command simplifies
the creation of a CDSL by automatically calculating a default source‐
name, which resolves to the default member-specific area in the file
system where the CDSL is created.
When mkcdsl creates a CDSL, it adds an inventory entry to a clusterwide
CDSL inventory file, /var/adm/cdsl_admin.inv. This entry makes it pos‐
sible for the cdslinvchk command to check CDSLs created by mkcdsl. The
mkcdsl-i option updates the inventory file to reflect the current
state of the CDSL by adding, modifying, or removing entries from the
CDSL inventory file.
In a cluster, when directed to put a file in a member-specific direc‐
tory (-c or -a), mkcdsl populates both the member-specific directory or
directories and the member0 directory.
Although you can run mkcdsl from the command line, the mkcdsl command
is designed to be non-interactive; it can be called from scripts with‐
out requiring user input to complete a task.
EXAMPLES
To create a CDSL, /usr/testfile that points to cluster/mem‐
bers/{memb}/testfile: # mkcdsl /usr/testfile # ls -l /usr/testfile
... /usr/testfile -> cluster/members/{memb}/testfile
In the previous example, /usr/testfile must not exist. The CDSL is cre‐
ated in /usr and no files are created in any member's /usr/cluster/mem‐
bers/{memb} directory.
To copy the existing file or directory /usr/testfile1 to this member's
/usr/cluster/members/membern directory and replace it with a CDSL that
points to cluster/members/{memb}/testfile1: # mkcdsl-c /usr/testfile1
Although the CDSL references all members, only this member has a copy
of the original /usr/testfile1 file.
To copy the existing file or directory /usr/testfile2 to all members'
/usr/cluster/members/{memb} directories and replace it with a CDSL that
points to cluster/members/{memb}/testfile2: # mkcdsl-a /usr/testfile2
All members have a copy of the original /usr/testfile2 file.
To create a CDSL and explicitly specify the sourcename: # mkcdsl
/usr/share/cluster/members/{memb}/testfile3 \
/usr/share/doclib/testfile3
*** Warning *** The passed source name, '/usr/share/cluster/mem‐
bers/{memb}/testfile3' differs from the calculated source name: clus‐
ter/members/{memb}/testfile3 Using passed source name:
'/usr/share/cluster/members/{memb}/testfile3'
Because the specified sourcename differs from mkcdsl's calculated
default value, the command issues a warning message. Note that mkcdsl
makes the CDSL. The mkcdsl command does not exit on a warning message.
It will exit for an *** Error *** message unless the -f option is spec‐
ified.
To add an inventory record for an existing CDSL to the
/var/adm/cdsl_admin.inv file: # mkcdsl-i /etc/testfile4
To remove a CDSL and then remove its entry from the
/var/adm/cdsl_admin.inv file: # rm /etc/testfile4 # mkcdsl-i
/etc/testfile4
Note that removing the CDSL and its entry does not remove any files
referenced by the CDSL.
EXIT STATUS
The exit values for mkcdsl are: Success. Failure.
FILES
Specifies the command path. CDSL administrative inventory file. This
file will not exist on all systems.
SEE ALSO
Commands: ln(1), cdslinvchk(8)
Files: local(4)
Miscellaneous: hier(5)mkcdsl(8)