string will no longer be able to set quotas or any layout fields. This
flag previously only restricted modification of the pool and namespace
fields in layouts.
-
+* CephFS directory fragmentation (large directory support) is enabled
+ by default on new filesystems. To enable it on existing filesystems
+ use "ceph fs set <fs_name> allow_dirfrags".
12.0.0
------
While directory fragmentation enables CephFS to handle very large
numbers of entries in a single directory, application programmers should
-remain cautious about creating very large directories, as they still
+remain conservative about creating very large directories, as they still
have a resource cost in situations such as a CephFS client listing
the directory, where all the fragments must be loaded at once.
An MDS will only consider doing splits and merges if the ``mds_bal_frag``
setting is true in the MDS's configuration file, and the allow_dirfrags
-setting is true in the filesystem map (set on the mons).
+setting is true in the filesystem map (set on the mons). These settings
+are both true by default since the *Luminous* (12.2.x) release of Ceph.
When an MDS identifies a directory fragment to be split, it does not
do the split immediately. Because splitting interrupts metadata IO,
in the monitor as having once enabled this flag to improve debugging and
support processes.
-
-Directory Fragmentation
------------------------
-CephFS directories are generally stored within a single RADOS object. But this has
-certain negative results once they become large enough. The filesystem is capable
-of "fragmenting" these directories into multiple objects. There are no known bugs
-with doing so but it is not sufficiently tested to support at this time.
-
-Directory fragmentation has always been off by default and required setting
-```mds bal frag = true`` in the MDS' config file. It has been further protected
-by requiring the user to set the "allow_dirfrags" flag for Jewel.
-
Inline data
-----------
By default, all CephFS file data is stored in RADOS objects. The inline data
Multiple filesystems were available starting in the Jewel release candidates
but were protected behind the "enable_multiple" flag before the final release.
+
+
+Previously experimental features
+================================
+
+Directory Fragmentation
+-----------------------
+
+Directory fragmentation was considered experimental prior to the *Luminous*
+(12.2.x). It is now enabled by default on new filesystems. To enable directory
+fragmentation on filesystems created with older versions of Ceph, set
+the ``allow_dirfrags`` flag on the filesystem:
+
+::
+
+ ceph fs set <filesystem name> allow_dirfrags
+
OPTION(mds_bal_sample_interval, OPT_DOUBLE, 3.0) // every 3 seconds
OPTION(mds_bal_replicate_threshold, OPT_FLOAT, 8000)
OPTION(mds_bal_unreplicate_threshold, OPT_FLOAT, 0)
-OPTION(mds_bal_frag, OPT_BOOL, false)
+OPTION(mds_bal_frag, OPT_BOOL, true)
OPTION(mds_bal_split_size, OPT_INT, 10000)
OPTION(mds_bal_split_rd, OPT_FLOAT, 25000)
OPTION(mds_bal_split_wr, OPT_FLOAT, 10000)
#define CEPH_MDSMAP_ALLOW_CLASSICS (CEPH_MDSMAP_ALLOW_SNAPS | CEPH_MDSMAP_ALLOW_MULTIMDS | \
CEPH_MDSMAP_ALLOW_DIRFRAGS)
+#define CEPH_MDSMAP_DEFAULTS CEPH_MDSMAP_ALLOW_DIRFRAGS
+
/*
* mds states
* > 0 -> in
public:
MDSMap()
: epoch(0), enabled(false), fs_name(MDS_FS_NAME_DEFAULT),
- flags(0), last_failure(0),
+ flags(CEPH_MDSMAP_DEFAULTS), last_failure(0),
last_failure_osd_epoch(0),
tableserver(0), root(0),
session_timeout(0),