Actions
Feature #55214
openmds: add asok/tell command to clear stale omap entries
Status:
New
Priority:
Normal
Assignee:
Category:
Administration/Usability
Target version:
% Done:
0%
Source:
Tags:
Backport:
quincy, pacific
Reviewed:
Affected Versions:
Component(FS):
MDS
Labels (FS):
Pull request ID:
Description
Its rather easy to end up with an on-disk inode object that stays un-fragmented, with omap count exceeding `mds_bal_split_size' (default: 10000 entries). This can be achieved as follows:
- mkdir d0
- touch d0/file{0..11000}
- mkdir d0/.snap/snap_a
- rm -f d0/file*
#rmdir d0/.snap/snap_a
Since the MDS does not fragment directory snapshots, the omap count for the directory inode is 11000. Doing this over and over again increases the omap count to a point if it exceeds `osd_deep_scrub_large_omap_object_key_threshold' (default: 200000), the cluster experiences "large omap" warnings with state HEALTH_WARN. Removing the snapshot does not purge stale omap entries and those stay there until the MDS loads the dirfrag.
Provide an asok/tell command to force the MDS to clear stale omap entries.
To rectify this state,
Actions