JFS是IBM公司为linux系统开发的一个日志文件系统。从IBM的实力及它对Linux的态度来看,JFS应该是未来日志文件系统中最具实力的一个文件系统。
JFS提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的。JFS 能够在几秒或几 分钟内就把文件系统恢复到一致状态。JFS能够保证数据在任何意外宕机的情况下,不会造成磁盘数据的丢失与损坏。
一、JFS文件系统特点
1.存储空间更大
JFS 支持的最小文件系统是 16M 字节。最大文件系统的大小为 512 万亿字节(TB)。JFS 是真正意义上的 64 位的文件系统。所有 JFS 文件系统结构化字段都是 64 位大小。
2.动态磁盘 inode 分配
JFS 按需为磁盘 inode 动态地分配空间,释放不再需要的空间。这种方式避开了在文件系统创建期间,为磁盘 inode 保留固定数量空间的传统方法。用户不需要考虑文件系统包含的文件和目录最大数目。
3.基于盘区的寻址结构
JFS 使用基于盘区的寻址结构,JFS 分配尝试通过分配最小数量的盘区策略,而使每个盘区尽可能大。这有利于大的 I/O 传送,磁盘读写性能所有提高。
4.块尺寸可变
JFS 支持 512、1024、2048 和 4096 字节的块尺寸,允许用户根据应用环境优化空间利用率。较小的块尺寸减少有利于内部存储碎片的数量,提高空间利用率。系统缺省块尺寸为 4096 字节。
二、使用JFS文件系统
1.编译内核以支持JFS文件系统
首先下载最新的2.4.x 核心,然后下载JFS系统软件包,名称为:jfs-x.y.z-patch.tar.gz。 将下载文件存放在/usr/src目录中。
在/usr/src/上当目录下解开jfs的软件包
# tar –zxvf jfs-2.4-1.0.4.tar.gz
# tar –zxvf jfs-2.4-1.0.4-patch.tar.gz
得到四个文件:
jfs-2.4.common-v1.0.4-patch
jfs-2.4.7-v1.0.4-patch
jfs-2.4.5-v1.0.4-patch
jfs-2.4.0-v1.0.4-patch
其中,jfs-2.4.common-v1.0.4-patch文件用于所有的2.4核心,jfs-2.4.0-v1.0.4-patch用于2.4.0-2.4.2。jfs-2.4.5-v1.0.4-patch可用于核心2.4.5及2.4.6。
注意仔细阅读README文件,不要用错了patch文件
接着是为核心打补丁:
# patch –p1
打补丁工作完成。
最后运行
#make menuconfig
将新的文件系统加入了核心编译配置文件中,要进行以下内核配置:
使用make menuconfig 在菜单"Code maturity level options"中,选择"Prompt for development and/or incomplete code/drivers."选项。然后,进入文件系统菜单"File systems",选择"JFS filesystem support."选项。配置核心,使核心支持JFS文件系统。配置核心的其它选项。
JFS filesystem support
##将JFS文件系统的支持编译入内核,也可以将其编译成模块加载方式,见以下选择:
JFS filesystem support
笔者建议将JFS文件系统支持直接编译进内核,这有利于提高系统性能。
然后编译核心:
#make dep
#make clean
#make bzImage
#make modules
#make modules_install
#cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.5-jfs
最后,编辑 /etc/lilo.conf 文件,加入新内核条目,以便使用新的内核引导系统。如下所示,在 lilo.conf文件中加入以下几行内容:
image=/boot/vmlinuz-2.4.5-jfs
label=jfs
read-only
root=/dev/hda5
然后运行lilo,使更改生效。
#lilo
三、创建JFS文件系统
1.查看系统对JFS文件系统的支持
如果新的内核正确启动,这说明核心已支持JFS文件系统了。查看系统进程,可以看到以下进程:
#lsmod
7 ? SW 0:00 [jfsIO]
8 ? SW 0:00 [jfsCommit]
9 ? SW 0:00 [jfsSync]
如果你看到了以上这几个进程,这表明系统核心已支持JFS文件系统。
另外,在/proc/fs/jfs 目录下应该还有三个文件:
jfsFYI
logmgr
TxAnchor
2.下载编译JFS文件系统工具
为了使用JFS文件系统,我们还需要创建文件系统的工具,到IBM的JFS网站下载相应工具jfsutils-1.0.7.tar.gz软件包。
编译安装过程如下:
#tar –zxvf jfsutils-1.0.7.tar.gz
#cd jfsutils-1.0.7
#./configure
#make
#make install
安装完成后,在/usr/sbin中就多出一个 可执行文件mkfs.jfs,我们就用它将分区格式化成jfs文件系统。
3.创建JFS文件系统
以下开始创建一个JFS文件系统, 将hda6分区格式化成JFS文件系统,以下为格式化时显示的内容:
#mkfs -t jfs /dev/hda6
mkfs.jfs development version: $Name: v0_3_1 $
Warning! All data on device /dev/hda6 will be lost!
Continue? (Y/N) y
\
Format completed successfully.
5120608 kilobytes total disk space.
运行完成后,JFS文件系统已经在hda6分区创建完成了。
4.加载JFS文件系统
首先,创建一个目录jfs,以便将JFS文件系统mount到其上:
#mkdir jfs
将新的分区mount到jfs目录下:
#mount –t jfs /dev/hda6 /jfs
这样,新的文件系统就加载到/jfs目录下了。现在可以使用新的文件系统了。
四、使用JFS文件系统
1.普通分区使用JFS文件系统
Linux内核支持了JFS文件系统后,可以将磁盘所有分区均格式化为JFS文件系统。通常情况下,建议/usr,/usr/sbin等分区采用非日志文件系统,而在那些对读写要求频繁的分区上使用JFS文件系统。这有利于提高系统性能。
2.主引导区使用JFS文件系统
主分区为linux的启动分区,其中存放了系统启动所需的基本文件。以下开始将JFS文件系统用于主分区,首先备份主分区上的所有常用文件目录:
#cd /
#cp -a bin etc lib boot dev home usr var [...] /jfs
#mkdir /jfs/proc
在使用JFS文件系统启动之前,还应该更改/etc/fstab文件,将相应的分区用作根分区。如下所示:原来的根分区为:
LABEL=/ / ext2 defaults 1 1
应该更改为:
/dev/hda6 / jfs defaults 1 1
然后,编译/etc/lilo.conf文件,将主引导分区更改为/dev/hda6。置label为jfs,将缺省的启动设置为jfs。
如下所示:
default=jfs
...
image=/boot/vmlinuz-2.4.0-jfs
label=jfs
read-only
root=/dev/hda6
然后,运行lilo,完成。
最后,reboot 系统,启动之后,你就得到一个纯jfs文件系统的linux环境了,剩下的事情就是将原来的主分区重新格式化成 jfs,然后再将其mount到主分区的某个目录下就行了。
JFS提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的。JFS 能够在几秒或几 分钟内就把文件系统恢复到一致状态。JFS能够保证数据在任何意外宕机的情况下,不会造成磁盘数据的丢失与损坏。
一、JFS文件系统特点
1.存储空间更大
JFS 支持的最小文件系统是 16M 字节。最大文件系统的大小为 512 万亿字节(TB)。JFS 是真正意义上的 64 位的文件系统。所有 JFS 文件系统结构化字段都是 64 位大小。
2.动态磁盘 inode 分配
JFS 按需为磁盘 inode 动态地分配空间,释放不再需要的空间。这种方式避开了在文件系统创建期间,为磁盘 inode 保留固定数量空间的传统方法。用户不需要考虑文件系统包含的文件和目录最大数目。
3.基于盘区的寻址结构
JFS 使用基于盘区的寻址结构,JFS 分配尝试通过分配最小数量的盘区策略,而使每个盘区尽可能大。这有利于大的 I/O 传送,磁盘读写性能所有提高。
4.块尺寸可变
JFS 支持 512、1024、2048 和 4096 字节的块尺寸,允许用户根据应用环境优化空间利用率。较小的块尺寸减少有利于内部存储碎片的数量,提高空间利用率。系统缺省块尺寸为 4096 字节。
二、使用JFS文件系统
1.编译内核以支持JFS文件系统
首先下载最新的2.4.x 核心,然后下载JFS系统软件包,名称为:jfs-x.y.z-patch.tar.gz。 将下载文件存放在/usr/src目录中。
在/usr/src/上当目录下解开jfs的软件包
# tar –zxvf jfs-2.4-1.0.4.tar.gz
# tar –zxvf jfs-2.4-1.0.4-patch.tar.gz
得到四个文件:
jfs-2.4.common-v1.0.4-patch
jfs-2.4.7-v1.0.4-patch
jfs-2.4.5-v1.0.4-patch
jfs-2.4.0-v1.0.4-patch
其中,jfs-2.4.common-v1.0.4-patch文件用于所有的2.4核心,jfs-2.4.0-v1.0.4-patch用于2.4.0-2.4.2。jfs-2.4.5-v1.0.4-patch可用于核心2.4.5及2.4.6。
注意仔细阅读README文件,不要用错了patch文件
接着是为核心打补丁:
# patch –p1
打补丁工作完成。
最后运行
#make menuconfig
将新的文件系统加入了核心编译配置文件中,要进行以下内核配置:
使用make menuconfig 在菜单"Code maturity level options"中,选择"Prompt for development and/or incomplete code/drivers."选项。然后,进入文件系统菜单"File systems",选择"JFS filesystem support."选项。配置核心,使核心支持JFS文件系统。配置核心的其它选项。
JFS filesystem support
##将JFS文件系统的支持编译入内核,也可以将其编译成模块加载方式,见以下选择:
JFS filesystem support
笔者建议将JFS文件系统支持直接编译进内核,这有利于提高系统性能。
然后编译核心:
#make dep
#make clean
#make bzImage
#make modules
#make modules_install
#cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.5-jfs
最后,编辑 /etc/lilo.conf 文件,加入新内核条目,以便使用新的内核引导系统。如下所示,在 lilo.conf文件中加入以下几行内容:
image=/boot/vmlinuz-2.4.5-jfs
label=jfs
read-only
root=/dev/hda5
然后运行lilo,使更改生效。
#lilo
三、创建JFS文件系统
1.查看系统对JFS文件系统的支持
如果新的内核正确启动,这说明核心已支持JFS文件系统了。查看系统进程,可以看到以下进程:
#lsmod
7 ? SW 0:00 [jfsIO]
8 ? SW 0:00 [jfsCommit]
9 ? SW 0:00 [jfsSync]
如果你看到了以上这几个进程,这表明系统核心已支持JFS文件系统。
另外,在/proc/fs/jfs 目录下应该还有三个文件:
jfsFYI
logmgr
TxAnchor
2.下载编译JFS文件系统工具
为了使用JFS文件系统,我们还需要创建文件系统的工具,到IBM的JFS网站下载相应工具jfsutils-1.0.7.tar.gz软件包。
编译安装过程如下:
#tar –zxvf jfsutils-1.0.7.tar.gz
#cd jfsutils-1.0.7
#./configure
#make
#make install
安装完成后,在/usr/sbin中就多出一个 可执行文件mkfs.jfs,我们就用它将分区格式化成jfs文件系统。
3.创建JFS文件系统
以下开始创建一个JFS文件系统, 将hda6分区格式化成JFS文件系统,以下为格式化时显示的内容:
#mkfs -t jfs /dev/hda6
mkfs.jfs development version: $Name: v0_3_1 $
Warning! All data on device /dev/hda6 will be lost!
Continue? (Y/N) y
\
Format completed successfully.
5120608 kilobytes total disk space.
运行完成后,JFS文件系统已经在hda6分区创建完成了。
4.加载JFS文件系统
首先,创建一个目录jfs,以便将JFS文件系统mount到其上:
#mkdir jfs
将新的分区mount到jfs目录下:
#mount –t jfs /dev/hda6 /jfs
这样,新的文件系统就加载到/jfs目录下了。现在可以使用新的文件系统了。
四、使用JFS文件系统
1.普通分区使用JFS文件系统
Linux内核支持了JFS文件系统后,可以将磁盘所有分区均格式化为JFS文件系统。通常情况下,建议/usr,/usr/sbin等分区采用非日志文件系统,而在那些对读写要求频繁的分区上使用JFS文件系统。这有利于提高系统性能。
2.主引导区使用JFS文件系统
主分区为linux的启动分区,其中存放了系统启动所需的基本文件。以下开始将JFS文件系统用于主分区,首先备份主分区上的所有常用文件目录:
#cd /
#cp -a bin etc lib boot dev home usr var [...] /jfs
#mkdir /jfs/proc
在使用JFS文件系统启动之前,还应该更改/etc/fstab文件,将相应的分区用作根分区。如下所示:原来的根分区为:
LABEL=/ / ext2 defaults 1 1
应该更改为:
/dev/hda6 / jfs defaults 1 1
然后,编译/etc/lilo.conf文件,将主引导分区更改为/dev/hda6。置label为jfs,将缺省的启动设置为jfs。
如下所示:
default=jfs
...
image=/boot/vmlinuz-2.4.0-jfs
label=jfs
read-only
root=/dev/hda6
然后,运行lilo,完成。
最后,reboot 系统,启动之后,你就得到一个纯jfs文件系统的linux环境了,剩下的事情就是将原来的主分区重新格式化成 jfs,然后再将其mount到主分区的某个目录下就行了。