xlv_make(1M)                                                      xlv_make(1M)


NAME
     xlv_make - create logical volume objects

SYNOPSIS
     xlv_make [ -c cmdstring ] [ -f ] [ -h nodename ] [ -v ]
          [ -A ] [ input_file ]

DESCRIPTION
     xlv_make creates new logical volume objects by writing logical volume
     labels to the devices that are to constitute the volume objects.  A
     volume object can be an entire volume, a plex, or a volume element.
     xlv_make allows you to create objects that are not full volumes so that
     you can maintain a set of spares.

     xlv_make supports the following command line options:

     -c cmdstring
             Command line option.  Causes xlv_make to go into command line
             mode and use cmdstring as the command input.  Multiple instances
             of -c are accumulated.  The exit or quit command must be used to
             terminate input.

     -f      Force xlv_make to create a volume element even if the partition
             type for the partition specified does not correspond with its
             intended usage.  This is useful, for example, in converting
             lv(7M) volumes to xlv(7M) volumes.  It is also used to allow
             creation of objects involving currently mounted partitions.

     -h nodename
             Use nodename as the local nodename.  This option implies the -A
             option below.

     -v      Verbose option.  Causes xlv_make to generate more detailed
             output.  Also, it causes xlv_assemble(1M) to generate output upon
             exit from xlv_make.

     -A      Do not invoke xlv_assemble(1M) upon exit from xlv_make.  The
             default is to invoke xlv_assemble with the -q option unless the
             -v option is specified, in which case xlv_assemble is invoked
             with no options.  To invoke other xlv_assemble options, specify
             the -A option and invoke xlv_assemble manually.

     xlv_make only allows you to create volume objects out of disk partitions
     that are not currently part of other volume objects.  Partitions must be
     of a type suitable for use by xlv_make.  Suitable types are xfs, efs,
     xlv, and xfslog.  Partition types other than these are rejected unless
     the -f command line option or the ve -force interactive command is
     specified.  See fx(1M) for more information regarding partition types.
     xlv_mgr(1M) must be used to modify or destroy volume objects.


     xlv_make can be run either interactively or it can take its commands from
     an input file, input_file.  xlv_make is written using Tcl.  Therefore,
     all the Tcl features such as variables, control structures, and so on can
     be used in xlv_make commands.

     xlv_make creates volume objects by writing the disk labels.  To make the
     newly created logical volumes active, xlv_assemble(1M) must be run.
     xlv_assemble is, by default, automatically invoked upon successful exit
     from xlv_make; xlv_assemble scans all the disks attached to the system
     and automatically assembles all the available logical volumes.

     Objects are specified top-down and depth-first.  You start by specifying
     the top-level object and continue to specify the pieces that make it up.
     When you have completed specifying an object at one level, you can back
     up and specify another object at the same level.

     The commands are:

     vol volume_name
             Specifies a volume.  The volume_name is required.  It can be up
             to 14 alphanumeric characters in length.

     data    Specifies a data subvolume.  This subvolume is required.

     log     Specifies a log subvolume.  This is an optional subvolume used by
             the XFS filesystem.

     rt      Specifies a real-time subvolume.  Real-time subvolumes are used
             for guaranteed-rate I/O and also for high performance
             applications that isolate user data on a separate subvolume.
             This is an optional subvolume.

     plex [plex_name]
             Specifies a plex.  If this plex is specified outside of a volume,
             plex_name must be given.  The name can be up to 14 alphanumeric
             characters.  A plex that exists outside of a volume is known as a
             standalone plex.

     ve [volume_element_name] [-stripe] [-concat] [-force]
     [-stripe_unit stripe_unit_size] [-start blkno] device_pathnames
             Specifies a volume element.  If this volume element is specified
             outside of a plex, volume_element_name must be given.  The name
             can be up to 14 alphanumeric characters.

             -stripe        Specifies that the data within this volume element
                            is to be striped across all the disks named by
                            device_pathnames.

             -concat        Specifies that all the devices named by
                            device_pathnames are to be joined linearly into a
                            single logical range of blocks.  This is the
                            default if no flags are specified.


             -force         Forces the specification of the volume element
                            when the partition type does not agree with the
                            volume element's intended usage.  For example, a
                            partition with type xfslog could be assigned to a
                            data subvolume.  Also, -force allows the
                            specification of an object that includes a
                            partition that is currently mounted.

             -stripe_unit stripe_unit_size
                            specifies the number of blocks to write to one
                            disk before writing to the next disk in a stripe
                            set.  stripe_unit_size is expressed in 512-byte
                            blocks.  -stripe_unit is only meaningful when used
                            in conjunction with -stripe.  The default stripe
                            unit size, if this flag is not set, is one track.
                            Note: lv called this parameter the granularity.

             -start blkno   Specifies that this volume element should start at
                            the given block number within the plex.

     end     Terminates the specification of the current object.

     create  Create all new objects just specified during this session by
             writing the disk labels out to all the disks affected.  This
             command is similar to the exit command except the session is not
             terminated.

     clear   Removes the current, uncompleted object.

     show    Prints out all the volume objects on the system.  This includes
             existing volume objects (created during an earlier xlv_make
             session) and new objects specified during this session that have
             not been created (written out to the disk labels) yet.

     exit    Create the objects specified during this session by writing the
             disk labels out to all the disks affected, and exit xlv_make.  In
             interactive mode, the user is prompted to confirm this action if
             any new objects have been created.

     quit    Leave xlv_make without creating the specified objects (without
             writing the disk labels).  All the work done during this
             invocation of xlv_make is lost.  In interactive mode, the user is
             prompted to confirm this action if any objects have been
             specified.

     help    Displays a summary of xlv_make commands.

     ?       Same as help.

     sh      Fork a shell.


