Whamcloud - gitweb
LUDOC-529 manual: updated max_rpcs_in_flight values
[doc/manual.git] / UnderstandingLustre.xml
index 238677f..e8c2137 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version='1.0' encoding='utf-8'?>
 <chapter xmlns="http://docbook.org/ns/docbook"
-xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US"
-xml:id="understandinglustre">
+ xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US"
+ xml:id="understandinglustre">
   <title xml:id="understandinglustre.title">Understanding Lustre
   Architecture</title>
   <para>This chapter describes the Lustre architecture and features of the
@@ -36,7 +36,7 @@ xml:id="understandinglustre">
     <para>The Lustre storage architecture is used for many different kinds of
     clusters. It is best known for powering many of the largest
     high-performance computing (HPC) clusters worldwide, with tens of thousands
-    of client systems, petabytes (PB) of storage and hundreds of gigabytes per
+    of client systems, petabytes (PiB) of storage and hundreds of gigabytes per
     second (GB/sec) of I/O throughput. Many HPC sites use a Lustre file system
     as a site-wide global file system, serving dozens of clusters.</para>
     <para>The ability of a Lustre file system to scale capacity and performance
@@ -67,7 +67,7 @@ xml:id="understandinglustre">
       <para>Lustre file systems run on a variety of vendor's kernels. For more
       details, see the Lustre Test Matrix
       <xref xmlns:xlink="http://www.w3.org/1999/xlink"
-      linkend="dbdoclet.50438261_99193" />.</para>
+       linkend="preparing_installation" />.</para>
       <para>A Lustre installation can be scaled up or down with respect to the
       number of client nodes, disk storage and bandwidth. Scalability and
       performance are dependent on available disk and network bandwidth and the
@@ -133,18 +133,17 @@ xml:id="understandinglustre">
                 <para>
                   <emphasis>Aggregate:</emphasis>
                 </para>
-                <para>10 TB/sec I/O</para>
+                <para>50 TB/sec I/O, 50M IOPS</para>
               </entry>
               <entry>
                 <para>
                   <emphasis>Single client:</emphasis>
                 </para>
-                <para>4.5 GB/sec I/O (FDR IB, OPA1),
-               1000 metadata ops/sec</para>
+                <para>15 GB/sec I/O (HDR IB), 50000 IOPS</para>
                 <para>
                   <emphasis>Aggregate:</emphasis>
                 </para>
-                <para>2.5 TB/sec I/O </para>
+                <para>10 TB/sec I/O, 10M IOPS</para>
               </entry>
             </row>
             <row>
@@ -161,26 +160,26 @@ xml:id="understandinglustre">
                 <para>
                   <emphasis>Single OST:</emphasis>
                 </para>
-                <para>300M objects, 128TB per OST (ldiskfs)</para>
-                <para>500M objects, 256TB per OST (ZFS)</para>
+                <para>500M objects, 1024TiB per OST</para>
                 <para>
                   <emphasis>OSS count:</emphasis>
                 </para>
-                <para>1000 OSSs, with up to 4000 OSTs</para>
+                <para>1000 OSSs, 4000 OSTs</para>
               </entry>
               <entry>
                 <para>
                   <emphasis>Single OSS:</emphasis>
                 </para>
-                <para>32x 8TB OSTs per OSS (ldiskfs),</para>
-                <para>8x 32TB OSTs per OSS (ldiskfs)</para>
-                <para>1x 72TB OST per OSS (ZFS)</para>
+                <para>4 OSTs per OSS</para>
+                <para>
+                  <emphasis>Single OST:</emphasis>
+                </para>
+                <para>1024TiB OSTs</para>
                 <para>
                   <emphasis>OSS count:</emphasis>
                 </para>
