JuiceFS使用指南

面临的问题

目前NAS挂载了7块硬盘,但是软raid的磁盘IO太高,换盘操作成本太高。在文件存储演进的今天,juiceFS的对象存储模式可以解决这个问题。

解决方案

1. 安装JuiceFS

JuiceFS 官方文档 中,提供了详细的安装步骤。 故当前安装客户端脚本如下:

curl -sSL https://d.juicefs.com/install | sh -

2. 创建文件系统

# 定义7块硬盘的挂载目录(假设为/srv/jfs/{disk1-disk7})
mkdir -p /srv/jfs/disk{1..7}
# 挂载7块硬盘到对应目录(用ext4文件系统,noatime减少IO)
for i in {1..7}; do
    sudo mount /dev/sd$(printf "b%01d" $i) /srv/jfs/disk$i -o noatime,nodiratime
done

# 创建JuiceFS文件系统(启用4副本+IO限流)
sudo juicefs format \
    --storage local \
    --block-size 4096 \
    redis://:GTX1080ti.@192.168.5.204:6379/1 \
    myjfs  

# 挂载JuiceFS文件系统(启用FUSE客户端限流,单盘IO<5M/s)
sudo juicefs mount \
    --readlimit 5 \  # 读限速5M/s
    --writelimit 5 \  # 写限速5M/s
    --cache-dir /srv/jfs/disk{1..6} \  # 用6块硬盘作缓存/存储(1块冷备)
    --cache-size 1024 \  # 缓存大小1G,避免缓存占用过多IO
    redis://127.0.0.1:6379/0 \
    /mnt/myjfs
juicefs format --storage file --bucket /data/jfs redis://localhost:6379/1 myjfs
juicefs format sqlite3://myjfs.db myjfs
juicefs mount sqlite3://myjfs.db /smb_data/jfs -d
[Unit]
Description=MinIO Object Storage
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
ExecStart=/root/scripts/start_minio.sh
StandardOutput=append:/var/log/minio/minio.log
StandardError=append:/var/log/minio/minio-error.log
ExecReload=/bin/kill -SIGHUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=5s
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target