当前位置:Linux教程 - Linux - EXT3文件系统mini-HOWTO

EXT3文件系统mini-HOWTO

EXT3文件系统mini-HOWTO


Rajesh Fowkar,<[email protected]>


2001年8月23日初稿

2001年10月26日修订(Andreas Dilger提供建议)

中文版由D.H.Grand[nOBODY/Ginux]维护



本HOWTO说明如何将现有的ext2文件系统转换为ext3。同时给出了使用ext3文件系统的好处。



1. 简介



2. 为何要换成EXT3



3. 系统需求



4. 升级软件包(deb和rpm)



5. 开始使用


6. 示例



7. 鸣谢






1. 简介




ext3是一种运行在Linux上的日志文件系统。在2.2版内核上运行的ext3由Dr Stephen C. Tweedie编写。




这一文件系统由Peter Braam、Andreas Dilger和Andrew Morton移植到2.4版内核中,Stephen Tweedie提供了大量有价值的帮助。





2. 为何要换成EXT3?




从ext2迁移到ext3的主要原因有四:

可用性、数据完整性、高速、易迁移性。




用Michael K. Johnson的话来说是这样:




可用性:



在未正常关机(意外断电、系统崩溃等)的情况下,如果未通过e2fsck程序检查数据一致性,ext2文件系统将无法挂载。e2fsck检查所需时间主要取决于分区容量大小,对现在相对较大(数十GB)的分区而言,非常费时。另外,如果文件数量多,一致性检查需时也更多。如果分区达到数百GB,大概要用一个多小时才能检查完,这一点严重限制了系统可用性。


与之相比,除某些非常罕见的硬件故障(如硬盘故障)外,ext3在系统未正常关机的情况下不需要做文件系统检查,因为数据已写回硬盘以保证文件系统一致性。在使用ext3文件系统时,非正常关机后的恢复时间并不取决于分区大小或者文件数量;而是取决于用来维护文件系统一致性的“日志”的大小。缺省日志大小需要大约一秒钟来恢复(与硬件速度有关)。


数据完整性:



采用ext3文件系统可以在非正常关机情况下,对数据完整性提供更强有力的保证。你可以选择以何种程度保护你的数据。一般的,你可以选择保证文件系统一致性,但在非正常关机后允许有垃圾数据存在(在某些但不是所有情况下适当的加快速度);也可以选择数据与文件系统均保持一致(这意味着系统崩溃后,你不会在最近写入过的文件中找到毁坏的数据)。缺省设置为数据与文件系统一致,提供更高安全性。


由于ext3与ext2有着完全相同的磁盘格式,可以使用经过长期考验,值得信赖的e2fsck程序来确保文件系统完整性,并根据需要修复错误。



高速



尽管某些数据要多次写入而不是一次,ext3通常还是比ext2更快(因为吞吐率更高),因为ext3的日志优化了硬盘磁头调度。你可以通过在三种日志模式中选择来优化速度,这些选项会牺牲一些数据完整性。
第一种模式,data=writeback,有限的数据完整性,允许崩溃后的文件中出现老的数据,在某种情况下能大大加快速度。这一模式是大多数日志文件系统的缺省日志模式,其实比ext2文件系统能提供的数据完整性更有限,只不过避免了系统启动时漫长的检查时间。
第二种模式,data=ordered (缺省模式),确保数据和文件系统一致性:崩溃以后,最近写入的文件中绝不会出现垃圾数据。
第三种模式,data=journal,大多数情况下需要更大的日志容量才能获得可观的速度,因此,一旦未正常关机,就要花费更多时间才能恢复,但有时对某些数据库、NFS和同步MTA(邮件服务器)操作会更快。一般用途计算推荐使用缺省模式。


易迁移性:



ext2很容易迁移到ext3上,然后立刻获得日志文件系统带来的巨大好处,而不需要重新格式化分区。是的,不必经过漫长乏味错误重重的数据备份,重格式化,恢复数据操作,就能体验ext3的优点。