-                <para>450 OSSs with 1000 4TB OSTs</para>
-                <para>192 OSSs with 1344 8TB OSTs</para>
-                <para>768 OSSs with 768 72TB OSTs</para>
+                <para>450 OSSs with 900 750TiB HDD OSTs + 450 25TiB NVMe OSTs</para>
+                <para>1024 OSSs with 1024 72TiB OSTs</para>
               </entry>
             </row>
             <row>
@@ -193,21 +192,21 @@ xml:id="understandinglustre">
                 <para>
                   <emphasis>Single OSS:</emphasis>
                 </para>
-                <para>15 GB/sec</para>
+                <para>15 GB/sec, 1.5M IOPS</para>
                 <para>
                   <emphasis>Aggregate:</emphasis>
                 </para>
-                <para>10 TB/sec</para>
+                <para>50 TB/sec, 50M IOPS</para>
               </entry>
               <entry>
                 <para>
                   <emphasis>Single OSS:</emphasis>
                 </para>
-                <para>10 GB/sec</para>
+                <para>10 GB/sec, 1.5M IOPS</para>
                 <para>
                   <emphasis>Aggregate:</emphasis>
                 </para>
-                <para>2.5 TB/sec</para>
+                <para>20 TB/sec, 20M IOPS</para>
               </entry>
             </row>
             <row>
@@ -224,24 +223,23 @@ xml:id="understandinglustre">
                 <para>
                   <emphasis>Single MDT:</emphasis>
                 </para>
-                <para>4 billion files, 8TB per MDT (ldiskfs)</para>
-               <para>64 billion files, 64TB per MDT (ZFS)</para>
+                <para>4 billion files, 16TiB per MDT (ldiskfs)</para>
+               <para>64 billion files, 64TiB per MDT (ZFS)</para>
                 <para>
                   <emphasis>MDS count:</emphasis>
                 </para>
-                <para>1 primary + 1 standby</para>
-                <para condition="l24">256 MDSs, with up to 256 MDTs</para>
+                <para>256 MDSs, up to 256 MDTs</para>
               </entry>
               <entry>
                 <para>
                   <emphasis>Single MDS:</emphasis>
                 </para>
-                <para>3 billion files</para>
+                <para>4 billion files</para>
                 <para>
                   <emphasis>MDS count:</emphasis>
                 </para>
-                <para>7 MDS with 7 2TB MDTs in production</para>
-                <para>256 MDS with 256 64GB MDTs in testing</para>
+                <para>40 MDS with 40 4TiB MDTs in production</para>
+                <para>256 MDS with 256 64GiB MDTs in testing</para>
               </entry>
             </row>
             <row>
@@ -251,12 +249,12 @@ xml:id="understandinglustre">
                 </para>
               </entry>
               <entry>
-                <para>50000/s create operations,</para>
-                <para>200000/s metadata stat operations</para>
+                <para>1M/s create operations</para>
+                <para>2M/s stat operations</para>
               </entry>
               <entry>
-                <para>15000/s create operations,</para>
-                <para>50000/s metadata stat operations</para>
+                <para>100k/s create operations,</para>
+                <para>200k/s metadata stat operations</para>
               </entry>
             </row>
             <row>
@@ -269,22 +267,22 @@ xml:id="understandinglustre">
                 <para>
                   <emphasis>Single File:</emphasis>
                 </para>
-                <para>32 PB max file size (ldiskfs)</para>
+                <para>32 PiB max file size (ldiskfs)</para>
                <para>2^63 bytes (ZFS)</para>
                 <para>
                   <emphasis>Aggregate:</emphasis>
                 </para>
-                <para>512 PB space, 1 trillion files</para>
+                <para>512 PiB space, 1 trillion files</para>
               </entry>
               <entry>
                 <para>
                   <emphasis>Single File:</emphasis>
                 </para>
-                <para>multi-TB max file size</para>
+                <para>multi-TiB max file size</para>
                 <para>
                   <emphasis>Aggregate:</emphasis>
                 </para>
-                <para>55 PB space, 8 billion files</para>
+                <para>700 PiB space, 25 billion files</para>
               </entry>
             </row>
           </tbody>
