Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Storage servers. These implement most of the RAMCloud functionality. A RAMCloud server typically contains a master, which manages local DRAM to store portions of the RAMCloud key-value store, and a backup, which manages redundant information stored on disk or flash to recover from crashes. You must start up a storage server on each server whose memory will be incorporated into the RAMCloud cluster. A given server can only manage a single backup device; if you want to use multiple backup devices on a single node, you'll start one server with a master and backup, plus additional servers that only contain the backup component.
  2. Coordinator. At any given time there is one machine serving as cluster coordinator. This machine manages overall cluster configuration information (such as which storage servers handle which tablets), and it coordinates recovery when storage servers crash. You will typically start 2-3 instances of the coordinator. At a given time, only one of them is active, but if it crashes one of the others will immediately take over for it. You can run a cluster with only a single coordinator, but if this coordinator a crashes the cluster will be unavailable until you restart this coordinator or start a new one someplace else.
  3. External storage (ZooKeeper or LogCabin). The coordinator stores top-level cluster configuration information (such as the set of servers currently participating in the cluster) in an external storage system. RAMCloud can support different external storage systems; right now ZooKeeper and LogCabin are supported. Thus, you will need to start a ZooKeeper or LogCabin cluster in order to run RAMCloud. You can run a RAMCloud cluster without an external storage system, but if the coordinator crashes then all of the data stored in the cluster will be lost. Using LogCabin currently requires building with 'make LOGCABIN=yes', and you'll previously need the LogCabin submodule checked out ('git submodule update --init --recursive') and compiled ('make logcabin' or 'cd logcabin; scons').

Starting ZooKeeper or LogCabin

...

-L infrc:host=`hostname -s`,port=1101
Service locator for this server: indicates how other machines should communicate with the server. See ServiceLocators Service Locators for details.
-x zk:rcmaster:2181Has the same meaning as the corresponding coordinator argument: specifies the external storage server that is used for cluster configuration information. The storage server uses this information to locate the coordinator for the cluster.
--totalMasterMemory 16000
Total amount of  DRAM this storage server should use for RAMCloud data, in MBytes (16GB in this example). The storage data will consume additional memory beyond this for various metadata purposes, and you should ensure that server nodes never have to page, so the total amount of memory on the note should probably be 1-2GB larger than this value.
-f /dev/sda2

Specifies a file or raw device for the backup to use for storing backup data.

WARNING: file descriptor will be treated as a block device and unrelated existing data will be overwritten.

--segmentFrames 10000
The amount of space available on the backup device, specified in units of 8MB segments (in this example, the total storage available is 80GB). If a server uses M gigabytes bytes of DRAM and the replication factor is R, then it should typically have about 2MR bytes of space in backup storage; any value lower than this may cause the cluster to eventually fail to service write requests.
-r 2Replication factor for RAMCloud data. In this example, 2 backup copies will be kept on secondary storage for each object in memory. A replication factor 2 is probably reasonably safe, given that there is also a copy in DRAM; 3 is conservative. All of the storage servers in the cluster should use the same replication factor.

...

--backupOnlyIf this option is specified, the server will act as a backup only. This option is used to incorporate additional backup devices from single node. In this case, options such as -r and --totalMasterMemory are irrelevant and can be omitted.
--clusterNameIf multiple RAMCloud clusters exist at the same time, this indicates which cluster this server should  be part of. Defaults to "main".
--logFile
Log messages will be written to this file. If this argument is omitted, log messages will be written to standard output.
--allowLocalBackup

Allow replication to local backup (e.g. data and backup can be on same server).