在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上也能使用吧。
简单看了下,其实还是挺简单就可以实现的,光说不练假把式,下面大家就跟着一起做吧。
- 首先创建一个Linux VM,建议安装比较新的版本,过程略过了。。。
- 然后在命令行里输入如下代码,此代码是基于官方的azure storage fuse适配成Mooncake的Blob存储及验证方式:
git clone https://github.com/digitaltwt/azure-storage-fuse
- 再针对不同的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
- 安装完成这些组件后,就可以build啦
cd azure-storage-fuse/
./build.sh
- 等待几分钟后,就可以配置connection.cfg,这里面存放的就是Azure blob的信息
nano connection.cfg
按照你创建的存储信息填入connection.cfg中
保存退出即可
- 创建一个 本地缓存目录,这个时候Azure VM的临时盘用途就很有优势啦,SSD,本地的,这吞吐,这速度~~不敢想
mkdir -p /mnt/blobfusetemp
chown <user> /mnt/blobfusetemp
- 最后一步,mount你的文件目录即可使用Azure Blob了
./mount.sh </path>
大功告成,我们来看看效果,首先进入你的文件目录,然后Git clone个文件看看啥效果吧
git clone https://github.com/digitaltwt/azure-storage-fuse
我们再看看azure blob吧
分享给有需要的小伙伴们,有任何问题可以一起讨论哦~~