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 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.
                                      hastctl 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 loosing 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 numer
                                      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.

     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.

     status      Present 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.

     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

           nodeB# 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

     /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.

     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        February 1, 2010        FreeBSD 11.0-PRERELEASE


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

home | help