In part 1 of this 2 part screencast series – We cover the installation of the soon to be released Project FiFo 0.6.0 Version. This is a major release with a ton of new features and some foundational changes to the underlying storage architecture. This is a single zone configuration and not a clustered configuration. Going forward Leofs will be a required part of all FiFo installations.

We will cover:

– LeoFS the highly scalable, fault-tolerant, S3 compatible large object storage for the Web.
– LeoFS dataset import.
– Provision new fifo zone using the LeoFS dataset.
– LeoFS FiFo storage node configuration.
– FiFo packages installation.
– FiFo 0.6.0 Setup & Configuration.
– FiFo 0.6.0 UI Overview and usage Guide (Part 2)
– New Feature Overview. (Part 2)

Things to watch out for!

Important If “leofs-adm status” command gives an error state for storage or gateway the first time you reboot issue the command:

leofs-adm resume storage_0@

DNS LeoFS storage needs DNS to be working and resolvable from your FiFo zone as WELL as the Global Zone of all your hypervisors in order for Chunter to work correctly. If your LeoFS endpoint is set to e.g. and your FiFo IP is then the following FQDN’s need to resolve to your FiFo IP.

No Central DNS – no problem. Add the FQDN’s to FiFo’s /etc/hosts file in the FiFo zone. You will also need to add them to /etc/hosts in the Global zone. Unfortunately the hosts file is lives in Ram and is reset upon SmartOS reboot. Luckily Chunter has a SMF service to ensure that /etc/hosts entries persist upon SmartOS reboots. To set it up, do the following:

Create the file and add your host entries to the file.

vi /opt/chunter/etc/hosts

Install the SMF Service

cp /opt/chunter/share/hosts.xml /opt/custom/smf/

svccfg import /opt/custom/smf/hosts.xml

After this the chunter dns entries will automatically appear in your /etc/hosts file and will survive reboots.

Commands Used In This Video :

fifo.json payload file

 "autoboot": true,
 "brand": "joyent",
 "image_uuid": "3b6fb547-4544-4825-88c3-eafdc0e4e9b5",
 "max_physical_memory": 4096,
 "cpu_cap": 100,
 "alias": "myfifo",
 "quota": "140",
 "resolvers": [
 "nics": [
 "interface": "net0",
 "nic_tag": "admin",
 "gateway": "",
 "ip": "",
 "netmask": ""

Commands / Instructions


svcadm enable leofs/manager0
svcadm enable leofs/manager1
svcadm enable leofs/storage
leofs-adm start
svcadm enable leofs/gateway
leofs-adm status

leofs-adm add-endpoint
leofs-adm get-endpoints
leofs-adm create-user fifo 1234

## Generated Access Keys ##
access-key-id: 486969ef0d7487488072
secret-access-key: acc07635034394aa694792620403509e8be89225

leofs-adm add-bucket fifo 486969ef0d7487488072
leofs-adm add-bucket fifo-images 486969ef0d7487488072
leofs-adm add-bucket fifo-snapshots 486969ef0d7487488072

echo "" >> /opt/local/etc/pkgin/repositories.conf
pkgin -fy up
pkgin install nginx fifo-snarl fifo-sniffle fifo-howl fifo-wiggle fifo-jingles
cp /opt/local/fifo-jingles/config/nginx.conf /opt/local/etc/nginx/nginx.conf

vi /opt/local/leofs/leo_gateway/etc/leo_gateway.conf
vi /opt/local/fifo-sniffle/etc/sniffle.conf
#change ports to 8184 and 7443

svcadm restart leofs/gateway

svcadm enable epmd
svcadm enable snarl
svcadm enable sniffle
svcadm enable howl
svcadm enable wiggle
svcadm enable nginx
svcs epmd snarl sniffle howl wiggle nginx

sniffle-admin config set storage.s3.port 7443
sniffle-admin config set storage.general.backend s3
sniffle-admin config set
sniffle-admin config set storage.s3.access_key 486969ef0d7487488072
sniffle-admin config set storage.s3.secret_key acc07635034394aa694792620403509e8be89225
sniffle-admin config set storage.s3.image_bucket fifo-images
sniffle-admin config set storage.s3.general_bucket fifo
sniffle-admin config set storage.s3.snapshot_bucket fifo-snapshots

sniffle-admin config show

fifoadm users add default admin
fifoadm users grant default admin ...
fifoadm users passwd default admin admin

curl -O

Sample Working Setup Output :

[root@5a846f46-5aea-4e09-8f08-4999dc4c11d8 ~]# leofs-adm status
[System config]
System version : 1.1.1
Cluster Id : leofs_1
DC Id : dc_1
Total replicas : 1
# of successes of R : 1
# of successes of W : 1
# of successes of D : 1
# of DC-awareness replicas : 0
ring size : 2^128
Current ring hash : a945d4e2
Prev ring hash : a945d4e2
[Multi DC replication settings]
max # of joinable DCs : 2
# of replicas a DC : 1
[Node(s) state]
type | node | state | current ring | prev ring | updated at
S | storage_0@ | running | a945d4e2 | a945d4e2 | 2014-08-30 13:08:10 +0000
G | gateway_0@ | running | a945d4e2 | a945d4e2 | 2014-08-30 13:15:59 +0000
[root@5a846f46-5aea-4e09-8f08-4999dc4c11d8 ~]# sniffle-admin config show
General Section
Key Value
-------------------- --------------------------------------------------
storage.general.back s3
S3 Section
Key Value
-------------------- --------------------------------------------------
storage.s3.general_b fifo
storage.s3.port 7443
storage.s3.access_ke 486969ef0d7487488072
storage.s3.snapshot_ fifo-snapshots
storage.s3.secret_ke acc07635034394aa694792620403509e8be89225
storage.s3.image_buc fifo-images
[root@5a846f46-5aea-4e09-8f08-4999dc4c11d8 ~]# leofs-adm get-endpoints
endpoint | created at
-----------------+--------------------------- | 2014-08-30 11:59:59 +0000
localhost | 2014-08-30 11:56:31 +0000 | 2014-08-30 11:56:31 +0000
[root@5a846f46-5aea-4e09-8f08-4999dc4c11d8 ~]# ping -a ( is alive
[root@5a846f46-5aea-4e09-8f08-4999dc4c11d8 ~]# ping -a ( is alive
[root@5a846f46-5aea-4e09-8f08-4999dc4c11d8 ~]# ping -a ( is alive
[root@5a846f46-5aea-4e09-8f08-4999dc4c11d8 ~]# ping -a ( is alive