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

みんな大丈夫です。

関連情報