MayaNAS: Using Wasabi Hot Object Cloud Storage

Wasabi Object storage on MayaNAS

Posted on April 25, 2019 at 11:09 AM


Introduction

With MayaNAS it is very easy to connect with all popular multi-cloud object storage and use them as additional local storage with thin provisioning. It readily supports Azure Blob, Amazon S3, Google Cloud Storage and any S3-compatible object storage. In this blog we will be exploring how to connect with the Wasabi Hot Cloud Storage. which is described on their website as,
Wasabi Hot Cloud Storage is enterprise class, tier-free, instantly available and allows you to store an infinite amount of data affordably. Wasabi provides an S3-compliant interface to use with storage applications, gateways and other platforms.

Getting Started

To get started we will need a bucket name and the access key to connect to the Wasabi cloud storage. You can get those information from your Wasabi Console or create new one if needed. If you are new to Wasabi Cloud Storage they provide 30-day trial signup with no credit-card requirement.

Steps

Since It has fully S3-compliant interface we can make use of this hot storage with MayaNAS as follows:

  1. Define a cloud profile providing the access key and access URL information, which will be one of the following depending on the location of the bucket.
    • s3.wasabisys.com or s3.us-east-1.wasabisys.com
    • s3.us-west-1.wasabisys.com
    • s3.eu-central-1.wasabisys.com
    mayacli create cloud wasabi s3type=aws accesskey=AGZH7GAGXXXXXXXXXJO:e1eIotkPT5aIwasabiI6RBFWPro5FWQfwjLrEIp9 baseurl=https://s3.uswest1.wasabisys.com
  2. Check that your buckets are visible from MayaNAS CLI mayacli
     
    mayacli show cloud
    Name                           Cloud    Account              Location   BaseURL
    ------------------------------ -------- -------------------- ---------- --------
    wasabi                         aws      AGZH7GAG1Q8BI9TFN7JO            https://s3.uswest-1.wasabisys.com/
    
    mayacli show cloud wasabi type=list
    Name                             Other
    -------------------------------- --------
    testdisk1                        2019-04-25T05:10:32.000Z	
    testdisk3                        2019-04-25T05:10:06.000Z	
    
    mayacli show cloud wasabi bucket=testdisk3 type=size 
    Name                             Counted  Size    
    -------------------------------- -------- --------
    testdisk3                        16033    16810770458 (15.66G)
    
  3. Configure a disk of any size backed by this wasabi object storage bucket
    mayacli create disk wasabidisk1 cloud=wasabi size=10T blocksize=1M bucket=testdisk3
    mayacli set disk wasabidisk1 online=1
    
    
  4. Create file system such as XFS or create a ZFS zpool on top of it.
    For XFS
    • use -K to avoid discard option
    • loop device is required, which is obtained from mayacli show disk output
    mayacli show disk
    Attached SCSI disk devices:
    DiskID*      Vendor   Model            Rev      Capacity Device       Serial#
    ------------ -------- ---------------- -------- -------- ------------ --------
    (0,0,1,0)    Google   PersistentDisk   1          10.00G  sda                         
    (0,0,2,0)    Google   PersistentDisk   1          50.00G  sdb                         
    (0,0,0,0)    google   datadisk1                   50.00G  loop0   
    (0,0,0,0)    google   ntfsdisk1                   50.00G  loop1   
    (0,0,0,0)    azure    testdisk3                    0.00G  loop2   
    (0,0,0,0)    aws      wasabidisk1                  0.00G  loop3   
    
     mkfs -K /dev/loop3
     meta-data=/dev/loop3            isize=512    agcount=10, agsize=268435455 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=2684354550, imaxpct=5
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=521728, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
    mount /dev/loop3 /testwasabi
    
    ZFS zpool can be created directly on the FUSE backed file itself.
    zpool create testwasabi /mnt/wasabidisk1/file
    zfs create testwasabi/testfs

FIO Performance

Run FIO benchmark program to evaluate basic sequential read and write performance. Here block size of 1MB with sync option is given to get the true performance without any caching skewing our results.
fio --ioengine=sync --direct=0 --fsync_on_close=1 \
--randrepeat=0 --nrfiles=1 --name=seqwrite --rw=write --bs=1m --size=20G \
--end_fsync=1 --fallocate=none --overwrite=0 --numjobs=1 \
--directory=/testwasabi/testfs/test --loops=1


fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=seqread --rw=read \
--bs=1m --size=20G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=1 \
--directory=/testwasabi/testfs --invalidate=1 --loops=1

Depending on the internet bandwidth expect to see
Sequential WriteSequential Read
25.2 MB/s42.5MB/s

Summary

With MayaNAS you can connect to multi-cloud object storage seamlessly and make use of them as additonal local disk storage. It provides the best compatibility to your applications that was not designed for object storage by presenting traditional file storage to your applications. Also it makes the administrator comfortable to work with multi-cloud environment, without learning cloud provider specific commands.