操作场景
s3fs通过FUSE挂载ZOS的桶到本地文件系统,可以让用户像在本地文件系统下操作目录和文件一样,操作ZOS桶里的对象。
支持的功能如下:
- 支持POSIX文件系统的大部分功能:
- 文件读写操作,包括随机读写、追加写等。
- 目录操作,包括目录的创建、删除等。
- 其他chmod/chown/truncate/link等功能。
- 支持MD5校验,保证数据完整性。
前提条件
- 所属地域已开通ZOS服务。
- 需要创建一个桶。
约束与限制
s3fs不能提供与本地文件系统完全相同的性能或语义,体现在以下几方面:
- 随机写或者追加写需要重写整个文件。
- 受限于网络性能,元数据操作,比如list目录,性能较差。
- rename操作不能保证原子性。
- 挂载相同存储桶的多个客户端之间没有相互协调机制,不能保证数据一致性。
- 不支持硬链接。
- 不适合高并发读写场景。
- 不支持挂载归档类型的桶。
操作步骤
安装
- CentOS
目前在EPEL源上提供了最新版本,只要配置了EPEL源,在CentOS下可以通过yum进行安装。
[root@host0 ~]# yum list| grep s3fs
s3fs-fuse.x86_64 1.92-1.el7 epel
[root@host0 ~]# yum install -y s3fs-fuse
[root@host0 ~]# s3fs --version
Amazon Simple Storage Service File System V1.92 (commit:unknown) with OpenSSL
- CTyunOS
目前在云主机内可以通过yum直接安装。
配置
-
开通ZOS服务,并创建桶。
-
建立凭证文件,需要用到步骤1中的AK和SK, 注意该凭证文件的权限需要设置为600 。
echo AK:SK > ${HOME}/.passwd-s3fs chmod 600 ${HOME}/.passwd-s3fs
-
挂载桶
本实践以bucket-9095为例,通过s3fs命令将桶bucket-9095挂载到/data/bucket-9095目录。
[root@host0 ~]# mkdir -p /data/bucket-9095 [root@host0 ~]# s3fs bucket-9095 /data/bucket-9095 -o passwd_file=~/.passwd-s3fs -o url=http://192.168.1.40 -o use_path_request_style
s3fs的更多挂载命令,可以通过s3fs -h获得。
-
查看挂载结果
通过df 命令可以看到s3fs的挂载点。
[root@host0 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 2.9G 0 2.9G 0% /dev tmpfs 2.9G 0 2.9G 0% /dev/shm tmpfs 2.9G 18M 2.9G 1% /run tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 26G 8.1G 18G 32% / /dev/sdb 200G 54G 147G 27% /data /dev/sda1 1014M 239M 776M 24% /boot s3fs 4.0G 0 4.0G 0% /data/bucket-9095
-
在该目录下创建一个文件。
[root@host0 ~]# cd /data/bucket-9095/ [root@host0 bucket-9095]# ls [root@host0 bucket-9095]# echo "hello zos" > test.txt [root@host0 bucket-9095]# ls test.txt [root@host0 bucket-9095]# cat test.txt hello zos
-
通过控制台查看该桶下的对象。
下载该对象到本地,然后查看文件内容,是"hello zos"。
此时s3fs是可以正常工作的。
-
卸载
通过umount命令可以卸载s3fs的挂载。
[root@host0 ~]# umount /data/bucket-9095 [root@host0 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 2.9G 0 2.9G 0% /dev tmpfs 2.9G 0 2.9G 0% /dev/shm tmpfs 2.9G 18M 2.9G 1% /run tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 26G 8.2G 18G 32% / /dev/sdb 200G 54G 147G 27% /data /dev/sda1 1014M 239M 776M 24% /boot
执行完上述命令后,看不到之前挂载的"/data/bucket-9095"。
调试功能
当挂载失败,可以通过增加调试参数(-o dbglevel=debug -f -o curldbg),将更加详细的日志输出到屏幕上。
[root@host0 ~]# s3fs bucket-9095 /data/bucket-9095 -o passwd_file=~/.passwd-s3fs -o url=http://192.168.1.40 -o use_path_request_style -o dbglevel=debug -f -o curldbg
也可以通过参数logfile(此时不需要-f参数),将日志输出到文件中。
[root@host0 ~]# s3fs bucket-9095 /data/bucket-9095 -o passwd_file=~/.passwd-s3fs -o url=http://192.168.1.40 -o use_path_request_style -o dbglevel=debug -o curldbg -o logfile=/tmp/s3fs.log