I have experience with ZFS running on OpenSolaris on a 50TB NFS files server for HPC, so I will answer your questions based on that.
Question 1
What is the CPU overhead of ZFS?
It's very small. It will vary depending on what checksum and compression algorithms you choose and it you enable deduplication. I have all 3 enables with the default options and rarely get my 16 cores to utilize more than 15% each. Keep in mind that compression and dedup also reduce the amount of data that you need to write so things actually endup happening faster at the expense of minor CPU utilization. CPUs are bloody fast nowadays.
Question 2
From what I learned, when ZFS updates files, it keeps the old file
as snapshot, and write the updated
part for the new version. However
that would mean for each snapshot it
keeps that require significant storage
overhead. How much is this storage
overhead? For example, suppose I have
2TB usable space, how much space can
actually be used for the latest
version of files one year later?
The snapshots store only a difference of what's changed. You only start seeing the snapshots take up space if you delete or modify existing data. For mail server that stores mail in plain text that would mean that only the deleted emails will result in overhead in the snapshots. If you accumulate have 1.5GB (after ZFS compression) of emails and 0.5GB were delete over time then you will be able to fit everything into your 2GB zpool no matter how many snapshots you made.
Having 1 or more snapshots means that you will not be able to free up space by deleting files but you can free-up space by deleting snapshots.
ZFS is a transactional fs so even deleting a snapshot will require writing a small log to disk. This means that if your have 0 bytes of free space then you can't delete. I got stuck like that once. So take some care to setup a disk space quota (say 99% of your zpool) so that when you run out of space you will be able actually delete things.
Question 3
Is FreeBSD with ZFS hosting virtualbox serving half dozen busy
guest mission critical mail servers a
reasonable combination? Anything
particular to be careful with? And
can I still choose ZFS for the guest
OSs? This is because I may build
another identical such box for
redundancy, and will need to do some
mirroring between each pair of the
guest systems across the boxes.
I don't know how well VirtualBox will work under this kind of load. You should test the performance before you deploy. Replicating would be the best with zfs send
.
Question 4
I'm trying to configure a Dell R710 for this. From what I learned, I
shouldn't choose any RAID at all, is
that true? In that case, are the
drives still arrive hot swappable?
If you format the drives as JBODs then you can use ZFS's ZRAID. They will be hot swappable.
We have a SAN from LSI and we did not use ZRAID. Instead we relied on the hardware RAID6. There were cases when ZFS detected data corruption and I was able to tell which files were affected. The data was restored later by the hardware but if we had ZRAID the there would not be any visible data corruption at the file level.
Question 5
If I need more space in
the future, I would just hot swap some
drivers with larger capacity to expand
the storage. There is no problem with
these, right?
It's a good question. This would be a problem if you do hardware RAID. On the other hand, ZFS should be able to let you expand like that with ZRAID. I never tired that. When expanding we just add new shelves and create new zpools. Growing an existing zpools would be just as easy as adding new ones.