在本地文件系统ext3上跑filebench

在本地文件系统ext3上跑filebench

         在本地文件系统上跑filebench,在ext3代码中添加printk打印出想要的信息。

1.     修改ext3文件系统

由于根文件系统是ext3,需修改文件系统名称不是ext3,这样后面的加载ext3模块才能成功,不然会报file exist。

先从/usr/src/linux-…../目录下拷贝一份ext3的代码,都是对这个代码做修改。

不清楚为什么需要改这三处,但还是改了,第一处是/ext3/super.c文件,结构体struct file_system_type ext3_fs_type,修改文件系统名称为phenixfs,第二处是函数init_inodecache(),kmem_cache_create("ext3_inode_cache",修改为phenixfs_inode_cache;第三处是xattr.c文件函数init_ext3_xattr,修改为如下ext3_xattr_cache = mb_cache_create("phenixfs_xattr"。

2.     编译

修改完成编译,执行make –C /usr/src/linux  SUBDIRS=$PWD modules。;

另外建议阅读下这篇博客:

        http://blog.csdn.net/qljessica123/article/details/38010579

        编译时,在makefile文件中,添加KERNELDIR := /usr/sr/linux,最后一行添加default:

make –C $(KERNELDIR) M=$(PWD) modules。这样,直接执行make命令就可以编译。还可以在makefile文件中做修改。

3.     加载模块

加载2编译生成的ext3.ko文件,先修改名称为phenixfs.ko,insmod时发现报错,-1 invalid module format,dmesg查看信息,ext3 : unknown symbol journal,大概有几十个。开始怀疑是因为这些函数原ext3是导出的,现在没有导出,看看又不是,各种google和baidu发现是模块依赖,加载ext3模块前需要先加载两个其他模块。

加载mbcache和jbd模块:

再加载phenixfs.ko,OK。

4.     格式化文件系统

mkfs.ext3 /dev/sdb,我是添加了一块新硬盘格式化成ext3,而不是格式化成phenixfs。

5.     挂载文件系统到挂载点

格式化成功后,挂载磁盘上的文件系统到挂载点。

如果你仍挂载ext3,就会报unknown filesystem。

              最后,按照上面描述的步骤进行,如果你是CentOS,则挂载成功,到此结束。如果你是悲催的SUSE系统,则不好意思,编译就会报错如下:

即使是仅仅从/usr/src/linux/fs/ext3 拷贝到当前目录下,也是会有同样的问题的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值