目前openzfs on windows在github上的仓库主要里程碑如下
- 2022/4/5 第一(新)版
- 2023/1/30 第一个beta版本 2.1.6-rv4
- 2023/9/10 移除预发布标签,2.2.0-rc6
- 2024/4/10 OS X和win的zfs版本和上游主线版本同步,2.2.3-rc6
- 2024/11/1,更新rc9 (9/4发布2.2.6)
目前兼容win11 23h2+,最新版本的挂载和卸载代码重写了,有一定概率蓝屏,稳定性有可能衰退。如果一切正常,可以用zfs mount和mountvol两种方式挂载。
安装驱动
官方仓库:Releases · openzfsonwindows/openzfs · GitHub
下载v2.2.6 RC9:https://github.com/openzfsonwindows/openzfs/releases/download/zfswin-2.2.6rc9/OpenZFSOnWindows-debug-2.2.6rc9.exe
创建存储池
右键点击开始菜单,选择终端管理员,输入 cd 'C:\Program Files\OpenZFS On Windows\' 进入zfs驱动所在文件夹
- 列出设备ID
wmic diskdrive list brief - 创建存储池
.\zpool.exe create -O casesensitivity=insensitive -O normalization=formD -O compression=lz4 -O atime=off -o ashift=12 存储池名 设备ID- 本例:选择3T的日立硬盘作为演示,设备ID是
PHYSICALDRIVE2,存储池取名blockwin
.\zpool.exe create -O casesensitivity=insensitive -O normalization=formD -O compression=lz4 -O atime=off -o ashift=12 blockwin PHYSICALDRIVE2
成功后可以查看windows中的磁盘状态
- 本例:选择3T的日立硬盘作为演示,设备ID是
功能测试
- zpool使用内存作为读取缓存,即ARC。因此写入过程中,内存不断被消耗,作为下次读取时的缓存。
- 由于自带诸多特性如写时复制,并且非win原生支持文件系统,会比ntfs更消耗cpu。
HDtune读盘测试没有CPU占用,可以推断为跳过文件系统读的裸盘
开机挂载
目前zfs on windows还不能自动挂载,但在官方的计划之中,未来实现,官方提供的方法是使用windows自带的计划任务,方法如下。
右键点击开始菜单,选择计算机管理。在任务计划程序中创建基本任务。
- 本例取名
mountzfs - 触发器选择
当前用户登陆时 - 操作选择
启动程序,浏览并选择zpool程序,默认为"C:\Program Files\OpenZFS On Windows\zpool.exe"添加参数import 池名,本例为import blockwin - 选择
当单击“完成”时,打开此任务的对话框,选择使用最高权限运行,单击确定以完成
重启后可见zpool每个硬盘正常有2个分区,一个为8M的兼容分区,剩余为主分区。
注意事项
- zpool创建存储池可以对已挂载的ntfs磁盘直接操作,请确认不要输错盘符。如果不幸输错盘符,未重启前该磁盘内的文件以旧能够读取,请及时导出备份
- 不要使用HDtune和CDM进行文件读取写入测试,会导致蓝屏。因为调用的i/o错误,测试软件不兼容zfs。
进阶使用
- zfs基本命令
zpool status查看存储池状态
zpool destroy 池名摧毁存储池
zpool import -f 池名导入存储池
zpool list列出存储池信息 - 设置缓存
通过修改注册表进行缓存大小调教,即最大许用内存,找到注册表地址:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\OpenZFS\zfs_arc。设置zfs_arc_max为0x80000000则使用2GB内存,0x400000000则使用16GB内存,需重启生效 - 更改盘符
右键点击开始菜单,选择终端管理员,输入cd 'C:\Program Files\OpenZFS On Windows\'进入zfs驱动所在文件夹,输入.\zfs.exe set driveletter=盘名 池名。
本例,修改blockwin为F盘,.\zfs.exe set driveletter=f blockwin - 跨平台使用
由于zfs在mac os x,windows,linux已做到完全跨平台,可以使用zpool import -f 池名来挂载存储池,并自行修改挂载点
- 谨慎升级
由于linux主流发行版的安装仓库普遍停留在2.1.x。比如debian11为2.1.11,RHEL8/9为2.1.15,如果在windows上使用2.2.6最新版本,可以向下兼容2.1.1,并且跨平台使用,而一旦使用zpool upgrade升级,虽然能获取最新特性,但低版本的系统将无法使用。
- 定期校验
zfs自带校验功能,zpool scrub 池名。本例为zpool scrub blockwin。定期校验有助于修复数据并且监控硬件健康情况。








