本文经测试环境为轻量应用服务器OpencloudOS9与Debian12
GooseFS-Lite 工具支持将对象存储的存储桶(同样支持轻量对象存储)挂载到本地,像使用本地文件系统一样直接操作腾讯云对象存储中的对象,相比于 COSFS 工具,GooseFS-Lite 可提供更高的大文件读写速度,不受本地磁盘的性能限制。GooseFS-Lite 支持 POSIX 文件系统的主要功能,例如文件顺序、随机读,顺序写、目录操作等功能。
使用限制
GooseFS-Lite 仅适合挂载后对文件进行简单的管理,不支持本地文件系统的一些功能用法。 请注意以下使用限制:
- 不支持对文件进行随机写和 truncate 操作。
- 多个客户端挂载同一个 COS 存储桶时,依赖用户自行协调多个客户端的行为。例如避免多个客户端写同一个文件等。
- 文件/文件夹的 rename 操作非原子操作。
- 不支持读取和 rename 当前挂载点正在写入的文件。
- 元数据操作如 list directory,性能较差,因为需要远程访问 COS 服务器。
- 不支持 soft/hard link。
- 追加写性能较差,涉及服务端数据拷贝和下载被追加文件。
- 不建议在小内存场景使用,例如在容器内存或者 CVM 内存小于 2G 的情况。
- 容器环境目前只支持 腾讯云容器服务(Tencent Kubernetes Engine,TKE)内使用,非 TKE 容器暂不支持。
- 不建议在大量随机读且对性能有较高要求的场景中使用。
所需环境
- KonaJDK 11
- Linux X86_64
安装GooseFS-Lite
安装依赖
Centos/TencentOS Server/OpencloudOS
yum install -y fuse-devel
Ubuntu/Debian
apt install -y libfuse-dev
安装GooseFS-Lite
curl -fssL https://downloads.tencentgoosefs.cn/goosefs-lite/install.sh | sh -x
cd goosefs-lite-*
sudo bash bin/install.sh
安装 KonaJDK11
若无法连接Github或访问速度较慢,可尝试使用镜像站(例如kkgithub.com)
sudo bash bin/install-jdk.sh https://github.com/Tencent/TencentKona-11/releases/download/kona11.0.22/TencentKona-11.0.22.b1-jdk_linux-x86_64.tar.gz
修改配置文件
新建子用户
提前准备好具有COS权限的AKSK,若无可前往访问管理进行新建子账号
本文选择了给予全读写权限(QcloudCOSFullAccess),若您需要更精细化的权限策略,请选择自定义策略使用三段式
创建完成即可获取密钥,其中SecretKey只会出现一次,请妥善保管密钥。
编辑配置文件
vim conf/core-site.xml
在图中三处分别填写SecretId、SecretKey、和存储桶地域(例如广州则为ap-guangzhou,其他地区对应代码可点此查询)
创建挂载文件夹
创建一个用于挂载的文件夹 此文件夹必须为空
mkdir /path/to/mount
挂载存储桶
将更改为你的存储桶名称
goosefs-lite mount /path/to/mount cosn://<BucketName>/
查看挂载状态
goosefs-lite stat
测试
创建一个test.txt测试是否挂载成功
touch test.txt
如图可见已经挂载成功
设置开机自动挂载
首先查看是否有已经挂载的存储桶
goosefs-lite stat
如果有 需要先取消挂载
goosefs-lite umount /path/to/mount
编辑服务文件
vim /usr/lib/systemd/system/goosefs-lite.service
将/path/to/mount 更改为实际要挂载的位置 将更改为要挂载的存储桶
注意,以下JAVA_OPTS中 -Xms 和 -Xmx 配置的内存值不能超过所在节点的物理内存上限的50%。如节点物理内存8GB,那么建议最多配置 -Xms4G -Xmx4G。
[Unit]
Description=The Tencent Cloud GooseFS Lite for COS
Requires=network-online.target
After=network-online.target
[Service]
Type=forking
User=root
Environment="JAVA_OPTS=-Xms1G -Xmx1G -XX:MaxDirectMemorySize=1G -XX:+UseG1GC -XX:G1HeapRegionSize=32m"
ExecStart=/bin/goosefs-lite mount /path/to/mount cosn://<BucketName>/
ExecStop=/bin/goosefs-lite umount /path/to/mount
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
使配置生效
# 让 goosefs-lite 的 systemd 配置生效
systemctl daemon-reload
# 启动后台 Fuse 进程
systemctl start goosefs-lite
# 查看后台 Daemon 进程状态
systemctl status goosefs-lite
# 查看挂载点列表
goosefs-lite stat
# 如果是修改systemd配置,则在修改后reload并restart。
设置为开机启动时尝试挂载:
systemctl enable goosefs-lite
常见问题
1.挂载cos存储桶可能会产生大量请求费用,若存储桶与服务器为不同地域 还将产生流量费用
2.使用轻量对象存储不会产生请求费用