在Docker /Systemd 上JuiceFS 的挂载指南,以postgres数据库为例

以下是使用 Docker 和 systemd 两种方法挂载 JuiceFS 文件系统的详细指南,结合配置文件及关键参数说明:


一、通过 systemd 服务挂载 JuiceFS

步骤说明:

  1. 创建服务文件

    使用 nano /etc/systemd/system/mnt-juicefs.service 编辑服务配置:

    ini 复制代码
    [Unit]
    Description=JuiceFS Mount Service
    After=network-online.target
    Requires=network-online.target
    
    [Service]
    Type=forking
    ExecStartPre=/usr/bin/mkdir -pv /mnt/juicefs/
    ExecStart=/usr/local/bin/juicefs mount \
      --update-fstab \
      --max-uploads=50 \
      --writeback \
      --cache-size 20480 \
      "--bucket=http://<对象存储地址>:<对象存储端口>/juicefs" \
      "postgres://<数据库用户>:<数据库密码>@<数据库地址>:<数据库端口>/juicefs" \
      /mnt/juicefs
    ExecStop=/bin/fusermount -u /mnt/juicefs
    Restart=always
    
    [Install]
    WantedBy=multi-user.target

    参数解释

    • --max-uploads=50:并行上传线程数,提升吞吐量 。
    • --writeback:启用写回缓存模式,优化性能 。
    • --cache-size 20480:设置 20GB 本地缓存 。
    • --bucketpostgres://:指定对象存储和元数据引擎地址 。
  2. 启用并启动服务

    bash 复制代码
    sudo systemctl daemon-reload
    sudo systemctl enable mnt-juicefs.service
    sudo systemctl start mnt-juicefs.service
  3. 验证挂载

    检查服务状态及挂载点:

    bash 复制代码
    systemctl status mnt-juicefs
    df -h | grep juicefs

二、通过 Docker 容器挂载 JuiceFS

配置文件(docker-compose.yml)解析:

yaml 复制代码
version: "3.6"
services:
  mount-verysync:
    image: juicedata/mount:ce-v1.2.3
    container_name: mount-verysync
    privileged: true
    cap_add:
      - SYS_ADMIN
    devices:
      - /dev/fuse:/dev/fuse
    command:
      - "juicefs"
      - "mount"
      - "--max-uploads=50"
      - "--writeback"
      - "--cache-size"
      - "204800"
      - "--bucket=http://<对象存储地址>:<对象存储端口>/verysync"
      - "postgres://<数据库用户>:<数据库密码>@<数据库地址>:<数据库端口>/verysync"
      - "/media/docker/volume/verysync"
    volumes:
      - /media/docker/volume/verysync:/media/docker/volume/verysync:rw,rshared
    networks:
      - mount-verysync_default
    restart: always
    security_opt:
      - apparmor:unconfined

networks:
  mount-verysync_default:
    driver: bridge
    enable_ipv6: true
    ipam:
      config:
        - subnet: 172.20.0.0/24
          gateway: 172.20.0.1
        - subnet: fc01:db8:21:172::/64
          gateway: fc01:db8:21:172::1

关键配置说明:

  1. 权限与设备

    • privileged: truecap_add: SYS_ADMIN:允许容器访问 FUSE 设备 。
    • devices: /dev/fuse:挂载宿主机的 FUSE 设备到容器 。
  2. 挂载参数

    • --cache-size 204800:设置 200GB 缓存,需根据磁盘容量调整 。
    • --bucketpostgres://:与元数据引擎和对象存储通信 。
  3. 网络与存储

    • 启用 IPv6 并配置双栈网络,确保容器与外部服务连通性 。
    • volumes 挂载宿主机目录,实现数据持久化 。
  4. 启动与验证

    bash 复制代码
    docker-compose up -d
    docker logs mount-verysync  # 查看日志

三、注意事项

  1. 权限问题

    • 确保 JuiceFS 客户端有权限访问元数据数据库(如 PostgreSQL)和对象存储 。
    • 宿主机目录 /media/docker/volume/verysync 需提前创建并授权。
  2. 卸载文件系统

    bash 复制代码
    # systemd
    sudo systemctl stop mnt-juicefs
    sudo fusermount -u /mnt/juicefs
    
    # Docker
    docker-compose down
    sudo fusermount -u -z /media/docker/volume/verysync  # 强制卸载 
  3. 性能调优

    根据场景调整 --max-uploads--cache-size,高并发场景可适当增大值 。


通过上述两种方法,可灵活实现 JuiceFS 在物理机或容器化环境中的自动挂载,满足不同场景需求。

相关推荐
❀͜͡傀儡师4 分钟前
如何使用k8s安装redis呢
redis·容器·kubernetes
Hoking7 小时前
Kafka集群部署(docker容器方式)SASL认证(zookeeper)
docker·zookeeper·kafka
云道轩8 小时前
llm-d:面向Kubernetes的高性能分布式LLM推理框架
分布式·容器·kubernetes
Hope Fancy11 小时前
macOS 连接 Docker 运行 postgres,使用navicat添加并关联数据库
macos·docker·postgresql
徐传良11 小时前
03.搭建K8S集群
云原生·容器·kubernetes
Ares-Wang12 小时前
kubernetes》》k8s》》kubectl proxy 命令后面加一个&
云原生·容器·kubernetes
Tom Boom12 小时前
Git常用命令完全指南:从入门到精通
大数据·git·elasticsearch·docker·自动化测试框架
容器魔方12 小时前
议程一览 | KubeCon China 2025 华为云精彩前瞻
云原生·容器·云计算
不吃饭的猪13 小时前
记一次spark在docker本地启动报错
大数据·docker·spark
藥瓿亭14 小时前
2024 CKA模拟系统制作 | Step-By-Step | 16、题目搭建-sidecar 代理容器日志
linux·运维·docker·云原生·容器·kubernetes·cka