Installation guide
Chapter 11. FS-Cache
80
Here, /home/fred and /home/jim will likely share the superblock as they have the same options,
especially if they come from the same volume/partition on the NFS server (home0). Now, consider the
next two subsequent mount commands:
mount home0:/disk0/fred /home/fred -o fsc,rsize=230
mount home0:/disk0/jim /home/jim -o fsc,rsize=231
In this case, /home/fred and /home/jim will not share the superblock as they have different
network access parameters, which are part of the Level 2 key. The same goes for the following mount
sequence:
mount home0:/disk0/fred /home/fred1 -o fsc,rsize=230
mount home0:/disk0/fred /home/fred2 -o fsc,rsize=231
Here, the contents of the two subtrees (/home/fred1 and /home/fred2) will be cached twice.
Another way to avoid superblock sharing is to suppress it explicitly with the nosharecache
parameter. Using the same example:
mount home0:/disk0/fred /home/fred -o nosharecache,fsc
mount home0:/disk0/jim /home/jim -o nosharecache,fsc
However, in this case only one of the superblocks will be permitted to use cache since there is nothing
to distinguish the Level 2 keys of home0:/disk0/fred and home0:/disk0/jim. To address this,
add a unique identifier on at least one of the mounts, i.e. fsc=unique-identifier. For example:
mount home0:/disk0/fred /home/fred -o nosharecache,fsc
mount home0:/disk0/jim /home/jim -o nosharecache,fsc=jim
Here, the unique identifier jim will be added to the Level 2 key used in the cache for /home/jim.
11.3.2. Cache Limitations With NFS
Opening a file from a shared file system for direct I/O will automatically bypass the cache. This is
because this type of access must be direct to the server.
Opening a file from a shared file system for writing will not work on NFS version 2 and 3. The protocols
of these versions do not provide sufficient coherency management information for the client to detect a
concurrent write to the same file from another client.
As such, opening a file from a shared file system for either direct I/O or writing will flush the cached
copy of the file. FS-Cache will not cache the file again until it is no longer opened for direct I/O or
writing.
Furthermore, this release of FS-Cache only caches regular NFS files. FS-Cache will not cache
directories, symlinks, device files, FIFOs and sockets.
11.4. Setting Cache Cull Limits
The cachefilesd daemon works by caching remote data from shared file systems to free space
on the disk. This could potentially consume all available free space, which could be bad if the disk
also housed the root partition. To control this, cachefilesd tries to maintain a certain amount of free
space by discarding old objects (i.e. accessed less recently) from the cache. This behavior is known
as cache culling.