I want to setup multiple similar containers and I want to have de-duplication. The only solution I'm thinking of is to use OpenSolaris ZFS and share zfs volume with NFSv4 ro iSCSI target and create usual ext3 fs on it to use as OpenVZ VE storage.
Any other solutions for de-duplication?
What are your thoughts on that? Pos/Cons?
P.S. I've tried ZFS-fuse and it's consuming a lot of CPU even without significant containers usage. Bad idea anyway and for sure is bad for production Native Linux ZFS port is very unstable now
I've tried both aproaches and can certainly say that for small files linke openvz use (typical OS with lots of libs) iSCSI is many times better than NFS. I've used COMSTAR iSCSI target on Solaris 11 Express. And ext3 works much faster than xfs :)
What about BTRFS? It has cheap snapshots that you can use to have a base OS install, the same for all containers. Here's a (somewhat old, but valid) post about it.
The main concern would be support in your OS. If you're using a recent Debian or Ubuntu, you'll be fine. I think Fedora has good support too. CentOS 5.x has no support (AFAIK), and I don't know if any of the SUSE variants has it (though I guess a recent one should). Anything with a kernel up from 2.6.29 should have it, anyway.
OpenSolaris (now OpenIndiana) is something that I always wanted to try for OpenVZ containers. It could work very well. Keep in mind that you could potentially get better reliability if you mount as NFSv3. I would try all 3: NFSv3, NFSv4, and ISCSI.
I use Linux for everything but not when it comes to NAS. We have 200TB of storage and I found OpenSolaris to be much better at serving NFS. Deduplication, compression, pooled storage, and snapshot come easy with Solaris but all of those don't exist on Linux.
I would not use ZFS-fuse.
Virtuozo de-duplicates OpenVZ containers but you have to pay and it's not Free Software.
Finally, you could try to share the /usr among the containers with bind mounts. See OpenVZ: share a folder between containers