在只认识ext2的老内核上也可以使用“ext3”文件系统,只要文件系统是被正常卸载或者用e2fsck(1.20版以上)检查过。




3. 系统需求




确定你有如下环境:


  1. 内核源代码。(2.2.x或者2.4.x)

      查看/usr/src/linux目录,看是否有内核源文件。如果不存在,请先从deb(Debian使用的安装包)或者rpm(RedHat使用的安装包)或者tar压缩包中安装到/usr/src。



  2. 和内核对应的ext3补丁



  3. util-linux软件包的最新版本。(版本号不低于2.11)



    然后编译。参考源码包中INSTALL文件给出的说明。


    这个包中含有最重要的支持ext3文件系统的mount和unmount命令。



  4. e2fsprogs的最新版本。(版本号不低于.1.22)



    然后编译。参考源码包中INSTALL文件给出的说明。


    这一e2fsprogs的新版本带有mke2fs,可以在Linux分区上建立ext3文件系统。







4. 升级软件包(deb和rpm)




升级系统中的util-linux和e2fsprogs包:


  • Debian用户:

      Debian用户可以通过apt-get从woody树获取e2fsprogs。


      在/etc/apt/sources.list中加入:


      deb http://http.us.debian.org/debian woody main contrib non-free


      键入以下内容:


      apt-get update

      apt-get install util-linux e2fsprogs



      就能从woody树安装最新版本的util-linux和e2fsprogs包。






  • Redhat/Mandrake用户:








5. 开始使用




5.1 内核配置(带ext3补丁)




$ cp ext3-2.4-0.x.y.patch.gz /usr/src
$ gunzip ext3-2.4-0.x.y.patch.gz
$ patch -p0 < ext3-2.4-0.x.y.patch
$ cd /usr/src/linux
$ make mrproper
$ make menuconfig

在filesystems菜单中选ext3。
请同时选中“JBD debugging support”,这将在发生问题时提供有用的调试信息。

ext3文件系统支持可以编译进内核,也可以作为模块编译。编进内核的好处是,当问题产生时,能简化调试信息收集工作。

警告:如果你要把现有的ext2根文件系统转换为ext3,切记先编译ext3支持到内核中,因为系统一启动就需要使用它:-)

Debian用户:
-----------
一旦上述make menuconfig操作结束,键入

make-kpkg --revision=ext31.0 kernel-image

就可以开始编译新内核了。这将在/usr/src建立一个deb文件,包含你自定义后支持ext3的内核。

敲dpkg -i kernel-image*可以安装这个新内核:-)

编辑LILO(/etc/lilo.conf)或者GRUB(/boot/grub/menu.lst)配置文件指向新内核。用相应引导管理器命令更新MBR(对LILO而言,用lilo -v)。

Redhat用户:
-----------
Redhat用户就没有Debian用户这样幸运了。你得自己敲下面的命令才能完成编译和安装新内核:

$ make dep
$ make clean
$ make bzImage
$ make install
$ make modules
$ make modules_install

编辑LILO(/etc/lilo.conf)或者GRUB(/boot/grub/menu.lst)配置文件指向新内核。用相应引导管理器命令更新MBR(对LILO而言,用lilo -v)。

瞧瞧~~~最让人头痛的经历结束了~~~这个世界清净了~~~





5.2 从ext2文件系统转换




ext2文件系统可以通过创建日志文件而转换成ext3文件系统。要这样做,只需对目标文件系统运行

tune2fs -j /dev/hdXX

文件系统就可以变成ext3了!
注意,本操作不必卸载目标文件系统。





5.3 建立新的ext3文件系统




只要运行

mke2fs -j /dev/hdXX

就可以在指定设备上建立新的ext3文件系统。





5.4 周期性文件系统检查




e2fsck的功能之一是对文件系统进行常规的强制检查,即使文件系统被标志为正常的。一般情况下,每二十次挂载或者每180天,两个条件之一满足就进行检查。

