snfs.cfg(5) snfs.cfg(5)
NAME
snfs.cfg - Xsan Volume Configuration File
SYNOPSIS
This page describes the old Volume configuration file format, used
prior to Xsan 4.0.
A volume name is associated to its configuration file by the file's
prefix. For example, if the volume were named projecta, then its con-
figuration file would be /Library/Preferences/Xsan/projecta.cfg. There
may be multiple volumes simultaneously mounted, with an FSM program
running for each active volume. Configuration files must reside on the
same system as the FSM processes that use them.
DEPRECATED
This format has been deprecated in favor of the cfgx format on all
platforms except Windows - see snfs.cfgx(5) for details on the new for-
mat.
SYNTAX
Each configuration file has several section headers and section bodies.
A section header is enclosed by square brackets as follows:
[ Keyword Name ]
A section body is the non-bracketed lines of configuration between sec-
tion headers.
Every configuration file begins with a Global section body; a Global
section header is implied. In addition to the implicitly named Global
section, other section-header keyword values are DiskType, Disk and
StripeGroup. Section-header keywords are case insensitive.
Section names consist of case-sensitive letters, numbers, underscores
(_), and dashes (-).
Each line of a section body has the following syntax:
Keyword Value
Section-body keyword names are section dependent as described below.
Section-body values can be a number, name or any combination of charac-
ters enclosed by double quotes ("). A number can be in octal, decimal
or hexadecimal. Octal numbers are represented by prefixing the number
with 0, and hexadecimal numbers are represented by prefixing the number
with 0x.
A suffix of m or M indicates a mega multiplier, which is 2^20 =
1,048,576. For example the value 3M results in an integer value of
3,145,728.
Following is the list of case-insensitive multiplier suffixes:
Suffix Name Multiplier
------ ---- ----------
K kilo 1,024
M mega 1,048,576
G giga 1,073,741,824
T tera 1,099,511,627,776
In some cases of specifying disk space, a suffix changes the meaning of
the parameter. A number alone implies blocks while a number with a
suffix implies bytes. Following are the keywords configured in blocks
by default, or bytes when a multiplier suffix is used:
Keyword
-------
InodeExpandMin
InodeExpandInc
InodeExpandMax
InodeStripeWidth
PerfectFitSize
StripeAlignSize
StripeBreadth
Comments start anywhere a pound sign (#) occurs, and continue to the
end of that line. The following are valid comment strings:
# This is a comment line
# Text after and including a # sign on any line is ignored.
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
FsBlockSize 4k # The file system block size is 4096 bytes.
SECTIONS SUMMARY
The configuration file has four section types that are delimited by
square-bracketed section-header lines as described above. The first
section type is the Global section, which does not have a section-
header line. It occurs only once, at the start of the file, and ends
with the first bracketed section-header line. The Global section
defines configuration attributes that affect table sizes, file system
caches and performance factors for the volume.
The remaining sections are DiskTypes, Disk and StripeGroup. These may
occur any number of times and in any order.
Each DiskTypes section defines an instance of a valid disk type. This
is simply a category of disk device and the disk device's size in sec-
tors.
The Disk section describes individual disk devices that are configured
in the volume. The name of the disk device must be placed in the volume
header label using cvlabel(1). This is how the disk devices become
associated with an Xsan disk name.
The StripeGroup section describes a group of Disk entities that com-
prise a storage pool. One or more storage pools describe the entire
volume. A storage pool is the smallest entity that can be manipulated
by administration commands, such as cvadmin(1). Even though disk
devices may be brought up or down, this has the effect of upping or
downing the entire storage pool. The StripeGroup can be either read or
write disabled. The storage pool is still up, but one or more of the
related group's disks are disabled. When a storage pool is write dis-
abled, no further allocations are permitted on the group.
NOTE: Several releases ago, there was a section called MediaType that
defined Affinity names before they were used in a StripeGroup section.
Affinities no longer need to be defined separately from the
StripeGroup, and if upgrading from a volume that used the MediaType
section, it must be removed or it will cause parser errors.
DEFAULT GLOBAL VALUES
The following defaults, minimums, and maximums are allowed for modifi-
able global variables. NOTE: the Default Value is in effect when the
global variable is absent from the configuration file. Graphical user
interfaces and command-line tools such as sncfgedit may create configu-
ration files containing globals variables with initial values that dif-
fer from the Default Value below.
Variable Name Default Value Min. Value Max Value
---------------- ------------- ---------- ---------
ABMFreeLimit NO NO YES
AllocationStrategy Round Round, Fill, Balance
AllocSessionReservation Deprecated
AllocSessionReservationSize 0 128M 1048576M
BrlResyncTimeOut- 20 0 60
BufferCacheSize- 32M 128k 8G
BufferPoolSize Deprecated
CvRootDir- "/" valid dir with < 1024 chars
DataMigration NO NO YES
DataMigrationThreadPoolSize 128 1 0xFFFFFFFF
Debug 0 0 0xFFFFFFFF
DirCacheSize Deprecated
DirFDCacheSize Deprecated
DirWarp YES NO YES
EventFiles- YES NO YES
EventFileDir- special valid dir with < 1024 chars
ExtentCountThreshold 49152 0 0x1FFFC00
FileLocks NO NO YES
ForcePerfectFit- NO NO YES
ForceStripeAlignment Deprecated
FsBlockSize 4K 4K 512K
FsCapacityThreshold 0 0 100
GlobalSuperUser NO NO YES
InodeCacheSize 32K 4K 512K
InodeDeleteMax special 10 0xFFFFFFFF
InodeExpandInco 0 1 32767
InodeExpandMaxo 0 1 32768
InodeExpandMino 0 1 32768
InodeStripeWidth 0 0 1099511627776
IoHangLimitSecs Deprecated
JournalIcBufNum Deprecated
JournalIcBufSize Deprecated
JournalSize 4M 64k 512M
MaxConnections 10 2 65791
MaxLogSize 1M 1M 0xFFFFFFFF
MaxMBPerClientReserve Deprecated
Mbufs Deprecated
MbufSize Deprecated
OpHangLimitSecs 180 0 0xFFFFFFFF
PerfectFitSize 8 1 32768
Quotas NO NO YES
QuotaHistoryDays 7 0 3650
ReaddirForcedVersion Deprecated
RemoteNotification NO NO YES
ReservedSpace YES NO YES
RestoreJournal- NO NO YES
RestoreJournalDir- special valid dir with < 1024 chars
RestoreJournalMaxMB- 0 0 168
RestoreJournalMaxHours- 0 0 102400
StaticInodes Deprecated
StripeAlignSize -1 -1 0xFFFFFFFF
ThreadPoolSize 16 16 0xFFFFFFFF
TrimOnClose- 0 0 (2^64)-1
UnixDirectoryCreationModeOnWindows 0755 0 0777
UnixFileCreationModeOnWindows 0644 0 0777
UnixIdFabricationOnWindows YES NO YES
UnixNobodyGidOnWindows 60001 0 0x7FFFFFFF
UnixNobodyUidOnWindows 60001 0 0x7FFFFFFF
WindowsSecurity NO NO YES
----------------------------------------------------------------------
XSan Only Variables
----------------------------------------------------------------------
EnforceACLs NO NO YES
EnableSpotlight NO NO YES
----------------------------------------------------------------------
- NOTE: Not intended for general use. Only use when recommended by
Apple Support.
o NOTE: Deprecated and will no longer be valid in a future release
DEPRECATED GLOBAL OPTIONS
The following global options have been deprecated
o AllocSessionReservation <Yes|No>
The AllocSessionReservation parameter has been replaced by the Alloc-
SessionReservationSize parameter. The old parameter is supported but
will be eliminated in a future release.
o BufferPoolSize <value>
The BufferPoolSize option was used to change the number of async write
queue worker threads that were created to process asynchronous buffer
cache writes. This value is now always set to 4.
o DirCacheSize <value>
The DirCacheSize option was used to set the size of the client's direc-
tory cache. This option has been superseded by the buffercache.
o DirFDCacheSize <value>
The DirFDCacheSize option was used to set the size of the client's
directory file descriptor cache. This option has been superseded by the
buffercache.
o ForceStripeAlignment <Yes|No>
The ForceStripeAlignment option was used to force the strict alignment
of the start of the volume to a stripe width boundary, and affected the
way the file system was laid out at cvmkfs(1) time. All new volumes
are now created with ForceStripeAlignment on, but older volumes that
had ForceStripeAlignment off at create time will continue to function
properly.
NOTE: If cvmkfs(1) is run on a volume configuration file that has
ForceStripeAlignment set, a warning will be displayed because the
option has no effect.
o IoHangLimitSecs <value>
This variable defined the threshold for how long an I/O is determined
to be 'hung' by the FSM program. When the FSM program detected I/O
hang it will stop execution in order to initiate failover to backup
system. This is now superseded by OpHangLimitSecs.
o JournalICBufNum <value>
The JournalICBufNum option defined the number of in-core journal
buffers to create. This is now always set to 2.
o JournalICBufSize <value>
The JournalICBufSize option defined the size of the in-core Journal
Buffer. This is now always set to 32k
o MaxMBPerClientReserve <value>
The MaxMBPerClientReserve option has been superseded by the
ReservedSpace option.
The MaxMBPerClientReserve variable defined the maximum number of
megabytes the meta-data server should grant an Xsan client for delayed
allocation. The default was 100.
This value multiplied by MaxConnections - 1 was reserved by the meta-
data server in each stripe group that can contain data. This was done
so that clients could delay allocation and always be able to obtain
space for data, even across meta-data server restarts. This delay of
allocation was only done on clients for buffer cache writes.
A value of 0 turned off delayed allocations, significantly reduced
buffer cache performance on clients, and allowed nearly all of the disk
space to be used.
o MBufs <Yes|No>
The MBufs option was used to set the number of message buffers in the
FSM message queues. This is now always set to 32.
o MBufSize <value>
The MBufSize option was used to set the maximum size of a message
buffer. This is now always set to 4k.
o OpHangLimitSecs <value>
This variable defines the threshold (in seconds) for processing an
individual operation by the FSM server daemon. When the threshold is
exceeded the FSM server daemon is aborted to initiate failover to a
standby server. Note, this is typically triggered by a faulty or
underperforming metadata device causing FSM server operations to hang
or execute very slow. The default value is 180 seconds. This variable
can be adjusted to a higher value to avoid unnecessary failovers or
reduced to a lower value to initiate a faster failover. It can be set
to zero to completely disable monitoring.
o ReadDirForcedVersion <Value>
The ReadDirForcedVersion enabled a modified directory search algorithm
for older file systems. This is no longer needed and is always off.
o StaticInodes <Yes|No>
The StaticInodes option was used to set the number of inodes in the
volume at cvmkfs(1) time. Inodes are always dynamically created now.
DISKTYPE SECTION
Following is the format for a DiskType section:
[DiskType <name>]
Sectors <sectors_per_disk>
SectorSize <sector_size>
DISK SECTION
The Disk section syntax is as follows:
[Disk <name>]
Status <UP | DOWN>
Type <disktype_name>
STRIPEGROUP SECTION
The StripeGroup section format is as follows:
[StripeGroup <name>]
Status <UP | DOWN>
Exclusive <Yes | No>
Metadata <Yes | No>
Journal <Yes | No>
Affinity <eight_character_string>
[ Zero or more affinity entries are allowed ]
Read <Enabled | Disabled>
Write <Enabled | Disabled>
StripeBreadth <number_of_blocks_per_disk>
MultiPathMethod <Rotate|Static|Sticky|Balance|Cycle>
Node <disk_name> <stripe_group_unit_number>
[ One Node per disk in storage pool ]
o Status
If Up, the storage pool is available, if Down it is not.
o StripeBreadth
Describes the number of volume blocks or bytes that are appended to a
file before switching to the next disk in the group. When the value is
specified without a multiplier suffix, it is a number of volume blocks.
When specified with a multiplier, it is bytes.
o Metadata
If Yes, this storage pool contains metadata. If No, it does not.
o Journal
If Yes, this storage pool contains the journal. If No, it does not.
Only one storage pool may contain a journal per file system.
o Exclusive
When the Exclusive variable is set to YES on a storage pool that has
Metadata or Journal set to YES, no userdata may reside on that storage
pool.
When the Exclusive variable is set to YES on a storage pool that does
not have either Metadata or Journal set toe YES, and does have Affinity
values declared, only the Affinities declared in its StripeGroup sec-
tion are allowed to reside on this storage pool. This may be preferable
for high-bandwidth applications. Because Exclusive is used in two
ways, a storage pool cannot have both exclusive Affinity declarations
and metadata.
The Exclusive helps to optimize disk striping strategies. For example,
in a broadcast video application, an NTSC field is blocked out at
352,256 bytes per field. The optimal and required stripe breadth for a
525 line (NTSC broadcast) storage pool is two fields (a frame), or 43,
16k volume blocks. However, a 625 line (PAL broadcast) storage pool
uses 417,792 bytes per field, and the optimal stripe breadth is 51, 16k
volume blocks per disk. In order for allocation to work in a mixed mode
environment, it is necessary to have one storage pool set up for 525
(NTSC) and another set up for 625 (PAL). See the configuration file
example below to see two storage pools, each configured optimally for
NTSC and PAL modes.
o Affinity
In conjunction with the Exclusive variable, the Affinity variable helps
the FSM determine what type of allocation may occur on a storage pool.
When Exclusive is YES, only files with matching Affinity values can be
allocated. When Exclusive is NO, it is possible that other file types
would be allocated on the storage pool. This could have fragmenting
effects over time and eventually cause high-bandwidth performance prob-
lems. It is recommended that storage pools are developed to be spe-
cialized for each file type used.
The Affinity value can be any string of 8 characters or less.
o Rtios
The Rtios variable defines the maximum number of disk I/O operations
per second (IOs/s) available to real-time applications for the stripe
group using the Quality of Service (QoS) API. If both Rtios and Rtmb
are set to 0 (the default value), QoS is disabled. If both Rtios and
Rtmb are defined, the smaller value (after Rtmb is converted to IOs/s
internally) is used. This value should be obtained by real measurement
using IO benchmark tool.
o RtiosReserve
The RtiosReserve variable defines the minimum number of disk I/O opera-
tions per second reserved for non-realtime applications when realtime
operations have been enabled using the QoS API. This prevents non-real-
time clients from IO starvation. If both RtiosReserve and RtmbReserve
are set to 0 (the default value), the actual bandwidth reserved is
1MB/s (converting to IO/s), at least 1 IO/s is reserved. If both param-
eters are defined, the smaller value (RtmbReserve is converted to IOs/s
internally) is used. This value should not be greater than Rtios or
Rtmb (after being converted to IOs/s).
o Rtmb
The Rtmb variable defines the maximum number of MBs per second avail-
able to real-time applications for the stripe group using the QoS API.
Internally the bandwidth is converted to IOs/s based on the size of a
well-formed I/Os, i.e. the size of a stripe width. If both Rtios and
Rtmb are set to 0 (the default value), QoS is disabled. If both are
defined, the smaller value (RtmbReserve is converted to IOs/s inter-
nally) is used. This value should be obtained through real measurement
using I/O benchmark tools. Note: since the system uses IOs/s internally
to throttle I/Os, it is recommended to specify Rtmb only if all I/Os
are well formed. Otherwise, the conversion between MB/s and IOs/s using
well-formed IOs could lead to unexpected results.
o RtmbReserve
The RtmbReserve variable defines the minimum number of MBs per second
reserved for non-realtime applications when realtime operations have
been enabled using the QoS API. This prevents non-realtime clients from
IO starvation. Internally this parameter is converted to IOs/s based on
the size of a well-formed IO. If both RtiosReserve and RtmbReserve are
set to 0 (the default value), the actual bandwidth reserved is 1MB/s
(converting to IOs/s), at least 1 IO/s is reserved. If both parameters
are defined, the smaller value (RtmbReserve is converted to IOs/s
internally) is used. This value should not be greater than the value
of Rtmb.
o RtTokenTimeout
The RtTokenTimeout variable defines the number of seconds for the FSM
server to wait for clients to respond to a QoS token callback before
timeout. If this parameter is not set or it is set to 0, the default
value is 1.5 (seconds). This value may need to be changed for a SAN
that has a mixture of client machine types (Linux, Windows, IRIX, etc.)
that all have different TCP/IP characteristics. Also, large numbers of
clients (greater than 32) may also require increasing the value of this
parameter.
EXAMPLE CONFIGURATION FILE
The following is an example of a fairly complex Xsan volume that sup-
ports multiple broadcast video/audio file formats, seven storage pools
and eighteen disk drives.This volume is set up to support both 525 and
625 real-time broadcast formats.
#
# Xsan Volume Configuration File Example
#
#
# Names can be of [A-Z][a-Z][0-9] hyphen (-) and a under-bar (_)
#
# Other things, like user defined strings and pathnames must be enclosed
# by double quotes (").
#
# The comment character (#) may start anywhere and persists to the end
# of line.
#
# ****************************************************************************
# A global section for defining file system-wide parameters.
#
# For Explanations of Values in this file see the following:
#
# UNIX Users: man snfs_config
#
# Windows Users: Start > Programs >
# StorNext File System > Help >
# Configuration File Format
#
# ****************************************************************************
ABMFreeLimit No
AllocationStrategy Round
# BufferCacheSize 64M # Default is 32MB
DataMigration No # SNMS Managed File Systems Only
# DataMigrationThreadPoolSize 128 # Default is 128 (Managed only)
Debug 0x0
FileLocks No
FsBlockSize 16K
GlobalSuperUser Yes # Set to Yes for SNMS Managed File Systems
InodeCacheSize 16K # 800-1000 bytes each, default 32K
InodeExpandMin 32K
InodeExpandInc 128K
InodeExpandMax 8M
JournalSize 16M
MaxConnections 32
# ReservedSpace Yes # NO: Slows small I/Os. Causes fragmentation.
MaxLogs 4
MaxLogSize 16M
OpHangLimitSecs 300 # Default is 180 secs
Quotas No
QuotaHistoryDays 7
ThreadPoolSize 32 # Default is 16, 512 KB memory per thread
UnixDirectoryCreationModeOnWindows 0755
UnixFileCreationModeOnWindows 0644
UnixIdFabricationOnWindows No
UnixNobodyGidOnWindows 60001
UnixNobodyUidOnWindows 60001
WindowsSecurity Yes
# ****************************************************************************
# A disktype section for defining disk hardware parameters.
# ****************************************************************************
[DiskType MetaDrive] ##1+1 Raid 1 Mirrored Pair##
Sectors 99999999 ## Sectors Per Disk From Command "cvlabel -l" ##
SectorSize 512
[DiskType JournalDrive] ##1+1 Raid 1 Mirrored Pair##
Sectors 99999999 ## Sectors Per Disk From Command "cvlabel -l" ##
SectorSize 512
[DiskType VideoDrive] ##8+1 Raid 5 LUN for Video##
Sectors 99999999 ## Sectors Per Disk From Command "cvlabel -l" ##
SectorSize 512
[DiskType AudioDrive] ##4+1 Raid 3 LUN for Audio##
Sectors 99999999 ## Sectors Per Disk From Command "cvlabel -l" ##
SectorSize 512
[DiskType DataDrive] ##4+1 Raid 5 LUN for Regular Data##
Sectors 99999999 ## Sectors Per Disk From Command "cvlabel -l" ##
SectorSize 512
# ****************************************************************************
# A disk section for defining disks in the hardware configuration.
# ****************************************************************************
[Disk CvfsDisk0]
Status UP
Type MetaDrive
[Disk CvfsDisk1]
Status UP
Type JournalDrive
[Disk CvfsDisk2]
Status UP
Type VideoDrive
[Disk CvfsDisk3]
Status UP
Type VideoDrive
[Disk CvfsDisk4]
Status UP
Type VideoDrive
[Disk CvfsDisk5]
Status UP
Type VideoDrive
[Disk CvfsDisk6]
Status UP
Type VideoDrive
[Disk CvfsDisk7]
Status UP
Type VideoDrive
[Disk CvfsDisk8]
Status UP
Type VideoDrive
[Disk CvfsDisk9]
Status UP
Type VideoDrive
[Disk CvfsDisk10]
Status UP
Type AudioDrive
[Disk CvfsDisk11]
Status UP
Type AudioDrive
[Disk CvfsDisk12]
Status UP
Type AudioDrive
[Disk CvfsDisk13]
Status UP
Type AudioDrive
[Disk CvfsDisk14]
Status UP
Type DataDrive
[Disk CvfsDisk15]
Status UP
Type DataDrive
[Disk CvfsDisk16]
Status UP
Type DataDrive
[Disk CvfsDisk17]
Status UP
Type DataDrive
# ****************************************************************************
# A stripe section for defining stripe groups.
# ****************************************************************************
[StripeGroup MetaFiles]
Status UP
MetaData Yes
Journal No
Exclusive Yes
Read Enabled
Write Enabled
StripeBreadth 256K
MultiPathMethod Rotate
Node CvfsDisk0 0
[StripeGroup JournFiles]
Status UP
Journal Yes
MetaData No
Exclusive Yes
Read Enabled
Write Enabled
StripeBreadth 256K
MultiPathMethod Rotate
Node CvfsDisk1 0
[StripeGroup NTSCFiles]
Status UP
Exclusive Yes ##Exclusive StripeGroup for Video Files Only##
Affinity NTSC ##8 character limit##
Read Enabled
Write Enabled
StripeBreadth 688k ## NTSC frame size
MultiPathMethod Rotate
Node CvfsDisk2 0
Node CvfsDisk3 1
Node CvfsDisk4 2
Node CvfsDisk5 3
[StripeGroup PALFiles]
Status UP
Exclusive Yes ##Exclusive StripeGroup for Video Files Only##
Affinity PAL ##8 character limit##
Read Enabled
Write Enabled
StripeBreadth 816k ## PAL frame size
Node CvfsDisk6 4
Node CvfsDisk7 5
Node CvfsDisk8 6
Node CvfsDisk9 7
## CCIR-601 525 Audio is read/written in 65536 byte blocks
[StripeGroup AudioFiles1]
Status UP
Exclusive Yes ##Exclusive StripeGroup for Audio File Only##
Affinity NTSCAud ##8 character limit##
Read Enabled
Write Enabled
StripeBreadth 64k
MultiPathMethod Rotate
Node CvfsDisk10 0
Node CvfsDisk11 1
## CCIR-601 625 Audio is read/written in 61440 byte blocks
## We put 4 blocks per stripe so that it's divisible by 16k fs block size
[StripeGroup AudioFiles2]
Status UP
Exclusive Yes ##Exclusive StripeGroup for Audio File Only##
Affinity PALAud ##8 character limit##
Read Enabled
Write Enabled
StripeBreadth 240k
Node CvfsDisk12 2
Node CvfsDisk13 3
[StripeGroup RegularFiles]
Status UP
Exclusive No ##Non-Exclusive StripeGroup for all Files##
Read Enabled
Write Enabled
StripeBreadth 256K
MultiPathMethod Rotate
Node CvfsDisk14 0
Node CvfsDisk15 1
Node CvfsDisk16 2
Node CvfsDisk17 3
#
# End
#
FILES
/Library/Preferences/Xsan/*.cfg
/Library/Logs/Xsan/data/<fsname>/config_history/*.cfg.<TIMESTAMP>
SEE ALSO
snfs_config(5), snfs.cfgx(5)
Xsan File System December 2011 snfs.cfg(5)
Mac OS X 10.9 - Generated Wed Oct 16 19:12:03 CDT 2013
