ZFS - 디스크/ID가 하나만 있는 두 개의 nvm 장치

ZFS - 디스크/ID가 하나만 있는 두 개의 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예를 들어, 두 개의 Western Digital 드라이브(일련 번호 및 ) 의 미러를 생성하는 경우 WD-WMC1S5688675각 드라이브에 동일한 크기의 GPT 파티션을 생성하고 파티션에 data-WD-WMC1S5694795각각 레이블을 지정합니다 data-WD-WMC1S5688675. 라벨을 올바르게 부착하십시오. 그렇지 않으면 소요되는 시간이 낭비됩니다. 다행스럽게도 이러한 일련번호에는 리더가 이미 포함되어 있으므로 WD-제조업체가 이미 인코딩되어 있습니다. 레이블에 약식 제조업체를 포함시키는 것은 서로 다른 제조업체의 동일한 일련 번호를 가진 두 개의 드라이브가 있을 수 있는 상황을 방지하기 위한 것입니다. 이런 일이 일어날 가능성은 거의 없으므로 자신의 재량에 따라 파티션 레이블에 제조업체를 인코딩하십시오.

그러면 풀을 구축하는 데 사용할 수 있는 /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

이제 드라이브 중 하나에 오류가 발생하면 사람이 읽을 수 있는 일련 번호가 드라이브 외부에 표시되므로 교체해야 할 드라이브를 정확히 알 수 있습니다.

관련 정보