Details
-
New Feature
-
Resolution: Fixed
-
Major
-
Lustre 2.11.0
-
9223372036854775807
Description
In DNE system, MDTs are likely to become imbalanced over time, and user may also add/remove MDTs. So there is a need to move load from one MDT to anothe, this is what dir restripe can do.
Directory restripe should meet below requirements:
- After directory restripe, the load (disk usage, incoming requests) should be shared fairly between MDTs.
- In the process of directory restriping, the directory should be accessed without problem.
- Move as little data as necessary to make restripe quick and to minimize system impact.
- Keep object fid unchanged to support NFS on Lustre.
Functional spec:
- A new hash type will be introduced, directory with this hash type should move as little data as necessary in each restripe. To achieve this, directory with this hash type doesn't hash(name) mod stripe_count, but a fixed number like maximum MDT count, so that each restripe won't cause file hash change. And unlike old striped directory, each stripe contains a range of numbers of between [0, maximum_MDT_count], e.g, [0, 99], and each restripe will split this stripe into two, and each with half the range, i.e, [0, 49] and [50, 99], that means only half of the files needs to be moved.
- Directory restripe will be done automatically, when MDT finds a directory or stripe is growing fast, it will put this directory or stripe into a global list, and a dedicated thread will scan this list and split directories or stripes in this list. Stripe merge should be similar, when a stripe size is shrinking below a limit, it will be merged to its previous stripe.
- Unlike directory migration, restripe doesn't move file inode, but only dirent. So after restripe, half of the files under this stripe will become remote objects.
Attachments
Issue Links
- has to be done after
-
LU-10329 DNE3: REMOTE_PARENT_DIR scalability
- Open
- is related to
-
LU-7749 DNE3: migrated orphan survive till next reboot
- Open
-
LU-15692 performance regressions for files in stripe directory
- Resolved
-
LU-15720 imbalanced file creation in 'crush' striped directory
- Resolved
-
LU-13424 unable to migrate mirrored files
- Resolved
-
LU-13406 set_param: param_path 'lod/*/mdt_hash': No such file or dir
- Resolved
-
LU-8698 DNE3: check unknown hash type properly in lmv
- Resolved
-
LU-13522 mdt.mdt_mds_mds_conns is not counted upon MDT stop and start
- Resolved
-
LU-14459 DNE3: directory auto split during create
- Open
-
LU-13691 Allow for lfs migrate between MDTs to include DOM
- Open
-
LUDOC-462 Add feature documentation for directory restripe
- Resolved
-
LU-13417 DNE3: mkdir() automatically create remote directory on MDS which has more space
- Resolved
-
LU-12867 DNE3: new DNE2 hash function to handle rsync temporary filename
- Resolved
- is related to
-
LU-17307 osd_dirent_count() keeps multiple threads busy
- Resolved
-
LU-13481 sanity test_33h: MDT index mismatch 5 times
- Resolved
-
LU-7607 Preserve inode number after MDT migration
- Open
-
LU-4684 DNE3: allow migrating DNE striped directory
- Resolved