FS-Cache and FUSE for Media Playback QoS
Listing 8. Running simpleread against the FUSE Shim
# rm -rf /var/fscache/* # /etc/init.d/cachefilesd restart # mount fileserver:/HomeMovies /HomeMovies -o fsc # nfs-fuse-readahead-shim --fuse-forground \ -u /HomeMovies /Cached-HomeMovies \ >|/tmp/nfs-fuse-out 2>&1 \ & # simpleread /Cached-HomeMovies/venice-2001.dv 1000 using delay of usec:1000 offset:262144 offset:524288 ^C # fg ^C #
The simpleread was stopped after reading only a little more than half a megabyte. However, the FUSE module has an asynchronous IO call at the start, requesting 8MB of data be sent to it. Poking around in /var/fscache for a file with the same size as venice-2001.dv should reveal the cache file. Comparing the first 8MB of this cache file to the version on the NFS share should show that the first 8MB is identical. Note that the local cached file is read first to make sure that the subsequent use of the NFS share does not populate the cache file before it is read. This is shown in Listing 9.
Listing 9. Checking That the Cache Has Read the First 8MB
# cd /var/fscache # ll -R ... ---------- 1 root root 800M Jun 10 02:19 Ek0...000000 # dd if=./path/to/Ek0...000000 \ of=/tmp/8mb bs=1024 count=8192 # dd if=/HomeMovies/venice-2001.dv \ of=/tmp/8mb.real bs=1024 count=8192 # diff /tmp/8mb.real /tmp/8mb #
One restriction on FS-Cache is that it will not cache files opened with O_DIRECT or for writing.
By taking advantage of the kernel FS-Cache code, the FUSE module to handle read-ahead can be very simple to create. The Delegatefs C++ FUSE base class allows one to implement additional features very easily when applications perform IO.
The FUSE nfs-fuse-readahead-shim module is started just as shown in Listing 8 and when the --fuse-forground option is not passed, nfs-fuse-readahead-shim runs silently as a dæmon.
Filesystem in USErspace (FUSE): fuse.sourceforge.net
fuselagefs and Delegatefs: sourceforge.net/project/showfiles.php?group_id=16036&package_id=225200
NFS and fscache Kernel Patches: people.redhat.com/~dhowells/cachefs/patches
Ben Martin has been working on filesystems for more than ten years. He is currently working toward a PhD combining Semantic Filesystems with Formal Concept Analysis to improve human-filesystem interaction.
One Click, Universal Protection: Implementing Centralized Security Policies on Linux Systems
Join editor Bill Childers and Bit9's Paul Riegle on April 27 at 12pm Central to learn how to keep your Linux systems secure.
Free to Linux Journal readers.Register Now!
- Considering Legacy UNIX/Linux Issues
- Cluetrain at Fifteen
- [<Megashare>] Watch Mrs Brown's Boys Movie Online Full Movie HD 2014
- Python Scripts as a Replacement for Bash Utility Scripts
- Memory Ordering in Modern Microprocessors, Part I
- Getting Good Vibrations with Linux
- Security Hardening with Ansible
- New Products
- Putlocker!! Watch Begin Again Online 2014 Streaming Full Movie
- RSS Feeds