Details
-
New Feature
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
9223372036854775807
Description
Choose lustre pool to place file’s objects by user-defined policies
This feature fits to heterogeneous lustre environment where lustre ost targets consist of different devices(such as disk,ssd)and are maybe with different configures (Such as osd-zfs, osd-ldiskfs, RAID1, RAID6). This feature can help users to make more fine-grained data placement.
When using this feature, lustre ost targets are firstly divided into many pools. Every pool is composed of homogeneous targets. That means, targets in one pools are with the same type of devices and with the same configure. Then, users define file create rules to put files into different pools. When the rules are enabled, file create operations will search the users-defined rules, find the corresponding pool, and then allocate data objects on the choosed pool.
We use lustre source compiling to illustrate this feature.
When building the lustre source code, files are composed of the following types
1. Source code with filename extension .c or .h and configure files to present build rules, which is usually without any filename extension.
2. temporary files that with filename extension .o
3. kernel modules and other final files.
For the above 3 types, 1, 3 need more reliability than I/O performance,while 2 need more IO performance than reliability.
Firstly, build two pools, one ( eg. named pool_src )use disk array with RAID1 configuration to provide high reliability. The other (eg. named pool_temp) use SSD with RAID0 to provide high IO performance.
Secondly, define the following pool policy:
lfs setstripe -p pool_src lustre-source lctl set_param lod.*.policies=“add post=\“o\” pool_temp” # file with post extortion .o will put in pool_temp
When the policies are applied, filename with extortion .o will be put in pool_temp, while the others will be put in pool_src.
**
Instead of specifying just the OST pool for files matching the policy, it would be much more useful to base this on patch https://review.whamcloud.com/28972 "LU-9982 lustre: Clients striping from mapped FID in nodemap" and allow specifying the FID that is the source for the file layout. That allows specifying a pool, but more importantly allows specifying the rest of the layout (stripe count, PFL components with multiple different pools, FLR mirroring, etc.). Getting patch 28972 landed would itself be useful in any case for nodemap/fileset/isolation purposes. Once that patch lands, I think the changes to 33126 would be relatively straight forward, adding a fid=[SEQ:OID:VER] option to the matching rules.