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. 卸载要升级的分区(这里我们以/dev/vdb1分区为例)
root@Test ~ # umount /dev/vdb1 #解挂载/dev/vdb1分区
root@Test ~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
vdb 253:16 0 50G 0 disk
└─vdb1 253:17 0 50G 0 part #vdb1数据盘已经是未挂载状态
3. 使用 tune2fs 命令来给分区加入ext4的特性
root@Test ~ # tune2fs -O extents,uninit_bg,dir_index /dev/vdb1 #文件系统参数extents,uninit_bg,dir_index包含了ext4特性
root@Test ~ # tune2fs -l /dev/vdb1 | 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 vdb1 #查看vdb1分区文件系统已经是ext4
/dev/vdb1: UUID="a2ecf594-5d20-4e94-a32e-5f3c77dac121" TYPE="ext4"
4. 使用 fsck 或 e2fsck 检查修复分区,如果不做这一步,在系统启动的时候会提示分区检查,可以导致系统启动卡住
root@Test ~ # e2fsck -fDC0 /dev/vdb1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 3A: Optimizing directories
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/vdb1: 11/3276800 files (0.0% non-contiguous), 251732/13106944 blocks
5. 挂载分区,修改 /etc/fstab 中分区格式为 ext4
root@Test ~ # mount /dev/vdb1 /test
root@Test ~ # df -Th | grep vdb1
/dev/vdb1 ext4 50G 52M 47G 1% /test
root@Test ~ # cat /etc/fstab | grep vdb1
/dev/vdb1 /test ext4 defaults 0 0
通过这种方式转换而来的分区,原先存放的数据,文件数据存放结构还是ext3,解决的办法,就是把原来的数据重新复制一遍,这样就可以真正使用上ext4的文件系统特征了。