We are planning to use some of the features that ZFS has, such as:
- Snapshots.
- Hierarchy of file systems (each user will have his own).
- Custom user properties.
- Clones.
Is it possible to share all this functionality via NFS to Linux client machines?
UPD: So if it is not possible via NFS, what NFS-like protocol should we use?
I have read Gnu/Linux NFS implementation, especially version 4, is not that reliable but anyway:
Snapshots: They are accessible through the .nfs directory.
Clones: As long as the sharenfs property is inherited, they are automatically visible to clients.
Hierarchy of file systems (each user will have his own): Yes, although this is not that much specific to ZFS.
Custom user properties: Like other zfs properties, they aren't accessible through NFS.
Note that most administrative tasks (file system/clones creation/deletion/configuration) must be done on the server side but snapshot management (creation/renaming/removal) might be delegated to remote users through the .zfs directory if they are granted the required privileges with the "zfs allow" command.
You can create snapshots through NFS by creating directories in the .zfs directory of each dataset. That special directory can be hidden or not (but still accessible).
ZFS is a hierarchical filesystem, just create individual datasets for each user within other datasets (e.g department/user1 department/user2 etc). They will inherit the properties or you can overwrite those too.
With clones you can save some disk space. If all your users need a initial set of files in their directories, put them in a dataset, snapshot it and clone for each user. You won't be able to delete the snapshot while there are clones depending on it.
Custom dataset properties and clones must be managed from the server side. As far as I know, there are proprietary plug-ins that export ZFS specifics to VMware and the like. There is not a distributed FS protocol that will allow that though. You could create a web front-end and let users manipulate them.