zfs compression and nfs
Markus Gebert
markus.gebert at hostpoint.ch
Mon Feb 2 06:33:44 PST 2009
Andrei Kolu wrote:
>>
>>
>>> Now my "data" is shared with NFS and all servers have access to
>>> "configuration" volume. All NFS clients can write to volume and
>>> show written files over network. What is missing is files from
>>> server side- it does not show any file on compressed volume that
>>> is written by clients over NFS. If I copy same files/directories
>>> to nfs root eg. "data" then I can access files from server. Where
>>> are my files?
>>
>>
>> I don't think this is related to compression.
>>
>> If 'data/' and 'data/configuration' really happen to be different
>> filesystems and you're mounting only 'data/' on the client, the
>> behaviour you're seeing is expected. What's happening is that
>> you're client is able to to see the configuration _directory_
>> inside the mounted 'data/' filesystem. But since the nfsclient
>> won't be able to cross filesystem boundaries on the server (nfs
>> restriction), changing to that directory and writing a file on the
>> client will actually result in the file being written to the
>> 'data/' filesystem on the server (inside it's 'configuration'
>> _directory_). You are not seeing these files on the server, because
>> there 'data/configuration' is actually you're compressed zfs
>> filesysten that never got a write. You should be able to make the
>> lost files visible on the server by umounting 'data/configuration':
>>
>> # zfs umount data/configuration
>>
>> Of course this does not solve your problem. I guess you need to
>> export 'data/configuration' too and mount it on the client.
>>
> But I can see "configuration" directory from NFS client!?
Yes, you can, because that directory is part of the 'data/' filesystem
and used (by zfs on the server) as a mount point for the 'data/
configuration' filesystem.
> If I understand correctly then NFS can't use "filesystem on
> filesystem" for example my case with "data/configuration"?
Well, at least nfsv3 and lower don't have this ability for sure. I
once heard that nfsv4 might do it, but I at least for me, that didn't
work on FreeBSD (tested with 7.0 which has only quite basic nfsv4
support AFAIK). But you can mount all your zfs filesystems on the
client, i.e.:
# mkdir /mnt/data
# mount_nfs -3 server:/data /mnt/data
# mount_nfs -3 server:/data/configuration /mnt/data/configuration
> Can I compress "data" then?
You could, since data is just another zfs filesystem. But if you mount
like stated above, you should already have achieved your goal.
> All other subfilesystems will be compressed also?
'compression' is a zfs property. If you set a property on the top-
level zfs of a pool, then usually it will be inherited by all
filesystems within the pool. But you can override properties for
subfilesystems.
> How can I see what compression ratio I got on compressed filesystem?
# zfs get compressratio data/configuration
btw:
# man zfs
Markus
More information about the freebsd-fs
mailing list