- <title><indexterm>
- <primary>Lustre</primary>
- <secondary>storage</secondary>
- </indexterm>
- <indexterm>
- <primary>Lustre</primary>
- <secondary>I/O</secondary>
- </indexterm> Lustre File System Storage and I/O</title>
- <para>In Lustre software release 2.0, Lustre file identifiers (FIDs) were introduced to replace
- UNIX inode numbers for identifying files or objects. A FID is a 128-bit identifier that
- contains a unique 64-bit sequence number, a 32-bit object ID (OID), and a 32-bit version
- number. The sequence number is unique across all Lustre targets in a file system (OSTs and
- MDTs). This change enabled future support for multiple MDTs (introduced in Lustre software
- release 2.3) and ZFS (introduced in Lustre software release 2.4).</para>
- <para>Also introduced in release 2.0 is a feature call <emphasis role="italic"
- >FID-in-dirent</emphasis> (also known as <emphasis role="italic">dirdata</emphasis>) in
- which the FID is stored as part of the name of the file in the parent directory. This feature
- significantly improves performance for <literal>ls</literal> command executions by reducing
- disk I/O. The FID-in-dirent is generated at the time the file is created.</para>
- <note>
- <para>The FID-in-dirent feature is not compatible with the Lustre software release 1.8 format.
- Therefore, when an upgrade from Lustre software release 1.8 to a Lustre software release 2.x
- is performed, the FID-in-dirent feature is not automatically enabled. For upgrades from
- Lustre software release 1.8 to Lustre software releases 2.0 through 2.3, FID-in-dirent can
- be enabled manually but only takes effect for new files. </para>
- <para>For more information about upgrading from Lustre software release 1.8 and enabling
- FID-in-dirent for existing files, see <xref xmlns:xlink="http://www.w3.org/1999/xlink"
- linkend="upgradinglustre"/>Chapter 16 “Upgrading a Lustre File System”.</para>
- </note>
- <para condition="l24">The LFSCK 1.5 file system administration tool released with Lustre
- software release 2.4 provides functionality that enables FID-in-dirent for existing files. It
- includes the following functionality:<itemizedlist>
- <listitem>
- <para>Generates IGIF mode FIDs for existing release 1.8 files.</para>
- </listitem>
- <listitem>
- <para>Verifies the FID-in-dirent for each file to determine when it doesn’t exist or is
- invalid and then regenerates the FID-in-dirent if needed.</para>
- </listitem>
- <listitem>
- <para>Verifies the linkEA entry for each file to determine when it is missing or invalid
- and then regenerates the linkEA if needed. The <emphasis role="italic">linkEA</emphasis>
- consists of the file name plus its parent FID and is stored as an extended attribute in
- the file itself. Thus, the linkEA can be used to parse out the full path name of a file
- from root.</para>
- </listitem>
- </itemizedlist></para>
- <para>Information about where file data is located on the OST(s) is stored as an extended
- attribute called layout EA in an MDT object identified by the FID for the file (see <xref
- xmlns:xlink="http://www.w3.org/1999/xlink" linkend="Fig1.3_LayoutEAonMDT"/>). If the file is
- a data file (not a directory or symbol link), the MDT object points to 1-to-N OST object(s) on
- the OST(s) that contain the file data. If the MDT file points to one object, all the file data
- is stored in that object. If the MDT file points to more than one object, the file data is
- <emphasis role="italic">striped</emphasis> across the objects using RAID 0, and each object
- is stored on a different OST. (For more information about how striping is implemented in a
- Lustre file system, see <xref linkend="dbdoclet.50438250_89922"/>.</para>
+ <title>
+ <indexterm>
+ <primary>Lustre</primary>
+ <secondary>storage</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>Lustre</primary>
+ <secondary>I/O</secondary>
+ </indexterm>Lustre File System Storage and I/O</title>
+ <para>Lustre File IDentifiers (FIDs) are used internally for identifying
+ files or objects, similar to inode numbers in local filesystems. A FID
+ is a 128-bit identifier, which contains a unique 64-bit sequence number
+ (SEQ), a 32-bit object ID (OID), and a 32-bit version number. The sequence
+ number is unique across all Lustre targets in a file system (OSTs and
+ MDTs). This allows multiple MDTs and OSTs to uniquely identify objects
+ without depending on identifiers in the underlying filesystem (e.g. inode
+ numbers) that are likely to be duplicated between targets. The FID SEQ
+ number also allows mapping a FID to a particular MDT or OST.</para>
+ <para>The LFSCK file system consistency checking tool provides
+ functionality that enables FID-in-dirent for existing files. It
+ includes the following functionality:
+ <itemizedlist>
+ <listitem>
+ <para>Verifies the FID stored with each directory entry and regenerates
+ it from the inode if it is invalid or missing.</para>
+ </listitem>
+ <listitem>
+ <para>Verifies the linkEA entry for each inode and regenerates it if
+ invalid or missing. The <emphasis role="italic">linkEA</emphasis>
+ stores of the file name and parent FID. It is stored as an extended
+ attribute in each inode. Thus, the linkEA can be used to
+ reconstruct the full path name of a file from only the FID.</para>
+ </listitem>
+ </itemizedlist></para>
+ <para>Information about where file data is located on the OST(s) is stored
+ as an extended attribute called layout EA in an MDT object identified by
+ the FID for the file (see
+ <xref xmlns:xlink="http://www.w3.org/1999/xlink"
+ linkend="Fig1.3_LayoutEAonMDT" />). If the file is a regular file (not a
+ directory or symbol link), the MDT object points to 1-to-N OST object(s) on
+ the OST(s) that contain the file data. If the MDT file points to one
+ object, all the file data is stored in that object. If the MDT file points
+ to more than one object, the file data is
+ <emphasis role="italic">striped</emphasis> across the objects using RAID 0,
+ and each object is stored on a different OST. (For more information about
+ how striping is implemented in a Lustre file system, see
+ <xref linkend="lustre_striping" />.</para>