Commit 3e5b7d8b authored by Dave Chinner's avatar Dave Chinner Committed by Ben Myers

xfs: update mount options documentation

Because it's horribly out of date.

And mark various deprecated options as deprecated and give them a
removal date.
Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarMark Tinguely <tinguely@sgi.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent 862a6293
...@@ -18,6 +18,8 @@ Mount Options ...@@ -18,6 +18,8 @@ Mount Options
============= =============
When mounting an XFS filesystem, the following options are accepted. When mounting an XFS filesystem, the following options are accepted.
For boolean mount options, the names with the (*) suffix is the
default behaviour.
allocsize=size allocsize=size
Sets the buffered I/O end-of-file preallocation size when Sets the buffered I/O end-of-file preallocation size when
...@@ -25,97 +27,128 @@ When mounting an XFS filesystem, the following options are accepted. ...@@ -25,97 +27,128 @@ When mounting an XFS filesystem, the following options are accepted.
Valid values for this option are page size (typically 4KiB) Valid values for this option are page size (typically 4KiB)
through to 1GiB, inclusive, in power-of-2 increments. through to 1GiB, inclusive, in power-of-2 increments.
attr2/noattr2 The default behaviour is for dynamic end-of-file
The options enable/disable (default is disabled for backward preallocation size, which uses a set of heuristics to
compatibility on-disk) an "opportunistic" improvement to be optimise the preallocation size based on the current
made in the way inline extended attributes are stored on-disk. allocation patterns within the file and the access patterns
When the new form is used for the first time (by setting or to the file. Specifying a fixed allocsize value turns off
removing extended attributes) the on-disk superblock feature the dynamic behaviour.
bit field will be updated to reflect this format being in use.
attr2
noattr2
The options enable/disable an "opportunistic" improvement to
be made in the way inline extended attributes are stored
on-disk. When the new form is used for the first time when
attr2 is selected (either when setting or removing extended
attributes) the on-disk superblock feature bit field will be
updated to reflect this format being in use.
The default behaviour is determined by the on-disk feature
bit indicating that attr2 behaviour is active. If either
mount option it set, then that becomes the new default used
by the filesystem.
CRC enabled filesystems always use the attr2 format, and so CRC enabled filesystems always use the attr2 format, and so
will reject the noattr2 mount option if it is set. will reject the noattr2 mount option if it is set.
barrier barrier (*)
Enables the use of block layer write barriers for writes into nobarrier
the journal and unwritten extent conversion. This allows for Enables/disables the use of block layer write barriers for
drive level write caching to be enabled, for devices that writes into the journal and for data integrity operations.
support write barriers. This allows for drive level write caching to be enabled, for
devices that support write barriers.
discard discard
Issue command to let the block device reclaim space freed by the nodiscard (*)
filesystem. This is useful for SSD devices, thinly provisioned Enable/disable the issuing of commands to let the block
LUNs and virtual machine images, but may have a performance device reclaim space freed by the filesystem. This is
impact. useful for SSD devices, thinly provisioned LUNs and virtual
machine images, but may have a performance impact.
dmapi
Enable the DMAPI (Data Management API) event callouts. Note: It is currently recommended that you use the fstrim
Use with the "mtpt" option. application to discard unused blocks rather than the discard
mount option because the performance impact of this option
grpid/bsdgroups and nogrpid/sysvgroups is quite severe.
These options define what group ID a newly created file gets.
When grpid is set, it takes the group ID of the directory in grpid/bsdgroups
which it is created; otherwise (the default) it takes the fsgid nogrpid/sysvgroups (*)
of the current process, unless the directory has the setgid bit These options define what group ID a newly created file
set, in which case it takes the gid from the parent directory, gets. When grpid is set, it takes the group ID of the
and also gets the setgid bit set if it is a directory itself. directory in which it is created; otherwise it takes the
fsgid of the current process, unless the directory has the
ihashsize=value setgid bit set, in which case it takes the gid from the
In memory inode hashes have been removed, so this option has parent directory, and also gets the setgid bit set if it is
no function as of August 2007. Option is deprecated. a directory itself.
ikeep/noikeep filestreams
When ikeep is specified, XFS does not delete empty inode clusters Make the data allocator use the filestreams allocation mode
and keeps them around on disk. ikeep is the traditional XFS across the entire filesystem rather than just on directories
behaviour. When noikeep is specified, empty inode clusters configured to use it.
are returned to the free space pool. The default is noikeep for
non-DMAPI mounts, while ikeep is the default when DMAPI is in use. ikeep
noikeep (*)
inode64 When ikeep is specified, XFS does not delete empty inode
Indicates that XFS is allowed to create inodes at any location clusters and keeps them around on disk. When noikeep is
in the filesystem, including those which will result in inode specified, empty inode clusters are returned to the free
numbers occupying more than 32 bits of significance. This is space pool.
the default allocation option. Applications which do not handle
inode numbers bigger than 32 bits, should use inode32 option.
inode32 inode32
Indicates that XFS is limited to create inodes at locations which inode64 (*)
will not result in inode numbers with more than 32 bits of When inode32 is specified, it indicates that XFS limits
significance. This is provided for backwards compatibility, since inode creation to locations which will not result in inode
64 bits inode numbers might cause problems for some applications numbers with more than 32 bits of significance.
that cannot handle large inode numbers.
When inode64 is specified, it indicates that XFS is allowed
largeio/nolargeio to create inodes at any location in the filesystem,
including those which will result in inode numbers occupying
more than 32 bits of significance.
inode32 is provided for backwards compatibility with older
systems and applications, since 64 bits inode numbers might
cause problems for some applications that cannot handle
large inode numbers. If applications are in use which do
not handle inode numbers bigger than 32 bits, the inode32
option should be specified.
largeio
nolargeio (*)
If "nolargeio" is specified, the optimal I/O reported in If "nolargeio" is specified, the optimal I/O reported in
st_blksize by stat(2) will be as small as possible to allow user st_blksize by stat(2) will be as small as possible to allow
applications to avoid inefficient read/modify/write I/O. user applications to avoid inefficient read/modify/write
If "largeio" specified, a filesystem that has a "swidth" specified I/O. This is typically the page size of the machine, as
will return the "swidth" value (in bytes) in st_blksize. If the this is the granularity of the page cache.
filesystem does not have a "swidth" specified but does specify
an "allocsize" then "allocsize" (in bytes) will be returned If "largeio" specified, a filesystem that was created with a
instead. "swidth" specified will return the "swidth" value (in bytes)
If neither of these two options are specified, then filesystem in st_blksize. If the filesystem does not have a "swidth"
will behave as if "nolargeio" was specified. specified but does specify an "allocsize" then "allocsize"
(in bytes) will be returned instead. Otherwise the behaviour
is the same as if "nolargeio" was specified.
logbufs=value logbufs=value
Set the number of in-memory log buffers. Valid numbers range Set the number of in-memory log buffers. Valid numbers
from 2-8 inclusive. range from 2-8 inclusive.
The default value is 8 buffers for filesystems with a
blocksize of 64KiB, 4 buffers for filesystems with a blocksize The default value is 8 buffers.
of 32KiB, 3 buffers for filesystems with a blocksize of 16KiB
and 2 buffers for all other configurations. Increasing the If the memory cost of 8 log buffers is too high on small
number of buffers may increase performance on some workloads systems, then it may be reduced at some cost to performance
at the cost of the memory used for the additional log buffers on metadata intensive workloads. The logbsize option below
and their associated control structures. controls the size of each buffer and so is also relevent to
this case.
logbsize=value logbsize=value
Set the size of each in-memory log buffer. Set the size of each in-memory log buffer. The size may be
Size may be specified in bytes, or in kilobytes with a "k" suffix. specified in bytes, or in kilobytes with a "k" suffix.
Valid sizes for version 1 and version 2 logs are 16384 (16k) and Valid sizes for version 1 and version 2 logs are 16384 (16k)
32768 (32k). Valid sizes for version 2 logs also include and 32768 (32k). Valid sizes for version 2 logs also
65536 (64k), 131072 (128k) and 262144 (256k). include 65536 (64k), 131072 (128k) and 262144 (256k). The
The default value for machines with more than 32MiB of memory logbsize must be an integer multiple of the log
is 32768, machines with less memory use 16384 by default. stripe unit configured at mkfs time.
The default value for for version 1 logs is 32768, while the
default value for version 2 logs is MAX(32768, log_sunit).
logdev=device and rtdev=device logdev=device and rtdev=device
Use an external log (metadata journal) and/or real-time device. Use an external log (metadata journal) and/or real-time device.
...@@ -124,16 +157,11 @@ When mounting an XFS filesystem, the following options are accepted. ...@@ -124,16 +157,11 @@ When mounting an XFS filesystem, the following options are accepted.
optional, and the log section can be separate from the data optional, and the log section can be separate from the data
section or contained within it. section or contained within it.
mtpt=mountpoint
Use with the "dmapi" option. The value specified here will be
included in the DMAPI mount event, and should be the path of
the actual mountpoint that is used.
noalign noalign
Data allocations will not be aligned at stripe unit boundaries. Data allocations will not be aligned at stripe unit
boundaries. This is only relevant to filesystems created
noatime with non-zero data alignment parameters (sunit, swidth) by
Access timestamps are not updated when a file is read. mkfs.
norecovery norecovery
The filesystem will be mounted without running log recovery. The filesystem will be mounted without running log recovery.
...@@ -144,8 +172,14 @@ When mounting an XFS filesystem, the following options are accepted. ...@@ -144,8 +172,14 @@ When mounting an XFS filesystem, the following options are accepted.
the mount will fail. the mount will fail.
nouuid nouuid
Don't check for double mounted file systems using the file system uuid. Don't check for double mounted file systems using the file
This is useful to mount LVM snapshot volumes. system uuid. This is useful to mount LVM snapshot volumes,
and often used in combination with "norecovery" for mounting
read-only snapshots.
noquota
Forcibly turns off all quota accounting and enforcement
within the filesystem.
uquota/usrquota/uqnoenforce/quota uquota/usrquota/uqnoenforce/quota
User disk quota accounting enabled, and limits (optionally) User disk quota accounting enabled, and limits (optionally)
...@@ -160,24 +194,64 @@ When mounting an XFS filesystem, the following options are accepted. ...@@ -160,24 +194,64 @@ When mounting an XFS filesystem, the following options are accepted.
enforced. Refer to xfs_quota(8) for further details. enforced. Refer to xfs_quota(8) for further details.
sunit=value and swidth=value sunit=value and swidth=value
Used to specify the stripe unit and width for a RAID device or Used to specify the stripe unit and width for a RAID device
a stripe volume. "value" must be specified in 512-byte block or a stripe volume. "value" must be specified in 512-byte
units. block units. These options are only relevant to filesystems
If this option is not specified and the filesystem was made on that were created with non-zero data alignment parameters.
a stripe volume or the stripe width or unit were specified for
the RAID device at mkfs time, then the mount system call will The sunit and swidth parameters specified must be compatible
restore the value from the superblock. For filesystems that with the existing filesystem alignment characteristics. In
are made directly on RAID devices, these options can be used general, that means the only valid changes to sunit are
to override the information in the superblock if the underlying increasing it by a power-of-2 multiple. Valid swidth values
disk layout changes after the filesystem has been created. are any integer multiple of a valid sunit value.
The "swidth" option is required if the "sunit" option has been
specified, and must be a multiple of the "sunit" value. Typically the only time these mount options are necessary if
after an underlying RAID device has had it's geometry
modified, such as adding a new disk to a RAID5 lun and
reshaping it.
swalloc swalloc
Data allocations will be rounded up to stripe width boundaries Data allocations will be rounded up to stripe width boundaries
when the current end of file is being extended and the file when the current end of file is being extended and the file
size is larger than the stripe width size. size is larger than the stripe width size.
wsync
When specified, all filesystem namespace operations are
executed synchronously. This ensures that when the namespace
operation (create, unlink, etc) completes, the change to the
namespace is on stable storage. This is useful in HA setups
where failover must not result in clients seeing
inconsistent namespace presentation during or after a
failover event.
Deprecated Mount Options
========================
delaylog/nodelaylog
Delayed logging is the only logging method that XFS supports
now, so these mount options are now ignored.
Due for removal in 3.12.
ihashsize=value
In memory inode hashes have been removed, so this option has
no function as of August 2007. Option is deprecated.
Due for removal in 3.12.
irixsgid
This behaviour is now controlled by a sysctl, so the mount
option is ignored.
Due for removal in 3.12.
osyncisdsync
osyncisosync
O_SYNC and O_DSYNC are fully supported, so there is no need
for these options any more.
Due for removal in 3.12.
sysctls sysctls
======= =======
...@@ -189,15 +263,20 @@ The following sysctls are available for the XFS filesystem: ...@@ -189,15 +263,20 @@ The following sysctls are available for the XFS filesystem:
in /proc/fs/xfs/stat. It then immediately resets to "0". in /proc/fs/xfs/stat. It then immediately resets to "0".
fs.xfs.xfssyncd_centisecs (Min: 100 Default: 3000 Max: 720000) fs.xfs.xfssyncd_centisecs (Min: 100 Default: 3000 Max: 720000)
The interval at which the xfssyncd thread flushes metadata The interval at which the filesystem flushes metadata
out to disk. This thread will flush log activity out, and out to disk and runs internal cache cleanup routines.
do some processing on unlinked inodes.
fs.xfs.xfsbufd_centisecs (Min: 50 Default: 100 Max: 3000) fs.xfs.filestream_centisecs (Min: 1 Default: 3000 Max: 360000)
The interval at which xfsbufd scans the dirty metadata buffers list. The interval at which the filesystem ages filestreams cache
references and returns timed-out AGs back to the free stream
pool.
fs.xfs.age_buffer_centisecs (Min: 100 Default: 1500 Max: 720000) fs.xfs.speculative_prealloc_lifetime
The age at which xfsbufd flushes dirty metadata buffers to disk. (Units: seconds Min: 1 Default: 300 Max: 86400)
The interval at which the background scanning for inodes
with unused speculative preallocation runs. The scan
removes unused preallocation from clean inodes and releases
the unused space back to the free pool.
fs.xfs.error_level (Min: 0 Default: 3 Max: 11) fs.xfs.error_level (Min: 0 Default: 3 Max: 11)
A volume knob for error reporting when internal errors occur. A volume knob for error reporting when internal errors occur.
...@@ -254,9 +333,31 @@ The following sysctls are available for the XFS filesystem: ...@@ -254,9 +333,31 @@ The following sysctls are available for the XFS filesystem:
by the xfs_io(8) chattr command on a directory to be by the xfs_io(8) chattr command on a directory to be
inherited by files in that directory. inherited by files in that directory.
fs.xfs.inherit_nodefrag (Min: 0 Default: 1 Max: 1)
Setting this to "1" will cause the "nodefrag" flag set
by the xfs_io(8) chattr command on a directory to be
inherited by files in that directory.
fs.xfs.rotorstep (Min: 1 Default: 1 Max: 256) fs.xfs.rotorstep (Min: 1 Default: 1 Max: 256)
In "inode32" allocation mode, this option determines how many In "inode32" allocation mode, this option determines how many
files the allocator attempts to allocate in the same allocation files the allocator attempts to allocate in the same allocation
group before moving to the next allocation group. The intent group before moving to the next allocation group. The intent
is to control the rate at which the allocator moves between is to control the rate at which the allocator moves between
allocation groups when allocating extents for new files. allocation groups when allocating extents for new files.
Deprecated Sysctls
==================
fs.xfs.xfsbufd_centisecs (Min: 50 Default: 100 Max: 3000)
Dirty metadata is now tracked by the log subsystem and
flushing is driven by log space and idling demands. The
xfsbufd no longer exists, so this syctl does nothing.
Due for removal in 3.14.
fs.xfs.age_buffer_centisecs (Min: 100 Default: 1500 Max: 720000)
Dirty metadata is now tracked by the log subsystem and
flushing is driven by log space and idling demands. The
xfsbufd no longer exists, so this syctl does nothing.
Due for removal in 3.14.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment