Nomad is a distributed file system supporting disconnected operation.
The current goals include:
Once these are done, we will reevaluate the next set of goals.
First, you need to get the code itself. Since Nomad is under heavy development, there are no releases yet. So, for now you have to clone it using Mercurial:
$ hg clone http://hg.31bits.net/nomad/
Now that you have all the necessary code, you can build it.
$ cmake -DCMAKE_INSTALL_PREFIX=/prefix . $ make $ make install
This will build and install the binaries and libraries under the specified prefix.
You can also define the following cmake variables to help it find libjeffpc.
WITH_JEFFPC_LIB=<directory containing libjeffpc.so> WITH_JEFFPC_INCLUDES=<directory containing jeffpc/jeffpc.h>
/path yields the same effect as setting both:
$ cmake -DCMAKE_INSTALL_PREFIX=/prefix -DWITH_JEFFPC=/opt/jeffpc .
First you need to create a config file. For an example along with a
description of the syntax refer to
Either place the config file at
/etc/nomad.conf or set the
environment variable to the config file's location. All nomad executables
that require a config file check the environment variable, and if not set
they fall back to the hardcoded
$ export NOMAD_CONFIG=/some/where/nomad.conf $ nomadadm host-id 0xabcdefab
First, start the client daemon (
nomad-client). It will start listening on
a TCP/IP socket:
nomadadm to create a vdev and a volume on that vdev. For
$ nomadadm vdev-create -t posix /path/to/data/dir $ nomadadm vol-create $vdev_uuid_from_previous_command
Finally, you can mount the freshly created volume:
# VOL=$vol_uuid_from_nomadadm \ nomadfs -o allow_other -o default_permissions /mnt/nomad
| common | objstore -------------+--------+---------- common | - | n objstore | n | - objs. module | ? | n client | y | y server | n | n tool | n | n y = yes, linked against n = no, not linked against - = not applicable ? = may be linked against as necessary