Skip to main content

在 Windows 上使用 JuiceFS

准备工作

目前 Windows 客户端不支持多用户,也就是说,A 账号挂载了 JuiceFS,只有 A 账号看得见这个挂载点,B 账号则没法使用。如果你的场景要求多账号使用,请通过 Samba 在 Windows 上使用 JuiceFS,见下方相关章节。

安装依赖

Windows 需要通过 WinFsp 带来 FUSE 支持,因此请先下载安装 WinFsp,如果下载不顺利,也可以直接从我们的镜像下载安装包(非最新版)。安装的时候请选择“全部安装”。

WinFsp 就位后,需要下载安装 JuiceFS Windows 客户端:

配置 JuiceFS Windows 客户端

Windows 下无法使用 juicefs auth 命令来生成配置文件,需要从别处获取。在任意一台已经挂载了 JuiceFS 的 Linux 或者 macOS 机器上都能轻松获得,配置文件是一个 JuiceFS 内的隐藏文件,假使挂载点为 /jfs,用这条命令获取配置文件:sudo cat /jfs/.jfsconfig > jfs.conf

打开 jfs.conf,针对 Windows 机器情况修改部分参数:

  • CacheDir 需要视情况进行修改,比如 C:\jfsCache
  • Mountpoint 挂载点可以用 * 替代,表示自动寻找某个可用的盘符。
  • 如果配置文件的来源节点是通过 IAM 策略免密访问对象存储的,那么 jfs.conf 中将不包含对象存储的密钥,你需要自行添加 AccessKey / SecretKey。也正因此,我们推荐在先前步骤中获取一份包含完整认证信息的 jfs.conf
  • 如果配置文件缺少 Meta.Password,可以从 Linux / macOS 机器上查看 ~/.juicefs/$VOL_NAME.conf,从其中获取。

修改完毕以后,将 jfs.conf 移动到 juicefs.exe 所在的目录。然后使用管理员身份运行 install.bat

挂载文件系统

Windows 上可以通过以下方法操作挂载:

  • 前台挂载(任选其一)

    • 双击运行 juicefs.exe,会弹出命令行窗口,观察到打印出 service started 就表示挂载成功,此时会出现一个新的盘符。

    • 打开命令提示符终端或者 PowerShell,切换到 juicefs.exe 所在目录,执行:

      .\juicefs.exe -c <volume>.conf -m Z:
  • 后台挂载(任选其一)

    • 打开命令提示符终端或者 PowerShell,运行 net use * \\juicefs\jfs 命令。
    • 请参考 Windows 官方文档了解如何映射网络驱动器,其中「驱动器」可任意选择一个可用的驱动器号,「文件夹」填写 \\juicefs\jfs

注意,如果 juicefs.exe 的运行用户和使用用户不匹配,会导致没有权限访问,这时候你需要修改运行用户:为 juicefs.exe 加上 -o uid=197108(本地管理员的 UID 是固定值,但你也可以为 juicefs.exe 加上 -trace * 参数,从日志里面再次确认运行用户)。

你还可以将 JuiceFS 的子目录挂载到 Windows,步骤如下:

  • 按照上边的步骤,获取配置文件,保存成为 [subdir].conf,注意这里保存的配置文件名需要与子目录最后一级保持一致。
  • 打开配置文件,修改 Meta.Subdir,其中 Subdir 就是子目录完整路径。
  • 然后在 Windows 上挂载根路径创建子目录。
  • 使用 net use T: \\juicefs\<VOL_NAME>\[subdir] 挂载即用可,其中 <VOL_NAME> 为文件系统的名称。
  • 如果是 Windows 上第一次挂载,[subdir] 是一个空目录(之前生成配置在 Linux 或者 macOS 上挂载过),在 Windows 上挂载可能会遇到权限问题(挂载后无法创建文件),这时可以挂载文件系统根路径到 Z: 盘,在 Windows 上将这个子目录删除然后创建一个同名子目录。

卸载文件系统

取决于 JuiceFS 文件系统的挂载方式,请选择以下任意一种方法卸载文件系统:

  • 直接 Ctrl + C 杀掉进程。
  • 执行命令:net use Z: /delete
  • 在驱动器上点右键,断开。

Samba 网关

挂载 JuiceFS

准备好用于运行 Samba 的 Linux 服务器后,参考快速上手创建和挂载 JuiceFS 文件系统。针对 Samba 场景,挂载的时候推荐做一些针对性的参数调优:

sudo juicefs mount smb-gateway /mnt/jfs \
--cache-dir /dev/shm \
--no-posix-lock \
--no-bsd-lock \
--buffer-size 1000

部署 Samba 网关

  1. 安装 Samba,以 Ubuntu 为例:apt-get install samba

  2. 将挂载好的 JuiceFS 目录 /mnt/jfs 配置为共享目录,假设共享路径名字叫 juicefs(即可以通过 \\HOST\juicefs 访问到该目录),将以下内容添加到 /etc/samba/smb.conf

    [juicefs]
    comment = JuiceFS
    create mask = 0664
    directory mask = 0777
    guest ok = Yes
    path = /mnt/jfs
    read list = root
    valid users = root
    write list = root
  3. 考虑将 /etc/samba/smb.confsyslog = 0 注释掉,缩减日志量。

  4. 为 Samba 添加 root 用户 smbpasswd -a root,会提示输入密码,设置密码。该用户便是之后在 Windows 上访问 Samba 所用的账号。