OceanStore is an architecture for a global-scale file system which uses erasure coding, cryptography, and Byzantine agreement to provide available, highly durable storage in a peer-to-peer environment.
The main script used to start up OceanStore nodes is run-experiment, found in the run directory. Most of the benchmark scripts rely on run-experiment, so the information on this page applies more or less directly to them as well. This script takes an experiment file as input. That file describes what sort of OceanStore nodes to create and where to run them; we'll describe that file below.
run-experiment can configure and run hundreds of virtual OceanStore nodes on dozens of remote machines. It coordinates sharing information across config files, pushing data to remote sites, monitoring remote processes, and cleaning up all sites afterward.
Most of the real work is handled by a shared Perl module, Tools.pm. This library is somewhat efficient and rather sophisticated Perl, so please ask me before making changes to it yourself.
You usually must set a few environment variables before calling run-experiment:
- Set OSTORE_SERVERS to the space-separated list of hosts on which you want to run. You can skip this step if your experiment file explicitly lists hosts, which most do not.
- Set REMOTE_OSTORE_RUN_DIR to the full path to the run directory on the remote machines. You may skip this step if it's in the same place as the local machine.
- Set REMOTE_OSTORE_USER to your login on the remote machines if it is different from your local username.
There are several other useful variables you might want to try:
- Set OSTORE_DISABLE_COPYBACK to prevent run-experiment from copying logs over from remote machines on shutdown. That step can be a little slow, and is unnecessary if you don't want to look at the logs. Simply defining the variable will disable the copyback only on failure. Setting it to a positive number will disable copyback in all cases.
- Set OSTORE_TMP and/or REMOTE_OSTORE_TMP if you want to change the directory into which run-experiment writes its files. The default is usually /tmp or /stripe. You might want to change it if the default directory is too small.
- Set KEYSHARE_PREFIX to change the set of threshold keys used by the inner ring. The default is "ir". The only other option currently is "ir-1024-4-2".
- Set OSTORE_SMART_TOOLS if you want to run an experiment across both the local cluster and planetlab. It's a pretty humble hack, so only use it if you understand what it does. Basically, it disables the REMOTE_OSTORE_RUN_DIR and REMOTE_OSTORE_USER for cluster machines, so that you can set those variables to their planetlab equivalents. If the defaults on the cluster work for you, then everything just works.
- Set OSTORE_CFG_DIR and/or OSTORE_GRAPH_DIR if you understand what they mean