blob: b62939e4593fab66b8ab53609183fbb552b9c74c [file] [log] [blame]
<?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>
DMAPI
</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>
<listitem>
<para>
DMAPI
</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 filesystems: one terabyte, 2<superscript>40</superscript>, on 32 bit systems; unlimited on 64 bit systems
</para>
</listitem>
<listitem>
<para>
Large files: one terabyte, 2<superscript>40</superscript>, on 32 bit systems; 2<superscript>63</superscript> on 64 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>
Parallel access to inodes
</para>
</listitem>
<listitem>
<para>
Balanced tree (btree) algorithms for searching large lists
</para>
</listitem>
<listitem>
<para>
Asynchronous metadata transaction logging for quick recover
</para>
</listitem>
<listitem>
<para>
Delayed allocation to improve data contiguity
</para>
</listitem>
<listitem>
<para>
ACL's --Access Control Lists (see <command>chacl(1)</command>, <command>acl(4)</command>, <command>acl_get_file(3c)</command>, <command>acl_set_file(3c)</command>
</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>
<para>
SLES9 and beyond
</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>
<ulink url="http://xfs.org/index.php/XFS_Companies" />
<ulink url="http://xfs.org/index.php/Linux_Distributions_shipping_XFS" />
</para>
<itemizedlist>
<listitem>
<para>
List is not always current, but it gives an indication of the spread of users
</para>
</listitem>
</itemizedlist>
<para>
XFS is included in a number of distributions
</para>
<itemizedlist>
<listitem>
<para>
Support agreement with Novell for SLES distributions
</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>
<para>
SuSE major releases and service packs
</para>
<itemizedlist>
<listitem>
<para>
As close to top of tree as possible at the time of the code drop
</para>
</listitem>
<listitem>
<para>
Differences between tot, SuSE and mainline kernels highlighted in course notes
</para>
</listitem>
</itemizedlist>
</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>XFS Distributions - dmapi</title>
<para>
DMAPI has not been accepted into mainline
</para>
<itemizedlist>
<listitem>
<para>
Unlikely to be accepted without a complete rewrite
</para>
</listitem>
</itemizedlist>
<para>
XFS tot distribution on oss.sgi.com includes DMAPI
</para>
<itemizedlist>
<listitem>
<para>
Changes we make to DMAPI will immediately appear in the CVS tree
</para>
</listitem>
</itemizedlist>
</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>
<section>
<title>Ongoing Development</title>
<para>XFS Architecture Team</para>
<itemizedlist>
<listitem><para>Submits and reviews designs for adding new features, or enhancing existing features, targeting one or more of
<itemizedlist>
<listitem><para>Interoperability</para></listitem>
<listitem><para>Performance</para></listitem>
<listitem><para>Scalability</para></listitem>
<listitem><para>Reliability</para></listitem>
</itemizedlist>
</para></listitem>
</itemizedlist>
<para>XFS Triage Roster</para>
<itemizedlist>
<listitem><para>Engineer rostered for one week to triage incoming bug reports from
<itemizedlist>
<listitem><para>SGI</para></listitem>
<listitem><para>Novell</para></listitem>
<listitem><para>Community</para></listitem>
</itemizedlist>
</para></listitem>
</itemizedlist>
<para>Remaining time devoted to developing features and fixing bugs</para>
</section>
</chapter>