阿里OSS-OSSFS
2024-10-08 01:01:55
简介
OSSFS就以把OSS作为文件系统的一部分,能让你在linux系统中把OSS bucket挂载到本地文件系统中,实现数据的共享。
主要功能
ossfs 基于s3fs 构建,具有s3fs 的全部功能。主要功能包括:
- 支持POSIX 文件系统的大部分功能,包括文件读写,目录,链接操作,权限,uid/gid,以及扩展属性(extended attributes)
- 通过OSS 的multipart 功能上传大文件。
- MD5 校验保证数据完整性。
局限性
ossfs提供的功能和性能和本地文件系统相比,具有一些局限性。具体包括:
- 随机或者追加写文件会导致整个文件的重写。
- 元数据操作,例如list directory,性能较差,因为需要远程访问OSS服务器。
- 文件/文件夹的rename操作不是原子的。
- 多个客户端挂载同一个OSS bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。
- 不支持hard link。
- 不适合用在高并发读/写的场景,这样会让系统的load升高。
安装包
centos 7
ossfs_1.80.2_centos7.0_x86_64.rpm
centos 6.5
ossfs_1.80.2_centos6.5_x86_64.rpm
安装方法
先看一下有没有安装fuse,如果有先删除了
yum remove fuse -y
把安装包传的服务器然后直接安装,以centos 7为例
yum -y localinstall ossfs_1..2_centos7.0_x86_64.rpm
配置
设置bucket name 和 AccessKeyId/Secret信息,将其存放在/etc/passwd-ossfs 文件中,注意这个文件的权限必须正确设置,建议设为640。
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod /etc/passwd-ossfs
这里涉及到阿里的accessKeyId/Secret的知识。为了安全我们应该去新建一个RAM然后生成这个key。并对这个RAM进行限制。这样即使这个key被泄露,也不会对其它bucket造成危险。
挂载
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint
可以把这句加到/etc/rc.local中
卸载
fusermount -u /tmp/ossfs
实验过程
这里出现的信息均不是真实。
[root@myhost ~]# yum remove fuse
Loaded plugins: fastestmirror
No Match for argument: fuse
No Packages marked for removal
[root@myhost ~]# yum localinstall ossfs_1..2_centos7.0_x86_64.rpm
Loaded plugins: fastestmirror
Examining ossfs_1..2_centos7.0_x86_64.rpm: ossfs-1.80.-.x86_64
Marking ossfs_1..2_centos7.0_x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package ossfs.x86_64 :1.80.- will be installed
--> Processing Dependency: fuse >= 2.8. for package: ossfs-1.80.-.x86_64
Loading mirror speeds from cached hostfile
--> Processing Dependency: fuse-libs >= 2.8. for package: ossfs-1.80.-.x86_64
--> Running transaction check
---> Package fuse.x86_64 :2.9.-.el7 will be installed
---> Package fuse-libs.x86_64 :2.9.-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===========================================================================================================================================================================================
Package Arch Version Repository Size
===========================================================================================================================================================================================
Installing:
ossfs x86_64 1.80.- /ossfs_1..2_centos7.0_x86_64 4.0 M
Installing for dependencies:
fuse x86_64 2.9.-.el7 base k
fuse-libs x86_64 2.9.-.el7 base k Transaction Summary
===========================================================================================================================================================================================
Install Package (+ Dependent packages) Total size: 4.2 M
Total download size: k
Installed size: 4.5 M
Is this ok [y/d/N]: y
Downloading packages:
(/): fuse-2.9.-.el7.x86_64.rpm | kB ::
(/): fuse-libs-2.9.-.el7.x86_64.rpm | kB ::
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total kB/s | kB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : fuse-libs-2.9.-.el7.x86_64 /
Installing : fuse-2.9.-.el7.x86_64 /
Installing : ossfs-1.80.-.x86_64 /
Verifying : ossfs-1.80.-.x86_64 /
Verifying : fuse-2.9.-.el7.x86_64 /
Verifying : fuse-libs-2.9.-.el7.x86_64 / Installed:
ossfs.x86_64 :1.80.- Dependency Installed:
fuse.x86_64 :2.9.-.el7 fuse-libs.x86_64 :2.9.-.el7 Complete! [root@myhost ~]# echo mybuckey:JMIdhjrtutkGtjjr:eFAC8jinzajflsietagv6JoOwfXbFN > /etc/passwd-ossfs
[root@myhost ~]# chmod /etc/passwd-ossfs
[root@myhost ~]# ossfs mybuckey /data1 -ourl=oss-cn-shenzhen-internal.aliyuncs.com
[root@myhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 40G .0G 36G % /
ossfs 256T 256T % /data1
最新文章
- NOIP2016滚粗计
- LINQ系列:Linq to Object限制操作符
- 关于JavaScript预编译和执行顺序以及函数引用类型的思考
- 移动端框架篇-控制子容器的滑屏框架-fullPage.js
- Java 动态生成复杂 Word
- Linux 命令 - echo: 显示一行文本
- ADB server didn't ACK的问题
- Runtime.getRuntime().addShutdownHook(shutdownHook);
- PHP <;<;EOF EOF的使用方法
- strings
- CUDA C Best Practices Guide 在线教程学习笔记 Part 1
- 安装JDK出现错误:-bash: /usr/java/jdk1.7.0_71/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory解决办法
- BZOJ 1069: [SCOI2007]最大土地面积 [旋转卡壳]
- Java中的java.math.BigInteger
- Python语言的高级特性
- oc门
- hibernate注解(三)1+N问题
- JavaScript权威指南--脚本化文档
- Linux bzip2命令详解
- CSS快速入门-浮动(float)