@@ -304,11 +302,10 @@ xml:id="understandinglustre">
           additional functionality needed by the Lustre file system.</para>
         </listitem>
         <listitem>
-          <para condition="l24">With the Lustre software release 2.4 and later,
-          it is also possible to use ZFS as the backing filesystem for Lustre
-          for the MDT, OST, and MGS storage. This allows Lustre to leverage the
-          scalability and data integrity features of ZFS for individual storage
-          targets.</para>
+          <para>It is also possible to use ZFS as the backing filesystem for
+         Lustre for the MDT, OST, and MGS storage. This allows Lustre to
+         leverage the scalability and data integrity features of ZFS for
+         individual storage targets.</para>
         </listitem>
         <listitem>
           <para>
@@ -335,9 +332,8 @@ xml:id="understandinglustre">
           <para>
           <emphasis role="bold">High-availability:</emphasis>The Lustre file
           system supports active/active failover using shared storage
-          partitions for OSS targets (OSTs). Lustre software release 2.3 and
-          earlier releases offer active/passive failover using a shared storage
-          partition for the MDS target (MDT). The Lustre file system can work
+          partitions for OSS targets (OSTs), and for MDS targets (MDTs).
+          The Lustre file system can work
           with a variety of high availability (HA) managers to allow automated
           failover and has no single point of failure (NSPF). This allows
           application transparent recovery. Multiple mount protection (MMP)
@@ -345,13 +341,6 @@ xml:id="understandinglustre">
           systems that would otherwise cause file system corruption.</para>
         </listitem>
         <listitem>
-          <para condition="l24">With Lustre software release 2.4 or later
-          servers and clients it is possible to configure active/active
-          failover of multiple MDTs. This allows scaling the metadata
-          performance of Lustre filesystems with the addition of MDT storage
-          devices and MDS nodes.</para>
-        </listitem>
-        <listitem>
           <para>
           <emphasis role="bold">Security:</emphasis>By default TCP connections
           are only allowed from privileged ports. UNIX group membership is
@@ -423,12 +412,12 @@ xml:id="understandinglustre">
         <listitem>
           <para>
           <emphasis role="bold">NFS and CIFS export:</emphasis>Lustre files can
-          be re-exported using NFS (via Linux knfsd) or CIFS (via Samba)
-          enabling them to be shared with non-Linux clients, such as Microsoft
-          <superscript>*</superscript>Windows
-          <superscript>*</superscript>and Apple
+          be re-exported using NFS (via Linux knfsd or Ganesha) or CIFS (via
+         Samba), enabling them to be shared with non-Linux clients such as
+         Microsoft<superscript>*</superscript>Windows,
+          <superscript>*</superscript>Apple
           <superscript>*</superscript>Mac OS X
-          <superscript>*</superscript>.</para>
+          <superscript>*</superscript>, and others.</para>
         </listitem>
         <listitem>
           <para>
@@ -508,30 +497,30 @@ xml:id="understandinglustre">
         </listitem>
         <listitem>
           <para>
-          <emphasis role="bold">Metadata Targets (MDT</emphasis>) - For Lustre
-          software release 2.3 and earlier, each file system has one MDT. The
+          <emphasis role="bold">Metadata Targets (MDT</emphasis>) - Each
+          filesystem has at least one MDT, which holds the root directory. The
           MDT stores metadata (such as filenames, directories, permissions and
           file layout) on storage attached to an MDS. Each file system has one
           MDT. An MDT on a shared storage target can be available to multiple
           MDSs, although only one can access it at a time. If an active MDS
-          fails, a standby MDS can serve the MDT and make it available to
+          fails, a second MDS node can serve the MDT and make it available to
           clients. This is referred to as MDS failover.</para>
