linux操作系统无损升级文件系统ext3至ext4
这里我们以CentOS7.0操作系统来作为示例升级系统盘文件系统
注意:根据此方法测试过程中没有发现数据损坏或丢失现象,但强烈建议操作前通过镜像、快照的方式备份好数据
具体操作步骤:
1. 确认内核版本和系统环境支持 ext4 (推荐内核版本升至2.6.28以上)
root@Test ~ # uname -r #查看当前内核版本
3.10.0-123.el7.x86_64
root@Test ~ # lsmod |grep ext4 #查看内核当前是否已加载ext4文件系统模块
ext4 528957 1
mbcache 14958 1 ext4
jbd2 98341 1 ext4
2. 由于系统盘无法直接解绑,这里可以直接使用 tune2fs 命令来给系统盘分区加入 ext4 的特性
root@Test ~ # tune2fs -O extents,uninit_bg,dir_index /dev/vda1 #文件系统参数extents,uninit_bg,dir_index包含了ext4特性
tune2fs 1.42.9 (28-Dec-2013)
root@Test ~ # tune2fs -l /dev/vda1 | grep features #查看文件系统ext4相关参数是否添加成功
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent sparse_super large_file uninit_bg
root@Test ~ # blkid | grep vda1 #查看vda1分区文件系统已经是ext4
/dev/vda1: UUID="2c04c946-7fee-41c2-a99f-f53e2532e4f7" TYPE="ext4"
3. 上面查看文件系统已经升级为 ext4 了,因为无法直接对挂载中的根分区做检查文件系统(e2fsck),所以这里修改 /etc/fstab 中分区格式为 ext4,然后重启服务器,即可重新以 ext4 文件系统挂载根分区(首次启动可能会慢,这时可能在自动检查系统分区文件系统)
root@Test ~ # sed -i '/vda1/s/ext3/ext4/' /etc/fstab && sed -n '/vda1/'p /etc/fstab #修改/etc/fstab中系统分区的文件系统为ext4
/dev/vda1 / ext4 noatime,acl,user_xattr 1 1
root@Test ~ # df -Th | grep vda1 #这里测试过mount -o remount,rw / 的方式,但是不生效
/dev/vda1 ext3 50G 3.0G 44G 7% /
root@Test ~ # reboot #重启服务器
root@Test ~ # df -Th | grep vda1 #重启后已经以 ext4 文件系统挂载根分区了
/dev/vda1 ext4 50G 3.0G 44G 7% /
通过这种方式转换而来的分区,原先存放的数据,文件数据存放结构还是ext3,解决的办法,就是把原来的数据重新复制一遍,这样就可以真正使用上ext4的文件系统特征了