blob: 3d18c00ea0bd91832f4c4a67817f1f4c0f4a9fae [file] [log] [blame]
# mkfs defaults.
#
# In conjunction with these defaults mkfs needs to be issued with the
# following arguments:
#
# mkfs -m 1 -i 20480 -t <fs> <device>
#
# -m reserved-blocks-percentage
#
# Specify the percentage of the filesystem blocks reserved for the
# super-user. This avoids fragmentation, and allows root-owned daemons,
# such as syslogd(8), to continue to function correctly after non-privileged
# processes are prevented from writing to the filesystem. The default
# percentage is 5%.
#
# Conclusion: Set to 1%
#
#
# -i bytes-per-inode
# Specify the bytes/inode ratio. mke2fs creates an inode for every
# bytes-per-inode bytes of space on the disk. The larger the bytes-per-inode
# ratio, the fewer inodes will be created. This value generally shouldn't
# be smaller than the blocksize of the filesystem, since in that case
# more inodes would be made than can ever be used. Be warned that it
# is not possible to expand the number of inodes on a filesystem after it
# is created, so be careful deciding the correct value for this parameter.
#
# Conclusion: Set to 20480
#
# mke2fs.conf defaults
#
[defaults]
blocksize = 4096
# All inodes in production are 128 bytes. This conserves memory and
# maintains compatibility between ext2 and ext4
inode_size = 128
# Default inode_ratio (-i) in production is 20480
inode_ratio = 20480
# Default reserved_ratio (-m) in production is 1%
reserved_ratio = 1.0
lazy_itable_init = false
[fs_types]
# Features for ext2 & ext4
#
# ext_attrs - Extended Attributes. This is the ability to associate
# metadata not interpreted by the file system with
# a file. This is not stored in the inode when the
# inodes are 128 bytes. So we would have to store them in
# another allocated block.
#
# Conclusion: DISABLE We don't need these attributes
# today and they will only create a performance hit.
# So we disable them. Note: If we ever do enable this
# feature make sure the kernel config is enabled also.
#
# resize_inode - Reserve space so the block group descriptor
# table may grow in the future. Useful for
# online resizing using resize2fs. By default
# mke2fs will attempt to reserve enough space so
# that the filesystem may grow to 1024 times its
# initial size. This can be changed using the
# resize extended option.
# Conclusion: DISABLE This is a waste of space
# for production.
#
# dir_index - Enabling the HTree (invented by Dan Phillips) to make
# directory lookups faster.
#
# Conclusion: EXT2 DISABLED (no testing yet)
# EXT4 ENABLED (by default)
#
# large_file/huge_file - Larger than 2TB support
# Conclusion: EXT2 DISABLED No need in prod for files this big.
# Conclusion: EXT4 ENABLED Since we get this for free
#
# filetype - FileType. Records the type of file (Regular, directory,
# character, block, fifo, socket, link) in the directory
# structure.
# Conclusion: EXT2 ENABLED, EXT4 PENDING
#
# sparse_super - Reduces the number of redundant super blocks.
# Conclusion: ENABLE
ext2 = {
features = ext_attr,^resize_inode,^dir_index,^large_file,filetype,sparse_super
hash_alg = tea
}
# Features for ext4 only
# has_journal - Enable the ext4 journal. Since we don't have enough
# testing and are not sure if we need it yet. We are
# not enabling the journal.
# Conclusion: EXT4 DISABLED
#
# extents - Using extents instead of indirect blocks to manage metadata.
# Conclusion: EXT4 ENABLED This is a big performance win.
#
# flex_bg - This feature relaxes check restrictions on where each
# block groups meta data is located within the storage
# media. This allows for the allocation of bitmaps or
# inode tables outside the block group boundaries in cases
# where bad blocks forces us to look for new blocks which
# the owning block group can not satisfy. This will also
# allow for new meta-data allocation schemes to improve
# performance and scalability.
# Conclusion: ENABLE It allows us to make performance
# gaining modifications for ext4.
#
# uninit_bg - Unitialized Block Groups. In pass1 of e2fsck, every
# inode table in the filesystem is scanned and checked,
# regardless of whether it is in use. This is this the
# most time consuming part of the filesystem check.
# The uninitialized block group feature can greatly reduce
# e2fsck time by eliminating checking of uninitialized inodes.
#
# With this feature, there is a a high water mark of
# used inodes for each block group. Block and inode bitmaps
# can be uninitialized on disk via a flag in the group
# descriptor to avoid reading or scanning them at e2fsck time.
# A checksum of each group descriptor is used to ensure that
# corruption in the group descriptor's bit flags does not
# cause incorrect operation.
#
# Conclusion: ENABLE While the speed up is dependent on
# fs age it may be variable but we should not drop the fsck
# perf on the floor.
#
# dir_nlink - Allows for more than 64000 files in a directory.
# Conclusion: ENABLED This is on by default for ext4.
# This is useful too.
ext4 = {
features = ext_attr,^resize_inode,^has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,sparse_super
hash_alg = half_md4
}
hugefiles = {
features = extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize,^resize_inode,sparse_super2
hash_alg = half_md4
reserved_ratio = 0.0
num_backup_sb = 0
packed_meta_blocks = 1
make_hugefiles = 1
inode_ratio = 4194304
hugefiles_dir = /storage_d/pre-block
hugefiles_name = data-
hugefiles_digits = 5
hugefiles_size = 1028M
hugefiles_slack = 2G
num_hugefiles = 0
zero_hugefiles = false
flex_bg_size = 262144
}
hugefile = {
features = extent,huge_file,bigalloc,flex_bg,uninit_bg,dir_nlink,extra_isize,^resize_inode,sparse_super2
cluster_size = 32768
hash_alg = half_md4
reserved_ratio = 0.0
num_backup_sb = 0
packed_meta_blocks = 1
make_hugefiles = 1
inode_ratio = 4194304
hugefiles_dir = /storage_d
hugefiles_name = huge-data
hugefiles_digits = 0
hugefiles_size = 0
hugefiles_align = 256M
hugefiles_align_disk = true
num_hugefiles = 1
zero_hugefiles = false
}
small = {
blocksize = 1024
inode_size = 128
inode_ratio = 4096
}