EXAMPLES
   Example 1
     To make a volume from a description in an input file called
     volume_config.txt, give this command:

          # xlv_make volume_config.txt


   Example 2
     This example shows making some volume objects interactively.

          # xlv_make


     Make a spare plex so we can plug it into another volume on demand.

          xlv_make> plex spare_plex1
          spare_plex1
          xlv_make> ve /dev/dsk/dks0d2s1 /dev/dsk/dks0d2s2
          spare_plex1.0
          xlv_make> end
          Object specification completed

     Now make a small volume.  (Note that xlv_make automatically adds a
     /dev/dsk to the disk partition name if it is missing from the ve
     command.)

          xlv_make> vol small
          small
          xlv_make> log
          small.log
          xlv_make> plex
          small.log.0
          xlv_make> ve dks0d2s3
          small.log.0.0
          xlv_make> data
          small.data
          xlv_make> plex
          small.data.0
          xlv_make> ve dks0d2s14 dks0d2s12
          small.data.0.0
          xlv_make> end
          Object specification completed
          xlv_make> show
          vol small
          ve small.log.0.0        d710aa7d-b21d-1001-868d-080069077725
            start=0, end=1523, (cat)grp_size=1
            /dev/dsk/dks0d2s3 (1524 blks)   d710aa7e-b21d-1001-868d-080069077725
          ve small.data.0.0       d710aa81-b21d-1001-868d-080069077725
            start=0, end=4571, (cat)grp_size=2
            /dev/dsk/dks0d2s14 (1524 blks)  d710aa82-b21d-1001-868d-080069077725
            /dev/dsk/dks0d2s12 (3048 blks)  d710aa83-b21d-1001-868d-080069077725


          plex spare_plex1
          ve spare_plex1.0        d710aa77-b21d-1001-868d-080069077725
            start=0, end=3047, (cat)grp_size=2
            /dev/dsk/dks0d2s1 (1524 blks)   d710aa78-b21d-1001-868d-080069077725
            /dev/dsk/dks0d2s2 (1524 blks)   d710aa79-b21d-1001-868d-080069077725

          xlv_make> help
          vol volume_name  - Create a volume.
          data | log | rt  - Create subvolume of this type.
          plex [plex_name] - Create a plex.
          ve [-start] [-stripe] [-stripe_unit N] [-force] [volume_element_name]
            partition(s)
          end  - Finished composing current object.
          clear- Delete partially created object.
          show - Show all objects.
          exit - Write labels and terminate session.
          quit - Terminate session without writing labels.
          help or ? - Display this help message.
          sh - Fork a shell.

          xlv_make> exit
          #

     Note that the strings like d710aa82-b21d-1001-868d-080069077725 shown
     above are the universally unique identifiers (UUIDs) that identify each
     XLV object.

   Example 3
     This example shows a description file that makes the same volume objects
     as in Example 2.

          # A spare plex
          plex spare_plex1
          ve dks0d2s1 dks0d2s2
          # A small volume
          vol small
          log
          plex
          ve dks0d2s3
          data
          plex
          ve dks0d2s14 dks0d2s12
          end
          # Write labels before terminating session.
          exit


   Example 4
     This example shows making a complex volume interactively.  It makes a
     volume for an XFS filesystem that has a single-partition log and a plexed
     (mirrored) data subvolume that is striped.


          # xlv_make
          xlv_make> vol movies
          movies
          xlv_make> log
          movies.log
          xlv_make> plex
          movies.log.0
          xlv_make> ve /dev/dsk/dks0d2s1
          movies.log.0.0


     Let the data subvolume have two plexes, each of which consists of two
     sets of striped disks.  The data written to the data subvolume is copied
     to both movies.data.0 and movies.data.1.

          xlv_make> data
          movies.data
          xlv_make> plex
          movies.data.0
          xlv_make> ve -stripe dks0d1s6 dks0d2s6 dks0d3s6
          movies.data.0.0
          xlv_make> ve -stripe dks0d4s6 dks0d5s6
          movies.data.0.1
          xlv_make> plex
          movies.data.1
          xlv_make> ve -stripe dks1d1s6 dks1d2s6 dks1d3s6
          movies.data.1.0
          xlv_make> ve -stripe dks1d4s6 dks1d5s6
          movies.data.1.1

     Add a small real-time subvolume.  Stripe the data across two disks, with
     the stripe unit set to 1024 512-byte sectors.

          xlv_make> rt
          movies.rt
          xlv_make> plex
          movies.rt.0
          xlv_make> ve -stripe -stripe_unit 1024 dks4d1s6 dks4d2s6
          movies.rt.0.0
          xlv_make> end
          Object specification completed
          xlv_make> exit
          #


