为什么创建 ZPool 会导致此错误?

为什么创建 ZPool 会导致此错误?

当我尝试创建 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

一切都很好。

相关内容