zpool:池 I/O 当前暂停

ken*_*orb 9 mount disk-utility zfs macos

在 OSX 上使用ZFS并且我有 zpool,它处于活动状态且在线:

NAME      SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
WD_1TB    931G   280G   651G    30%  1.00x  ONLINE  -
Run Code Online (Sandbox Code Playgroud)

但我实际上无法安装它。

$ sudo zfs mount WD_1TB
cannot open 'WD_1TB': pool I/O is currently suspended
cannot open 'WD_1TB': pool I/O is currently suspended
Run Code Online (Sandbox Code Playgroud)

或卸载它:

$ sudo zfs unmount WD_1TB
cannot open 'WD_1TB': pool I/O is currently suspended
cannot open 'WD_1TB': pool I/O is currently suspended
Run Code Online (Sandbox Code Playgroud)

甚至摧毁它:

$ sudo zpool destroy -f WD_1TB
cannot open 'WD_1TB': pool I/O is currently suspended
Run Code Online (Sandbox Code Playgroud)

这样做时zpool export WD_1TB会冻结。

清除池中的设备错误时,也会出现错误:

$ sudo zpool clear WD_1TB
cannot clear errors for WD_1TB: I/O error
Run Code Online (Sandbox Code Playgroud)

无论磁盘是否通过 USB 连接,都会发生上述情况。

有趣的是将zpool statuszpool 指向 /dev/disk1,但diskutil list指向 /dev/disk3。

我已通过以下方式启用调试消息:sysctl -w zfs.vnops_osx_debug=1并运行sudo dmesg | tail它显示如下内容:

0 [Level 3] [Facility com.apple.system.fs] [ErrType IO] [ErrNo 6] [IOType Read] [PBlkNum 0] [LBlkNum 0] 
0 [Level 3] [Facility com.apple.system.fs] [DevNode devfs] [MountPt /dev] [Path /dev/disk1s2] 
disk1s2: media is not present.
0 [Level 3] [Facility com.apple.system.fs] [ErrType IO] [ErrNo 6] [IOType Read] [PBlkNum 512] [LBlkNum 512] 
0 [Level 3] [Facility com.apple.system.fs] [DevNode devfs] [MountPt /dev] [Path /dev/disk1s2] 

zfs_vnop_write(vp 0xffffff804f6303c0, offset 0x12b00000 size 0x10000
zfs_vnop_write(vp 0xffffff804f6303c0, offset 0x12b10000 size 0x10000
zfs_vnop_write(vp 0xffffff804f6303c0, offset 0x12b20000 size 0x10000
zfs_vnop_write(vp 0xffffff804f6303c0, offset 0x12b30000 size 0x10000
zfs_vnop_write(vp 0xffffff8051b031e0, offset 0x1f0000 size 0x10000
Run Code Online (Sandbox Code Playgroud)

连接或断开硬盘驱动器没有帮助。

在上述情况下,有什么方法可以简单地在 OSX 上安装 HDD?

有关的:

ken*_*orb 10

如果执行sudo zpool clear WD_1TB不起作用,请尝试:

$ sudo zpool clear -nFX WD_1TB
Run Code Online (Sandbox Code Playgroud)

这些未记录的参数意味着:

  • -F:(未记录在案clear,与 相同import)倒带。不可导入池的恢复模式。尝试通过丢弃最后几个交易将池返回到可导入状态。并非所有损坏的池都可以使用此选项恢复。如果成功,来自丢弃事务的数据将不可挽回地丢失。如果池可导入或已导入,则忽略此选项。
  • -n:(未记录clear,与 for 相同import)与 -F恢复选项一起使用。确定不可导入的池是否可以再次导入,但不实际执行池恢复。有关池恢复模式的更多详细信息,请参阅上面的 -F 选项。然后再次尝试重新导入:
  • -X(未记录):极度倒带。-X 的效果似乎是尝试了一些非常冗长的操作,但永远不会完成。在某些情况下,需要重新启动才能终止该过程。
  • -V(未记录):UTSLing 的选项,当使用import它时会使池再次导入,但仍然没有尝试重新同步。

来源:ZFS 故障池问题man zpool.

$ zpool import WD_1TB
Run Code Online (Sandbox Code Playgroud)

如果没有帮助,请尝试以下命令来删除无效的 zpool:

$ zpool list -v
$ sudo zfs unmount WD_1TB
$ sudo zpool destroy -f WD_1TB
$ zpool detach WD_1TB disk1s2
$ zpool remove WD_1TB disk1s2
$ zpool remove WD_1TB /dev/disk1s2
$ zpool set cachefile=/etc/zfs/zpool.cache WD_1TB
Run Code Online (Sandbox Code Playgroud)

最后,如果没有任何帮助,请删除文件/etc/zfs/zpool.cache(可选)并重新启动计算机。


有关的: