Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
HASTCTL(8)              FreeBSD System Manager's Manual             HASTCTL(8)

     hastctl - Highly Available Storage control utility

     hastctl create [-d] [-c config] [-e extentsize] [-k keepdirty]
             [-m mediasize] name ...
     hastctl role [-d] [-c config] <init | primary | secondary> all | name ...
     hastctl list [-d] [-c config] [all | name ...]
     hastctl status [-d] [-c config] [all | name ...]
     hastctl dump [-d] [-c config] [all | name ...]

     The hastctl utility is used to control the behaviour of the hastd(8)

     This utility should be used by HA software like heartbeat or ucarp to
     setup HAST resources role when changing from primary mode to secondary or
     vice versa.  Be aware that if a file system like UFS exists on HAST
     provider and primary node dies, file system has to be checked for
     inconsistencies with the fsck(8) utility after switching secondary node
     to primary role.

     The first argument to hastctl indicates an action to be performed:

     create      Initialize local provider configured for the given resource.
                 Additional options include:

                 -e extentsize        Size of an extent.  Extent is a block
                                      which is used for synchronization.
                                      hastd(8) maintains a map of dirty
                                      extents and extent is the smallest
                                      region that can be marked as dirty.  If
                                      any part of an extent is modified,
                                      entire extent will be synchronized when
                                      nodes connect.  If extent size is too
                                      small, there will be too much disk
                                      activity related to dirty map updates,
                                      which will degrade performance of the
                                      given resource.  If extent size is too
                                      large, synchronization, even in case of
                                      short outage, can take a long time
                                      increasing the risk of losing up-to-date
                                      node before synchronization process is
                                      completed.  The default extent size is

                 -k keepdirty         Maximum number of dirty extents to keep
                                      dirty all the time.  Most recently used
                                      extents are kept dirty to reduce number
                                      of metadata updates.  The default number
                                      of most recently used extents which will
                                      be kept dirty is 64.

                 -m mediasize         Size of the smaller provider used as
                                      backend storage on both nodes.  This
                                      option can be omitted if node providers
                                      have the same size on both sides.

                 If size is suffixed with a k, M, G or T, it is taken as a
                 kilobyte, megabyte, gigabyte or terabyte measurement

     role        Change role of the given resource.  The role can be one of:

                 init           Resource is turned off.

                 primary        Local hastd(8) daemon will act as primary node
                                for the given resource.  System on which
                                resource role is set to primary can use
                                /dev/hast/_name_ GEOM provider.

                 secondary      Local hastd(8) daemon will act as secondary
                                node for the given resource - it will wait for
                                connection from the primary node and will
                                handle I/O requests received from it.  GEOM
                                provider /dev/hast/_name_ will not be created
                                on secondary node.

     list        Present verbose status of the configured resources.

     status      Present terse (and more easy machine-parseable) status of the
                 configured resources.

     dump        Dump metadata stored on local component for the configured

     In addition, every subcommand can be followed by the following options:

     -c config        Specify alternative location of the configuration file.
                      The default location is /etc/hast.conf.

     -d               Print debugging information.  This option can be
                      specified multiple times to raise the verbosity level.

     /etc/hast.conf        Configuration file for hastctl and hastd(8).
     /var/run/hastctl      Control socket used by hastctl to communicate with
                           the hastd(8) daemon.

     Exit status is 0 on success, or one of the values described in
     sysexits(3) on failure.

     Initialize HAST provider, create file system on it and mount it.

           nodeB# hastctl create shared
           nodeB# hastd
           nodeB# hastctl role secondary shared

           nodeA# hastctl create shared
           nodeA# hastd
           nodeA# hastctl role primary shared
           nodeA# newfs -U /dev/hast/shared
           nodeA# mount -o noatime /dev/hast/shared /shared
           nodeA# application_start

     Switch roles for the shared HAST resource.

           nodeA# application_stop
           nodeA# umount -f /shared
           nodeA# hastctl role secondary shared

           nodeB# hastctl role primary shared
           nodeB# fsck -t ufs /dev/hast/shared
           nodeB# mount -o noatime /dev/hast/shared /shared
           nodeB# application_start

     sysexits(3), geom(4), hast.conf(5), fsck(8), ggatec(8), ggatel(8),
     hastd(8), mount(8), newfs(8)

     The hastctl was developed by Pawel Jakub Dawidek <> under
     sponsorship of the FreeBSD Foundation.

FreeBSD 11.0-PRERELEASE         March 14, 2013         FreeBSD 11.0-PRERELEASE


Want to link to this manual page? Use this URL:

home | help