Installing and Configuring the Storage Nodes

[Note]Note

OpenStack Object Storage should work on any modern filesystem that supports Extended Attributes (XATTRS). We currently recommend XFS as it demonstrated the best overall performance for the swift use case after considerable testing and benchmarking at Rackspace. It is also the only filesystem that has been thoroughly tested.

  1. Install Storage node packages:

    apt-get install swift-account swift-container swift-object xfsprogs
  2. For every device on the node, setup the XFS volume (/dev/sdb is used as an example):

    fdisk /dev/sdb  (set up a single partition)
    mkfs.xfs -i size=1024 /dev/sdb1
    echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
    mkdir -p /srv/node/sdb1
    mount /srv/node/sdb1
    chown -R swift:swift /srv/node
  3. Create /etc/rsyncd.conf:

    uid = swift
    gid = swift
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    address = <STORAGE_LOCAL_NET_IP>
    
    [account]
    max connections = 2
    path = /srv/node/
    read only = false
    lock file = /var/lock/account.lock
    
    [container]
    max connections = 2
    path = /srv/node/
    read only = false
    lock file = /var/lock/container.lock
    
    [object]
    max connections = 2
    path = /srv/node/
    read only = false
    lock file = /var/lock/object.lock
  4. Edit the following line in /etc/default/rsync:

    RSYNC_ENABLE = true
  5. Start rsync daemon:

    service rsync start
    [Note]Note

    The rsync daemon requires no authentication, so it should be run on a local, private network.

  6. Create /etc/swift/account-server.conf:

    [DEFAULT]
    bind_ip = <STORAGE_LOCAL_NET_IP>
    workers = 2
    
    [pipeline:main]
    pipeline = account-server
    
    [app:account-server]
    use = egg:swift#account
    
    [account-replicator]
    
    [account-auditor]
    
    [account-reaper]
  7. Create /etc/swift/container-server.conf:

    [DEFAULT]
    bind_ip = <STORAGE_LOCAL_NET_IP>
    workers = 2
    
    [pipeline:main]
    pipeline = container-server
    
    [app:container-server]
    use = egg:swift#container
    
    [container-replicator]
    
    [container-updater]
    
    [container-auditor]
  8. Create /etc/swift/object-server.conf:

    [DEFAULT]
    bind_ip = <STORAGE_LOCAL_NET_IP>
    workers = 2
    
    [pipeline:main]
    pipeline = object-server
    
    [app:object-server]
    use = egg:swift#object
    
    [object-replicator]
    
    [object-updater]
    
    [object-auditor]
  9. Start the storage services:

    swift-init object-server start
    swift-init object-replicator start
    swift-init object-updater start
    swift-init object-auditor start
    swift-init container-server start
    swift-init container-replicator start
    swift-init container-updater start
    swift-init container-auditor start
    swift-init account-server start
    swift-init account-replicator start
    swift-init account-auditor start


loading table of contents...