.\" Process this file with .\" groff -man -Tascii export.conf.5 .\" .TH EXPORT.CONF 5 "APRIL 2014" RozoFS "User Manuals" .SH NAME export.conf \- RozoFS export daemon configuration file .SH DESCRIPTION .B export.conf is managed through .B libconfig and thus complies to the .B libconfig grammar. .SS layout It is the default transform layout used by RozoFS for each volume. Each file data will be transform in *forward* chunks. Any *inverse* set of them enables to reconstruct data (read data). The *forward* generated chunks can be spread over *safe* storages. Valid layouts are: - 0 (inverse = 2, forward = 3, safe = 4); - 1 (inverse = 4, forward = 6, safe = 8); - 2 (inverse = 8, forward = 12, safe = 16); .SS volumes It is a list of volumes. Each volume is identified by its vid and may contain a list of one or more clusters (cids). Each clusters is identified by its unique cid number within the configuration, and may contain at least a list of *safe* storages of the same capacity (sids). vid: (volume identifier) - must be an integer. - must be unique for each volume managed by this exportd. layout: (specific layout for this volume / optional) - Valid layouts are 0, 1 or 2. - Optional field (if no layout is specified for this volume, the default layout is used instead). cid: (cluster identifier) - must be an integer. - must be unique for each cluster managed by this exportd. sid: (storage identifier) - must be an integer (between 1 and 255). - must be unique within a cluster. rebalance: rebalance configuration file in case a rebalance process must be automatically and permanently launched for this volume. - must be a full path. - file must exist. - file format is described in rozo_rebalance.conf manual. georep: (whether geo-replication must occur on this volume / optional) - must be a boolean. - Optional field (default value is False). host: (IP or hostname of the physical node that contains the storage) - must be a valid IPv4 address or a valid hostname. - must only be set in case of a volume without geo-replication. site: (site number where the host resides in a multi site configuration) - must be a strictly positive integer. - must only be set in case of a volume without geo-replication. - Optional field. site0: (IP or hostname of the physical node that contains the storage on the main site) - must be a valid IPv4 address or a valid hostname. - must only be set in case of a volume with geo-replication. site1: (IP or hostname of the physical node that contains the storage on the secondary site) - must be a valid IPv4 address or a valid hostname. - must only be set in case of a volume with geo-replication. .B WARNING: - Use a new cluster when scaling with storage of different capacity. - Modifying or removing sid of storage can (will) lead to DATA LOSS !!! - Modifying or removing cid can (will) lead to DATA LOSS !!! .SS filters This section describes some IPv4 filtering rules. It is a list of filters. Each filter has a name that enable the exports to reference it (see .B exports section). A filter is a list of IPv4 subnets (IP address and mask length) with a .B allow or .B forbid rule. Incoming IP addresses for a given export are checked against the filter referenced by the export. The longuest prefix match subnet gives the rule to apply to the incoming client. filter: The name of a filter rule: allow or forbid (default is forbid) subnets: list of IPv4 subnets defining the filter behaviour. A subnet contains the following parameters ip4subnet: is an IPv4 subnet in the format / where is an IPv4 address in dot notation and is the subnet mask length from 1 to 32. rule: is the rule to apply to this subnet within {allow, forbid} .SS exports It is the list of the file systems exported by the RozoFS exportd daemon. Each exported file system is identified by a unique integer : . is the directory path where the metadata of this file system are stored on the export nodes. When omitted a default value is used : /srv/rozofs/exports/export_. is an administrative name of the exported file system. It must be unique and is used for remotly mounting the file system. When no is specified in the configuration file, the field is used instead. is the number of data blocks that can be stored on a file system before being notified. is the number maximum of data blocks that can be stored on a file system. is the volume where the file data for this exported filesystem will be stored. eid: (export identifier) - must be an integer. - must be unique for each exported filesystem managed by this exportd. root: (directory path where metadata for this filesystem will be stored) - must be an existing directory. - must be unique for each filesystem managed by this exportd. - default directory is /srv/rozofs/exports/export_ name: (exported file system name) - must be unique for each filesystem managed by this exportd. - default name is the root field. filter: (IPv4 filter to apply to this export) - is optional (every IP is allowed when omitted). - must be a string defined in the filter section. squota: (soft quota) - squota stands for soft quota which are non blocking quotas i.e write operations will succeeded but exceeded quotas will be notified in /var/run/exportd/export_[eid] monitoring file. - when no soft quota this field may be omitted. hquota: (hard quota) - hquota stands for blocking quotas which are blocking quotas i.e every attempt to write beyond hquota will fail (EDQUOT). - when no hard quota this field may be omitted. for squota and hquota: - quotas are express in nb. of blocks (no suffix), Kilo, Mega, Giga or Tera Bytes according to suffix K, M, G or T. Only the first letter of suffix is used that is: 128G is equivalent to 128Giga which in turn can be 128GigaBytes etc... - warning: any other suffix leads to quota express in blocks. vid: (volume identifier used to store file data for this filesystem) - must be an integer. - should exist in volume list. - several filesystem can use the same volume. thin-provisioning: (whether accounting of allocated sectors per file must be done) - must be a boolean. - Optional field (default value is False). - must only be set to True on very specific cases ! .SH EXAMPLE .PP .nf .ta +3i # sample /etc/rozofs/export.conf file layout = 0; # Default layout volumes = # List of volumes ( { # First volume using default layout vid = 1; # Volume identifier cids= # List of clusters of the volume ( { # First cluster of the volume cid = 1; # Cluster identifier sids = # List of storages of the cluster ( {sid = 01; host = "storage-node-1-1";}, {sid = 02; host = "storage-node-1-2";}, {sid = 03; host = "storage-node-1-3";}, {sid = 04; host = "storage-node-1-4";} ); }, { # Second cluster of volume cid = 2; # Cluster identifier sids = # List of storages of the cluster ( {sid = 01; host = "storage-node-2-1";}, {sid = 02; host = "storage-node-2-2";}, {sid = 03; host = "storage-node-2-3";}, {sid = 04; host = "storage-node-2-4";} ); } ); }, { # 2nd volume distributed on 4 sites vid = 2; # Volume identifier layout = 1; # Specific layout for this volume cids= # List of clusters of the volume ( { # First cluster of the volume cid = 3; # Cluster identifier sids = # List of storages of the cluster ( {sid = 01; host = "storage-site1-node1"; site=1;}, {sid = 02; host = "storage-site1-node2"; site=1;}, {sid = 03; host = "storage-site2-node3"; site=2;}, {sid = 04; host = "storage-site2-node4"; site=2;}, {sid = 05; host = "storage-site3-node5"; site=3;}, {sid = 06; host = "storage-site3-node6"; site=3;}, {sid = 07; host = "storage-site4-node7"; site=4;}, {sid = 08; host = "storage-site4-node8"; site=4;}, ); } ); }, { # 3rd volume with georeplication vid = 3; # Volume identifier georep = True; # Volume is geo-replicated layout = 1; # Specific layout for this volume cids = # List of clusters for the volume ( { # First cluster of this volume cid = 4; # Cluster identifier sids = # List of storages of the cluster ( {sid = 01; site0 = "storage-node-3-1-0"; site1 = "storage-node-3-1-1";}, {sid = 02; site0 = "storage-node-3-2-0"; site1 = "storage-node-3-2-1";}, {sid = 03; site0 = "storage-node-3-3-0"; site1 = "storage-node-3-3-1";}, {sid = 04; site0 = "storage-node-3-4-0"; site1 = "storage-node-3-4-1";}, {sid = 05; site0 = "storage-node-3-5-0"; site1 = "storage-node-3-5-1";}, {sid = 06; site0 = "storage-node-3-6-0"; site1 = "storage-node-3-6-1";}, {sid = 07; site0 = "storage-node-3-7-0"; site1 = "storage-node-3-7-1";}, {sid = 08; site0 = "storage-node-3-8-0"; site1 = "storage-node-3-8-1";} ); } ); } ); filters = ( { # Only 2 subnets are allowed filter = "vol1", subnets = ( { ip4subnet="10.10.0.0/24", rule="allow"}, { ip4subnet="10.20.0.0/24", rule="allow"} ); } ,{ # Only one subnet is allowed except one forbidden IP address filter = "vol3", subnets = ( { ip4subnet="192.168.0.0/24", rule="allow"}, { ip4subnet="192.168.0.22/32", rule="forbid"} ); } ); exports = ( # List of exported filesystem # exported file systems on volume 1 {eid = 1; name = "foo1"; filter="vol1", squota="128G"; hquota="256G"; vid=1;}, {eid = 2; name = "foo2"; filter="vol1", squota="256G"; hquota="512G"; vid=1;}, {eid = 3; name = "foo3"; filter="vol1", vid=1;}, # exported file systems on volume 2 {eid = 4; name = "bar1"; vid=2;} {eid = 5; name = "bar2"; vid=2;} # exported file systems on volume 3 {eid = 6; name = "geo"; filter="vol3", vid=3;} # ... ); .SH FILES .I /etc/rozofs/export.conf (/usr/local/etc/rozofs/export.conf) .RS The system wide configuration file. .\".SH ENVIRONMENT .\".SH DIAGNOSTICS .\".SH BUGS .SH AUTHOR Fizians .SH "SEE ALSO" .BR rozofs (7), .BR exportd (8)