Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
xfs(5)			      File Formats Manual			xfs(5)

NAME
       xfs  - layout, mount options, and supported file	attributes for the XFS
       filesystem

DESCRIPTION
       An XFS filesystem can reside on a regular disk partition	or on a	 logi-
       cal volume.  An XFS filesystem has up to	three parts: a data section, a
       log section, and	a realtime section.  Using the default mkfs.xfs(8) op-
       tions,  the  realtime  section is absent, and the log area is contained
       within the data section.	 The log section can be	either	separate  from
       the  data  section or contained within it.  The filesystem sections are
       divided into a certain number of	blocks,	whose  size  is	 specified  at
       mkfs.xfs(8) time	with the -b option.

       The data	section	contains all the filesystem metadata (inodes, directo-
       ries, indirect blocks) as well as the user file data for	ordinary (non-
       realtime)  files	 and  the  log area if the log is internal to the data
       section.	 The data section is  divided  into  a	number	of  allocation
       groups.	 The  number  and  size	of the allocation groups are chosen by
       mkfs.xfs(8) so that there is normally a	small  number  of  equal-sized
       groups.	 The number of allocation groups controls the amount of	paral-
       lelism available	in file	and block allocation.  It should be  increased
       from  the default if there is sufficient	memory and a lot of allocation
       activity.  The number of	allocation groups should not be	set very high,
       since  this  can	 cause	large  amounts	of  CPU	time to	be used	by the
       filesystem, especially when the filesystem is nearly full.  More	 allo-
       cation  groups  are  added (of the original size) when xfs_growfs(8) is
       run.

       The log section (or area, if it is internal to  the  data  section)  is
       used  to	 store	changes	to filesystem metadata while the filesystem is
       running until those changes are made to the data	section.  It is	 writ-
       ten  sequentially  during  normal operation and read only during	mount.
       When mounting a filesystem after	a crash, the log is read  to  complete
       operations that were in progress	at the time of the crash.

       The  realtime  section  is  used	 to  store the data of realtime	files.
       These files had an attribute bit	set through xfsctl(3) after file  cre-
       ation,  before  any data	was written to the file.  The realtime section
       is divided into a  number  of  extents  of  fixed  size	(specified  at
       mkfs.xfs(8)  time).   Each  file	 in the	realtime section has an	extent
       size that is a multiple of the realtime section extent size.

       Each allocation group contains several data structures.	The first sec-
       tor  contains  the  superblock.	For allocation groups after the	first,
       the superblock is just a	copy and is  not  updated  after  mkfs.xfs(8).
       The  next three sectors contain information for block and inode alloca-
       tion within the allocation group.  Also contained within	 each  alloca-
       tion  group are data structures to locate free blocks and inodes; these
       are located through the header structures.

       Each XFS	filesystem is  labeled	with  a	 Universal  Unique  Identifier
       (UUID).	 The  UUID  is	stored in every	allocation group header	and is
       used to help distinguish	one XFS	filesystem from	another, therefore you
       should  avoid  using  dd(1) or other block-by-block copying programs to
       copy XFS	filesystems.  If two XFS filesystems on	the same machine  have
       the  same  UUID,	 xfsdump(8) may	become confused	when doing incremental
       and resumed dumps.  xfsdump(8) and xfsrestore(8)	 are  recommended  for
       making copies of	XFS filesystems.

OPERATIONS
       Some  functionality specific to the XFS filesystem is accessible	to ap-
       plications through the xfsctl(3)	and by-handle (see  open_by_handle(3))
       interfaces.

