Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-8342

ZFS dnodesize and recordsize should be set at file system creation

Details

    • Improvement
    • Resolution: Fixed
    • Minor
    • Lustre 2.11.0
    • None
    • 9223372036854775807

    Description

      ZFS dnodesize and recordsize should be set to appropriate defaults upon dataset creation at filesystem creation time. We can set dnodesize=auto and recordsize=1M by default if the installed version of zfs supports it.

      Attachments

        Issue Links

          Activity

            [LU-8342] ZFS dnodesize and recordsize should be set at file system creation
            pjones Peter Jones added a comment -

            Landed for 2.11

            pjones Peter Jones added a comment - Landed for 2.11

            Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/21055/
            Subject: LU-8342 utils: Set dnodesize/recordsize at zfs dataset create
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 1617b8f6b6cdd0f5b74d7bfb8166d74b63cfed81

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/21055/ Subject: LU-8342 utils: Set dnodesize/recordsize at zfs dataset create Project: fs/lustre-release Branch: master Current Patch Set: Commit: 1617b8f6b6cdd0f5b74d7bfb8166d74b63cfed81

            Currently no updates to report. I will try to revisit this soon.

            dinatale2 Giuseppe Di Natale (Inactive) added a comment - Currently no updates to report. I will try to revisit this soon.

            Hi Giuseppe,

            Any update about the patch http://review.whamcloud.com/21055?

            cengku9660 Gu Zheng (Inactive) added a comment - Hi Giuseppe, Any update about the patch http://review.whamcloud.com/21055?

            Olaf, I'm not against that, but it would definitely be more work than the current patch, and likely push the change out into 2.10.

            adilger Andreas Dilger added a comment - Olaf, I'm not against that, but it would definitely be more work than the current patch, and likely push the change out into 2.10.

            Andreas,
            I understand. I'm suggesting that if those good defaults are encoded in a config file instead of in code, they (a) are visible to the user and (b) require trival code review to change. Also, the existing options do not distinguish between pool properties and dataset properties.

            ofaaland Olaf Faaland added a comment - Andreas, I understand. I'm suggesting that if those good defaults are encoded in a config file instead of in code, they (a) are visible to the user and (b) require trival code review to change. Also, the existing options do not distinguish between pool properties and dataset properties.

            There are already -mkfsoptions and -mountfsoptions that can be used to pass extra options to mkfs.lustre and to the internal mount command for the back-end filesystem. They should be able to override the default options specified internally by mkfs.lustre. My goal in specifying these options internally is that the majority of users should get the best performance out of the box if possible, rather than having to specify extra options.

            adilger Andreas Dilger added a comment - There are already - mkfsoptions and -mountfsoptions that can be used to pass extra options to mkfs.lustre and to the internal mount command for the back-end filesystem. They should be able to override the default options specified internally by mkfs.lustre . My goal in specifying these options internally is that the majority of users should get the best performance out of the box if possible, rather than having to specify extra options.
            ofaaland Olaf Faaland added a comment -

            Perhaps lustre/conf/lustre is not the right place for such settings; I see there is an /etc/mke2fs.conf with ini-style contents, and some userspace apps seem to use /etc/default/foo. Anyway, basic proposal that these settings be put in a config file, instead of in the code, still stands.

            ofaaland Olaf Faaland added a comment - Perhaps lustre/conf/lustre is not the right place for such settings; I see there is an /etc/mke2fs.conf with ini-style contents, and some userspace apps seem to use /etc/default/foo. Anyway, basic proposal that these settings be put in a config file, instead of in the code, still stands.
            ofaaland Olaf Faaland added a comment -

            I see that lustre/conf/lustre already has ZPOOL_IMPORT_DIR and ZPOOL_IMPORT_ARGS. So perhaps ZPOOL_CREATE_ARGS and ZFS_CREATE_ARGS?

            ofaaland Olaf Faaland added a comment - I see that lustre/conf/lustre already has ZPOOL_IMPORT_DIR and ZPOOL_IMPORT_ARGS. So perhaps ZPOOL_CREATE_ARGS and ZFS_CREATE_ARGS?
            ofaaland Olaf Faaland added a comment -

            Even if these pool and dataset settings are correct for all cases for now, they may become incorrect with future changes in either lustre or zfs. Furthermore, there are likely unusual cases (e.g. testing, see Jinshan's concern about test data often being highly compressible) where one or more of these settings are undesirable.

            Both http://review.whamcloud.com/#/c/19892/2 and http://review.whamcloud.com/#/c/21055/3 set the desired settings by hard-coding specific values into mkfs.lustre. How about putting the settings themselves into a configuration file, e.g. /etc/sysconfig/lustre or distro-specific equivalent which is parsed by mkfs.lustre? Then they are visible to the user, can easily be changed when appropriate, and the defaults can be changed with a trivial patch that is easy to review.

            ofaaland Olaf Faaland added a comment - Even if these pool and dataset settings are correct for all cases for now, they may become incorrect with future changes in either lustre or zfs. Furthermore, there are likely unusual cases (e.g. testing, see Jinshan's concern about test data often being highly compressible) where one or more of these settings are undesirable. Both http://review.whamcloud.com/#/c/19892/2 and http://review.whamcloud.com/#/c/21055/3 set the desired settings by hard-coding specific values into mkfs.lustre. How about putting the settings themselves into a configuration file, e.g. /etc/sysconfig/lustre or distro-specific equivalent which is parsed by mkfs.lustre? Then they are visible to the user, can easily be changed when appropriate, and the defaults can be changed with a trivial patch that is easy to review.

            People

              dinatale2 Giuseppe Di Natale (Inactive)
              dinatale2 Giuseppe Di Natale (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: