Linux环境下使用JFS文件系统

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 < jfs-2.4.5-v1.0.4-patch

  打补丁工作完成。

  最后运行

  #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文件系统的支持编译入内核,也可以将其编译成模块加载方式,见以下选择:

  <M> 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到主分区的某个目录下就行了。

Linux环境下使用JFS文件系统的更多相关文章

  1. Linux 环境下一些常用命令(四)

    转自 http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users 31. 命令: rm 'rm ...

  2. Linux环境下实现对文件读写操作

    ---- 今天分享一下在linux系统在实现对文件读写一些基本的操作,在这之前我们要掌握一些基本的技能在Linux环境下.比如查看命令和一个函数的具体用法,就是相当于查手册,在Linux下有一个man ...

  3. Linux环境下如何计算CPU占用率【华为云技术分享】

    1.Linux 环境下查看 CPU 信息 1.1.查看 CPU 详细信息 通过 cat /proc/cpuinfo 命令,可以查看 CPU 相关的信息: [root@rh ~]$ cat /proc/ ...

  4. Linux环境下进程的CPU占用率

    阿里云服务器网站:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=qqwovx6h 文字来源:http://www.s ...

  5. Linux环境下Oracle安装参数设置

    前面讲了虚拟机的设置和OracleLinux的安装,接下来我们来说下Oracle安装前的准备工作.1.系统信息查看系统信息查看首先服务器ip:192.168.8.120服务器系统:Oracle Lin ...

  6. Linux环境下的network IO

    同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. ...

  7. linux 环境下运行STS时 出现must be available in order to run STS

    linux 环境下运行ECLIPSE时 出现 “ A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avai ...

  8. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  9. linux环境下学习使用pro*c/c++工具

    1.proc是oracle用来预编译嵌入SQL语句的c程序. 2.如何使用proc工具 在Linux环境下,首先确保gcc编译器正常使用,安装oracle数据库或者客户端,一般就会默认安装pro*c/ ...

随机推荐

  1. Remove Node in Binary Search Tree 解答

    从BST中移除一个节点是比较复杂的问题,需要分好几种情况讨论. 如这篇文章,就讨论了删除节点 1.有无左右子树 2.只有右子树 3.只有左子树 三种情况. 一种简单些的思维是只考虑删除节点是否有右子树 ...

  2. 数据库版本管理工具Flyway(4.0.3)---工作机制(译文)

    How Flyway works The easiest scenario is when you point Flyway to an empty database. 最容易的方案是Flyway指向 ...

  3. (转)命令行下,用 xcodebuild 生成ipa文件,通过 itms-services 协议安装

    准备工作:已经设置好,xcode中的证书,证书必须是企业级证书,才能通过 itms-services 协议安装 Step 1:  把以下代码保存到一个web目录中,命名为 “auto.plist”,注 ...

  4. Jsp中response对象的所有属性

    所属接口:javax.servlet.http.HttpServletResponse,其父接口是ServletResponse,而且ServletResponse也现在只有唯一一个HttpServl ...

  5. ARC代码和非ARC代码 混用

    选中工程->TARGETS->相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了.然后在相应的文件后面添加:-fobjc-arc参 ...

  6. 自定义listView添加滑动删除功能

    今天研究了一下android里面的手势,结合昨天学习的自定义View,做了一个自定义的listview,继承自listView,添加了条目的滑动手势操作,滑动后出现一个删除按钮,点击删除按钮,触发一个 ...

  7. Java基础知识强化45:StringBuffer类之字符串反转的案例

    1. 案例演示: package cn.itcast_07; import java.util.Scanner; /* * 把字符串反转 */ public class StringBufferTes ...

  8. (转)Newtonsoft.Json序列化和反序列

    这里下载:http://www.newtonsoft.com/products/json/安装:   1.解压下载文件,得到Newtonsoft.Json.dll   2.在项目中添加引用.. 序列化 ...

  9. 武汉科技大学ACM :1009: 零起点学算法63——弓型矩阵

    Problem Description 输出n*m的弓型矩阵 Input 多组测试数据 每组输入2个整数 n和m(不大于20) Output 输出n*m的弓型矩阵,要求左上角元素是1,(每个元素占2个 ...

  10. [每日一题] OCP1z0-047 :2013-07-25 权限――角色与对象权限

    有疑问可以去itpub讨论:http://www.itpub.net/thread-1804842-1-1.html 按题意,操作如下: 1.创建一个角色r1 sys@OCM> create r ...