Which configuration for zfs? A real world example

After downloading and splitting my Steam Library I wondered what the best configuration would be for the zvols used.

Since compression can only be measured by actual compressing, I created for each game its own zvols with different compression algorithms and chunksizes.

Why different chunk sizes?

  1. Matching the chunksize with the ntfs, its a big performance gain
  2. Chunksizes of the filesystem influences the amount of “wasted” storage
  3. Chunksizes have effect on compression effectiveness

To improve writespeed I created a ZFS-Pool on a ramdisk.

How a datapoint was created:

  • Create a zvol for each compression algorithm, compression level and chunksize
  • Create parition on it and format it as ntfs with matching chunksize
  • Use rsync to copy data to new created partition
  • Write output of zfs list -H -p -o name,volsize,referenced,volblocksize,compression,compressratio zvol_name_for_configuration

After this the whole thing is converted to a JSON-file. That way it can easily be parsed using the jq command or with javascript.

A nice formatted page of the data is here.