简介
官方文档:https://www.juicefs.com/docs/zh/ Github:https://github.com/juicedata/juicefs
JuiceFS 是一款面向云原生设计的高性能共享文件系统,在 Apache 2.0 开源协议下发布。提供完备的 POSIX 兼容性,可将几乎所有对象存储接入本地作为海量本地磁盘使用,亦可同时在跨平台、跨地区的不同主机上挂载读写。

性能:JuiceFS 是一个分布式文件系统,元数据访问的延时取决于挂载点到服务端之间 1 到 2 个网络来回(通常 1-3 ms),数据访问的延时取决于对象存储的延时 (通常 20-100 ms)。顺序读写的吞吐量可以到 50MiB/s 至 2800MiB/s,取决于网络带宽以及数据是否容易被压缩。JuiceFS 内置多级缓存(主动失效),一旦缓存预热好,访问的延时和吞吐量非常接近单机文件系统的性能(FUSE 会带来少量的开销)。
云挂载
登录控制台:https://juicefs.com/console/ 创建文件系统
curl -L https://juicefs.com/static/juicefs -o juicefs && chmod +x juicefs && sudo ./juicefs mount juicefs-yutao517 /jfs
AKI/SAK在对象存储授权创建并下载csv格式的密钥

安装
wget https://github.com/juicedata/juicefs/releases/download/v1.0.0-rc3/juicefs-1.0.0-rc3-linux-amd64.tar.gz
tar -zxf juicefs-1.0.0-rc3-linux-amd64.tar.gz
sudo install juicefs /usr/local/bin
基本使用
本地没有 Redis,也没有对象存储,体验 JuiceFS。拉起 JuiceFS 服务需要元数据引擎以及对象存储两个组件,但在这两个组件我们可以使用最简单的,比如元数据引擎用 SQLite这个嵌入式数据库,而对象存储使用本地磁盘(format 时的—bucket参数不填即为默认参数,默认为使用本地磁盘作为对象存储,root 用户默认存储路径为 /var/jfs ,普通用户默认存储路径为 ~/.juicefs/local)。这样就可以只需要 JuiceFS 二进制不需要任何外部组件就能体验 JuiceFS 产品。
# 1. 使用 sqlite 作为元数据引擎格式化文件系统
juicefs format "sqlite3://my-jfs.db" test1
# 2. 后台挂载文件系统到 ~/jfs 目录
juicefs mount sqlite3://myjfs.db ~/jfs


性能测试

阿里云使用
创建Redis数据库
/ 创建redis数据目录(可根据需要看是否需要挂载到ssd盘)
mkdir juicefs_redis_data
docker run --net host --name some-redis -v /data/curvefs/etcd/juicefs_redis_data:/data -d redis
// redis默认端口是6379, 判断redis容器是否启动成功
netstat -anlp | grep redis
telnet 127.0.0.1 6379
创建
juicefs format \
> --storage oss \
> --bucket test2-aliyun.oss-cn-shanghai.aliyuncs.com \
> --access-key LTAI5tJUeyhC***** \
> --secret-key Tq710caRCyr5***** \
> redis://127.0.0.1:6379/1 \
> mystor

挂载
juicefs mount -d redis://10.0.2.10:6379/1 /mnt/jfs


卸载
umount /mnt/jfs
在 Docker 上使用 JuiceFS
mkdir -p /jfs/html
cat <<EOF> /jfs/html/index.html
> WELCOME TO JuiceFS
> EOF
docker run -d --name nginx -v /jfs/html:/usr/share/nginx/html -p 8080:80 nginx

JuiceFS镜像
FROM alpine:latest
LABEL maintainer="yutao_517 <https://blog.yutao.co>"
# Install JuiceFS client
RUN apk add --no-cache curl && \
wget https://download.yutao.co/JuiceFS/juicefs-1.0.0-rc3-linux-amd64.tar.gz && \
tar -zxf juicefs-1.0.0-rc3-linux-amd64.tar.gz && \
install juicefs /usr/bin && \
rm juicefs juicefs-1.0.0-rc3-linux-amd64.tar.gz && \
rm -rf /var/cache/apk/* && \
apk del curl
ENTRYPOINT ["/usr/bin/juicefs", "mount"]
docker build -t juicefs:yutao1.0 .