-          <para condition="l24">Since Lustre software release 2.4, multiple
-          MDTs are supported in the Distributed Namespace Environment (DNE).
+          <para>Multiple MDTs are supported with the Distributed Namespace
+          Environment (<xref linkend="DNE"/>).
           In addition to the primary MDT that holds the filesystem root, it
           is possible to add additional MDS nodes, each with their own MDTs,
           to hold sub-directory trees of the filesystem.</para>
           <para condition="l28">Since Lustre software release 2.8, DNE also
           allows the filesystem to distribute files of a single directory over
           multiple MDT nodes. A directory which is distributed across multiple
-          MDTs is known as a <emphasis>striped directory</emphasis>.</para>
+          MDTs is known as a <emphasis><xref linkend="stripeddirectory"/></emphasis>.</para>
         </listitem>
         <listitem>
           <para>
           <emphasis role="bold">Object Storage Servers (OSS)</emphasis>: The
           OSS provides file I/O service and network request handling for one or
           more local OSTs. Typically, an OSS serves between two and eight OSTs,
-          up to 16 TB each. A typical configuration is an MDT on a dedicated
+          up to 16 TiB each. A typical configuration is an MDT on a dedicated
           node, two or more OSTs on each OSS node, and a client on each of a
           large number of compute nodes.</para>
         </listitem>
@@ -626,7 +615,7 @@ xml:id="understandinglustre">
                 </para>
               </entry>
               <entry>
-                <para>1-128 TB per OST, 1-8 OSTs per OSS</para>
+                <para>1-128 TiB per OST, 1-8 OSTs per OSS</para>
               </entry>
               <entry>
                 <para>Good bus bandwidth. Recommended that storage be balanced
@@ -705,54 +694,29 @@ xml:id="understandinglustre">
       <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
+    <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 change enabled future support for multiple MDTs (introduced in
-    Lustre software release 2.4) and ZFS (introduced in Lustre software release
-    2.4).</para>
-    <para>Also introduced in release 2.0 is an ldiskfs feature named
-    <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 backward compatible with the
-      release 1.8 ldiskfs disk format. Therefore, when an upgrade from
-      release 1.8 to release 2.x is performed, the FID-in-dirent feature is
-      not automatically enabled. For upgrades from release 1.8 to 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 file system consistency checking tool
-    released with Lustre software release 2.4 provides functionality that
-    enables FID-in-dirent for existing files. It includes the following
-    functionality:
+    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>Generates IGIF mode FIDs for existing files from a 1.8 version
-        file system files.</para>
+        <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 FID-in-dirent for each file and regenerates the
-        FID-in-dirent if it is invalid or missing.</para>
-      </listitem>
-      <listitem>
-        <para>Verifies the linkEA entry for each and regenerates the linkEA
-        if it is invalid or missing. The
-        <emphasis role="italic">linkEA</emphasis> consists of the file name and
-        parent FID. It is stored as an extended attribute in the file
-        itself. Thus, the linkEA can be used to reconstruct the full path name
-       of a file.</para>
+        <para>Verifies the linkEA entry for each inode and regenerates it if
+        invalid or missing. The <emphasis role="italic">linkEA</emphasis>
+        stores 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
@@ -767,7 +731,7 @@ xml:id="understandinglustre">
     <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>
+    <xref linkend="lustre_striping" />.</para>
     <figure xml:id="Fig1.3_LayoutEAonMDT">
       <title>Layout EA on MDT pointing to file data on OSTs</title>
       <mediaobject>
@@ -826,7 +790,7 @@ xml:id="understandinglustre">
         available space of all the OSTs.</para>
       </listitem>
     </itemizedlist>
-    <section xml:id="dbdoclet.50438250_89922">
+    <section xml:id="lustre_striping">
       <title>
       <indexterm>
         <primary>Lustre</primary>
@@ -845,7 +809,7 @@ xml:id="understandinglustre">
       ability to stripe is also useful when a single OST does not have enough
       free space to hold an entire file. For more information about benefits
       and drawbacks of file striping, see
