By default, root volume in Amazon Linux instances uses EXT4 filesystem. But maybe you want to use another one, for example XFS. With next procedure you'll be able to convert default root volume filesystem of an existing instance to XFS. For our example, we've an instance named MyInstance using default Amazon Linux distribution:
After login, as you can see default root filesystem device (/dev/sda1 | /dev/xvda1) is EXT4:
Here is suggested steps to successfully achieve the filesystem conversion:
- Login to the instance and become root
- Install XFS utils: yum install xfsprogs xfsprogs-devel xfsdump
- Stop the instance
- Create a snapshot of root volume
- Create a new volume from the snapshot. Make sure you don´t modify size and select same availability zone where original root volume of instance is hosted
- Start the instance and wait until become available. After that, login to the instance and become root
- Attach new volume as a secondary volume. By default, /dev/sdf device will be selected. This device is mapped as /dev/xvdf in modern kernels. Run dmesg command to review your kernel successfully detect the new attached volume
- Install Development Tools: yum groupinstall 'Development Tools'
- Download Fstransform toolkit from here
- Uncompress, configure, compile and install Fstransform toolkit
- Now, run: fstransform /dev/xvdf xfs
- Previous command will convert /dev/xvdf from original EXT4 filesystem to XFS. Process will take time, depends on volume size. Be patient and make sure everything is correctly done. fstransform will provide detailed information about the process. Make sure everything is correctly done.
- Label /dev/xvdf device as '/'. Just run: xfs_admin -L \/ /dev/xvdf
- Create a mountpoint directory, for example /xfs, and mount /dev/xvdf in /xfs directory. Edit fstab file associated to the new XFS volume (/xfs/etc/fstab) and make sure / is associated to volume labeled / and xfs filesystem is configured for root mountpoint
- Stop the instance
- Detach original root volume
- Detach XFS volume
- Attach XFS volume as root volume. Make sure you specify same device associated to the original root volume (for Amazon Linux instances usually is /dev/sda1)
- Start the instance
Now, your instance should start. Login and verify root volume now is XFS
If there is any issue during instance startup, review System Log in AWS EC2 web console. Useful information for troubleshooting will be provided (if required).