当我尝试创建 ZPool 时,出现以下错误:
user@arch ~ % sudo zpool create -f -o ashift=12 -m /data media raidz /dev/disk/by-id/ata-ST2000DM001-1CH164_Z2F0TL8V /dev/disk/by-id/ata-ST2000DM001-1ER164_Z4Z030LK /dev/disk/by-id/ata-ST2000DM001-1ER164_Z4Z06PR
the kernel failed to rescan the partition table: 16
cannot label 'sda': try using parted(8) and then provide a specific slice: -1
我尝试多次连续运行该命令(udevadm trigger
也在中间运行),使用 清除驱动器sgdisk -Z /dev/sdX
。我parted /dev/sdX mklabel gpt
也尝试过zpool labelclear /dev/sdX
。
/dev/disk/by-id
我已经通过以及引用了驱动器,/dev/sdX
但是当标签根据驱动器的顺序而变化时,会发生相同的错误。
答案1
在搜索您的错误时,我发现了这篇博客文章,标题为:使用属于 md raid 阵列的驱动器创建 zfs 池时出错这显示了你同样的错误。
$ zpool create -f TankMirror /dev/disk/by-id/xxx /dev/disk/by-id/yyy 内核无法重新扫描分区表:16 无法标记“sdb”:尝试使用parted(8) 和然后提供一个特定的切片
该文章指出,该问题是由于将设备添加到未使用的 MDADM 阵列而引起的。
即使旧的 mdadm 阵列不再被安装(因为多个磁盘>丢失并且它是一个 raid5),它们仍然被添加到 md0:
$ cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] > [raid5] [raid4] [multipath] md0 : inactive sdd1[4](S) sdb1[1](S) 3907025072 blocks super 1.2 unused devices:
此特定问题的修复如下:
$ mdadm --stop /dev/md0
mdadm: stopped /dev/md0
$ zpool create -f tank mirror /dev/disk/by-id/xxx /dev/disk/by-id/yyy
$ zpool status
pool: tank
state: ONLINE
scan: none requested
[...]
答案2
尝试在 /dev/sdb 上运行外部磁盘时遇到同样的问题
$ sudo zpool create pool sdb -f
the kernel failed to rescan the partition table: 16
cannot label 'sdb': try using parted(8) and then provide a specific slice: -1
问题是磁盘仍然挂载。运行后
$ sudo umount /dev/sdb
一切都很好。