切换主题
使用 JuiceFS 与 MinIO 扩展 lidong 存储
准备工作
- 服务器
server-A:带有独立数据盘的 lidong 服务器,用于部署对象存储。server-B:需要挂载远端存储空间的业务服务器。
- 软件工具
- MinIO
- Juicefs
- Redis
- docker/podman
- docker-compose/podman-compose
开始前请记录两台服务器的内网地址,并确认防火墙只开放实际需要的端口。
第一步:在存储节点(server-A)部署 MinIO
建议将 MinIO 数据目录放在独立数据盘,并与系统盘隔离。
假设数据盘分区路径为 /dev/vdb,将其格式化为 XFS 文件系统,并设置标签 MINIODRIVE1:
格式化分区
bash
mkfs.xfs /dev/vdb -L MINIODRIVE1然后创建一个目录 (/minio/data) 挂载上去:
挂载分区
bash
mkdir -p /minio/data
mount -t xfs -o "noatime,nodiratime" /dev/vdb /minio/data创建 MinIO 的配置文件 /etc/default/minio,内容如下(注意修改用户名和密码: MINIO_ROOT_USER,MINIO_ROOT_PASSWORD):
minio.conf
ini
MINIO_ROOT_USER=minio-user-name
MINIO_ROOT_PASSWORD=CHANGE_ME_MINIO_ROOT_PASSWORD
MINIO_VOLUMES="/data"
MINIO_OPTS="--console-address :9001"接下来使用容器启动 MinIO:
假设你已经安装 docker/podman 和 docker-compose
Minio 的 compose.yaml 文件内容如下:
yaml
version: "3.8"
services:
minio_local:
image: quay.io/minio/minio
container_name: minio_local
ports:
- 9000:9000 # MinIO API 端口
- 9001:9001 # MinIO Web 控制台端口
volumes:
- /minio/data:/data # 替换为上面挂载了分区的目录
- /etc/default/minio:/etc/config.env
environment:
- MINIO_CONFIG_ENV_FILE=/etc/config.env # 指定配置文件路径
command: server --console-address ":9001" # 启动 MinIO 服务器并指定控制台端口
restart: always # 容器自动重启策略启动 MinIO:docker compose -f compose.yaml up -d
打开 http://{机器 ip}:9001 看看是否启动成功,看到如下界面说明成功

使用前面设置的用户名与密码登录,点击左侧 Buckets -> Create bucket 创建新存储桶,例如命名为 juicefs:

然后创建新的 keys 用于后续的 juicefs。
点击左侧 Access Keys创建新的 keys,并记录:
安全提示:Secret Key 只会完整显示一次。请保存到密码管理器,不要截图或提交到公开仓库。
现在 Minio 部署完成了。
第二步:在存储节点(server-A)部署 Redis
使用容器部署 Redis 十分简单,先找个目录创建 redis 配置文件,例如 /redis/redis.conf,内容如下:
redis.conf
bash
# 关闭保护
protected-mode no
# 绑定监听IP地址
bind 0.0.0.0
maxmemory 1024mb
appendonly yes
appendfsync everysec然后创建容器 compose.yaml 文件。请将 CHANGE_ME_REDIS_PASSWORD 替换为高强度随机密码:
compose.yaml
yaml
version: "3"
services:
juicefs-redis:
image: redis:latest
container_name: juicefs-redis
deploy:
resources:
limits:
memory: 2G
cpus: "2"
ports:
- 6379:6379
volumes:
- redis-data:/data
- ./redis.conf:/etc/redis.conf
restart: always
command: redis-server /etc/redis.conf --requirepass CHANGE_ME_REDIS_PASSWORD
volumes:
db-data:然后启动容器:docker compose up -d
然后使用以下命令验证 redis 是否成功:
bash
docker exec juicefs-redis redis-cli -a CHANGE_ME_REDIS_PASSWORD ping显示 pong 表示 redis 启动成功,现在第二步完成了。
第三步:在应用节点(server-B)安装并挂载 JuiceFS
- 执行以下命令安装 juicefs:
bash
curl -sSL https://d.juicefs.com/install | sh -- 创建一个目录用于挂载 juicefs,例如
/shared-jfs
bash
mkdir /shared-jfs- 创建名为 shared-jfs 的 juicefs:
假设:
- server-A ip 为:
1.2.3.4,- Minio 创建的存储桶名字为
juicefs- minio 的访问密钥对:
- access-key:
YOUR_MINIO_ACCESS_KEY- secret-key:
YOUR_MINIO_SECRET_KEY- Redis 密码:
CHANGE_ME_REDIS_PASSWORD- redis 端口为:
6379,- juicefs 文件系统名为
shared-jfs
bash
juicefs format --storage minio --bucket http://1.2.3.4:9000/juicefs --access-key YOUR_MINIO_ACCESS_KEY --secret-key YOUR_MINIO_SECRET_KEY redis://:CHANGE_ME_REDIS_PASSWORD@1.2.3.4:6379/1 shared-jfs注:redis 地址中最后的 1 改为其他值可以创建新的 juicefs
成功后会在 MinIO web 控制台的 juicefs 存储桶中看到名为 shared-jfs 的文件夹。
然后挂载 juicefs 文件系统到 /shared-jfs 目录:
bash
juicefs mount -d redis://:CHANGE_ME_REDIS_PASSWORD@1.2.3.4:6379/1 /shared-jfs-d 表示后台运行
运行 JuiceFS 自带的性能测试。以下命令关闭大文件测试,以缩短验证时间:
bash
juicefs bench --big-file-size 0 /shared-jfs
再来看一下存储空间:

完成验证
至此,server-B 已挂载由 MinIO 提供后端存储的 JuiceFS 文件系统。投入生产前,请继续验证重启后的自动挂载、网络中断恢复、访问凭据轮换与备份策略。