MOUNT OPTIONS
       The  following  XFS-specific mount options may be used when mounting an
       XFS filesystem. Other generic options may be used as well; refer	to the
       mount(8)	manual page for	more details.

       allocsize=size
	      Sets  the	buffered I/O end-of-file preallocation size when doing
	      delayed allocation writeout. Valid values	for  this  option  are
	      page size	(typically 4KiB) through to 1GiB, inclusive, in	power-
	      of-2 increments.

	      The default behavior is for  dynamic  end-of-file	 preallocation
	      size,  which uses	a set of heuristics to optimise	the prealloca-
	      tion size	based on the current allocation	 patterns  within  the
	      file and the access patterns to the file.	Specifying a fixed al-
	      locsize value turns off the dynamic behavior.

       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  se-
	      lected (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  behavior  is determined by the on-disk feature bit
	      indicating that attr2 behavior is	active.	If either mount	option
	      it  set,	then that becomes the new default used by the filesys-
	      tem.

	      CRC enabled filesystems always use the attr2 format, and so will
	      reject the noattr2 mount option if it is set.

       barrier|nobarrier
	      Enables/disables	the  use  of  block  layer  write barriers for
	      writes into the journal and for data integrity operations.  This
	      allows  for drive	level write caching to be enabled, for devices
	      that support write barriers.

	      Barriers are enabled by default.

       discard|nodiscard
	      Enable/disable the issuing of commands to	let the	 block	device
	      reclaim  space  freed by the filesystem.	This is	useful for SSD
	      devices, thinly provisioned LUNs and virtual machine images, but
	      may have a performance impact.

	      Note: It is currently recommended	that you use the fstrim	appli-
	      cation to	discard	unused blocks rather than  the	discard	 mount
	      option  because  the  performance	impact of this option is quite
	      severe.  For this	reason,	nodiscard is the default.

       grpid|bsdgroups|nogrpid|sysvgroups
	      These options define what	group ID a newly  created  file	 gets.
	      When  grpid  is  set,  it	takes the group	ID of the directory in
	      which it is created; otherwise it	takes the fsgid	of the current
	      process,	unless	the directory has the setgid bit set, in which
	      case it takes the	gid from the parent directory, and  also  gets
	      the setgid bit set if it is a directory itself.

       filestreams
	      Make  the	 data  allocator  use  the filestreams allocation mode
	      across the entire	filesystem rather  than	 just  on  directories
	      configured to use	it.

       ikeep|noikeep
	      When  ikeep  is specified, XFS does not delete empty inode clus-
	      ters and keeps them around on disk.  When	noikeep	is  specified,
	      empty  inode  clusters  are  returned  to	 the  free space pool.
	      noikeep is the default.

       inode32|inode64
	      When inode32 is specified, it indicates that  XFS	 limits	 inode
	      creation	to  locations  which  will not result in inode numbers
	      with more	than 32	bits of	significance.

	      When inode64 is specified, it indicates that XFS is  allowed  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 sys-
	      tems 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	speci-
	      fied.

	      For kernel v3.7 and later, inode64 is the	default.

       largeio|nolargeio
	      If "nolargeio" is	specified, the optimal I/O reported in st_blk-
	      size  by	stat(2)	will be	as small as possible to	allow user ap-
	      plications to avoid inefficient read/modify/write	I/O.  This  is
	      typically	the page size of the machine, as this is the granular-
	      ity of the page cache.

	      If "largeio" specified, a	filesystem that	 was  created  with  a
	      "swidth"	specified will return the "swidth" value (in bytes) in
	      st_blksize. If the filesystem does not have a "swidth" specified
	      but does specify an "allocsize" then "allocsize" (in bytes) will
	      be returned instead. Otherwise the behavior is the  same	as  if
	      "nolargeio" was specified.  nolargeio is the default.

       logbufs=value
	      Set  the	number	of in-memory log buffers.  Valid numbers range
	      from 2-8 inclusive.

	      The default value	is 8 buffers.

	      If the memory cost of 8 log buffers is too high  on  small  sys-
	      tems,  then  it  may  be	reduced	at some	cost to	performance on
	      metadata intensive workloads. The	logbsize option	below controls
	      the size of each buffer and so is	also relevant to this case.

       logbsize=value
	      Set  the	size  of  each	in-memory log buffer.  The size	may be
	      specified	in bytes, or in	kibibytes (KiB)	 with  a  "k"  suffix.
	      Valid  sizes  for	 version  1  and  version  2  logs  are	 16384
	      (value=16k) and 32768 (value=32k).  Valid	sizes  for  version  2
	      logs  also  include  65536  (value=64k), 131072 (value=128k) and
	      262144 (value=256k). The logbsize	must be	an integer multiple of
	      the log stripe unit configured at	mkfs time.

	      The default value	for version 1 logs is 32768, while the default
	      value for	version	2 logs is MAX(32768, log_sunit).

       logdev=deviceandrtdev=device
	      Use an external log (metadata journal) and/or real-time  device.
	      An  XFS  filesystem has up to three parts: a data	section, a log
	      section, and a real-time section.	 The real-time section is  op-
	      tional,  and  the	log section can	be separate from the data sec-
	      tion or contained	within it.

       noalign
	      Data allocations will not	be aligned at stripe unit  boundaries.
	      This  is only relevant to	filesystems created with non-zero data
	      alignment	parameters (sunit, swidth) by mkfs.

       norecovery
	      The filesystem will be mounted without running log recovery.  If
	      the filesystem was not cleanly unmounted,	it is likely to	be in-
	      consistent when mounted in "norecovery" mode.  Some files	or di-
	      rectories	 may  not  be accessible because of this.  Filesystems
	      mounted "norecovery" must	be mounted read-only or	the mount will
	      fail.

       nouuid Don't  check for double mounted file systems using the file sys-
	      tem uuid.	 This is useful	to mount LVM snapshot volumes, and of-
	      ten 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
	      User  disk quota accounting enabled, and limits (optionally) en-
	      forced.  Refer to	xfs_quota(8) for further details.

       gquota/grpquota/gqnoenforce
	      Group disk quota accounting enabled and limits (optionally)  en-
	      forced.  Refer to	xfs_quota(8) for further details.

       pquota/prjquota/pqnoenforce
	      Project  disk  quota  accounting enabled and limits (optionally)
	      enforced.	 Refer to xfs_quota(8) for further details.

       sunit=value and swidth=value
	      Used to specify the stripe unit and width	for a RAID device or a
	      stripe  volume.	"value"	 must  be  specified in	512-byte block
	      units. These options are only relevant to	filesystems that  were
	      created with non-zero data alignment parameters.

	      The  sunit  and  swidth  parameters specified must be compatible
	      with the existing	filesystem alignment characteristics.  In gen-
	      eral,  that means	the only valid changes to sunit	are increasing
	      it by a power-of-2 multiple. Valid swidth	values are any integer
	      multiple of a valid sunit	value.

	      Typically	the only time these mount options are necessary	if af-
	      ter an underlying	RAID device has	had  it's  geometry  modified,
	      such as adding a new disk	to a RAID5 lun and reshaping it.

       swalloc
	      Data  allocations	 will be rounded up to stripe width boundaries
	      when the current end of file is being extended and the file 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 presen-
	      tation during or after a failover	event.

FILE ATTRIBUTES
       The XFS filesystem supports setting the following  file	attributes  on
       Linux systems using the chattr(1) utility:

       a - append only

       A - no atime updates

       d - no dump

       i - immutable

       S - synchronous updates

       For  descriptions  of  these  attribute	flags,	please	refer  to  the
       chattr(1) man page.

SEE ALSO
       chattr(1), xfsctl(3), mount(8), mkfs.xfs(8), xfs_info(8), xfs_admin(8),
       xfsdump(8), xfsrestore(8).

									xfs(5)

NAME | DESCRIPTION | OPERATIONS | MOUNT OPTIONS | FILE ATTRIBUTES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=xfs&sektion=5&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help