lfs osts [path]
lfs pool_list <replaceable>filesystem</replaceable>[.<replaceable>pool</replaceable>]| <replaceable>pathname</replaceable>
lfs quota [-q] [-v] [-h] [-o <replaceable>obd_uuid</replaceable>|-I <replaceable>ost_idx</replaceable>|-i <replaceable>mdt_idx</replaceable>]
- [-u <replaceable>username|uid|-g</replaceable> <replaceable>group|gid</replaceable>] <replaceable>/mount_point</replaceable>
-lfs quota -t -u|-g <replaceable>/mount_point</replaceable>
+ [-u <replaceable>username|uid|-g</replaceable> <replaceable>group|gid</replaceable>|-p <replaceable>projid</replaceable>] <replaceable>/mount_point</replaceable>
+lfs quota -t -u|-g|-p <replaceable>/mount_point</replaceable>
lfs quotacheck [-ug] <replaceable>/mount_point</replaceable>
lfs quotachown [-i] <replaceable>/mount_point</replaceable>
lfs quotainv [-ug] [-f] <replaceable>/mount_point</replaceable>
lfs quotaon [-ugf] <replaceable>/mount_point</replaceable>
lfs quotaoff [-ug] <replaceable>/mount_point</replaceable>
-lfs setquota {-u|--user|-g|--group} <replaceable>uname|uid|gname|gid</replaceable>
+lfs setquota {-u|--user|-g|--group|-p|--project} <replaceable>uname|uid|gname|gid|projid</replaceable>
[--block-softlimit <replaceable>block_softlimit</replaceable>]
[--block-hardlimit <replaceable>block_hardlimit</replaceable>]
[--inode-softlimit <replaceable>inode_softlimit</replaceable>]
[--inode-hardlimit <replaceable>inode_hardlimit</replaceable>]
<replaceable>/mount_point</replaceable>
-lfs setquota -u|--user|-g|--group <replaceable>uname|uid|gname|gid</replaceable>
+lfs setquota -u|--user|-g|--group|-p|--project <replaceable>uname|uid|gname|gid|projid</replaceable>
[-b <replaceable>block_softlimit</replaceable>] [-B <replaceable>block_hardlimit</replaceable>]
[-i <replaceable>inode-softlimit</replaceable>] [-I <replaceable>inode_hardlimit</replaceable>]
<replaceable>/mount_point</replaceable>
-lfs setquota -t -u|-g [--block-grace <replaceable>block_grace</replaceable>]
+lfs setquota -t -u|-g|-p [--block-grace <replaceable>block_grace</replaceable>]
[--inode-grace <replaceable>inode_grace</replaceable>]
<replaceable>/mount_point</replaceable>
-lfs setquota -t -u|-g [-b <replaceable>block_grace</replaceable>] [-i <replaceable>inode_grace</replaceable>]
+lfs setquota -t -u|-g|-p [-b <replaceable>block_grace</replaceable>] [-i <replaceable>inode_grace</replaceable>]
<replaceable>/mount_point</replaceable>
lfs help
</screen>
<literal>quota [-q] [-v] [-o
<replaceable>obd_uuid</replaceable>|-i
<replaceable>mdt_idx</replaceable>|-I
- <replaceable>ost_idx</replaceable>] [-u|-g
- <replaceable>uname|uid|gname|gid]</replaceable>
+ <replaceable>ost_idx</replaceable>] [-u|-g|-p
+ <replaceable>uname|uid|gname|gid|projid]</replaceable>
<replaceable>/mount_point</replaceable></literal>
</para>
<para> </para>
<entry>
<para>Displays disk usage and limits, either for the full file
system or for objects on a specific OBD. A user or group name
- or an ID can be specified. If both user and group are omitted,
- quotas for the current UID/GID are shown. The
- <literal>-q</literal> option disables printing of additional
- descriptions (including column titles). It fills in blank
- spaces in the
+ or an usr, group and project ID can be specified. If all user,
+ group project ID are omitted, quotas for the current UID/GID
+ are shown. The <literal>-q</literal> option disables printing
+ of additional descriptions (including column titles). It fills
+ in blank spaces in the
<literal>grace</literal> column with zeros (when there is no
grace period set), to ensure that the number of columns is
consistent. The
<entry nameend="c2" namest="c1">
<para>
<literal>quota -t
- <replaceable>-u|-g</replaceable>
+ <replaceable>-u|-g|-p</replaceable>
<replaceable>/mount_point</replaceable></literal>
</para>
</entry>
<entry>
<para>Displays block and inode grace times for user (
<literal>-u</literal>) or group (
- <literal>-g</literal>) quotas.</para>
+ <literal>-g</literal>) or project (
+ <literal>-p</literal>) quotas.</para>
</entry>
</row>
<row>
<row>
<entry nameend="c2" namest="c1">
<para>
- <literal>setquota -u|-g
- <replaceable>
- uname|uid|gname|gid}</replaceable>[--block-softlimit
+ <literal>setquota {-u|-g|-p
+ <replaceable>uname|uid|gname|gid|projid}</replaceable>
+ [--block-softlimit
<replaceable>block_softlimit</replaceable>]
[--block-hardlimit
<replaceable>block_hardlimit</replaceable>]
</para>
</entry>
<entry>
- <para>Sets file system quotas for users or groups. Limits can
- be specified with
+ <para>Sets file system quotas for users, groups or one project.
+ Limits can be specified with
<literal>--{block|inode}-{softlimit|hardlimit}</literal> or
their short equivalents
<literal>-b</literal>,
<row>
<entry nameend="c2" namest="c1">
<para>
- <literal>setquota -t -u|-g [--block-grace
+ <literal>setquota -t -u|-g|-p [--block-grace
<replaceable>block_grace</replaceable>] [--inode-grace
<replaceable>inode_grace</replaceable>]
<replaceable>/mount_point</replaceable></literal>
<screen>
$ lfs quota -u bob /mnt/lustre
</screen>
+ <para>List quotas of project ID '1'.</para>
+ <screen>
+$ lfs quota -p 1 /mnt/lustre
+</screen>
<para>Show grace times for user quotas on
<literal>/mnt/lustre</literal>.</para>
<screen>
</para>
</section>
</section>
- <section xml:id="dbdoclet.50438206_42260">
+ <section xml:id="dbdoclet.lfs_migrate">
<title>
<indexterm>
<primary>lfs_migrate</primary>
<literal>lfs_migrate</literal>
</title>
<para>The
- <literal>lfs_migrate</literal> utility is a simple tool to migrate files
- between Lustre OSTs.</para>
+ <literal>lfs_migrate</literal> utility is a simple to migrate file
+ <emphasis>data</emphasis> between OSTs.</para>
<section remap="h5">
<title>Synopsis</title>
<screen>
-lfs_migrate [-c <replaceable>stripecount</replaceable>] [-h] [-l] [-n] [-q] [-R] [-s] [-y]
-[file|directory ...]
+lfs_migrate [<replaceable>lfs_setstripe_options</replaceable>]
+ [-h] [-n] [-q] [-R] [-s] [-y] [file|directory ...]
</screen>
</section>
<section remap="h5">
<title>Description</title>
<para>The
- <literal>lfs_migrate</literal> utility is a simple tool to assist
- migration of files between Lustre OSTs. The utility copies each specified
- file to a new file, verifies the file contents have not changed, and then
- renames the new file to the original filename. This allows balanced space
- usage between OSTs, moving files off OSTs that are starting to show
- hardware problems (though are still functional) or OSTs that will be
- discontinued.</para>
+ <literal>lfs_migrate</literal> utility is a tool to assist migration
+ of file data between Lustre OSTs. The utility copies each specified
+ file to a temporary file using supplied <literal>lfs setstripe</literal>
+ options, if any, optionally verifies the file contents have not changed,
+ and then swaps the layout (OST objects) from the temporary file and the
+ original file (for Lustre 2.5 and later), or renames the temporary file
+ to the original filename. This allows the user/administrator to balance
+ space usage between OSTs, or move files off OSTs that are starting to show
+ hardware problems (though are still functional) or will be removed.</para>
<warning>
<para>For versions of Lustre before 2.5,
- <literal>lfs_migrate</literal> is not closely integrated with the MDS,
- it cannot determine whether a file is currently open and/or in-use by
- other applications or nodes. This makes it UNSAFE for use on files that
- might be modified by other applications, since the migrated file is
- only a copy of the current file. This results in the old file becoming
- an open-unlinked file and any modifications to that file are
- lost.</para>
+ <literal>lfs_migrate</literal> was not integrated with the MDS at all.
+ That made it UNSAFE for use on files that were being modified by other
+ applications, since the file was migrated through a copy and rename of
+ the file. With Lustre 2.5 and later, the new file layout is swapped
+ with the existing file layout, which ensures that the user-visible
+ inode number is kept, and open file handles and locks on the file are
+ kept.</para>
</warning>
<para>Files to be migrated can be specified as command-line arguments. If
a directory is specified on the command-line then all files within the
directory are migrated. If no files are specified on the command-line,
then a list of files is read from the standard input, making
<literal>lfs_migrate</literal> suitable for use with
- <literal>lfs</literal> find to locate files on specific OSTs and/or
- matching other file attributes.</para>
- <para>The current file allocation policies on the MDS dictate where the
- new files are placed, taking into account whether specific OSTs have been
- disabled on the MDS via
- <literal>lctl</literal>(preventing new files from being allocated there),
- whether some OSTs are overly full (reducing the number of files placed on
- those OSTs), or if there is a specific default file striping for the
- target directory (potentially changing the stripe count, stripe size, OST
- pool, or OST index of a new file).</para>
+ <literal>lfs find</literal> to locate files on specific OSTs and/or
+ matching other file attributes, and other tools that generate a list
+ of files on standard output.</para>
+ <para>Unless otherwise specified through command-line options, the
+ file allocation policies on the MDS dictate where the new files
+ are placed, taking into account whether specific OSTs have been
+ disabled on the MDS via <literal>lctl</literal> (preventing new
+ files from being allocated there), whether some OSTs are overly full
+ (reducing the number of files placed on those OSTs), or if there is
+ a specific default file striping for the parent directory (potentially
+ changing the stripe count, stripe size, OST pool, or OST index of a
+ new file).</para>
<note>
<para>The
<literal>lfs_migrate</literal> utility can also be used in some cases to