Chapter 30. Getting started with an ext4 file system As a system administrator, you can create, mount, resize, backup, and restore an ext4 file system. The ext4 file system is a scalable extension of the ext3 file system. With Red Hat Enterprise Linux 9, it can support a maximum individual file size of 16 terabytes, and file system to a maximum of 50 terabytes. 30.1. Features of an ext4 file system Following are the features of an ext4 file system: Using extents: The ext4 file system uses extents, which improves performance when using large files and reduces metadata overhead for large files. Ext4 labels unallocated block groups and inode table sections accordingly, which allows the block groups and table sections to be skipped during a file system check. It leads to a quick file system check, which becomes more beneficial as the file system grows in size. Metadata checksum: By default, this feature is enabled in Red Hat Enterprise Linux 9. Allocation features of an ext4 file system: Persistent pre-allocation Delayed allocation Multi-block allocation Stripe-aware allocation Extended attributes ( xattr ): This allows the system to associate several additional name and value pairs per file. Quota journaling: This avoids the need for lengthy quota consistency checks after a crash. Note The only supported journaling mode in ext4 is data=ordered (default). For more information, see the Red Hat Knowledgebase solution Is the EXT journaling option "data=writeback" supported in RHEL? . Subsecond timestamps - This gives timestamps to the subsecond. Additional resources ext4 man page on your system 30.2. Creating an ext4 file system As a system administrator, you can create an ext4 file system on a block device using mkfs.ext4 command. Prerequisites A partition on your disk. For information about creating MBR or GPT partitions, see Creating a partition table on a disk with parted . Alternatively, use an LVM or MD volume. Procedure To create an ext4 file system: For a regular-partition device, an LVM volume, an MD volume, or a similar device, use the following command: Replace /dev/ block_device with the path to a block device. For example, /dev/sdb1 , /dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a , or /dev/my-volgroup/my-lv . In general, the default options are optimal for most usage scenarios. For striped block devices (for example, RAID5 arrays), the stripe geometry can be specified at the time of file system creation. Using proper stripe geometry enhances the performance of an ext4 file system. For example, to create a file system with a 64k stride (that is, 16 x 4096) on a 4k-block file system, use the following command: In the given example: stride=value: Specifies the RAID chunk size stripe-width=value: Specifies the number of data disks in a RAID device, or the number of stripe units in the stripe. Note To specify a UUID when creating a file system: Replace UUID with the UUID you want to set: for example, 7cd65de3-e0be-41d9-b66d-96d749c02da7 . Replace /dev/ block_device with the path to an ext4 file system to have the UUID added to it: for example, /dev/sda8 . To specify a label when creating a file system: To view the created ext4 file system: Additional resources ext4 and mkfs.ext4 man pages on your system 30.3. Mounting an ext4 file system As a system administrator, you can mount an ext4 file system using the mount utility. Prerequisites An ext4 file system. For information about creating an ext4 file system, see Creating an ext4 file system . Procedure To create a mount point to mount the file system: Replace /mount/point with the directory name where mount point of the partition must be created. To mount an ext4 file system: To mount an ext4 file system with no extra options: To mount the file system persistently, see Persistently mounting file systems . To view the mounted file system: Additional resources mount , ext4 , and fstab man pages on your system Mounting file systems 30.4. Resizing an ext4 file system As a system administrator, you can resize an ext4 file system using the resize2fs utility. The resize2fs utility reads the size in units of file system block size, unless a suffix indicating a specific unit is used. The following suffixes indicate specific units: s (sectors) - 512 byte sectors K (kilobytes) - 1,024 bytes M (megabytes) - 1,048,576 bytes G (gigabytes) - 1,073,741,824 bytes T (terabytes) - 1,099,511,627,776 bytes Prerequisites An ext4 file system. For information about creating an ext4 file system, see Creating an ext4 file system . An underlying block device of an appropriate size to hold the file system after resizing. Procedure To resize an ext4 file system, take the following steps: To shrink and grow the size of an unmounted ext4 file system: Replace /dev/block_device with the path to the block device, for example /dev/sdb1 . Replace size with the required resize value using s , K , M , G , and T suffixes. An ext4 file system may be grown while mounted using the resize2fs command: Note The size parameter is optional (and often redundant) when expanding. The resize2fs automatically expands to fill the available space of the container, usually a logical volume or partition. To view the resized file system: Additional resources resize2fs , e2fsck , and ext4 man pages on your system 30.5. Comparison of tools used with ext4 and XFS This section compares which tools to use to accomplish common tasks on the ext4 and XFS file systems. Task ext4 XFS Create a file system mkfs.ext4 mkfs.xfs File system check e2fsck xfs_repair Resize a file system resize2fs xfs_growfs Save an image of a file system e2image xfs_metadump and xfs_mdrestore Label or tune a file system tune2fs xfs_admin Back up a file system tar and rsync xfsdump and xfsrestore Quota management quota xfs_quota File mapping filefrag xfs_bmap Note If you want a complete client-server solution for backups over network, you can use bacula backup utility that is available in RHEL 9. For more information about Bacula, see Bacula backup solution .

Commands:
mkfs.ext4 /dev/ block_device
mkfs.ext4 -E stride=16,stripe-width=64 /dev/ block_device
mkfs.ext4 -U UUID /dev/ block_device
mkfs.ext4 -L label-name /dev/ block_device
blkid
mkdir /mount/point
mount /dev/ block_device /mount/point
df -h
umount /dev/ block_device e2fsck -f /dev/ block_device resize2fs /dev/ block_device size
resize2fs /mount/device size
df -h