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

FreeBSD Manual Pages


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) dae-

     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 incon-
     sistencies	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.  Ad-
	     ditional 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 synchroniza-
			    tion process is completed.	The default extent
			    size is 2MB.

	     -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 stor-
			    age	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 kilo-
	     byte, megabyte, gigabyte or terabyte measurement respectively.

     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	re-

     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 utility appeared in FreeBSD 8.1.

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

FreeBSD	13.0		       September 8, 2016		  FreeBSD 13.0


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

home | help