DIAGNOSTICS
     Previous object not completed
                    You have tried to specify a new object before the previous
                    object has been completely specified.  For example, the
                    sequence plex plex is not valid because the volume
                    elements for the first plex have not been specified yet.


     A volume has not been specified yet
                    This error results from giving rt, data, or log without
                    first specifying a volume to which these subvolumes
                    belong.

     An object with that name has already been specified
                    This error results from giving the vol volume_name, plex
                    plex_name, or ve volume_element_name command when an
                    object with the same name already exists or has been
                    specified in this session.

     A log subvolume has already been specified for this volume

     A data subvolume has already been specified for this volume

     A real-time subvolume has already been specified for this volume
                    These errors results from giving the log, data, or rt
                    command for a volume that already has a subvolume of the
                    given type.

     A subvolume has not been specified yet
                    You have given a volume command and then given the plex
                    command without first specifying a subvolume to which the
                    plex belongs.

     Too many plexes have been specified for this subvolume
                    You have already specified the maximum allowable number of
                    plexes for this subvolume.

     A plex has not been specified yet
                    You have given a ve command without first giving the plex
                    command.

     Too many volume elements have been specified for this plex
                    You have reached the maximum number of volume elements
                    that can be in a single plex.

     An error occurred in creating the specified objects
                    An error occurred while writing the volume configuration
                    out to the disk labels.

     Unrecognized flag: flag
                    flag is not recognized.

     Unexpected symbol: symbol
                    symbol is an unknown command.

     A volume name must be specified
                    You have given a vol command without giving the name of
                    the volume as an argument.


     Too many disk partitions
                    You have specified too many devices for the volume
                    element.

     Cannot determine size of partition; please verify that the device exists
                    xlv_make is unable to figure out the size of the specified
                    disk partition.  Make sure that the device exists.

     Unequal partition sizes, truncating the larger partition
                    The partitions specified for a striped volume element are
                    not of the same size.  This leaves some disk space
                    unusable in the larger partition because data is striped
                    across all the partitions in a volume element.

     A disk partition must be specified
                    You have given the ve command without specifying the disk
                    partitions that belong to the volume element as arguments
                    to the command.

     Unknown device: %s
                    You have specified a disk partition that either has no
                    device node in /dev/dsk or is missing altogether.

     Illegal value  The value is out of range for the given flag.

     The volume element's address range must be increasing
                    When you specify the starting offset of a volume element
                    within a plex by using the ve -start command, you must
                    specify them in increasing order.

     Disk partition partition is already being used
                    The disk partition named in the ve command is already in
                    use by some other volume object.

     Disk partition partition is mounted; use ``-force'' to override
                    The disk partition named in the ve command is currently
                    mounted.  Use of the -force argument is required to
                    perform the operation.

     Address range doesn't match corresponding volume element in other plexes
                    A volume element within a plex must have the same address
                    range in all plexes for the subvolume that includes those
                    plexes.

     There are partially specified objects, use ``quit'' to exit without
                    creating them You have entered the quit command while
                    there are specified, but not created objects.  You should
                    enter quit again to really quit at this point and discard
                    specified objects.


     Missing flag value for: %s
                    A command was given that requires an additional argument
                    that was not given.

     Malloc failed  There is insufficient memory available for xlv_make to
                    operate successfully.

     An error occurred in updating the volume header
                    An attempt to modify a disk's volume header was
                    unsuccessful.

     A striped volume element must have at least two partitions
                    The ve -stripe command was given and only one partition
                    was specified.

     Log ve should have partition type xfslog

     Data ve should have partition type xlv

     Rt ve should have partition type xlv

     Standalone object should have partition type xlv or xfslog

     Mixing partition type xfslog with data types not allowed
                    All the partitions that make up a volume element must have
                    the same partition type, either xlv or xfslog.

     Partition type must be consistent with other ve's in plex
                    Partition type does not correspond with intended usage.

     Partition could already belong to lv.
                    Check /etc/lvtab A warning that this partition may already
                    belong to an lv volume.

     Illegal partition type
                    An attempt was made to specify a partition that cannot,
                    under any circumstance, be used in an xlv(7M) volume.  An
                    example of such a partition would be the volume header.

     Subvolume type does not match any known
                    The subvolume being operated on is of no known type.

     Size mismatch  The partition size information in the volume header does
                    not match that contained in the xlv label.

     Device number mismatch
                    A warning that the device number in the xlv label does not
                    match that of the volume header.

     The same partition cannot be listed twice
                    The ve command was given with the same partition listed
                    twice.


SEE ALSO
     xlv_assemble(1M), xlv_labd(1M), xlv_mgr(1M), xlv_plexd(1M),
     xlv_shutdown(1M), xlvd(1M), xlv(7M).

     Tcl and the Tk Toolkit by John K.  Ousterhout, Addison-Wesley, 1994.

NOTES
     The disk labels created by xlv_make are stored only in the volume header
     of the disks.  They do not destroy user data.  Therefore, you can make an
     lv(7M) volume into an XLV volume and still preserve all the data on the
     logical volume.

     xlv_make changes the partition type of partitions used in newly created
     objects to either xlv or xfslog depending upon their usage.

     You must pick a different name for each volume, standalone plex, and
     standalone volume element.  You cannot have, for example, both a volume
     and a plex named yy.

     You must be root to run xlv_make.


                                                                       Page 10