在Mooncake上使用BlobFuse

在互联网时代Blob存储被广泛应用到现代化的应用程序中,这得益于Blob存储的成本效益,可扩展性以及简单运维管理。但是由历史原因还有很多企业的应用程序还在使用本地的文件系统,通常云服务商会提供Rest API或者SDK让这些传统应用使用Blob存储,但这对于大部分企业来说还是挺麻烦的。

那我们如何解决传统应用使用Blob同时又不需要花太多的精力呢。神器Azure storage blobfuse登场, 此神器可以让你的应用无缝地使用Blob存储,简单来说就是您的应用程序可以使用NFS等标准存储协议连接至Blobfuse,由此神器把文件写入Azure Blob存储。架构图如下:

看到这里的小伙伴是不是惊呆了,纷纷跃跃欲试?很遗憾的告诉伙伴们,目前此神器只能在Global Azure上使用~~~

最近有几个客户一直在咨询我类似的解决方案,比如大数据如何快速存放至Azure Blob,对外文件如何不利用FTP进行存储及管理等等类似的话题,但最终的解决方案就是让Blob Fuse这个解决方案能在Mooncake上使用。

客户就是上帝,既然上帝有需求,咱就受累研究下如何让Blob Fuse这个功能在Mooncake上也能使用吧。

简单看了下,其实还是挺简单就可以实现的,光说不练假把式,下面大家就跟着一起做吧。

  1. 首先创建一个Linux VM,建议安装比较新的版本,过程略过了。。。

     

  2. 然后在命令行里输入如下代码,此代码是基于官方的azure storage fuse适配成Mooncake的Blob存储及验证方式:

git clone https://github.com/digitaltwt/azure-storage-fuse

  1. 再针对不同的Linux VM安装不同的依赖组件

    Centos:

    sudo yum -y install epel-release

    sudo yum install git cmake3 fuse-devel libcurl-devel gcc gcc-c++ gnutls-devel fuse -y

     

    Redhat:

    sudo yum install git cmake fuse-devel libcurl-devel gcc gcc-c++ gnutls-devel fuse -y
    

     

    Ubuntu:

    sudo apt-get install pkg-config libfuse-dev cmake libcurl4-gnutls-dev libgnutls28-dev -y

     

  2. 安装完成这些组件后,就可以build啦

     

    cd azure-storage-fuse/

    ./build.sh

     

  3. 等待几分钟后,就可以配置connection.cfg,这里面存放的就是Azure blob的信息

     

    nano connection.cfg

    按照你创建的存储信息填入connection.cfg中

    保存退出即可

     

  4. 创建一个 本地缓存目录,这个时候Azure VM的临时盘用途就很有优势啦,SSD,本地的,这吞吐,这速度~~不敢想

     

    mkdir -p /mnt/blobfusetemp

    chown <user> /mnt/blobfusetemp

     

  5. 最后一步,mount你的文件目录即可使用Azure Blob了

     

    ./mount.sh </path>

大功告成,我们来看看效果,首先进入你的文件目录,然后Git clone个文件看看啥效果吧

git clone https://github.com/digitaltwt/azure-storage-fuse

我们再看看azure blob吧

分享给有需要的小伙伴们,有任何问题可以一起讨论哦~~

 

posted @ 2017-12-07 17:23  Magic_Xu  阅读(756)  评论(0编辑  收藏  举报