对象存储

通过POSIX接口访问对象存储

2024-09-05 06:13:15

操作场景

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直接安装。

配置

1.     开通ZOS服务,并创建桶。

2.     建立凭证文件,需要用到步骤1中的AK和SK, 注意该凭证文件的权限需要设置为600

echo AK:SK > ${HOME}/.passwd-s3fs
chmod 600 ${HOME}/.passwd-s3fs

     3.       挂载桶

本实践以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获得。

    4.       查看挂载结果

通过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

   5.       在该目录下创建一个文件。

[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

   6.       通过控制台查看该桶下的对象。

下载该对象到本地,然后查看文件内容,是"hello zos"。

此时s3fs是可以正常工作的。

      7.       卸载

通过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


u5Hp4lXtq4m.