OIOFS Node Installation

Tip

oio-fs is part of our paid plans.

Get in touch with the team or visit the page describing our plans.

Requirements

Licence

  • A login and a password provided by OpenIO Support

Hardware

  • Storage drive: A storage device for cache

Operating system

  • Centos 7
  • Ubuntu 16.04 (Server)
  • Ubuntu 18.04 (Server)

System

  • Root privileges are required (using sudo).
  • SELinux or AppArmor are disabled (managed at deployment).
  • The system must be up to date.
# RedHat
sudo yum update -y
sudo reboot
# Ubuntu
sudo apt update -y
sudo apt upgrade -y
sudo reboot

Network

  • This node connected to the same OIOSDS’s lan.

SDS

  • The conscience IP address.
  • The namespace used.
  • The redis sentinels addresses and the redis cluster name.

Setup

You only need to perform this setup on one of the nodes in the cluster (or your laptop).

# RedHat
sudo yum install git -y
# Ubuntu
sudo apt install git -y
  • Clone the OpenIO ansible playbook deployment repository.
git clone https://github.com/open-io/ansible-playbook-openio-deployment.git --branch 18.10 openio && cd openio/products/oiofs

Architecture

This playbook will deploy an oiofs mount connected to a SDS cluster as shown below:

    +---------+
    |         |
    |   +---------+                                                     +---------+
    |   |     |   |                                                     |         |
    |   |   +---------+                                                 |         |
    |   |   | |   |   |          Provide file-oriented access           |         |
    |   |   | |   |   |                                                 |         |
    |   |   | |   |   | <---------------------------------------------> |         |
    |   |   | |   |   |                                                 |         |
    |   |   | |   |   |          on an object storage backend           |         |
    +---------+   |   |                                                 |         |
        |   |     |   |                                                 |         |
        +---------+   |                                                 +---------+
OpenIO SDS  |         |                                                  OpenIO FS
(N-nodes)   +---------+

Configuration

Inventory

Fill the inventory according to your environment:

  • Edit the inventory.ini file and adapt the IP addresses and SSH user (sample here: inventory).

    [oiofs]
    node_oiofs ansible_host=10.0.0.1 ansible_user=root # Change it with the IP of the server
    ...
    
  • You can check that everything is configured correctly using this command:

    ansible all -i inventory.ini -bv -m ping
    

Credentials

You can set your credentials in the group_vars/oiofs.yml file.

group_vars/oiofs.yml
---
# Login provided by OPENIO
openio_oiofs_customer_login: foo
# Password provided by OPENIO
openio_oiofs_customer_password: bar
...

SDS informations

You can set all your SDS information in the group_vars/oiofs.yml file.

By default, an ecd and an oioproxy are deployed on the target node and binded to the default IP address.

group_vars/oiofs.yml
---
# Conscience SDS
openio_sds_conscience_address: 172.17.0.4
# Proxy SDS (deployed on oiofs nodes)
openio_sds_oioproxy_address: "{{ ansible_default_ipv4.address }}"
# Erasure Coding Daemon (deployed on oiofs nodes)
openio_sds_ecd_address: "{{ ansible_default_ipv4.address }}"
# Redis Cluster SDS
openio_sds_sentinels_name: "{{ openio_sds_namespace }}-master-1"
openio_sds_sentinels_addresses:
  - 172.17.0.2:6012
  - 172.17.0.3:6012
  - 172.17.0.4:6012
...

Installation

Run these commands:

  • To download and install requirements:

    ./requirements_install.sh
    
  • To deploy:

    ansible-playbook -i inventory.ini main.yml
    

Post-install Checks

The node is configured and the filesystem is mounted.

Run these commands on the node: gridinit_cmd status and df -h.

Sample output:

root@node1:/# gridinit_cmd status
KEY                                            STATUS      PID GROUP
OPENIO-ecd-0                                   UP         8383 OPENIO,ecd,0
OPENIO-oiofs-mnt_oiofs_MY_CONTAINER_MY_ACCOUNT UP        10503 OPENIO,oiofs,mnt_oiofs_MY_CONTAINER_MY_ACCOUNT
OPENIO-oioproxy-1                              UP         9148 OPENIO,oioproxy,1

root@node1:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
[...]
oiofs-fuse       16E     0   16E   0% /mnt/oiofs-MY_CONTAINER-MY_ACCOUNT

Customizing your deployment

Manage mounts

All mounts are defined in the group_vars/oiofs.yml file.

group_vars/oiofs.yml
---
# List of oiofs mounts
oiofs_mountpoints:
 - path: /mnt/oiofs-OPENIO-MY_CONTAINER-MY_ACCOUNT
   namespace: OPENIO
   account: MY_ACCOUNT
   container: MY_CONTAINER
   retry_delay: 1000
   sds_retry_delay: 1000
   fuse_max_retries: 200
   max_flush_thread: "{{ ansible_processor_vcpus / 2 | int }}"
   redis_sentinel_servers: "{{ openio_sds_sentinels_addresses }}"
   redis_sentinel_name: "{{ openio_sds_sentinels_name }}"
   ecd_host: "{{ openio_sds_ecd_address }}"
   ecd_port: 6017
   oioproxy_host: "{{ openio_sds_oioproxy_address }}"
   oioproxy_port: 6006
   cache_directory: "/mnt/oiofs-cache-OPENIO-MY_CONTAINER-MY_ACCOUNT"
   state: present
...