我有一个典型的场景,其中可以并行写入请求,并且每个文件的大小为几百GB。
我的测试系统是一个Lustre文件系统,它有4个OST(每个3TB)和1个MDS。
我实际观察到的是,在禁用条带化的情况下,除非OST已满,否则Lustre会将所有文件写入单个OST。
是否可以配置Lustre,使得当并行或重叠写请求出现时,MDS会自动选择当前不忙的目标?
我很好奇为什么Lustre没有默认这样做,或者可能是因为我错过了什么?
发布于 2018-04-06 03:33:31
如果您的文件系统上通常有大文件(例如,> 32MB),则应该为文件系统适当地设置默认条带计数。您可以在每个目录、每个文件系统的基础上指定默认条带化(取决于您的权限和使用情况),或者指定创建单个文件的时间。
使用lfs setstripe -c N /path/to/directory将directory上的默认条带数设置为N,这将仅影响该目录中的所有新文件。如果您只有有限数量的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之后,使用4MB的条带大小,并在所有OST上使用条带(在您的示例中也是4,但在某些文件系统上,它可能是数百个OST)。
发布于 2013-07-01 13:40:10
是的,如果您启用了条带化,那么Lustre将根据您想要的条带数(取决于您设置的条带数)将写操作分布到任意多个OST中。由于您已禁用条带化,因此文件的所有IO都将限制到单个OST。
如果我误解了,您看到的是发送到同一OST的所有文件的所有IO,那么您可能无意中将"index“选项设置为-1以外的值。此选项将覆盖默认设置,默认设置将允许MDS在所有OST之间平衡文件创建。
https://stackoverflow.com/questions/17325698
复制相似问题