on st_blksize value

Bob Friesenhahn bfriesen at simple.dallas.tx.us
Wed Mar 24 17:02:44 UTC 2010


On Wed, 24 Mar 2010, Andrew Snow wrote:

> Not strictly true: in ZFS the recordsize setting is for the maximum size of a 
> record, it can still write smaller than this.  If you overwrite 1K in the 
> middle of a 128K record then it should just be writing a 1K block.  Each 
> block has its own checksum attached to it so there's no need to recalculate 
> checksums for data that isn't changing.

This is not true.  In fact, simple testing will show that it is 
clearly not true.

ZFS will always write recordsize blocks except that the tail block is 
allowed to be smaller.  If compression is enabled, the block is stored 
in its compressed size, so the amount actually stored on disk may be 
less than the established recordsize.

Due to ZFS's read-modify-write strategy, it is important to 
performance that the data to be modified be cached in the ARC.  There 
will still be write amplification if the update size is smaller than 
the recordsize.

Bob
--
Bob Friesenhahn
bfriesen at simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/


More information about the freebsd-fs mailing list