最全对象存储(云盘)挂载本地主机或服务器

1.对象存储介绍

1.1 分类

分布式存储的应用场景相对于其存储接口,现在流行分为三种:
块存储 : 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,块存储一般体现形式是卷或者硬盘(比如windows里面看到的c盘),数据是按字节来访问的,对于块存储而言,对里面存的数据内容和格式是完全一无所知的。可以简单的理解为玉米粒。
文件存储 : 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。可以简单的理解为数据像玉米粒一样组成玉米棒子,再对应到不同的玉米杆上,要找到某个玉米粒,先找到玉米杆,再找到玉米棒子,然后根据玉米粒在玉米棒子上的位置找到它。
对象存储 : 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、腾讯cos、阿里oss、亚马逊S3。可以简单的理解为数据的玉米粒被做成了玉米罐头,每个玉米罐头都有一个唯一出厂号,但是买卖罐头,都一次是一盒为单位。

1.2 挂载协议

本章重点介绍基于S3FS协议的云存储挂载。

S3FS是Google开发的一款支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语法

S3FS基于FUSE开发的文件系统,允许Linux和MacOS以及windows挂载S3的存储桶到本地文件系统,并保持对象原来格式。

只要支持S3存储协议的都支持挂载,比如minio、华为云OBS、阿里云OSS等,特殊一点的腾讯cos自己整了个cosfs,类似于S3FS。

2.华为云OBS、亚马逊云S3等挂载Linux系统

2.1 安装s3fs

bash 复制代码
#centos 安装
yum -y install s3fs-fuse
#ubantu 安装
apt install s3fs

2.2 挂载明亮介绍

S3FS参数说明

命令: s3fs BUCKET:[/PATH] MOUNTPOINT [OPTION]...

OPTIONS:

  • passwd_file: 指定要使用的s3fs密码文件
  • url: 设置用于访问对象存储的 url
  • endpoint: 存储端点,默认值为us-east-1
  • umask: 为装载目录设置umask
  • no_check_certificate: 不检查认证
  • use_path_request_style: 使用路径请求样式(使用传统API调用),兼容支持与不支持S3的类似api的虚拟主机请求
    nonempty: 允许挂载点为非空目录
  • default_acl: 默认private,取值有private,public-read
  • ensure_diskfree: 设置磁盘可用空间。如果磁盘空闲空间小于此值,s3fs不适用磁盘空间
  • allow_other: 允许所有用户访问挂载点目录,可将该挂载点用于创建NFS共享
  • use_cache: 指定本地文件夹用作本地文件缓存。默认为空
  • del_cache: 在S3FS启动和退出时删除本地缓存
  • enable_noobj_cache: 减少s3fs发送的列举桶的请求,从而提升性能
  • dbglevel: 设置消息级别,默认关键(critical), 可以使用 info 进行调试输出
  • multireq_max: 列出对象的并行请求的最大数据
  • parallel_count: 上传大对象的并行请求数
  • retries: 默认值为5,传输失败重试次数
  • storage_class: 存储类(默认为标准) ,值有 standard,standard_ia , onezone_ia , reduced_redundancy
  • connect_timeout: 连接超时时间,默认为300秒
  • readwrite_timeout: 读写超时,默认值为60秒
  • max_stat_cache_size: 最大静态缓存大小,默认值为100000个条目(约40MB)
  • stat_cache_expire: 为stat缓存中条目指定过期时间(秒)。此过期时间表示自stat缓存后时间
  • -f : 前台输出执行信息
  • -d: 将dubug消息输出到 syslog中

2.3 创建访问密钥文件

bash 复制代码
#命令格式:echo [IAM用户访问密钥ID]:[ IAM用户访问密钥] >[密钥文件名] ( $ACCESS_KEY_ID:SECRET_ACCESS_KEY)
echo "username:password" > /data/s3fs/.passwd-s3fs 
# 设置密钥智能被当前用户访问
chmod 600 /data/s3fs/.passwd-s3fs

2.4 运行挂载命令

亚马逊云s3官网参考:https://aws.amazon.com/cn/blogs/china/s3fs-amazon-ec2-linux/

华为云官网OBS官网参考:https://support.huaweicloud.com/fstg-obs/obs_12_0008.html

bash 复制代码
#挂载 S3存储
# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://s3.cn-north-1.amazonaws.com.cn -o endpoint=cn-north-1
#挂载华为云OBS
# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://obs.cn-north-4.myhuaweicloud.com 
#挂载minio存储
# 需要加上 use_path_request_style进行兼容
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001  -o use_path_request_style
# 可以使用 -o dbglevel=info -f  进行输出调试信息
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001  -o use_path_request_style -o dbglevel=info -f

2.5 开机自动挂载

写入到 /etc/fstab

