给数据库选择文件系统

如果可能,最好使用日志文件系统,ext3,ext4,xfs,zfs或者jfs。如果不这么做,崩溃后文件系统的检查可能耗费相当长的时间,如果系统不是很重要,非日志文件系统能可能比支持事务好,例如,ext2可能比ext3工作得好,或者可以使用tunefs关闭ext3的日志记录功能,挂在时间对某些文件系统也是一个因素,例如,reiserfs,在一个大的分区上可能用很长时间来挂在和执行日志恢复。

不管哪种文件系统,都有一些特定的选项最好禁用,因为他们没有提供任何好处,反而增加了很多开销,最有名的是记录访问时间的选项,甚至读文件或目录时一要进行一次写操作,在/etc/fstab中添加noatime,nodiratime挂在选项可以禁用此选项,这样做有时候可以提高5%-%10的性能。具体取决定于工作负载和文件系统。下面是/etc/fstab中的一个例子,对ext3选项做设置的行:

/dev/sda2 /usr/lib/mysql  ext3 noatime,nodiratime,data=writeback 0 1

还可以使用文件系统的预读的行为,以为这可能也是多余的,例如innodb有自己的预读策略,所以文件系统的预读就是重复多余的,禁用或者限制预读对slorias的ufs尤其有利,使用o_direct 选项会自动禁用预读。

 

我们建议使用xfs文件系统,ext3文件系统有太多严重的限制(什么限制呢?)例如inode只有一个互斥变量(如何理解呢),并且fsync()时会刷新所有脏块(这个如何理解呢,是刷新文件系统上所有的脏块是吗?文件系统的脏块又该如何理解呢),而不是单个文件?

 

posted on 2014-08-15 05:25  zitong  阅读(662)  评论(0编辑  收藏  举报