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.
NoteThe only supported journaling mode in ext4 is
data=ordered
(default). For more information, see Is the EXT journaling option "data=writeback" supported in RHEL? Knowledgebase article.- 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:
# mkfs.ext4 /dev/block_device
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:
# mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device
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.
NoteTo specify a UUID when creating a file system:
# mkfs.ext4 -U UUID /dev/block_device
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:
# mkfs.ext4 -L label-name /dev/block_device
To view the created ext4 file system:
# blkid
Additional resources
-
ext4
andmkfs.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:
# mkdir /mount/point
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:
# mount /dev/block_device /mount/point
- To mount the file system persistently, see Persistently mounting file systems.
To view the mounted file system:
# df -h
Additional resources
-
mount
,ext4
, andfstab
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:
# umount /dev/block_device # e2fsck -f /dev/block_device # resize2fs /dev/block_device size
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
, andT
suffixes.An ext4 file system may be grown while mounted using the
resize2fs
command:# resize2fs /mount/device size
NoteThe 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:
# df -h
Additional resources
-
resize2fs
,e2fsck
, andext4
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 |
|
|
File system check |
|
|
Resize a file system |
|
|
Save an image of a file system |
|
|
Label or tune a file system |
|
|
Back up a file system |
|
|
Quota management |
|
|
File mapping |
|
|
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.