Windows (Beta 版本) 使用说明
从 JuiceFS 企业版 5.2 开始,JuiceFS 支持在 Windows 上运行。请注意,当前 Windows 客户端处于 Beta 阶段,请详细阅读以下说明。
运行时依赖
由于 Windows 不支持 FUSE,因此如果要在 Windows 上运行 JuiceFS,需要借助一个开源项目 WinFsp 对 FUSE 的实现。你需要在运行 JuiceFS 前,前往 WinFsp 的 GitHub 仓库下载最新版本并安装。
挂载方式
与 Linux 版本相同,JuiceFS 在 Windows 上也支持前台与后台两种挂载方式。对于后台挂载,JuiceFS 会依赖于 WinFsp 所提供的 Launcher 服务,在此模式下,文件系统将由 SYSTEM 用户进行挂载,如果你希望你的挂载能被同一台机器下的所有用户可见,请选择后台挂载。需要注意的是,后台挂载需要管理员权限执行。
JuiceFS Windows 版本默认使用后台挂载。
如果你选择了前台挂载,则挂载的文件系统只对当前用户可见,这意味着如果你是以 Administrator 身份运行的挂载命令(或者 Terminal 或这 PowerShell),则其它用户是无法访问该挂载的。
挂载类型
JuiceFS 在 Windows 支持将文件系统挂载成两种不同的类型:
- 挂载为网络文件系统:在这种模式下,JuiceFS 会注册为一个网络文件系统,操作系统在进行 I/O 操作时,对于网络文件系统,会进行一些请求的优化以提高性能,这是 JuiceFS 默认的挂载类型。
- 挂载为本地设备:在这种模式下,JuiceFS 会注册为一个本地的设备。如果你需要将一个文件系统挂载到非盘符,或者希望将挂载后的盘符进行共享,那么你可以选择使用该挂载类型(挂载时带上参数
--mount-as-local
)。
权限差异
Windows 与 Linux 2 个操作系统有本质不同的权限模型。Windows 使用 ACL(访问控制列表)来管理文件和目录的权限,Linux 使用的则是 POSIX 的权限模型。而在 JuiceFS 的后端中,相关数据是以 POSIX 的模型进行存储的。这意味着在转换过程中,可能会出现一些具体行为上的差异。
例如 Windows 新建文件时,文件的权限可能会根据创建时的 Security Descriptor 与父目录决定,如果你希望新创建的文件都有一个固定的权限,可以在挂载时使用 -o "create_umask=xxx"
参数。(在 xxx=022 时,新建的文件权限为 644)
UID 与 GID
在 Windows 上,用户 ID 以及所在的组,都是以 SID 的形式表示,这是一个字符串,类似于 S-1-5-32-544
这样的格式。在使用时,JuiceFS 会将 Windows 的 SID 通过一定的规则转化成 UID 与 GID,也会尝试将 POSIX 的 UID 与 GID 转化为 Windows SID。
通常来说,对于没有加入域的普通用户,这个转换的过程与用户名没有关系,只与对应用户 SID 值的最后部分有关。
值得一提的是,在 Windows 上,JuiceFS 也并不会将 SYSTEM 与 Administrator 用户转换成 Linux 上的 root 用户 (UID=0)。如果你期望在 Windows 上以 类似 Linux 下 root 用户的身份进行文件系统的各项操作,你可以在挂载时使用 --as-root
参数。
挂载失败排查
如果你在挂载时遇到问题,可以尝试以下方法进行排查:
- 使用
-f --debug --fuse-access-log D:\\fuse.log
参数进行挂载,这样可以在前台与对应的日志文件获取更详细的输出信息。 - 在后台挂载时,使用
--log
参数指定日志文件路径。 - 找到 WinFsp 的安装目录,通常位于
C:\Program Files (x86)\WinFsp\bin
,执行下面的diag.bat
脚本检查各项输出是否正常。 - 尝试执行
net use X: \\memfs64\share
以挂载一个 WinFsp 的内存文件系统以测试 WinFsp 的系统服务是否正常运行。(该方法需要在安装 WinFsp 时勾选了开发组件) - 如果问题依旧,请附上上方的相关日志,向我们的支持团队寻求帮助。
自动挂载
目前 JuiceFS 在 Windows 上不支持自动挂载功能。如果你需要在系统启动时自动挂载文件系统,可以考虑使用 Windows 的任务计划程序来实现。
已知问题
Close-Open 一致性
由于 WinFsp 对于 FUSE 的实现方式不同(WinFsp 在处理 CloseHandle 请求时并不会像 Linux FUSE 一般阻塞等待),因此 JuiceFS 在 当前 WinFsp 的最新版本(2025)中,并不能像 Linux 系统一样 保证 Close-Open 的一致性。
此问题我们正在解决中。
非 Onwer 身份的覆盖写
由于 WinFsp 对于 group 与 others 写权限的处理不同(WinFsp 的权限处理参考了 Windows SFU 的实现),在转换 POSIX group 与 others 的写权限时,转换结果中的 Windows ACL 并没有包含 WRITE_EA,这会导致非 Owner 用户在操作对应文件时,即时设置的权限为 0666,也无法进行覆盖写入。
此问题我们正在解决中。
特殊的文件属性
Windows 上一些特殊的属性,例如只读、隐藏等属性,JuiceFS 目前并不支持。
大小写问题
在 Windows 上,默认情况下,文件系统是大小写不敏感的。虽然 JuiceFS 在元数据中保存的数据是大小写敏感的,但在 Windows 版本中,JuiceFS 会在各项操作中忽略大小写差异。如果你的文件系统,恰好在同一个目录下,有着大小写不同的文件名(例如 a.txt 与 A.TXT),那么在使用中,可能会遇到一些未知问题。
同时,在已知的 Windows 内核对文件的处理中,也可能会出现文件名全大写化的问题,例如在文件浏览器新建一个文件 a.txt 后,可能会变成 A.TXT。出于性能的考虑,JuiceFS 默认不会向对应的查询接口返回大小写精确的文件名,如果希望在此特定情况下获取精确的文件名,可以在挂载时使用 --report-case
参数。
挂载后在我的电脑中没有自动刷新
受限于 Windows 文件系统的挂载检测机制,部分用户可能会在挂载成功后,发现我的电脑中显示新挂载的文件系统。你可以尝试手动刷新,或者直接输入对应的挂载盘符以检测是否能访问。
暂不支持的特性或者功能
- 不支持创建软链接