mfsscadmin(1)

NAME
mfsscadmin - MooseFS storage class administration tool

SYNOPSIS
mfsscadmin [/MOUNTPOINT] create|make [-a admin_only] [-m creation_mode] [-C CREATION_LABELS] -K KEEP_LABELS [-A ARCH_LABELS -d ARCH_DELAY] SCLASS_NAME...

mfsscadmin [/MOUNTPOINT] create|make [-a admin_only] [-m creation_mode] LABELS SCLASS_NAME...

mfsscadmin [/MOUNTPOINT] change|modify [-f] [-a admin_only] [-m creation_mode] [-C CREATION_LABELS] [-K KEEP_LABELS] [-A ARCH_LABELS] [-d ARCH_DELAY] SCLASS_NAME...

mfsscadmin [/MOUNTPOINT] delete|remove SCLASS_NAME...

mfsscadmin [/MOUNTPOINT] copy|duplicate SRC_SCLASS_NAME DST_SCLASS_NAME...

mfsscadmin [/MOUNTPOINT] rename SRC_SCLASS_NAME DST_SCLASS_NAME

mfsscadmin [/MOUNTPOINT] list [-l]

DESCRIPTION
mfsscadmin is a tool for defining storage classes, which can be later applied to MooseFS objects with mfssetsclass, mfsgetsclass etc. Storage class is a set of labels expressions and options that indicate, on which chunkservers the files in this class should be written and later kept.

COMMANDS

create|make creates a new storage class with given options, described below and names it SCLASS_NAME; there can be more than one name provided, multiple storage classes with the same definition will be created then

change|modify changes the given options in a class or classes indicated by SCLASS_NAME paremeter(s)

delete|remove removes the class or classes indicated by SCLASS_NAME paremeter(s); if any of the classes is not empty (i.e. it is still used by some MooseFS objects), it will not be removed and the tool will return an error and an error message will be printed; empty classes will be removed in any case

copy|duplicate copies class indicated by SRC_SCLASS_NAME under a new name provided with DST_SCLASS_NAME

rename changes the name of a class from SRC_SCLASS_NAME to DST_SCLASS_NAME

list lists all the classes

OPTIONS

-C optional parameter, that tells the system to which chunkservers, defined by the CREATION_LABELS expression, the chunk should be first written just after creation; if this parameter is not provided for a class, the KEEP_LABELS chunkservers will be used

-K mandatory parameter (assumed in the second, abbreviated version of the command), that tells the system on which chunkservers, defined by the KEEP_LABELS expression, the chunk(s) should be kept always, except for special conditions like creating and archiving, if defined

-A optional parameter, that tells the system on which chunkservers, defined by the ARCH_LABELS expression, the chunk(s) should be kept for archiving purposes; the system starts to treat a chunk as archive, when the last modification time of the file it belongs to is older than the number of days specified with -d option

-d optional parameter that MUST be defined when -A is defined, ARCH_DELAY parameter defines after how many days from last modification time a file (and its chunks) are treated as archive

-a can be either 1 or 0 and indicates if the storage class is available to everyone (0) or admin only (1)

-f force the changes on a predefined storage class (see below), use with caution!

-m is described below in CREATION MODES section

-l list also definitions, not only the names of existing storage classes

LABELS EXPRESSIONS
Labels are letters (A-Z - 26 letters) that can be assigned to chunkservers. Each chunkserver can have multiple (up to 26) labels. Labels are defined in mfschunkserver.cfg file, for more infomation refer to the appropriate manpage.

Labels expression is a set of subexpressions separated by commas, each subexpression specifies the storage schema of one copy of a file. Subexpression can be: an asterisk or a label schema. Label schema can be one label or an expression with sums, multiplications and brackets. Sum means a file can be stored on any chunkserver matching any element of the sum (logical or). Multiplication means a file can be stored only on a chunkserver matching all elements (logical and). Asterisk means any chunkserver. Identical subexpressions can be shortened by adding a number in front of one instead of repeating it a number of times.

Examples of lables expressions:

A,B - files will have two copies, one copy will be stored on chunkserver(s) with label A, the other on chunkserver(s) with label B

A,* - files will have two copies, one copy will be stored on chunkserver(s) with label A, the other on any chunkserver(s)

*,* - files will have two copies, stored on any chunkservers (different for each copy)

AB,C+D - files will have two copies, one copy will be stored on any chunkserver(s) that has both labels A and B (multiplication of labels), the other on any chunkserver(s) that has either the C label or the D label (sum of labels)

A,B[X+Y],C[X+Y] - files will have three copies, one copy will be stored on any chunkserver(s) with A label, the second on any chunserver(s) that has the B label and either X or Y label, the third on any chunkserver(s), that has the C label and either X or Y label

A,A expression is equivalent to 2A expression

A,BC,BC,BC expression is equivalent to A,3BC expression

*,* expression is equivalent to 2* expression is equivalent to 2 expression

CREATION MODES
It is important to specify what to do in case when there is no space available on all servers marked with labels needed for new chunk creation. Also all servers marked with such labels can be temporariliy overloaded. The question is if the system should create chunks on other servers or not.

Answer to this question should be resolved by user and hence the -m option. By default (no options or option -m D) in case of overloaded servers system will wait for them, but in case of no space available will use other servers and will replicate data to correct servers when it becomes possible.

Option -m S turns on STRICT mode. In this mode the system will return error (ENOSPC) in case of no space available on servers marked with labels specified for chunk creation. It will still wait for overloaded servers.

Option -m L turns on LOOSE mode. In this mode the system will use other servers in case of overloaded servers or no space on servers and will replicate data to correct servers when it becomes possible.

PREDEFINED STORAGE CLASSES
For compatibility reasons, every fresh or freshly upgraded instance of MooseFS has 9 predefined storage classes. Their names are single digits, from 1 to 9, and their definitions are * to 9*. They are equivalents of simple numeric goals from previous versions of the system. In case of an upgrade, all files that had goal N before upgrade, will now have N storage class. These classes can be modified only when option -f is specified. It is advised to create new storage classes in an upgraded system and migrate files with mfsxchgsclass tool, rather than modify the predefined classes. The predefined classes CANNOT be deleted nor renamed.

REPORTING BUGS
Report bugs to <bugs@moosefs.com>.

COPYRIGHT
Copyright (C) 2017 Jakub Kruszona-Zawadzki, Core Technology Sp. z o.o. This file is part of MooseFS. MooseFS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 (only). MooseFS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with MooseFS; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA or visit http://www.gnu.org/licenses/gpl-2.0.html

SEE ALSO
mfsmount(8), mfstools(1), mfssclass(1), mfschunkserver.cfg(5)