阿里云OSS存储是由阿里云提供的高可用,大容量的对象存储系统,用户使用OSS来存储图片,视频,日志和其它的静态的数据文件。而很多用OSS存放文件的用户都希望能够在ECS或者线下的环境中直接挂载访问OSS中的数据。本文将介绍如何使用云存储网关(CSG)在Linux系统中挂载并访问用户在OSS Bucket中的数据。
背景
很多用户希望像访问共享文件系统一样访问存放在OSS中的数据,这意味着用户可以使用目前已有的工具和应用去对OSS中的数据进行访问,并以文件和目录的形式去进行读写操作,而不需要考虑对象存储特有的API调用方式并投入额外的开发工作进行适配。如何能做到这一点呢?通过云存储网关(Cloud Storage Gateway)挂载OSS就是一种解决方案,云存储网关CSG是一款用户在线上和线下都可以部署的软网关,可以提供块(ISCSI)和文件共享(NFS/SMB)等多种数据访问协议。我们可以通过云存储文件网关,将OSS中的Bucket或者Bucket中的某个子目录通过NFS协议共享出来,在Linux主机中直接挂载和访问其中的数据,让访问OSS中的数据变得更加的容易,将OSS作为后端存储去部署应用变的更加的简单。
文件网关的特性支持页面,提供了目前文件网关支持的特性说明,可以看到文件网关对传统的文件共享协议NFS和SMB都支持,这样用户不论是使用Linux还是Windows都可以通过文件网关去访问自己在OSS中的数据,同时我们也看到了对AD/LDAP的支持,让IT管理员对于共享目录访问权限及安全的控制更加的方便灵活。
特性中同样提到文件网关使用了缓存盘,可以看出文件网关不仅仅是简单的做了文件协议到OSS API的转换,而是让用户可以通过缓存盘,实现对数据的分层存储。在使用OSS海量存储空间的同时,对性能也有了保证,实现了性能和成本间的平衡。
如何在通过云存储网关(CSG)挂载OSS中的目录
下面我们就以使用Linux客户端访问为例,介绍如何通过部署配置云存储网关,在Linux客户端中挂载访问OSS Bucket中的文件。
1. 开通云存储网关
1.1 开通服务并访问云存储网关控制台
我们可以前往云存储网关页面来开通并访问云存储网关服务,点击页面中的立即开通,既可以开通云存储网关服务,服务开通后会跳转至云存储控制台,后续我们对自己网关的管理都可以在云存储网关控制台进行。 用户也可以直接通过云存储网关控制台这个页面来直接访问网关控制台。
在网关控制台概览里,可以看到自己在该区域云存储网关的一些统计信息,比如网关数量,数据存储用量等信息,了解基本统计信息。在创建存储网关前,需要先在概览页这里创建一个网关集群,网关集群可以理解为管理一组网关实例的单元,这样当我们网关数量比较多时便于管理。
1.2 创建文件网关
创建网关集群后,点击网关列表,既可以进入网关列表页面,通过点击右上角的蓝色创建按钮来创建一个新的文件网关,根据弹出的创建网关对话框的提示一步步完成创建的工作:
首先,填写文件网关的名称及期望部署的位置,是线上部署还是部署在线下环境中,同时选择网关类型。在这里,我们选择文件网关:
下一步,大家可以根据自己对于性能的需求选择网关的型号,具体不同型号的区别,可以在网关型号页面查询,在这里我们选择标准型网关,并选择专有网络及虚拟交换机:
接下来就是选择付费信息及到期后的回收还是保留实例的选项,付费会分为按量付费及包年包月两种,包年包月的价格会更划算一些,确认好付费信息点击下一步的页面,确认配置无误可通过点击完成按钮跳转至付费页面,付费成功后云存储网关就开通创建完成了。
2. 配置NFS共享
下面我们看看创建网关完成后该如何绑定OSS Bucket并配置NFS共享:
通过点击网关列表中的网关ID进入对应网关管理页面,在网关管理页面,我们可以看到当前网关的共享信息,详情及缓存盘等信息。
2.1 添加缓存盘:
在创建共享前,我们需要先添加一块供共享使用的缓存盘,这样写入的数据会先写入缓存盘中,之后再写到OSS存储当中,这样当网络出现抖动不稳定的时候,也不会对写入的延时有很大的影响,保证高性能的读写。
点击网关缓存页面右上角的蓝色创建缓存按钮创建新的缓存,在弹出的对话框中填入需要的缓存盘大小及类型即可:
2.2 配置共享
缓存创建成功后,就可以配置文件共享了,在共享列表页面,通过点击右上角的创建按钮,可以一步步的创建一个OSS目录的NFS共享出来:
在创建共享页面,首选选择要共享的OSS Bucket的Endpoint地址,选择地址后,下面的Bucket名称处会将该区域用户的Bucket列出来,在这里我们选择要共享的Bucket,并可以选择是挂载整个Bucket目录还是Bucket中的子目录,如果是只需要挂载某个子目录的话,可以勾选后面的子目录并填入对应的子目录名称:
在接下来的基本信息页面,需要填入共享名称及使用的访问协议,这里我们选择Linux主机常用的NFS协议,并选择之前创建的缓存盘,可以勾选高级设置查看更多的配置选项,配置比如是否打开反向同步,是否忽略删除,缓存同步周期等选项,具体的功能介绍可以参见文件网关手册,这里我打开反向同步功能并设置周期为3600秒,即本地会从云上做反向同步,将云上的修改反向同步到本地。
在总结页面点击完成,等待下方任务列表里的创建共享任务完成,既可以在页面上方看到我们创建出来的共享了,通过共享挂载点中的路径就可以在Linux上实现对OSS Bucket中数据的访问了:
3. 在Linux中挂载 OSS共享
下面我看看下如何在Linux主机中挂载云存储网关中的共享:
3.1 安装nfs 组件
在linux系统中使用挂载nfs文件系统需要安装nfs相应的组件,如果系统中没有默认安装的话可以使用下面的命令安装:
# Ubuntu
sudo apt-get update
sudo apt-get install nfs-common portmap
# RedHat/Centos
sudo yum install nfs-utils
3.2 查看云存储网关共享
在Linux 客户端中,可以通过showmount 命令查看云存储网关的共享,其中-e 参数后的NFS服务IP地址我们可以在共享挂载点这一列找到:
showmount -e 172.17.79.189
Export list for 172.17.79.189:
/nfsshare01 (everyone)
3.3 挂载OSS Bucket
我们在本地创建一个目录/mnt/oss,并使用mount命令挂载文件网关的NFS共享到该目录
# 创建挂载点目录
mkdir /mnt/oss
# 挂载文件网关挂载点,挂载点信息可以在网关共享列表页面中共享的挂载点这一列看到
mount -t nfs -o vers=3 172.17.79.189:/nfsshare01 /mnt/oss
# 使用df -h 命令查看挂载信息
df -h
Filesystem Size Used Avail Use% Mounted on
172.17.79.189:/nfsshare01 128T 0 128T 0% /mnt/oss
3.4 写入数据到OSS
在Linux主机上,我们在挂载OSS的目录中直接写入,文件网关会自动的将其上传到OSS当中,不需要用户进行额外的操作,比如我们测试直接拷贝一些文件到/mnt/oss目录,再去OSS控制台中查看bucket内的数据:
cp /var/log/messages /mnt/oss
ls -l /mnt/oss
total 68799
-rw------- 1 4294967294 4294967294 70450404 Aug 16 16:40 messages
我们前往OSS的管理控制台,在控制台中能看到我们拷贝到linux挂载文件夹中的数据,同样对文件夹中的数据进行修改和删除也会自动同步到OSS中,非常方便。
总结
通过使用云存储网关(Cloud Storage Gateway) 在Linux客户端上挂载访问OSS Bucket,让我们访问OSS存储变得更加简单,像访问本地的文件系统中的数据一样,以目录和文件的形式读写OSS存储,不再需要关心OSS对象存储特有的API接口,也不用为对象只能覆盖或追加,无法修改对象的问题所困扰。结合云存储网关的缓存盘,可以在保证访问性能的同时,使用OSS存储提供的海量数据空间,轻松的实现数据的分层存储,让用户可以兼顾成本,性能及容量,高效规划部署应用,使用云上存储资源。