微信黑魔法-专注解决微信开发周边,小程序,公众号,微信机器人等技术分享

How to Fix Zfs Zpool Error Invalid Dev Speficification

如何修复 ZFS 创建zpool create出现的invalid vdev specification, xxx is part of active pool 错误

问题背景

在aws实例上运行zpool命令,出现下方错误

zpool create keydb raidz nvme1n1 nvme2n1 nvme3n1
Defaulting to 4K blocksize (ashift=12) for '/dev/nvme1n1'
Defaulting to 4K blocksize (ashift=12) for '/dev/nvme2n1'
Defaulting to 4K blocksize (ashift=12) for '/dev/nvme3n1'
invalid vdev specification
use '-f' to override the following errors:
/dev/nvme1n1 is part of active pool 'keydb'

按照提示执行, 还是不行

root@ip-10-230-3-239:/data# zpool create -f keydb raidz nvme1n1 nvme2n1 nvme3n1
Defaulting to 4K blocksize (ashift=12) for '/dev/nvme1n1'
Defaulting to 4K blocksize (ashift=12) for '/dev/nvme2n1'
Defaulting to 4K blocksize (ashift=12) for '/dev/nvme3n1'
invalid vdev specification
the following errors must be manually repaired:
/dev/nvme1n1 is part of active pool 'keydb'

解决方案

原因是某个volume之前被其他实例用过, 解挂后重新挂到这个实例, 数据不干净导致的.

root@ip-10-230-2-67:~# zpool import
  pool: keydb
    id: 5964941533506504514
 state: ONLINE
status: The pool was last accessed by another system.
action: The pool can be imported using its name or numeric identifier and
	the '-f' flag.
   see: http://www.sun.com/msg/ZFS-8000-EY
config:

	keydb                                                                ONLINE
	  raidz1-0                                                           ONLINE
	    nvme1n1                                                          UNAVAIL  corrupted data
	    disk/by-id/nvme-Amazon_Elastic_Block_Store_vol0fe3cb4f940810f22  ONLINE
	    disk/by-id/nvme-Amazon_Elastic_Block_Store_vol0ef00d1e936279515  ONLINE

有两个办法结局

1. 暴力import

zpool import -f

2. destroy之后, 再创建即可

zpool destroy keydb
zpool create keydb raidz nvme1n1 nvme2n1 nvme3n1

参考链接

Recover ZFS pool after having deleted zfs configuration file in /boot

本文链接

https://www.wxhmf.com/posts/how-to-fix-zfs-zpool-error-invalid-dev-speficification/