首页 > *nix技术, Shell命令, 文件系统 > ext4禁用日志功能

ext4禁用日志功能

2012年2月2日 发表评论 阅读评论 16,466 次浏览

ext4提供有很多特性,当然有一些是前一代文件系统ext3本身就具有的,比如日志功能,但有时候我们却并不需要这些特性,则我们可以禁用它们。ext4文件系统的日志功能就是在牺牲一定性能的情况下增强稳定性的一种手段,但在一些情况,比如Web Server上存在的大量小文件所在的文件系统就是一个典型示例,此时可以禁用ext4的日志功能。

要使用ext4文件系统需要先打开内核对应的编译选项:

[root@localhost linux-2.6.36]# cat .config | grep EXT4
CONFIG_EXT4_FS=m
CONFIG_EXT4_FS_XATTR=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
CONFIG_EXT4_DEBUG=y
[root@localhost linux-2.6.36]# 

然后下载对应的应用层工具:http://e2fsprogs.sourceforge.net/,“./configure,make,make install”编译获得相应的命令工具:

[root@localhost misc]# pwd
/home/lenky/ext4/tools/e2fsprogs-1.42/misc
[root@localhost misc]# md5sum mke2fs 
a2aff0475abb34abdf86f7946b071b38  mke2fs
[root@localhost misc]# md5sum /sbin/mkfs.ext4
a2aff0475abb34abdf86f7946b071b38  /sbin/mkfs.ext4
[root@localhost misc]# 

禁用日志功能可以在创建ext4文件系统时就指定:

[root@localhost ext4]# mkfs.ext4 -O ^has_journal /dev/sdd1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048233 blocks
52411 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done 

[root@localhost ext4]# dumpe2fs /dev/sdd1 | grep 'Filesystem features' | grep 'has_journal'
dumpe2fs 1.42 (29-Nov-2011)
[root@localhost ext4]#

或动态(即在ext4文件系统已经创建后)指定,比如打开日志功能:

[root@localhost ext4]# tune2fs -O has_journal /dev/sdd1
tune2fs 1.42 (29-Nov-2011)
Creating journal inode: done
[root@localhost ext4]# dumpe2fs /dev/sdd1 | grep 'Filesystem features' | grep 'has_journal'
dumpe2fs 1.42 (29-Nov-2011)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
[root@localhost ext4]# 

再关闭:

[root@localhost ext4]# tune2fs -O ^has_journal /dev/sdd1
tune2fs 1.42 (29-Nov-2011)
[root@localhost ext4]# dumpe2fs /dev/sdd1 | grep 'Filesystem features' | grep 'has_journal'
dumpe2fs 1.42 (29-Nov-2011)
[root@localhost ext4]# 

动态关闭和打开日志功能后可能需要对文件系统进行fsck检查,避免出错:

[root@localhost ext4]# fsck.ext4 -f /dev/sdd1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdd1: 11/262144 files (0.0% non-contiguous), 18510/1048233 blocks
[root@localhost ext4]# 

更多ext4特性的开启与关闭可以查看man手册:“man mkfs.ext4”的-O选项。

禁用ext4的日志功能后有少许的性能提升:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0390131ba84fd3f726f9e24fc4553828125700bb

结果拷贝过来为:
测试方案:iozone -T -t 4 s 2g -r 256k -T -I -i0 -i1 -i2
测试结果:

  ext2 ext4, default ext4, no journal
initial writes 13.0 MB/s 15.4 MB/s 15.7 MB/s
rewrites 13.1 MB/s 15.6 MB/s 15.9 MB/s
reads 15.2 MB/s 16.9 MB/s 17.2 MB/s
re-reads 15.3 MB/s 16.9 MB/s 17.2 MB/s
random readers 5.6 MB/s 5.6 MB/s 5.7 MB/s
random writers 5.1 MB/s 5.3 MB/s 5.4 MB/s

转载请保留地址:http://www.lenky.info/archives/2012/02/990http://lenky.info/?p=990


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。