无损转换ext3到ext4,with Ubuntu Jaunty 9.04

Ubuntu Jaunty 9.04开始正式支持ext4文件系统,关于ext4,其优点应该早有听闻,对任何用户而言都具有难以拒绝的诱惑:对一般用户而言,有更好的磁盘性能,快速的预分配、删除,更可靠的日志,更迅速的磁盘检查(不会像ext3可能花几分钟来check,ext4经常是瞬间完成的)……更专业的描述可以看看IBM文库的这篇《Migrating to ext4》

从Ubuntu 8.10升级到9.04,一定程度上是看上其对ext4的支持,不过如果为此重新格式化分区重装系统,对于使用积累较多的系统来说代价太高了点(PT现在用的系统是去年的8.04,后来升级8.10,再到现在的9.04……),不过根据《Migrating to ext4》的说法,从ext3到ext4的无损转换是可能的,而且并不耗时间,就如Kernel Wiki里面的Ext4 Howto提到转换所用的命令,其实也很简单:

tune2fs -O extents,uninit_bg,dir_index /dev/DEV
e2fsck -fD /dev/DEV

查了下tune2fs的man页,uninit_bg是支持快速check的特性,dir_index则是创建二叉树散列的目录查找,至于extents在man页没提到,Kernel Wiki里面说是ext4专有的特性,完成后用e2fsck check一次,这样就完成ext4的转换了,整个过程的耗时并不多。

不过这样转换出来的分区有点不完美的地方是,原本存放在分区内的文件结构还是ext3的结构,由ext4的机制透明兼容,以后存放的文件才是ext4的格式。本来影响不大的,不过相信会影响众多完美主义者的精神状态,所以很多人宁愿把文件全复制出来,格式化了分区再复回去。

IBM的文章内提到,因为ext4支持了在线的碎片整理,对于转换的ext4,使用e4defrag整理一遍,就是纯种的ext4了,不过到目前为止,e4defrag并未完全可用。不过相信不久的将来,转换到纯种ext4完全可以一气呵成的。

最近有谣言说/boot不能是ext4,不然grub引导不了。事实上Ubuntu 9.04已经完全支持ext4,不然此前怎么会有ext4系统的9.04 21秒引导系统的新闻?不过对于升级过来的9.04,安装在/boot/grub里面的程序还是旧版的,没有自动升级,因此可能出现引导问题,相信这也是谣言的出处,所以升级过来的同学要注意了。可以使用grub-install来重新安装一次grub的文件,就如《Upgrade Ubuntu 8.10 to Ubuntu 9.04 and ext3 to ext4 in 10 Minutes》那样。不过grub-install有点要注意,grub-install复制的文件是以/为起始位置的(特别是使用了–root-directory=DIR参数的),如果boot单独分区,同时在livecd里面单独挂载了出来,很可能新复制过去的文件会多了一层boot目录,变成新旧版的引导文件共存以致没法引导grub……(我也感觉我说得一塌糊涂了……总之boot独立分区的同学使用grub-install注意它究竟安装到什么地方去了,看看相应文件的修改时间)。

对于从ext3升级到ext4的系统,还有重要的一点就是fstab,完成上述的操作后,先运行blkid查看分区的新UUID,用编辑器打开/etc/fstab,替换转换了的分区的UUID,当然还有挂载类型改成ext4。

文章分类 Unix/Linux 标签: , , , ,
5 comments on “无损转换ext3到ext4,with Ubuntu Jaunty 9.04
  1. liangsuilong说道:

    以前在fedora9都能转了,不过当时的问题都不少,会导致rpmdb出问题,貌似fedora10出来的时候也是这样,现在的情况就不太清楚了!

  2. han说道:

    我的 ubuntu 9.04 顺利转换到 ext4 (包括 /boot 及 /)
    开机顺利。

    请参考:
    http://blog.yp312.twbbs.org/2009/05/ext4.html
    不过是正体中文。

    fedora 10 也可成功使用 ext4 的 root device 但 /boot 目前不建议改成 ext4.

  3. SecretZero说道:

    转换使用失败,用fsck -fD /dev/DEV才成功。
    e2fsck不知道为什么搞糟了。

  4. 转换前写到一半,转换后继续写的文件,会出问题吗?

    • PT说道:

      不会,只要文件正常关闭;如果你指定是wget断点续传之类的,完全没问题。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*