新一代的 Linux 作业系统的档案系统,使用Journalling Filesystem 日志式档案系统以取代旧有的传统 ext2 档案系统,已成一必然趋势;目前较为熟知的日志式档案系统如 Red Hat 的 ext3、NSV的 ReiserFS、IBM 的 JFS、及SGI 的 xfs 等…。「日志」主要的精髓还是在于「log」的功能。易言之,Journal File System于系统资料改变前,会先记录将执行的动作记录,如适逢不正常的关机或电力中断时,可确保资料不致遗失。
观之现有几个主要 Linux Distribution,大都采ReiserFS的日志式档案系统居多,惟Red Hat 则自Red Hat Linux 7.2版开始使用ext3 的日志式档案系统, ext3 比起ext2 如仅择一理由简言之,就是多了日志功能;至于Red Hat独沽ext3 的日志式档案系统,不外乎基于下述原因:
(1) ext3 可以前后相容于 ext2,ext2 的使用者可以在既存的档案系统中简单地即可增加日志功能,如要还原 ext2亦复简易;同时,只要有较新版的 e2fsprogs 套件,ext3 的档案系统,无须移除 journal,也可以挂载 ext2的档案系统。
(2) ext3 不但增益了档案的优点,也承继了某些 ext2的优点,例如 HTrees 可使大型目录的运作更为迅速、extended的属性特点可以启动存取控制清单。
(3) ext3 使用generic journaling layer (jbd),所以不仅可以日志档系统,其他的设备如NVRAM,也可 journal
(4) ext3 具备多种日志模式例如:
data=journal:可以日志所有的data 和metadata档案
data=ordered:仅日志metadata档案,不含data档案,但data=ordered会使metadata指向有效的data
data=writeback:
仅日志metadata档案,不含data档案,但data=writeback会使档案系统维持一致性,不过系统不正常关机后,旧有资料会出现在档案中
writeback 的特色在于速度效率,虽然档案系统仍可维持一致性,但quality不是那么高,主要还是用效能的调整,例如当我们从ext2 转换到ext3时,如果遇到应用程式的效能降低,设data=writeback是不错的选择
系统管理者则可在多种日志模式中针对存取速度和档案资料的一致性的不同考量,而采用不同的日志模式
(5) ext3具备32 bit 或64 bit 架构的跨平台日志能力
(6) ext3 已整合进 Linux 的kernel
(7) ext3 仍援用e2fsck code 资料毁损容错的特点
至于实际上的使用则简述如后:
1.下载 ext3 patch 档 (可使用在 2.2.x 或 2.4.x ),
# 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
在kernel选单上选 ext3 和 JBD debugging support
# make dep
# make clean
# make bzImage
# make install
# make modules
# make modules_install
ext3 可以选择编译进 kernel 或 build 成 module, 编译进 kernel的可以简化万一 fail,有利于诊断资料的收集。
其次再编辑LILO 开机管理程式的设定档 /etc/lilo.conf 或 GRUB开机管理程式的设定档 /boot/grub/menu.lst中kernel的设定资料。
最后再更新 MBR 的 boot loader;
LILO 开机管理程式: 在系统提示符号下 lilo □v □v -v
GRUB开机管理程式: 在系统提示符号下grub command,进入grub mode ,再重设MBR,下setup(hd0),再离开 grub mode,然后reboot (或 reboot 后进入编辑模式设定亦可,请自行 man grub 用法)
2.下载util-linux 2.11版以后的套件
下载网址: http://www.kernel.org/pub/linux/utils/util-linux/
3. 下载e2fsprogs 1.25版以后的套件
下载网址: http://www.rpmfind.net/
下载网址: http://e2fsprogs.sourceforge.net/
4.转换 ext2 的档案系统为 ext3 :
(1)tune2fs -j /dev/hdXX
-j 指建一个 journal file,早期e2fsprogs 的套件并未支援;上述档案系统经此调整后便可挂载为 ext3。
(2)将 /etc/fstab /dev/hdXX 哪一行的 ext2 改为 ext3,例如:
/dev/hda3 / ext2 defaults,errors=remount-ro 0 1
改为
/dev/hda3 / ext3 defaults,errors=remount-ro 0 1
(3)不需要再 umount
5.建立新的ext3的档案系统:
mke2fs -j /dev/hdXX
这样透过 mke2fs 便可以产生新的ext3的档案系统
6.关闭定期档案系统检查的预设期间
tune2fs -i 0 -c 0 /dev/hdxx
一般档案系统检查的预设期间周期为第12次的mount或每180天,作此设定会关闭定期档案系统检查的预设期间
-c 指的是在两次档案系统作检查间隔间的总挂载数,当设为 0时,kernel 会视为不作检查
- i 指interval 设为0 时,会关闭每180天档案系统检查的预设期间
7. root filesystem 的LILO options 设定:
(1) 覆写 ext3 的预设
LILO: linux rootfstype=ext2
(2)使用rootflags options 设定
LILO: linux rootflags=data=journal
8.I/O elevator效能的调整设定:
大部份 Linux 区块设备driver 率皆利用可调整的elevator 运作法则来作 block I/O效能的调整设定,相较于ext2,ext3使用elvtune 程式仅需较小的latency读写数,即可获致较大的throughtput;ext2 的档案系统一般写入一次需30秒,ext3仅需5秒,较有利于硬碟上资料的更新。
RedHat 将latency预设的读写值从8192 read, 16384 write 减半至 4096 read, 8192 write,如果我们要针对特定应用程式作I/O elevator效能的调整, 我们可以在ext3上使用elvtune程式改变elevator设定例如:
# elvtune -r 1024 -w 2048 /dev/sda (write 的latency 通常是read latency 的一半)
如果一开机就要作此调整,可在/etc/rc.d/rc.local档案加入一行elvtune -r 1024 -w