这一例行检查对ext3同样有效,很可能你不希望这样--我们选择ext3的目的之一就是减少由fsck引起的漫长的停机时间。

因此对于ext3来说,关闭这一功能比较好。
用以下命令

tune2fs -i 0 /dev/hdxx

来禁止检查。




5.5 更改/etc/fstab




这点非常关键。在/etc/fstab中把ext2改成ext3

例如:

/dev/hda3 / ext2 defaults,errors=remount-ro 0 1

改成这样

/dev/hda3 / ext3 defaults,errors=remount-ro 0 1




5.6 在LVM上使用ext3(感谢Andreas Dilger提供)




由于ext3文件系统通常在引导时不会检查,因此对长期运行的系统提供一个选择--使用LVM快照为文件系统建立一个只读属性的快照,
并在这个快照上以只读方式运行e2fsck,以确保文件系统不会为有问题的RAM、电缆、驱动器或者内核原因出错。

你需要把文件系统建立在LVM逻辑卷上,还要为它打上“LVM VFS Enhancement”补丁才能正常工作(尽管在使用不很频繁的文件系统上,不打VFS enhancement补丁也可以工作)。

例如,在逻辑卷上运行这样一个检查程序(系统运行中的任何时候都可以,甚至可以从cron脚本中执行)。假设在运行e2fsck的过程
中,单一逻辑卷上的数据改变不会超过64MB,并且在你想要测试的每一个卷集上,都有足够的剩余空间:

# 简单而愚蠢的LV列表(待测LV名称)
# 对于建立在/dev/vg00/lv1 /dev/vg00/lv2 /dev/vg01/lvA /dev/vg01/lvB上的逻辑卷假定所有逻辑卷都是ext2/ext3文件系统
for LV in ``lvscan | sed -n -e ''/ACTIVE/s/[^""]*""//'' -e ''s/"".*//p''``; do
SNAP=lvtempsnap
SNAPDEV=``dirname $lv``/$SNAP
lvcreate -L 80M -s -n $SNAP $LV
[ $? -ne 0 ] && echo ""**** WARNING **** unable to check $LV"" && continue
e2fsck -fn $SNAPDEV
[ $? -ne 0 ] && echo ""**** ERROR **** problem with filesystem on $LV""
lvremove -f $SNAPDEV
[ $? -ne 0 ] && echo ""**** WARNING **** unable to remove $SNAP""
done






6. 示例




命令及相应显示信息(在我的系统上运行的结果):


********************************************************************
debian:~# mke2fs -j /dev/hda9
mke2fs 1.22, 22-Jun-2001 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
134784 inodes, 269080 blocks
13454 blocks (5.00%) reserved for the super user
First data block=0
9 block groups
32768 blocks per group, 32768 fragments per group
14976 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
********************************************************************

********************************************************************
debian:~# tune2fs -i 0 /dev/hda9
tune2fs 1.22, 22-Jun-2001 for EXT2 FS 0.5b, 95/08/09
Setting interval between check 0 seconds
********************************************************************





7. 鸣谢



特别感谢:


  • Andreas Dilger特别提供LVM快照的技巧提示,以及逻辑卷检查的相关内容,并对本mini-howto其它部分的重大变更提供宝贵意见






请访问:


http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html




注意:本HOWTO的某些部分直接引用自上述链接,因为除了上文的解释外,再找不到更贴切的说明了。



如对本HOWTO有任何建议、补充或更正,请电邮至[email protected]

如对本HOWTO中文版有任何建议、补充或更正,请电邮至[email protected]



如果仍有疑问,请加入ext3用户邮件列表,列表地址见以上链接。在列表中提出问题前,请仔细阅读列表的历史存档。存档文件是用伟大的.tar.gz格式。你可以下载文档,用gunzip解出来即可阅读。解出来的文件是mbox格式,Cooooooooool~~~