EMC ECS installation on Gandi Cloud VMs

EMC Elastic Cloud Storage (ECS) is a new EMC product to provide object storage (Amazon S3 and OpenStack Swift APIs).

EMC has just released ECS Community Edition installer on Github that allows customers to try and use it on standard X86 hardware with Centos 7.

The goal of this post is to install and configure ECS on Gandi Cloud VMs :

ecs docker gandi

  • EMC ECS is Java based software
  • ECS image will run into Docker container on Centos 7
  • ECS image is available in EMCCorp docker registry
  • GitHub repository is storing ECS installer (python), I don't know if docker image is open-source too.

So, let's go installing EMC ECS on Gandi VMs ;)

Gandi VMs setup

EMC recommandation is to have at least 4 VMs with :

  • 4 vCPU and 32GB of ram
  • 100GB of disk for object data storage

Nevertheless, I can't have this kind of powerful VM with Gandi (and not the budget) so I'm going to install ECS software on 4 VMs with :

  • 2 vCPU and 8GB of ram (tried with 6GB with several memory issues during setup),
  • 6GB of system disk (for docker image) and 2 x 20GB disks for object data storage

To create 4 VMs we're using Gandi Cli ( :

gandi vm create --datacenter US --hostname srvusecs01 --cores 2 --memory 8192 --size 6144 --image "CentOS 7 64 bits (HVM)" --ip-version 4 --bg
gandi vm create --datacenter US --hostname srvusecs02 --cores 2 --memory 8192 --size 6144 --image "CentOS 7 64 bits (HVM)" --ip-version 4 --bg
gandi vm create --datacenter US --hostname srvusecs03 --cores 2 --memory 8192 --size 6144 --image "CentOS 7 64 bits (HVM)" --ip-version 4 --bg
gandi vm create --datacenter US --hostname srvusecs04 --cores 2 --memory 8192 --size 6144 --image "CentOS 7 64 bits (HVM)" --ip-version 4 --bg

Have a look on Gandi Mng GUI, VMs are up & running :

ecs vms gandi

Meanwhile, we need to create 8 x 20GB Gandi disk to give feeding to ECS software (2 per node) :

gandi disk create --size 20G  --datacenter US --bg --name ecsdata01 --vm srvusecs01
gandi disk create --size 20G  --datacenter US --bg --name ecsdata02 --vm srvusecs01
gandi disk create --size 20G  --datacenter US --bg --name ecsdata03 --vm srvusecs02
gandi disk create --size 20G  --datacenter US --bg --name ecsdata04 --vm srvusecs02
gandi disk create --size 20G  --datacenter US --bg --name ecsdata05 --vm srvusecs03
gandi disk create --size 20G  --datacenter US --bg --name ecsdata06 --vm srvusecs03
gandi disk create --size 20G  --datacenter US --bg --name ecsdata07 --vm srvusecs04
gandi disk create --size 20G  --datacenter US --bg --name ecsdata08 --vm srvusecs04

Install EMC Elastic Cloud Storage

You have to proceed with below steps on each Gandi VM.

We need to update system, install git and umount ECS Gandi disks (sdc sdd) :

sudo yum -y update
sudo yum -y install git
sudo umount /dev/sdc /dev/sdd

Ok, let's clone ECS installer Github repository on servers :

git clone

And install, on each server, ECS docker image (replace IPx with IPs of your ECS nodes):

cd /root/ECS-CommunityEdition/ecs-multi-node/
sudo python --ips IP1 IP2 IP3 IP4 --hostnames srvusecs01 srvusecs02 srvusecs03 srvusecs04 --disks sdc sdd

Python step1 multinode install will do below steps :

  • Updating SELinux to Permissive mode (setenforce 0)
  • Install wget and tar packages
  • Install docker package
  • Format to XFS ECS data disks and fallocate 10GB x files
  • Pull docker image emccorp/ecs-software form Docker registry
  • Create network.json and seed.json (IPs of other ECS nodes)
  • Update /etc/hosts with IPs of other ECS nodes
  • Mount ECS disks with specific uuid
  • Create /host/data /host/files /ecs /data and adapt rights on directories (uid 444)
  • Start ECS docker container

We have to wait 8/10 minutes before contacting management website, ECS is in the way of configuring through Java processes :

ecs java creating

It's the time to have a look on Docker container :

[root@srvusecs01 ecs-multi-node]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
emccorp/ecs-software   latest              0cc1de6f549f        4 weeks ago         1.402 GB

[root@srvusecs01 ecs-multi-node]# sudo docker ps
CONTAINER ID        IMAGE                         COMMAND                CREATED             STATUS              PORTS               NAMES
09ce3dfdca03        emccorp/ecs-software:latest   "/opt/vipr/boot/boot   9 seconds ago       Up 8 seconds                            ecsmultinode

In case of Docker crash (or server restart ?), you can restart ECS container with below command :

docker run -d -e SS_GENCONFIG=1 -v /ecs:/disks -v /host:/host -v /var/log/vipr/emcvipr-object:/opt/storageos/logs -v /data:/data:rw --net=host emccorp/ecs-software --name=ecsmultinode

Management website ECS is now up & running on the nodes through URL :)

Default username is root and password is ChangeMe

Configure license with upload of file that you have within Github repository (license.xml) :

ecs java creating

Over... Next topic : configure ECS for object access ;)

Bye !