blob: b610f6018cfb79e218356d54b0770641556d6506 [file]
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
]>
<chapter id="xfs-background">
<title>XFS Background</title>
<section>
<title>Course Objectives</title>
<para>By the end of this course you will be able to:
<itemizedlist>
<listitem><para>Create and mount XFS filesystems</para></listitem>
<listitem><para>Understand how XFS
<itemizedlist>
<listitem><para>Creates and manages metadata</para></listitem>
<listitem><para>Allocates extents to files and manages free space</para></listitem>
<listitem><para>Provides extended attributes</para></listitem>
<listitem><para>Tracks filesystem quotas</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>Backup and restore an XFS filesystem</para></listitem>
<listitem><para>Recover and repair XFS filesystems</para></listitem>
<listitem><para>Interpret on-disk and in-core XFS structures</para></listitem>
</itemizedlist>
</para>
<section>
<title>Day 1</title>
<formalpara>
<title>Theory</title>
<para>
<itemizedlist>
<listitem><para>Background and History</para></listitem>
<listitem><para>XFS Build</para></listitem>
<listitem><para>XFS Overview</para></listitem>
<listitem><para>Creating Filesystems</para></listitem>
<listitem><para>Mounting Filesystems</para></listitem>
<listitem>
<para>
Allocators
</para>
</listitem>
<listitem>
<para>
Quotas
</para>
</listitem>
<listitem>
<para>
Extended Attributes
</para>
</listitem>
</itemizedlist>
</para>
</formalpara>
<formalpara>
<title>Practise</title>
<para>
<itemizedlist>
<listitem>
<para>
XFS Build
</para>
</listitem>
<listitem>
<para>
Creating and Mounting XFS
</para>
</listitem>
<listitem>
<para>
Allocators
</para>
</listitem>
<listitem>
<para>
Quotas
</para>
</listitem>
<listitem>
<para>
Extended Attributes
</para>
</listitem>
</itemizedlist>
</para>
</formalpara>
</section>
<section>
<title>Day 2</title>
<formalpara>
<title>Theory</title>
<para>
<itemizedlist>
<listitem>
<para>
XFS Architecture and Internals
</para>
</listitem>
<listitem>
<para>
Q &amp; A
</para>
</listitem>
</itemizedlist>
</para>
</formalpara>
<formalpara>
<title>Practise</title>
<para>
<itemizedlist>
<listitem>
<para>
XFS On Disk Format
</para>
</listitem>
<listitem>
<para>
Q &amp; A
</para>
</listitem>
</itemizedlist>
</para>
</formalpara>
</section>
<section>
<title>Day 3</title>
<formalpara>
<title>Theory &amp; Practise</title>
<para>
<itemizedlist>
<listitem>
<para>
Repairing XFS Filesystems
</para>
</listitem>
<listitem>
<para>
XFS Triage
</para>
</listitem>
<listitem>
<para>
Monitoring
</para>
</listitem>
</itemizedlist>
</para>
</formalpara>
</section>
<section>
<title>Day 4</title>
<formalpara>
<title>Theory</title>
<para>
<itemizedlist>
<listitem>
<para>
Dump and Restore
</para>
</listitem>
<listitem>
<para>
XFS and Volume Managers
</para>
</listitem>
</itemizedlist>
</para>
</formalpara>
<formalpara>
<title>Practise</title>
<para>
<itemizedlist>
<listitem>
<para>
Dump and Restore
</para>
</listitem>
</itemizedlist>
</para>
</formalpara>
</section>
</section>
<section>
<title>A Brief History of XFS</title>
<para>
Original design was circulated within SGI in October 1993:
</para>
<para>
xFS: the extension of EFS
</para>
<itemizedlist>
<listitem>
<para>
"x" for to-be-determined (but the name stuck)
</para>
</listitem>
<listitem>
<para>
Large files: up to 9 ExaBytes (16TB on 32-bit systems).
</para>
</listitem>
<listitem>
<para>
Large filesystems: up to 18 ExaBytes (16TB on 32-bit systems).
</para>
</listitem>
<listitem>
<para>
Large number of inodes
</para>
</listitem>
<listitem>
<para>
Large directories
</para>
</listitem>
<listitem>
<para>
Large I/O
</para>
</listitem>
<listitem>
<para>
Parallelized access via allocation groups
</para>
</listitem>
<listitem>
<para>
Balanced tree (btree) algorithms for searching large lists
</para>
</listitem>
<listitem>
<para>
Asynchronous metadata transaction logging for quick recovery
</para>
</listitem>
<listitem>
<para>
Delayed allocation to improve data contiguity and performance
</para>
</listitem>
<listitem>
<para>
Extended attributes (such as Access Control Lists)
</para>
</listitem>
<listitem>
<para>
Extent based allocation (including unwritten extents)
</para>
</listitem>
<listitem>
<para>
Variable allocation block sizes
</para>
</listitem>
<listitem>
<para>
Direct I/O
</para>
</listitem>
</itemizedlist>
<para>
First released in IRIX 5.3
</para>
</section>
<section>
<title>XFS on Linux</title>
<para>
Port to Linux began in 1999 against 2.3.40
</para>
<para>
Accepted into mainline
</para>
<itemizedlist>
<listitem>
<para>
2.5 kernel (2002)
</para>
<para>
2.4 kernel (2004)
</para>
</listitem>
</itemizedlist>
<para>
SGI still has engineering resources for XFS
</para>
<para>
A significant number of contributors in the community
</para>
<itemizedlist>
<listitem>
<para>
Many (but not all) are ex-SGI employees
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Who is using XFS</title>
<para>
XFS is included in a number of distributions:
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://xfs.org/index.php/Linux_Distributions_shipping_XFS" />
</para>
</listitem>
<listitem>
<para>
List is not always current, but it gives an indication of the spread of users
</para>
</listitem>
</itemizedlist>
<para>
Some of the companies using XFS:
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://xfs.org/index.php/XFS_Companies" />
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>XFS Distributions – kernelspace</title>
<para>
Top of tree (tot) XFS on oss.sgi.com
</para>
<itemizedlist>
<listitem>
<para>
Main SGI release tree is on oss.sgi.com
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git" />
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
Development tree on kernel.org
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://git.kernel.org/?p=fs/xfs/xfs.git" />
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
<para>
Changes routinely pushed to 2.6 mainline kernel updates
</para>
</section>
<section>
<title>XFS Distributions - userspace</title>
<para>
A large amount of common code between kernel and user-space
</para>
<itemizedlist>
<listitem>
<para>
This is how xfs_repair understands the on-disk format
</para>
</listitem>
</itemizedlist>
<para>
User-space commands in a different code base
</para>
<para>
Main upstream development is in SGI git tree on oss.sgi.com
</para>
<itemizedlist>
<listitem>
<para>
Main utilities: <ulink url="http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfsprogs.git" />
</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<para>
Dump/Restore: <ulink url="http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfsdump.git" />
</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<para>
QA Suite: <ulink url="http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git" />
</para>
</listitem>
</itemizedlist>
<para>
kernel.org development repos routinely pulled to sgi:
</para>
<itemizedlist>
<listitem>
<para>
Main utilities: <ulink url="http://git.kernel.org/?p=fs/xfs/xfsprogs-dev.git" />
</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<para>
Dump/Restore: <ulink url="http://git.kernel.org/?p=fs/xfs/xfsdump-dev.git" />
</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<para>
QA Suite: <ulink url="http://git.kernel.org/?p=fs/xfs/xfstests-dev.git" />
</para>
</listitem>
</itemizedlist>
<para>
Packaged as
</para>
<itemizedlist>
<listitem>
<para>
xfsprogs
</para>
</listitem>
<listitem>
<para>
xfsprogs-devel
</para>
</listitem>
<listitem>
<para>
xfsdump
</para>
</listitem>
</itemizedlist>
<note><para>The xfstests test suite is not yet packaged</para></note>
</section>
<section>
<title>IRIX vs Linux</title>
<para>Linux:</para>
<itemizedlist>
<listitem><para>Does not support V1 directories</para></listitem>
<listitem><para>Filesystem block size &lt;= PAGE_SIZE only</para></listitem>
</itemizedlist>
<para>IRIX:</para>
<itemizedlist>
<listitem><para>Does not support >512 byte sector sizes
<itemizedlist>
<listitem><para>MD RAID5</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>Does not support write barriers</para></listitem>
<listitem><para>Does not support “noikeep” functionality</para></listitem>
</itemizedlist>
</section>
</chapter>