无痛之ext3升ext4 转
时间:2010-09-26 来源:唐山建新
无痛之ext3升ext4 转
转自:从 运维进行时 作者:刘天斯
一台文件存储服务器单目录下子目录已经突破31998数限制,造成无法继续创建子目录,服务器系统环境为CentOS5.4 内核版本为2.6.18。解决方案只能是升级到ext4文件系统,首先到
https://ext4.wiki.kernel.org/index.php/Ext4_Howto查了一下资料,文中的第一句便是"Ext4 was released as a functionally complete and stable filesystem in Linux 2.6.28"。难道只能升级
内核一条路了吗?当然不是:)呵呵,下面总结本人实施/data分区从ext3升级至ext4步骤供大家参考。
测试整理了一下 测试过程中发现了个小问题:
OS:centos x86_64
[root@dns data]# uname -r
2.6.18-164.el5
一.升级前状态
[root@dns data]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext3 9158060 7203368 1481984 83% /
tmpfs tmpfs 513464 0 513464 0% /dev/shm
/dev/sdb5 ext3 8254208 203732 7631184 3% /data
无任何信息返回,说明/dev/sda5的ext4特征没有激活
[root@dns data]# tune2fs -l /dev/sdb5 | grep extent
安装所需包
源码安装:不能用系统自带的(我测试不行,在下面tune2fs -O格式转换的时候不行,报错:Invalid filesystem option set: extents,uninit_bg,dir_index....说无效的选项)
wget http://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/e2fsprogs-1.41.12.tar.gz
tar -zxvf e2fsprogs-1.41.12.tar.gz
cd e2fsprogs-1.41.12
./configure
make && make install
二.制作引导镜像
查找并加载相应的模块,如只需ext4支持,可将--with=ext3去掉
[root@dns data]# mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.ext3
[root@dns data]# mkinitrd -v --with=ext4 --with=ext3 /boot/initrd-`uname -r`.img `uname -r`
................
Adding module ext4
重启
[root@dns ~]# df -T | grep sdb5
/dev/sdb5 ext3 8254208 203732 7631184 3% /data
三.格式转换
[root@dns ~]# umount /dev/sdb5
[root@dns ~]# tune2fs -O has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize,dir_index /dev/sdb5
tune2fs 1.41.12 (17-May-2010)
Please run e2fsck on the filesystem.
四.修改转换文件系统错误并挂载
[root@dns ~]# e2fsck -fDC0 /dev/sdb5 -y
[root@dns ~]# mount -t ext4 /dev/sdb5 /data
[root@dns ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext3 9158060 7212612 1472740 84% /
tmpfs tmpfs 513464 0 513464 0% /dev/shm
/dev/sdb5 ext4 8254208 244732 7590184 4% /data
五.修改文件系统信息(重要!否则重启后会还原为ext3)
六.升级后状态
ext4的特征全激活了
[root@dns data]# tune2fs -l /dev/sdb5 | grep extent
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize