VPS.Town 大盘鸡 + JuiceFS + MiniIO = 无限扩展存储空间

温馨提示

本文由用户 solar 撰写,并已加入 VPS.Town 优秀原创文章激励计划,本站享有完整版权,未经允许不得转载。

本文已通过 VPS.Town 社区文章投稿及奖励规则 (试行稿) 审核,并获得 100 元无门槛代金券 奖励。

📖 本文目录

准备工作

🌰 VPS.Town & JuiceFS 集群解决方案
  1. 最多可提供高达 8TB 大容量存储 的选项,扩容硬盘更轻松;
  2. 同时提供 SSD & HDD 混合方案,读写速度更快、JuiceFS 速度更稳定;
  3. 完善的售后保障,12*7 在线客服,更支持 7 天有理由退款;
  4. 搭配 JuiceFS 使用,可以实现无限扩展存储空间,扩容硬盘更轻松!

无 AFF 购买链接:点我一键直达

  1. 服务器
  2. 软件工具
    • MinIO
    • Juicefs
    • Redis
    • docker/podman
    • docker-compose/podman-compose

硬盘无限扩展分为以下三个步骤,1. 打开冰箱门;2. 硬盘放进冰箱里;3. 关闭冰箱门

第一步:使用大盘鸡 (server-A) 部署 MinIO

(VPSTown 的数据盘与系统盘分开,刚好适合 MinIO)

假设大盘的分区路径为 /dev/vdb,让我们格式化一下分区,创建标签名为 MINIODRIVE1 的 XFS 文件系统::

格式化分区
mkfs.xfs /dev/vdb -L MINIODRIVE1

然后创建一个目录 (/minio/data) 挂载上去:

挂载分区
mkdir -p /minio/data
mount -t xfs -o "noatime,nodiratime" /dev/vdb /minio/data

创建 MinIO 的配置文件 /etc/default/minio,内容如下(注意修改用户名和密码: MINIO_ROOT_USERMINIO_ROOT_PASSWORD):

minio.conf
MINIO_ROOT_USER=minio-user-name
MINIO_ROOT_PASSWORD=minio-password-123

MINIO_VOLUMES="/data"

MINIO_OPTS="--console-address :9001"

接下来使用容器启动 MinIO:

假设你已经安装 docker/podman 和 docker-compose

Minio 的 compose.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 看看是否启动成功,看到如下界面说明成功

输入用户名密码登录 (例如,用户名:minio-user-name, 密码:minio-password-123),点击左侧 Buckets -> Create bucket 创建新存储桶,例如命名为 juicefs

然后创建新的 keys 用于后续的 juicefs。

点击左侧 Access Keys创建新的 keys,并记录:

现在 Minio 部署完成了。

第二步:在大盘鸡 (server-A) 上使用部署 Redis

使用容器部署 Redis 十分简单,先找个目录创建 redis 配置文件,例如 /redis/redis.conf,内容如下:

redis.conf
# 关闭保护
protected-mode no
# 绑定监听IP地址
bind 0.0.0.0
maxmemory 1024mb
appendonly yes
appendfsync everysec

然后创建容器 compose.yaml 文件,内容如下(注意修改 --requirepass 后面的密码,例如 redis-passwd-123):

compose.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 redis-passwd-123

volumes:
  db-data:

然后启动容器:docker compose up -d

然后使用以下命令验证 redis 是否成功:

docker exec juicefs-redis redis-cli -a redis-passwd-123 ping

显示 pong 表示 redis 启动成功,现在第二步完成了。

第三步:在小盘鸡 (server-B) 中安装、创建并挂载 Juicefs

  1. 执行以下命令安装 juicefs:
curl -sSL https://d.juicefs.com/install | sh -
  1. 创建一个目录用于挂载 juicefs,例如 /shared-jfs
mkdir /shared-jfs
  1. 创建名为 shared-jfs 的 juicefs:

假设:

  • server-A ip 为:1.2.3.4

  • Minio 创建的存储桶名字为 juicefs

  • minio 的访问密钥对:

    • access-key: 8lzuaquVzxmnzbl87DsU,
    • secret-key: UbkAcsYeeaOMebTNPJrgHme2PLGBWU8yOi1AolRc
  • redis 密码为:redis-passwd-123,

  • redis 端口为:6379

  • juicefs 文件系统名为 shared-jfs

juicefs format --storage minio --bucket http://1.2.3.4:9000/juicefs --access-key 8lzuaquVzxmnzbl87DsU --secret-key UbkAcsYeeaOMebTNPJrgHme2PLGBWU8yOi1AolRc redis://:redis-passwd-123@1.2.3.4:6379/1 shared-jfs

注:redis 地址中最后的 1 改为其他值可以创建新的 juicefs

成功后会在 MinIO web 控制台的 juicefs 存储桶中看到名为 shared-jfs 的文件夹。

然后挂载 juicefs 文件系统到 /shared-jfs 目录:

juicefs mount -d redis://:redis-passwd-123@1.2.3.4:6379/1 /shared-jfs

-d 表示后台运行

最后让我们运行 juicefs 自带的性能测试看下是否成功 (这里我们关闭了大文件测试,太耗时啦 🤣):

juicefs bench --big-file-size 0 /shared-jfs

再来看一下存储空间:

教程结束

🎉 教程结束!

啊哈,现在 server-B 也有一个超级大的存储空间了。

😁 冰箱门关闭。