bash 复制代码
# 命令格式:s3fs#[S3存储桶名] [本地目录名] fuse _netdev,[options1],[optins2]... 0 0
s3fs prodfile-bucket /data/s3fs/s3mnt fuse _netdev,passwd_file=/data/s3fs/.passwd-s3fs,url=http://obs.cn-north-4.myhuaweicloud.com  0 0

3.阿里云oss等挂载MacOS系统

步骤基本上于Linux系统相同,命令略有差别
阿里云oss挂载官网参考:https://www.alibabacloud.com/help/zh/oss/developer-reference/mount-oss-buckets-to-local-file-systems-by-using-amazon-s3-protocols

3.1 装s3fs的命令

bash 复制代码
brew install --cask macfuse 
brew install gromgit/fuse/s3fs-mac

3.2 配置账号访问信息

bash 复制代码
#将具有Bucket访问权限的AccessKey ID和AccessKey Secret信息存放在.passwd-s3fs文件中。
echo $ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs
#将.passwd-s3fs文件的权限设置为600。
chmod 600 ${HOME}/.passwd-s3fs

3.3 挂载存储空间

bash 复制代码
#创建挂载点
mkdir /tmp/oss-bucket
#将华东1(杭州)地域的examplebucket挂载至/tmp/oss-bucket。
s3fs examplebucket /tmp/oss-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://oss-cn-hangzhou.aliyuncs.com
#如果是与OSS同地域的ECS访问,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的内网endpoint。

3.4 设置开机自动启动

  1. 创建开机自启动脚本
bash 复制代码
#vim oss-start.sh
#初始化需要先解绑定,否则会有意外的错误发生
umount -f /tmp/oss-bucket
nohup  s3fs -f examplebucket /tmp/oss-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://oss-cn-hangzhou.aliyuncs.com >/dev/null 2>&1 & 
#增加可执行权限
#chmod +x oss-start.sh
  1. 将启动脚本增加到启动项中

4.阿里云oss、腾讯云cos等挂载windos系统

阿里云oss挂载官网参考:https://www.alibabacloud.com/help/zh/oss/developer-reference/mount-oss-buckets-to-local-file-systems-by-using-amazon-s3-protocols

腾讯云cos挂载官网参考:https://cloud.tencent.com/document/product/436/55241

windos系统挂载云盘需要借助Rclone,Rclone是一个命令行程序,用于管理云存储中的数据,支持在50多种云存储产品间同步数据。相对于s3fs和goofys,Rclone还支持将存储空间挂载到Windows系统上,作为本地磁盘共享数据。

4.1 Rclone特点

  • Rclone支持文件同步、文件传输、加密、挂载等。
  • Rclone支持多种系统,能让您将存储空间挂载到本地文件系统中,并通过多种协议提供服务
    关于Rclone的介绍,请参见Rclone

4.2 安装Winfsp

以下载winfsp-1.12.22339版本为例。下载地址,请参见Winfsp

4.3 下载Rclone工具

以下载rclone-v1.60.1-windows-amd64版本为例。下载地址,请参见Rclone。Rclone是一个命令行程序,下载后,只需解压到本地任意目录即可,此处以解压到D:\Rclone目录为例。

4.4 配置Rclone。

  1. 将D:\Rclone添加到环境变量。

小提示:环境变量设置,在"我的电脑"->"属性"->"高级"->"环境变量"中增加或修改环境变量后,一般需重启系统才能使之生效

  1. 打开命令行窗口,输入rclone --version,然后按下Enter。返回rclone v1.60.1,表明Rclone已成功安装。

  2. 输入rclone config命令,然后按下Enter。

  3. 输入n,按下Enter,然后新建new remote。

  4. 以new remote命名为test-remote为例。

  5. 输入磁盘名称,例如oss-disk,然后按下Enter。

  6. 选择包含Amazon S3 Compliant Storage的选项,即输入5,然后按下Enter。

  7. 选择包含Alibaba Cloud Object Storage System (OSS)的选项,即输入2,然后按下Enter。

  8. 执行到env_auth>,按下Enter。

  9. 执行到access_key_id>,输入OSS的访问密钥AccessKey ID,然后按下Enter。

  10. 执行到 secret_access_key> ,输入OSS的访问密钥AccessKey Secret,然后按下Enter。

  11. 执行到endpoint>,输入访问OSS的endpoint,然后按下Enter。

  12. 以访问华东1(杭州)外网为例,endpoint填写为oss-cn-hangzhou.aliyuncs.com。如果是ECS上的Windows环境,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的内网endpoint。

  13. 执行到acl>,选择Object读写权限。该选项仅对新上传的Object有效。您可以根据实际需求选择合适的读写权限。此处以选择default(私有权限)为例,即输入1,然后按下Enter。

  14. 执行到storage_class>,选择Object的存储类型。 此处以选择default(继承Bucket存储类型)为例,即输入1,然后按下Enter。

  15. 执行到Edit advanced config? (y/n) ,输入n,然后按下Enter。

  16. 输入q,完成所有配置。

