| <?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 & A |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| </formalpara> |
| <formalpara> |
| <title>Practise</title> |
| <para> |
| <itemizedlist> |
| <listitem> |
| <para> |
| XFS On Disk Format |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| Q & A |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| </formalpara> |
| </section> |
| <section> |
| <title>Day 3</title> |
| <formalpara> |
| <title>Theory & 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 <= 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> |