mkcdsl - Make a context-dependent symbolic link (CDSL)
/usr/sbin/mkcdsl [-bfnqv] [-i | -c | -a] [sourcename]
[targetname]
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 whenever the physical path of
the target differs from the specified targetname (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 inventory: 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 member-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 sourcename, 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 specify a sourcename, mkcdsl uses this
value as the pathname to the member-specific file or
directory. The sourcename must include the member-context
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.
A context-dependent symbolic link (CDSL) is a special form
of a symbolic link, described in ln(1), whose target pathname
includes a variable ({memb}). The value of {memb} is
determined during pathname resolution, 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 sourcename, 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 possible 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
directory (-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 without requiring user input to
complete a task.
To create a CDSL, /usr/testfile that points to cluster/members/{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 created in /usr and no files are created in any
member's /usr/cluster/members/{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/members/{memb}/testfile3'
differs from the calculated
source name: cluster/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 specified.
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.
The exit values for mkcdsl are: Success. Failure.
Specifies the command path. CDSL administrative inventory
file. This file will not exist on all systems.
Commands: ln(1), cdslinvchk(8)
Files: local(4)
Miscellaneous: hier(5)
mkcdsl(8)
[ Back ] |