Tag Archives: how to convert ext3 to ext4 in linux

Upgrade EXT filesystem in Linux (RHEL, CentOS, Ubuntu)

Learn how to upgrade the ext filesystem in Linux like RHEL, Centos, Ubuntu, etc. Steps for upgrading ext2 to ext3, ext3 to ext4, and ext2 to ext4.

Upgrade filesystem from ext2 to ext3 to ext4

In our last article we saw the difference between ext2, ext3, and ext4 file systems in Linux. In this article we will walk through how to upgrade ext2 to ext3 or ext4 on RHEL, CentOS, or Ubuntu.

How to upgrade ext2 to ext3

To upgrade ext2 volume lets first format volume with ext2 filesystem.

# mke2fs /dev/vg01/lvol0
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 53248 1k blocks and 13328 inodes
Filesystem UUID: b3c39dcf-e00f-414c-8306-46d985674b6e
Superblock backups stored on blocks:
        8193, 24577, 40961

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

Lets confirm file system type which we just formatted.

# df -T /mydata
Filesystem             Type 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg01-lvol0 ext2     51559   842     48055   2% /mydata

You can see its ext2 type in above output under second column.

Now to upgrade it to ext3 you need to unmount it, so there is downtime involved. After un-mount use tune2fs command to upgrade and mount it.

# umount /mydata

# tune2fs -j /dev/vg01/lvol0
tune2fs 1.42.13 (17-May-2015)
Creating journal inode: done

# mount /dev/vg01/lvol0 /mydata

#  df -T /mydata
Filesystem             Type 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg01-lvol0 ext3     47463   859     43942   2% /mydata

Observe above outputs carefully. We did –

  • Un-mount filesystem
  • Run tune2fs command with -j switch
  • Mount file system

ext2 has been upgraded to ext3 which can be confirmed in last output.

Make sure you make changes in /etc/fstab to reflect proper file system type for your related mount point.

How to upgrade ext3 to ext4

To upgrade to ext4 filesystem you need to enable file system features on the file system with tune2fs command. Those are – dir_index (Speed up directory lookups), extents (Stores locations in inodes), uninit_bg (reduce e2fsck time).

After successful setting features of file system you need to run e2fsck to fix file system data structures on disk for new modified features. To run e2fsck you have to unmount the file system.

# tune2fs -O extents,uninit_bg,dir_index /dev/vg01/lvol0
tune2fs 1.42.13 (17-May-2015)

# e2fsck -pf /dev/vg01/lvol0
/dev/vg01/lvol0 is mounted.
e2fsck: Cannot continue, aborting.

# umount /mydata

# e2fsck -pf /dev/vg01/lvol0
/dev/vg01/lvol0: 11/13328 files (0.0% non-contiguous), 6644/53248 blocks

# mount /dev/vg01/lvol0 /mydata

# df -T /mydata
Filesystem             Type 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg01-lvol0 ext4     47463   859     42878   2% /mydata

In the above output, we tried to run FS check while volume is mounted and it gave us an error. Finally, the file system upgraded to ext4 which can be verified in the last output. Make a note that this is irreversible change and you can not go back to ext3 once you did this upgrade.

There is another way as well to have a file system of ext4 as below –

ext4 file system is backward compatible with ext2 and ext3. This means you can directly mount any ext2 or ext3 filesystem as ext4 without upgrading. You just simply un-mount filesystem and mount it as ext4 by supplying -t switch with mount command.

# umount /mydata

# mount -t ext4 /dev/vg01/lvol0 /mydata

# df -T /mydata
Filesystem             Type 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg01-lvol0 ext4     47463   859     43942   2% /mydata

In the above output, we un-mount out ext3 mount point and remounted it as ext4! This process is reversible means you can un-mount the ext4 file system and re-mount it as ext3 again.

How to upgrade ext2 to ext4

As we saw above you need to enable file system features to upgrade to ext4. While upgrading from ext2 to ext4 you need to enable has_journal extra features than the above list. Since you know ext2 doesn’t have journaling available.

# umount /mydata

# tune2fs -O extents,uninit_bg,dir_index,has_journal /dev/vg01/lvol0
tune2fs 1.42.13 (17-May-2015)
Creating journal inode: done

# e2fsck -pf /dev/vg01/lvol0
/dev/vg01/lvol0: 11/13328 files (0.0% non-contiguous), 6627/53248 blocks

# mount /dev/vg01/lvol0 /mydata

# df -T /mydata
Filesystem             Type 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg01-lvol0 ext4     47463   842     42895   2% /mydata

Make a note that this is irreversible change and you can not go back to ext3 once you did this upgrade.

Another method would be directly mounting FS as ext4 as below –

As stated earlier, the ext4 file system is backward compatible with ext2 and ext3, means you can directly mount any ext2 or ext3 filesystem as ext4 without upgrading

# df -T /mydata
Filesystem             Type 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg01-lvol0 ext2     51559   842     48055   2% /mydata

# umount /mydata

# mount -t ext4 /dev/vg01/lvol0 /mydata

# df -T /mydata
Filesystem             Type 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg01-lvol0 ext4     51559   842     48055   2% /mydata


Previously ext2 file system is mounted as ext4 in the above output without upgrading!