春江暮客

春江暮客的个人学习分享网站

利用s3fs-fuse挂载甲骨文对象存储

2020-05-01 技术
利用s3fs-fuse挂载甲骨文对象存储

撸免费的oracle cloud服务器并使用脚本自动化部署云服务器中介绍了如何使用 CLI 申请甲骨文的免费机器。除了默认磁盘外,Oracle Free Tier 还提供对象存储,可以通过 s3fs-fuse 挂载到本地 Linux 目录里使用。

这种方式特别适合放迁移文件、备份文件或跨实例共用的数据。相比只放在单个云盘里,对象存储更容易拆卸、迁移和重新挂载。

  1. 开通并启用对象存储
  2. 查看命名空间(namespace)和区域
  3. 配置对象存储凭证(access key,id)
  4. 挂载对象存储到本地

安装 s3fs-fuse

如果系统里还没有 s3fs,先安装它。Debian 或 Ubuntu 上通常可以直接执行:

apt update
apt install s3fs -y

开通并启用对象存储

登陆oracle账户,在左边导航栏找到object storage并点击进入 oracle_object 新建一个存储桶冰命名为bobobk oracle_object_create

因为oracle免费的存储桶一共就20g,这里就一个存储桶就够了。。

查看命名空间(namespace)和区域

这一步主要是获取配置信息后面挂载需要用到。用到的信息有两个,一个是命名空间,一个是主区域。

首先命名空间查看

右上角点击个人档案图标并点击查看租户信息 oracle_tenancy 在上方可以看到Object Storage Settings,下面的Object Storage Namespace对应的就是对象存储的命名空间,可以看到我的命名空间是cnquu99shcea。 oracle_object_namespace

账户区域identifier查看

首先在账户信息左边可以看到区域信息,但是这是文本形式的,然后通过区域信息找到region Identifier, 查看区域 oracle_region 可以看到是韩国首尔,然后到官方文档查看该区域对应的region Identifier oracle_region_identifier 韩国的就是ap-seoul-1

配置对象存储凭证(access key,id)

这一步是在oracle控制台生成一个用户的秘钥用于访问对象存储文件,在用户设置里面找到Customer Secret Keys生成秘钥保存下来。 首先打开用户设置页面,跟用户租户信息一样右上角并且刚好在租户信息下方。 oracle_user_setting 进入Customer secret keys项 oracle_custeomer_key 生成一个新的key oracle_generate_key 记录下key值,这里key的秘钥只会显示一次,以后是看不到的,没复制的话就只能重新生成了。 oracle_copy_key 然后查看key的id,点击刚才的bobobk的key就可以直接复制了 oracle_copy_id 然后在主目录下生成配置 ~/.passwd-s3fs,配置文件格式为 id:key。这里不要把真实密钥写进公开脚本或截图里,实际使用时把下面的占位符替换成你自己的值:

echo "your_access_key_id:your_secret_key" > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

到此对象存储凭证就配置好了

挂载对象存储到本地

接下来就是挂载对象存储了,命令格式如下

s3fs [bucket] [destination directory] -o endpoint=[region] -o passwd_file=~/.passwd-s3fs -o url=https://[namespace].compat.objectstorage.[region].oraclecloud.com/ -onomultipart -o use_path_request_style 
###此处真实命令为
mkdir object
s3fs bobobk object -o endpoint=ap-seoul-1 -o url=https://cnquu99shcea.compat.objectstorage.ap-seoul-1.oraclecloud.com/ -o passwd_file=~/.passwd-s3fs -onomultipart -o use_path_request_style

其中

  • bucket为存储桶名称,这里是bobobk
  • destination directory为目的文件夹,这里选择新建的object文件夹为存储桶目标文件夹
  • region 为账户主区域,前面介绍了方法
  • namespace 为命名空间,前面介绍了方法
  • region 此处region同上

如果命令没有报错,可以通过下面命令查看是否挂载成功并写入测试文件。

cd object

echo "object success by chunjiangmuke tutorial(www.bobobk.com)"  > 1
ls -lah

在存储桶位置可以看到已经同步好了该文件1 oracle_synfile

总结

本文通过 s3fs-fuse 把甲骨文对象存储映射成了本地目录。这样做的重点不只是“多出一些可用空间”,更重要的是可以把需要迁移的数据独立出来,换实例时重新挂载就能继续使用。

如果挂载失败,优先检查 4 件事:命名空间是否正确、区域标识符是否正确、~/.passwd-s3fs 格式是否为 id:key、以及文件权限是否已经设置为 600

友情链接

其它