有关FreeBSD的几点误区( 二 )


证元数据的更新按照安全的数据顺序更新,这样即使出现故障,也如同日志文件系统类
似,只会出现最终改变的一些文件错误或丢失,而不会出现严重错误 。
从这个本质角度出发,softupdate其实是和日志文件系统用来解决同一类问题的两种不
同方法,只不过日志文件系统是使用日志的方法来解决依赖关系的顺序问题,而softup
date则需要重新排序元数据,softupdate功能上非常类似于元数据日志文件系统 。有了
softupdate,系统就可以全面支持异步的磁盘读写,提供更好的文件系统性能 。
此外,FreeBSD目前还提供了诸如后台磁盘检查,就是说可以在后台执行磁盘检查,而不
影响前台执行磁盘访问,这样就使得系统出现故障时更短的时间恢复正常服务 。目前Fr
eeBSD系统甚至可以提供包括快照(snapshot)在内的高级文件系统功能 。
因此,虽然FreeBSD;下目前没有日志文件系统,但事实上已经提供了类似日志文件系统
的功能,因此完全可以满足不同的高端需求 。

2.;FreeBSD的磁盘读写性能差,不适合大量存储数据的情况

很多来自网上的文章都告诉读者,FreeBSD虽然在其他方面具备一定的优势,但磁盘读写
速度差,特别是在使用IDE磁盘的时候 。
如果把这个观点放在FreeBSD;2.2.x之前,也许还有些道理,那个时候FreeBSD为了保证
文件系统的安全性,是使用同步的方法访问磁盘,显然要比linux等以异步的方法访问磁
盘要慢的多 。但在FreeBSD;3.x之后,系统已经全面支持softupdate,那么性能的改善就
可想而知了 。
当然,为了保证数据安全,FreeBSD缺省还关闭一些硬件的性能选项,例如IDE磁盘通常
有一个内部的缓冲区,具备在磁盘设备本身对数据进行缓冲的功能,原则上,这个功能
是非常危险的,因为它在磁盘内部实现,系统无法告诉它那些数据是元数据,不能缓冲
或者必须顺序写入等等,有些高端磁盘通常具备电池,保证磁盘内部的缓冲能在突然掉
电的情况下写回磁盘,但普通的磁盘显然没有这个能力 。因此,FreeBSD实际上缺省是关
闭这样的功能的,并不推荐使用,但是,如果是追求性能的话,打开这些功能也是可以
的,只不过就要冒丢失数据的风险了 。
很多FreeBSD用户还注意到,安装FreeBSD的时候,磁盘读写性能的确比较慢,尤其是在
安装Ports;Collection部分的时候 。这是因为目前FreeBSD的安装系统还没有立即支持s
oftupdate,没有充分发挥这个性能优势,对于Ports;Collection这个包含大量小文件,
需要巨大数量的I节点元数据改变的磁盘访问需要,速度慢一些是正常的 。未来的安装系
统将缺省支持softupdate,安装速度会得到改善 。
安装系统的磁盘访问慢还有一个更深层次的原因,就是安装系统的打包方式与普通方式
不同,例如一个多级子目录aa/bb/cc/dd,普通的打包数据方法是先打包aa,接着是aa/
bb,aa/bb/cc,最后是aa/bb/cc/dd,这样在解开的时候就顺序进行,但安装系统的打包
方式却与此相反,那么,这样再解开的时候就需要额外的处理,子目录层次越多,需要
的额外磁盘访问就越多 。FreeBSD系统采用这种打包方法,主要是确保升级时的文件展开
的正确性,虽然使用正常的打包顺序在绝大多数情况下也不会有问题 。
即便如此,在最新一次FreeBSD和Linux的对比测试中(FreeBSD;4.3对Linux;2.4.10),
使用同样的硬件并进行优化之后,FreeBSD在提供静态HTML方面要比Linux差几个百分点
,而在提供动态CGI方面要比Linux高几个百分点 。原则上,这就表明在磁盘I/O方面,F
reeBSD还是有几个百分点的差距 。
对于这一点,首先需要指出的是,FreeBSD的softupdate异步方式,和Linux的ext2fs的

推荐阅读