-      <xref linkend="dbdoclet.50438209_48033" />.</para>
+      <xref linkend="file_striping.considerations" />.</para>
       <para>Striping allows segments or 'chunks' of data in a file to be stored
       on different OSTs, as shown in
       <xref linkend="understandinglustre.fig.filestripe" />. In the Lustre file
@@ -865,7 +829,7 @@ xml:id="understandinglustre">
       for
       <literal>stripe_size</literal> is 1MB. The user may change these values on
       a per directory or per file basis. For more details, see
-      <xref linkend="dbdoclet.50438209_78664" />.</para>
+      <xref linkend="file_striping.lfs_setstripe" />.</para>
       <para>
       <xref linkend="understandinglustre.fig.filestripe" />, the
       <literal>stripe_size</literal> for File C is larger than the
@@ -892,14 +856,15 @@ xml:id="understandinglustre">
       </figure>
       <para>The maximum file size is not limited by the size of a single
       target. In a Lustre file system, files can be striped across multiple
-      objects (up to 2000), and each object can be up to 16 TB in size with
-      ldiskfs, or up to 256PB with ZFS. This leads to a maximum file size of
-      31.25 PB for ldiskfs or 8EB with ZFS. Note that a Lustre file system can
-      support files up to 2^63 bytes (8EB), limited only by the space available
+      objects (up to 2000), and each object can be up to 16 TiB in size with
+      ldiskfs, or up to 256PiB with ZFS. This leads to a maximum file size of
+      31.25 PiB for ldiskfs or 8EiB with ZFS. Note that a Lustre file system can
+      support files up to 2^63 bytes (8EiB), limited only by the space available
       on the OSTs.</para>
       <note>
-        <para>Versions of the Lustre software prior to Release 2.2 limited the
-        maximum stripe count for a single file to 160 OSTs.</para>
+        <para>ldiskfs filesystems without the <literal>ea_inode</literal>
+        feature limit the maximum stripe count for a single file to 160 OSTs.
+        </para>
       </note>
       <para>Although a single file can only be striped over 2000 objects,
       Lustre file systems can have thousands of OSTs. The I/O bandwidth to
@@ -909,6 +874,46 @@ xml:id="understandinglustre">
       to utilize the full file system bandwidth.</para>
       <para>For more information about striping, see
       <xref linkend="managingstripingfreespace" />.</para>
+      <para>
+        <emphasis role="bold">Extended Attributes(xattrs)</emphasis></para>
+         <para>Lustre uses lov_user_md_v1/lov_user_md_v3 data-structures to
+         maintain its file striping information under xattrs. Extended
+         attributes are created when files and directory are created. Lustre
+         uses <literal>trusted</literal> extended attributes to store its
+         parameters which are root-only accessible. The parameters are:</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <emphasis role="bold"><literal>trusted.lov</literal>:</emphasis>
+            Holds layout for a regular file, or default file layout stored
+            on a directory (also accessible as <literal>lustre.lov</literal>
+            for non-root users).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <emphasis role="bold"><literal>trusted.lma</literal>:</emphasis>
+            Holds FID and extra state flags for current file</para>
+        </listitem>
+        <listitem>
+          <para>
+            <emphasis role="bold"><literal>trusted.lmv</literal>:</emphasis>
+            Holds layout for a striped directory (DNE 2), not present otherwise
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <emphasis role="bold"><literal>trusted.link</literal>:</emphasis>
+            Holds parent directory FID + filename for each link to a file
+            (for <literal>lfs fid2path</literal>)</para>
+        </listitem>
+      </itemizedlist>
+      <para>xattr which are stored and present in the file could be verify
+        using:</para>
+      <para><screen># getfattr -d -m - /mnt/testfs/file></screen></para>
     </section>
   </section>
 </chapter>
+<!--
+  vim:expandtab:shiftwidth=2:tabstop=8:textwidth=80:
+  -->