1

我有一个典型的场景,可以并行写入请求,每个文件大小为几百 GB。

我的测试系统 Lustre 文件系统有 4 个 OST(每个 3TB)和 1 个 MDS。

我实际观察到的是,在禁用条带化的情况下,Lustre 会将所有文件写入单个 OST,除非它已满。

是否可以将 Lustre 配置为当出现并行或重叠的写入请求时,MDS 会自动选择当前不忙的目标?

我很好奇为什么 Lustre 默认不这样做,或者可能是因为我错过了什么?

4

2 回答 2

2

如果您的文件系统上通常有大文件(例如 > 32MB),您应该适当地设置文件系统的默认条带计数。您可以基于每个目录、每个文件系统(取决于您的权限和使用情况)或创建单个文件时指定默认条带化。

用于lfs setstripe -c N /path/to/directory将默认条带计数设置为Non directory,这将仅影响该目录中的所有文件。如果您只有有限数量的 OST(在您的情况下为 4 个),或者您的所有文件都很大(在您的情况下在 GB 范围内),那么您可以使用-c -1,这意味着“对所有 OST 进行条带化”,而不是显式条数。

使用lfs setstripe -c N /mnt/lustre(或任何文件系统的挂载点)为整个文件系统中的新文件设置默认条带计数(除非目录级默认布局另有指定,或在文件创建时明确指定)。

使用 Lustre 2.10 及更高版本,您可以使用复合文件布局,以便随着文件变大而增加条带数,例如:

lfs setstripe -E64M -c 1 -E4G -c 4 -E-1 -S 4M -c -1

这意味着对于64MB文件的第一个仅使用 1 个条带,对于64MB-4GB文件的一部分使用 4 个条4GB带,并且在所有 OST 上使用 4MB 的条带大小和条带(在您的情况下也是 4 个,但在某些文件系统上可能是数百个 OST)。

于 2018-04-05T19:33:31.380 回答
1

是的,如果您启用了条带化,那么 Lustre 将在您想要的任意数量的 OST 上将写入分配到单个文件(取决于您设置的条带数量)。由于您禁用了条带化,因此文件的所有 IO 将被限制为单个 OST。

如果我误解了,而您看到的是发送到同一 OST 的所有文件的所有 IO,那么您可能无意中将“索引”选项设置为 -1 以外的值。此选项将覆盖默认设置,这将允许 MDS 在所有 OST 之间平衡文件创建。

于 2013-07-01T05:40:09.597 回答