Migrate existing Ext3 filesystems to Ext4

Any existing Ext3 filesystem can be migrated to Ext4 with an easy procedure which consists in running a couple of commands in read-only mode (described in the next section). This means that you can improve the performance, storage limits and features of your current filesystems without reformatting and/or reinstalling your OS and software environment. If you need the advantages of Ext4 on a production system, you can upgrade the filesystem. The procedure is safe and doesn’t risk your data (obviously, backup of critical data is recommended, even if you aren’t updating your filesystem :) . Ext4 will use the new data structures only on new data, the old structures will remain untouched and it will be possible to read/modify them when needed. This means, that, of course, that once you convert your filesystem to Ext4 you won’t be able to go back to Ext3 again (although there’s a possibility, described in the next section, of mounting a Ext3 filesystem with Ext4 without using the new disk format and you’ll be able to mount it with Ext3 again, but you lose many of the advantages of Ext4).

Migrate a ext3 filesystem to ext4
You need to use the tune2fs and fsck tools in the filesystem, and that filesystem needs to be unmounted. Run:

# tune2fs -O extents,uninit_bg,dir_index /dev/sda1

After running this command you must run fsck. If you don’t do it, Ext4 will NOT be able to mount your filesystem. This fsck run is needed to return the filesystem to a consistent state. It WILL tell you that it finds checksum errors in the group descriptors – it’s expected, and it’s exactly what it needs to be rebuilt to be able to mount it as Ext4, so don’t get surprised by them. Since each time it finds one of those errors it asks you what to do, always say YES. If you don’t want to be asked, add the “-p” parameter to the fsck command, it means “automatic repair”:

# fsck -pDf /dev/sda1

There’s another thing that must be mentioned. All your existing files will continue using the old indirect mapping to map all the blocks of data. The online defrag tool will be able to migrate each one of those files to a extent format (using a ioctl that tells the filesystem to rewrite the file with the extent format; you can use it safely while you’re using the filesystem normally)

Related posts:

  1. Howto: Resize Xen Loop Disk Image
  2. How to mount bin / cue image files in Linux
  3. Linux How to: Add a existing user to existing group
  4. How to Mount a Remote Filesystem Using SSH and sshfs
  5. First benchmarks of the ext4 file system
  6. Howto Recover a Linux Root Password
  7. Rethinking the GUI (Graphical User Interface) and the CLI (Command Line Interface)
  8. Installing Xen on Debian Etch 4.0
  9. MySQL Optimization and Performance Tips
  10. Howto migrate from CVS to SVN using CVS2SVN

Comments (2)

Howto: Resize Xen Loop Disk Image

Win4lin, KVM, QEMU, Virtualbox and Xen are all widely used technologies, used in virtual servers. Fairly often a virtual server run from within a loop filesystem and generally start with a fairly small file (1GB is big for a normal file, but not when it is pretending to be an entire filesystem!)

However things often grow over time.

Here is a nice simple procedure for increasing the size of a loop filesystem, if the filesystem is ext2 or ext3 (the procedure should work for ext4 too, but I havn’t tested it yet)

1. Stop the virtual server that is using the loop filesystem
2. Add some extra space to your loop filesystem file
# dd if=/dev/zero bs=1024k count=1024 >> loop_image_file

This adds 1GB to the end of a file called loop_image_file (make sure to use the append output redirector >> not a single >, otherwise you’ll have an empty 1GB file!)

3. Force a check on the resized/increased filesystem
# e2fsck -f loop_image_file

4. Resize the filesystem within the loop filesystem file
# resize2fs loop_image_file

5. Start the virtual server again

Related posts:

  1. Migrate existing Ext3 filesystems to Ext4
  2. Xen Howto: Install Windows
  3. How to mount bin / cue image files in Linux
  4. Howto: How to Reset the MySQL Root Password
  5. Ubuntu Server Edition JeOS
  6. Howto Install Windows XP / Vista on Xen
  7. How to Mount a Remote Filesystem Using SSH and sshfs
  8. Importing / Exporting Virtual Disk Images with Virtual Box
  9. Ubuntu Howto: Install Xen
  10. Virtualization Visualization with Visio

Comments (7)