ZFS - ディスク/IDが1つしかない2つのnvmデバイス

ZFS - ディスク/IDが1つしかない2つのnvmデバイス

ベストプラクティスを使用してubuntu 20.04サーバーにミラー化されたzfsプールを設定しようとしています。

私のハードウェアは、外部USB-CエンクロージャGEN2 SSDエンクロージャの2x 1TB nvmeです。

私の問題は、両方のディスクが同じディスクIDを持っているようです!そのため、sda、sdbを使用してプールを作成できますが、再起動すると不安定になり、プールがなくなります。この状況を示すために、デバイス属性をファイルにダンプし、FIFFを作成しました。

以下に示すように、ディスクIDは正確に一致しますが、ディスクパスは異なります。

解決策も歓迎されます。

sudo udevadm info --name=/dev/sda --query=property > sda
sudo udevadm info --name=/dev/sdb --query=property > sdb

diff sda sdb

1,2c1,2
< DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/host1/target1:0:0/1:0:0:0/block/sda
< DEVNAME=/dev/sda
---
> DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/host1/target1:0:0/1:0:0:1/block/sdb
> DEVNAME=/dev/sdb
5c5
< MINOR=0
---
> MINOR=16
7c7
< USEC_INITIALIZED=1630003
---
> USEC_INITIALIZED=1626316
31,33c31,33
< ID_PATH=pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:**0**
< ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_0-scsi-0_0_0_0
< ID_PART_TABLE_UUID=2decf1ce-947b-9548-bef4-0e315c078f4f
---
> ID_PATH=pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:**1**
> ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_0-scsi-0_0_0_1
> ID_PART_TABLE_UUID=ace78582-634a-b340-8ac5-3db5984afc5f
35c35
< DEVLINKS=/dev/disk/by-id/scsi-35000000000000001 /dev/disk/by-id/scsi-SASMT_ASM1352R-PM_3000CCCCBBBBAAAA /dev/disk/by-path/pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0 /dev/disk/by-id/wwn-0x5000000000000001
---
> DEVLINKS=/dev/disk/by-id/wwn-0x5000000000000001 /dev/disk/by-id/scsi-SASMT_ASM1352R-PM_3000CCCCBBBBAAAA /dev/disk/by-id/scsi-35000000000000001 /dev/disk/by-path/pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:1
 

答え1

これを行う最良の方法は次のとおりです。

  • ドライブメーカーとシリアル番号の確認
  • 各ドライブにGPTパーティションテーブル(または「スキーム」)を作成します。
  • 各ドライブにZFSデータパーティションを作成し、ドライブの製造元(省略可能)とシリアル番号を反映するようにパーティション名を指定します。

WD-WMC1S5694795たとえば、2つのウェスタンデジタルドライブ(シリアル番号と)のミラーを作成する場合は、WD-WMC1S5688675各ドライブに同じサイズのGPTパーティションを作成し、パーティションにdata-WD-WMC1S5694795それぞれラベルを付けますdata-WD-WMC1S5688675。ラベルを正しく貼り付けてください。それ以外の場合は、かかる時間が無駄になります。幸いなことに、これらのシリアル番号にはリーダーがすでに含まれているため、WD-メーカーはすでにエンコードされています。ラベルに短い製造元を含めることは、異なる製造元の同じシリアル番号を持つ2つのドライブがある可能性がある状況を防ぐためです。これが起こる可能性はほとんどありませんので、独自の判断でパーティションラベルに製造元をエンコードしてください。

これにより、プールの構築に使用できる/devアイテムが提供されます。/dev/disk/by-partlabel/

# zpool create tank mirror /dev/disk/by-partlabel/data-WD-WMC1S5694795 \
                           /dev/disk/by-partlabel/data-WD-WMC1S5688675
# zpool status tank
  pool: tank
 state: ONLINE
  scan: scrub repaired 0B in 23h36m with 0 errors on Wed Dec 1 16:00:38 2021
config:

    NAME                      STATE     READ WRITE CKSUM
    tank                      ONLINE       0     0     0
      mirror-0                ONLINE       0     0     0
        data-WD-WMC1S5694795  ONLINE       0     0     0
        data-WD-WMC1S5688675  ONLINE       0     0     0

errors: No known data errors

ドライブの1つに障害が発生すると、人が読めるシリアル番号がドライブの外側に表示されるため、交換する必要があるドライブを正確に知ることができます。

関連情報