1.\" Copyright (c) 2010 The FreeBSD Foundation 2.\" All rights reserved. 3.\" 4.\" This software was developed by Pawel Jakub Dawidek under sponsorship from 5.\" the FreeBSD Foundation. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" $FreeBSD$ 29.\" 30.Dd April 10, 2011 31.Dt HASTCTL 8 32.Os 33.Sh NAME 34.Nm hastctl 35.Nd "Highly Available Storage control utility" 36.Sh SYNOPSIS 37.Nm 38.Cm create 39.Op Fl d 40.Op Fl c Ar config 41.Op Fl e Ar extentsize 42.Op Fl k Ar keepdirty 43.Op Fl m Ar mediasize 44.Ar name ... 45.Nm 46.Cm role 47.Op Fl d 48.Op Fl c Ar config 49.Aq init | primary | secondary 50.Ar all | name ... 51.Nm 52.Cm status 53.Op Fl d 54.Op Fl c Ar config 55.Op Ar all | name ... 56.Nm 57.Cm dump 58.Op Fl d 59.Op Fl c Ar config 60.Op Ar all | name ... 61.Sh DESCRIPTION 62The 63.Nm 64utility is used to control the behaviour of the 65.Xr hastd 8 66daemon. 67.Pp 68This utility should be used by HA software like 69.Nm heartbeat 70or 71.Nm ucarp 72to setup HAST resources role when changing from primary mode to 73secondary or vice versa. 74Be aware that if a file system like UFS exists on HAST provider and 75primary node dies, file system has to be checked for inconsistencies 76with the 77.Xr fsck 8 78utility after switching secondary node to primary role. 79.Pp 80The first argument to 81.Nm 82indicates an action to be performed: 83.Bl -tag -width ".Cm create" 84.It Cm create 85Initialize local provider configured for the given resource. 86Additional options include: 87.Bl -tag -width ".Fl e Ar extentsize" 88.It Fl e Ar extentsize 89Size of an extent. 90Extent is a block which is used for synchronization. 91.Xr hastd 8 92maintains a map of dirty extents and extent is the smallest region that 93can be marked as dirty. 94If any part of an extent is modified, entire extent will be synchronized 95when nodes connect. 96If extent size is too small, there will be too much disk activity 97related to dirty map updates, which will degrade performance of the 98given resource. 99If extent size is too large, synchronization, even in case of short 100outage, can take a long time increasing the risk of losing up-to-date 101node before synchronization process is completed. 102The default extent size is 103.Va 2MB . 104.It Fl k Ar keepdirty 105Maximum number of dirty extents to keep dirty all the time. 106Most recently used extents are kept dirty to reduce number of metadata 107updates. 108The default number of most recently used extents which will be kept 109dirty is 110.Va 64 . 111.It Fl m Ar mediasize 112Size of the smaller provider used as backend storage on both nodes. 113This option can be omitted if node providers have the same size on both 114sides. 115.El 116.Pp 117If size is suffixed with a k, M, G or T, it is taken as a kilobyte, 118megabyte, gigabyte or terabyte measurement respectively. 119.It Cm role 120Change role of the given resource. 121The role can be one of: 122.Bl -tag -width ".Cm secondary" 123.It Cm init 124Resource is turned off. 125.It Cm primary 126Local 127.Xr hastd 8 128daemon will act as primary node for the given resource. 129System on which resource role is set to primary can use 130.Pa /dev/hast/<name> 131GEOM provider. 132.It Cm secondary 133Local 134.Xr hastd 8 135daemon will act as secondary node for the given resource - it will wait 136for connection from the primary node and will handle I/O requests 137received from it. 138GEOM provider 139.Pa /dev/hast/<name> 140will not be created on secondary node. 141.El 142.It Cm status 143Present status of the configured resources. 144.It Cm dump 145Dump metadata stored on local component for the configured resources. 146.El 147.Pp 148In addition, every subcommand can be followed by the following options: 149.Bl -tag -width ".Fl c Ar config" 150.It Fl c Ar config 151Specify alternative location of the configuration file. 152The default location is 153.Pa /etc/hast.conf . 154.It Fl d 155Print debugging information. 156This option can be specified multiple times to raise the verbosity 157level. 158.El 159.Sh FILES 160.Bl -tag -width ".Pa /var/run/hastctl" -compact 161.It Pa /etc/hast.conf 162Configuration file for 163.Nm 164and 165.Xr hastd 8 . 166.It Pa /var/run/hastctl 167Control socket used by 168.Nm 169to communicate with the 170.Xr hastd 8 171daemon. 172.El 173.Sh EXIT STATUS 174Exit status is 0 on success, or one of the values described in 175.Xr sysexits 3 176on failure. 177.Sh EXAMPLES 178Initialize HAST provider, create file system on it and mount it. 179.Bd -literal -offset indent 180nodeB# hastctl create shared 181nodeB# hastd 182nodeB# hastctl role secondary shared 183 184nodeA# hastctl create shared 185nodeA# hastd 186nodeA# hastctl role primary shared 187nodeA# newfs -U /dev/hast/shared 188nodeA# mount -o noatime /dev/hast/shared /shared 189nodeA# application_start 190.Ed 191.Pp 192Switch roles for the 193.Nm shared 194HAST resource. 195.Bd -literal -offset indent 196nodeA# application_stop 197nodeA# umount -f /shared 198nodeA# hastctl role secondary shared 199 200nodeB# hastctl role primary shared 201nodeB# fsck -t ufs /dev/hast/shared 202nodeB# mount -o noatime /dev/hast/shared /shared 203nodeB# application_start 204.Ed 205.Sh SEE ALSO 206.Xr sysexits 3 , 207.Xr geom 4 , 208.Xr hast.conf 5 , 209.Xr fsck 8 , 210.Xr ggatec 8 , 211.Xr ggatel 8 , 212.Xr hastd 8 , 213.Xr mount 8 , 214.Xr newfs 8 215.Sh AUTHORS 216The 217.Nm 218was developed by 219.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org 220under sponsorship of the FreeBSD Foundation. 221