BUG简述: 导入zfs存储池 存在zvol 造成mdadm死锁
环境:
出现频率: 必现
系统版本:1.1.29
系统雷系:X86/ARM
设备环境:(物理机/虚拟机)
具体复现和分析:
导入的zfs存储池,原本是其他系统创建(PVE、Truenas)或者原本是飞牛下手动创建过zvol的,
默认情况下,飞牛的磁盘自动挂载程序会把所有zvol内的文件系统展开挂载,
zvol大概率都是放虚拟机的硬盘的,然后又被识别成本机的其他存储空间。
如下图,只导入了一次,就出现两个存储空间,
两个存储空间 删除和导出,都会互相死锁,
并且飞牛执行软关机和重启也会因为进程无法终止而卡住。


已经死锁的解决
已经卡住的,只有断 电关机
或 zfs destory pool_name/zvol_name 先删掉zvol才能解决(如果数据不重要的话)
避免发生彻底解决
导入前,对存储池先执行 volmode=dev 的属性变更操作
zfs set volmode=dev pool_name
正常情况,存储池的这个属性,是向下继承的,
所以只要到池的名字做修改就行。
一共有如下几种类型 default full geom dev none
前3种,实测都会发生mdadm死锁
以下是手动处理后的情况,zvol以然还有,但没有被展开了。
