跳转至

挂载对象存储到 Linux 当本地磁盘

最近在使用云筏的服务器倒腾一个用于方便自己日常工作的导航网站,免得经常在公司、家之间切换电脑时找不到一些常用的网站(虽然可以保存为书签进行同步,但在同步前也要账号登陆,甚至如果用的是某台临时 PC,浏览器登陆同步也是极为麻烦)。

遇到一个问题,就是想把国外服务器的一些文件拷贝到阿里云 OSS(腾讯云 COS) 上,又不想使用国外服务器 → 本地电脑 →OSS 的拷贝路线,于是把之前用过的 ossfs(cosfs) 挂载在云筏服务器上又折腾了一次。

阿里云

关于 OSS,阿里云 OSS 是对象存储服务,价格也比较便宜,算得上是一个免费的 CDN,我们可以利用 OSSFS 这个工具,将 OSS 挂载到阿里云 ECS 服务器上,可以达到存储、备份的目的。当然,最主要的是可以减轻服务器的压力。

使用此工具之前,如果你手里没有阿里云的 ECS(或者你想经常从 OSS 拷贝数据到其他服务器) 那么我觉得没啥看下去的必要,因为目前阿里云 OSS 下行流量没有免费额度,都需要收费。这样进行数据传输的时候就会产生流量费用,而且速度可能也不是特别理想。如果有 ECS 那么可以进行内网数据传输,既保证了速度又省去了流量费用,岂不是美滋滋。 image.png

ossfs

其实 ossfs 这个工具就是将你的 oss 存储桶 (bucket) 挂载成一个 linux 可以识别的分区,从而可以看成像系统上的一块本地磁盘。

安装

第一步,解决依赖。

  • Ubuntu 14.04
sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev \
                     libfuse-dev libssl-dev libxml2-dev make pkg-config
  • CentOS 7.0
sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel \
                 fuse-devel make openssl-devel

第二步,到官方仓库下载最新的压缩包就成。本地比如我下载的为 ossfs_1.80.5_centos7.0_x86_64.rpm,尽量选择和你系统相匹配的包,这样可以直接用包管理工具进行安装。

yum -y localinstall ossfs_1.80.5_centos7.0_x86_64.rpm

或者,直接通过下载源码的方式安装:

$ git clone https://github.com/aliyun/ossfs.git
$ cd ossfs
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

不出意外,ossfs 就这样被安装成功了,是不是非常的简单。接下来就是要配置的部分了。

配置

在配置之前我们首先需要拿到阿里云的 AccesskeyID 和 Accesskeysecret。登录阿里云账号,然后打开密钥管理页面,然后在列表里随便选择一个并记录下来。然后还需要去 oss 控制台创建一个 bucket,我这里 bucket 的名称叫做 disk-db。 image.png 为了演示假如我的 AccessKey ID 为 key123, Access Key Secret 为 secret456,接下来继续执行。

echo disk-db:key123:secret456 > /etc/passwd-ossfs

#修改文件权限
chmod 640 /etc/passwd-ossfs

在系统上创建一个系统目录比如为 /mnt/disk-db , 将此目录作为 ossfs 的挂载目录:

# 如果你的服务器不是阿里云的 ECS 服务器,使用外网访问的 Endpoint
ossfs disk-db /mnt/disk-db -ourl=oss-cn-shenzhen.aliyuncs.com -o allow_other

# 如果你的服务器是阿里云的 ECS 服务器,使用内网访问的 Endpoint
ossfs vmfs /mnt/disk-db -ourl=oss-cn-shenzhen-internal.aliyuncs.com -o allow_other
  • -ourl 表示的是 oss 的 EndPoint 地址,这个地址如果你手持 ECS 那么强烈建议你使用和你 ECS 同区域的内网地址。
  • -o 表示运行非 root 用户使用此目录。

image.png

设置开机自动挂载

通过 fstab 的方式自动 mount,在 /etc/fstab 中加入下面的类似的命令:

ossfs#your_bucket_name your_mount_point fuse_netdev,url=your_url,allow_other 0 0

上面的根据提示替换成你自己的配置,比如我的为:

ossfs#disk-db /mnt/disk-db fuse_netdev,url=oss-cn-shenshen.aliyuncs.com,allow_other 0 0

效果

到此,所有的操作就基本上结束了。想要看一下效果可以到 /mnt/disk-db 目录下新创建一个文件比如叫 ossfs_test.txt,然后我们再去阿里云的 oss 控制台就可以看到 ossfs_test.txt 已经创建成功的效果。

腾讯云

COSFS 工具支持将腾讯云的对象存储(Cloud Object Storage,COS)存储桶挂载到本地,像使用本地文件系统一样直接操作腾讯云对象存储中的对象, COSFS 提供的主要功能包括:

  • 支持 POSIX 文件系统的大部分功能,如:文件读写、目录操作、链接操作、权限管理、uid/gid 管理等功能。
  • 大文件分块传输功能。
  • MD5 数据校验功能。
  • 将本机数据上传至 COS,建议使用 COS Migration 工具COSCMD 工具

腾讯云完整 COSFS 挂载文档,参考:

对象存储 COSFS 工具 - 工具指南 - 文档中心 - 腾讯云