4.5 挂载存储空间

以将examplebucket挂载到E:盘,并以D:\disk-cache路径作为缓存目录为例。

bash 复制代码
rclone mount oss-disk:/examplebucket E: --cache-dir D:\disk-cache --vfs-cache-mode writes

返回The service rclone has been started信息,表示挂载成功。此时,您还可以查看到examplebucket(E:)的磁盘。

4.6 设置开机启动

  1. 创建oss挂载启动脚本
shell 复制代码
#在E:\oss-cache\start-shell目录创建oss-start.bat,内容如下:
rclone mount oss-disk:/examplebucket E: --cache-dir D:\disk-cache --vfs-cache-mode writes
  1. 创建windows程序开机启动脚本
shell 复制代码
#创建start-oss-shell.bat文件
powershell.exe -command "& {Start-Process  -WindowStyle hidden  -FilePath 'E:\oss-cache\start-shell\oss-start.bat'}"
  1. 将开机启动脚本移动至powershell开机启动项下
    win+R输入 shell:startup,随后将start-oss-shell.bat文件放在该文件下
    关机重启即可测试

5.特殊项腾讯云cos挂载Linux系统

腾讯云cos挂载windows和oss、s3等基本类似,均是需要借助上述Rclone工具

但是cos挂载到linux系统时,与其他云盘就不一样了,很是特殊,使用s3fs挂载之后打不开cos,需要借助其特有的挂载工具cosfs才可以,真是格色...。

腾讯云cosfs官网参考:https://cloud.tencent.com/document/product/436/30743

5.1 cosfs安装

官网教程:https://cloud.tencent.com/document/product/436/6883

工具下载地址:https://github.com/tencentyun/cosfs/releases

下载与系统相匹配的rpm文件后安装

bash 复制代码
#CentOS7.0
sudo wget https://github.com/tencentyun/cosfs/releases/download/v1.0.21/cosfs-1.0.21-centos7.0.x86_64.rpm
sudo rpm -ivh cosfs-1.0.21-centos7.0.x86_64.rpm
#注意: 如果安装时报错,提示 conflicts with file from package fuse-libs-*,则加 --force 参数再次安装。
#查看是否安装完成
cosfs --help

5.2 配置账号访问信息

bash 复制代码
#将具有Bucket访问权限的AccessKey ID和AccessKey Secret信息存放在.passwd-s3fs文件中。
echo $ACCESS_KEY_ID:SECRET_ACCESS_KEY > /tmp/passwd-sts
#将.passwd-s3fs文件的权限设置为600。
chmod 600 /tmp/passwd-sts

5.3 执行挂载命令

bash 复制代码
#使用命令选项 -ocam_role=[role] 指定角色为 sts、-opasswd_file=[path] 指定密钥文件路径,示例如下:
cosfs examplebucket-1250000000 /mnt/cosfs -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=info -oallow_other -ocam_role=sts -opasswd_file=/tmp/passwd-sts

cosfs bucketName mount_address -ourl=http://cos.ap-beijing.myqcloud.com -odbglevel=info  -opasswd_file=/tmp/passwd-sts
#如何挂载 Bucket 下的一个目录
cosfs examplebucket-1250000000:/my-dir /mnt/cosfs -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=info
#注意:my-dir 必须以 / 开头。

5.4 设定 COSFS 开机自动挂载?

bash 复制代码
#安装 fuse 包:
#CentOS系统
sudo yum install -y fuse
#Ubuntu系统
sudo apt-get install fuse

#在 /etc/fstab 文件中添加如下的内容,其中,_netdev 选项使得网络准备好后再执行当前命令:
cosfs#examplebucket-1250000000 /mnt/cosfs fuse _netdev,allow_other,url=http://cos.ap-guangzhou.myqcloud.com,dbglevel=info
相关推荐
张晋涛12 分钟前
KCD 北京站丨云原生与AI的双向奔赴,超强Speakers阵容公开
云原生·aigc·线下活动
梦游钓鱼1 小时前
在window终端创建docker容器的问题
运维·docker·容器
孤寂大仙v1 小时前
【Linux笔记】理解文件系统(上)
linux·运维·笔记
沉默的八哥2 小时前
K8S高可用Web应用部署方案
运维
winyh52 小时前
Vite 打包后Nginx部署配置
运维·nginx
StableAndCalm2 小时前
什么是zookeeper
分布式·zookeeper·云原生
pyliumy2 小时前
在基于Arm架构的华为鲲鹏服务器上,针对openEuler 20.03 LTS操作系统, 安装Ansible 和MySQL
服务器·架构·ansible
运维小贺3 小时前
Nginx常用的模块
运维·nginx·正则表达式
努力学习的小廉3 小时前
深入了解Linux —— 调试程序
linux·运维·服务器