星期四 八月 16, 2007
Xinfeng Liu
- All
- Java & JES
- MySQL
- 杂谈
- Solaris
- 新闻
正确认识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
Posted at 09:35下午 八月 16, 2007 by xinfeng liu in Solaris | Comments[1]

如何能够关闭zfs的cache和预读,zfs的配置中有哪些是与存储相关的呢?
在连续写入大文件时,默认的zfs配置会出现长时间的停顿,是什么原因呢?
谢谢.
Posted by dong.m on 十二月 04, 2007 at 04:44 上午 GMT-08:00 #