User-space file system for Conduant StreamStor
A read-only filesystem for the Conduant StreamStor disk recorders. These recorders are used in Mark5, one of the several types of astronomic and geodetic VLBI data storage computers.
This file system provides normal file access to the data stored on the recorder diskpack(s). It works in normal kernel 2.4 and kernel 2.6 on normal Linux distros. On a Mark5 the file system makes any 'disk2file' step obsolete, as you no longer have to copy scans out onto disk before you can access them. In addition scans become accessible to normal software for FTP, Tsunami UDP, Grid-FTP, UDT, NFS or cluster export, data processing such as correlation, Matlab, and so on.
Of the Haystack recorders Mark5A, Mark5B(+) and now Mark5C are supported. Haystack has also another fuseMk5 that provides Mark5C support and it comes preinstalled on the Mark5C.
The file system is implemented via FUSE. FUSE is part of every usual Linux distro. It is a generic library and kernel module that makes writing and debugging file systems very easy. It is used by many other user-space file systems such as GridFS, sshfs, ZFS for Linux and iFuse.
Source code access
Currently no binaries are distributed, because the Conduant StreamStor library licensing scheme is not clear on binary redistribution. For this reason you have to compile fuseMk5 from the sources. Please use the git repository to access source code.
You can check out source code with
git clone git://git.code.sf.net/p/fusemk5a/git fusemk5a-git
and can update an already checked-out copy later with
cd fusemk5a-git
git pull
Compiling
The instructions for compiling fuseMk5 and its utilities can be found in the README together with the source code. Basically,
edit Makefile # check Conduant driver path SDK_DIR, check library version is correct (e.g. libwdapi1150.so)
make -j
make install
Programs
fuseMk5 : file system emulation for Mark5A/B/B+/C disk modules
maxspeed : test the maximum read performance from module
rawread : try to read a broken disk module without user directory
diskpack2scanlist : try to detect scans from a disk module without user directory
difxdirfile2userdir.py : recover a user directory via existing DiFX directory file
fslog2userdir.py : recover a user directory via FieldSystem log
writeuserdir : write binary user directory file onto module in bank A
Known limitations and issues
Development ideas
In principle, the StreamStor PCI-X board could be replaced with 4 x PCI Express IDE/PATA cards that support two devices (master, slave)
on a single IDE cable. This would bypass the 1.4 Gbit/s limitation of the PCI-X bus and should increase playback speed to 3+ Gbit/s.
This would additionally restore the capability for fill-pattern insertion and allow playback of partially broken modules again.
At JIVE the disks of a module were found to contain 65536-byte blocks. The first 8 byte of each block are an unused 32-bit
integer, followed by a 28-bit block sequence number (for de-striping / gather) and a 4-bit filler. The user directory is found at the end
of every disk at 11272704 bytes before the end of the disk.