NAME
lab 15 - cluster
DESCRIPTION
I'm still curious about layering of filesystems.
Ds(3) was an example I looked at before writing
signalfs. Another example was cryptfs (lab 2). Ds
currently resides in /os/port/devds.b. A while ago
I moved it into /emu/Nt/devds.b but hadn't made
any use of it. I have wanted to use it for a
rudimentary cluster file system. I've ported ds to
limbo to play with distributed files and furher
explore files that a built from layering of other
file systems.
I translated the C code and used styxservers to
manage the simple, one level namespace. Here's
some testing. This is really as much as I've
tested it so far.
% for (i in `{seq 0 9}) {zeros -v $i 1024 8 > /tmp/chunk ^$i}
% echo cat c1 /tmp/chunk2 /tmp/chunk3 >ds/ctl
% echo cat c0 /tmp/chunk0 /tmp/chunk1 >ds/ctl
% echo mirror m0 ds/c0 ds/c1 > ds/ctl
% cat ds/ctl
cat c1 /tmp/chunk2 /tmp/chunk3
cat c0 /tmp/chunk0 /tmp/chunk1
mirror m0 ds/c0 ds/c1
% ls -l ds
--rw-rw-rw- M 36 caerwyn caerwyn 16384 Dec 31 1969 ds/c0
--rw-rw-rw- M 36 caerwyn caerwyn 16384 Dec 31 1969 ds/c1
--rw-rw-rw- M 36 caerwyn caerwyn 0 Dec 31 1969 ds/ctl
--rw-rw-rw- M 36 caerwyn caerwyn 16384 Dec 31 1969 ds/m0
% cat ds/c0 > /tmp/t1
% cat /tmp/t1 > ds/m0
% cmp ds/c0 ds/c1
I read the googlefs paper again today. With that
in mind a cluster file system could be pieced
together using some inferno components.
A kfs(4), or any standard fs, represents the
master namespace. All files contain only a ds
configuration--the chunk IDs and partioning info.
All the inferno nodes write to the master registry
(4) the chunks they will serve. Ds grows files by
reading chunk id's from a master process that uses
the registry to allocate new chunks. A client must
navigate the master namespace to the file
containing the ds configuration and mount ds in
it's namespace. Then it has a distributed file
which communicates directly with the nodes storing
the disks in the network.
CONCLUSION
Not much thought given to the deeper problems. How
would multiple writers on different clients append
to the same file? Here is the source for dsfs.b
Inferno Manual