Xinfeng Liu

http://developers.sun.com.cn/blog/lxf/date/20070816 星期四 八月 16, 2007

正确认识ZFS的blocksize

ZFS缺省的blocksize是128KB。于是有些用户就根据自己的文件大小去修改ZFS的recordsize。这是一个误区。

实际上,blocksize=128KB是最大的块大小。ZFS会根据文件大小选择*适合*的512字节的整数倍作为存储的块大小。如果手工把recordsize调小,将不会得到空间的节省,并且常常会影响性能。ZFS的Block是计算checksum的单位,一个文件用到的block越多,计算checksum以及维护metadata的开销就会越大。

目前ZFS的版本下,只有一种情况需要手工调小recordsize:大文件上的小数据量的更新。常见的情况是数据库的数据文件在ZFS上,并且是做OLTP为主的应用。原因是大文件的blocksize是128KB,如果只更新其中一小部分数据,由于ZFS是copy-on-write的方式来更新数据,这种情况下仍然要读写128KB的数据,造成了不必要的开销。

另外,修改了recordsize后,对之前创建的文件不起作用。

关于Raidz上的数据是如何存放的,将在以后介绍。

/Xinfeng


Comments:

如何能够关闭zfs的cache和预读,zfs的配置中有哪些是与存储相关的呢?
在连续写入大文件时,默认的zfs配置会出现长时间的停顿,是什么原因呢?
谢谢.

Posted by dong.m on 十二月 04, 2007 at 04:44 上午 GMT-08:00 #

Post a Comment:
Comments are closed for this entry.