Debian 또는 Linux는 일반적으로 ZFS에서 장치 이름(예: /dev/sdX)을 어떻게 할당합니까?

Debian 또는 Linux는 일반적으로 ZFS에서 장치 이름(예: /dev/sdX)을 어떻게 할당합니까?

저는 3개의 동일한 서버를 가지고 있으며, 3개의 케이블 연결이 모두 동일하고 하드 드라이브가 올바르게 배치되어 있습니다. 서버 중 하나에는 /dev/sdg /dev/sdhSATA-SSD가 설치되어 있고 다른 두 개에도 SATA-SSD가 설치되어 있지만 /dev/sda /dev/sdbZFS와 함께 Proxmox를 사용합니다.

SATA-SSD는 보드에 연결되고(보드에 SATA 케이블 연결) HDD는 단일 케이블(SAS)을 통해 SAS-HBA에 연결됩니다.

이 이름은 어떻게 지정됩니까? 일련번호? 여기서는 나에게 도움이 될 유용한 정보를 찾을 수 없습니다. Debian + ZFS 설치 후에 장치 이름을 변경할 수 있는 방법이 있나요?

답변1

이러한 /dev/sd*이름은 단순히 감지 순서에 따라 할당되며 저장소 드라이버 모듈 로드 순서가 매번 정확히 동일하지 않거나 디스크를 삽입하거나 분리하는 경우 부팅할 때마다 다를 수 있습니다. 현재 합리적인 접근 방식은 구성에서 다른 것을 사용하는 것입니다.

  • 장치 이름 대신 또는 구문을 /etc/fstab사용할 수 있습니다.UUID=LABEL=
  • LVM을 사용하는 경우 물리 볼륨(장치 이름에 관계없이)을 자동으로 검색하고 지속이 보장된 경로로 논리 볼륨을 제공하는 메커니즘이 이미 포함되어 있습니다.
  • 소프트웨어 RAID를 사용하는 경우 (장치 이름이 아닌) 디스크의 실제 콘텐츠를 기반으로 RAID 구성원을 찾는 메커니즘도 포함됩니다.
  • 다중 경로 SAN LUN을 사용하는 경우 device-mapper-multipath개별 경로가 자동으로 검색되고 /dev/sd*영구 장치 이름이 구성되므로 WWID, 자동 생성된 영구 이름 또는 기본 설정에 따른 사용자 지정 이름을 통해 이러한 모든 경로를 사용하여 디스크에 액세스할 수 있습니다.
  • /dev/disk/by-*/정확히 무엇을 찾고 있는지에 따라 디렉터리의 심볼릭 링크를 사용하여 적절한 이름의 디스크/파티션을 찾을 수 있습니다 .
    • /dev/disk/by-id/*디스크 모델명 및 일련번호별
    • /dev/disk/by-uuid/*/etc/fstab파일 시스템 UUID별(실제로 관련되지 않은 목적의 UUID= 구문과 동일 /etc/fstab)
    • /dev/disk/by-label/*/etc/fstab파일 시스템 레이블을 통해(관련되지 않은 사용을 위한 LABEL= 구문과 실질적으로 동일함 /etc/fstab)
    • /dev/disk/by-path/*하드웨어 장치 경로별: "버스 X, 슬롯 Y, 기능 Z, 컨트롤러 슬롯 N"(라우팅 기반 이름을 원하는 경우 유용할 수 있음)
    • GPT 파티션 디스크에서는 다음 명령을 사용하여 파티션을 찾을 수도 있습니다 /dev/disk/by-partuuid/*./dev/disk/by-partlabel/*

일부 배포판(제 기억이 맞다면 SuSE 등)에는 /dev/sd*운영 체제가 처음으로 디스크를 볼 때 특정 일련 번호나 기타 식별 정보가 있는 디스크와 특정 디스크를 연결하는 udev 규칙을 기반으로 하는 메커니즘이 있을 수도 있습니다. 함께 묶였습니다. 데비안에는 이것이 없습니다.

데비안을 시작할 때 시스템이 initramfs에서 계속 실행되는 동안 루트 파일 시스템의 디스크 컨트롤러가 먼저 로드됩니다. 시스템이 하나의 디스크 컨트롤러(예: 데스크탑의 AHCI SATA 또는 랙 서버의 핫 플러그 ​​인식 SAS 하드웨어 RAID 컨트롤러)만 사용하는 경우 일반적으로 일부 안정적인(드라이버별) 감지에서는 모든 디스크를 감지합니다. 그것에 연결되어 있습니다. , SATA 커넥터 번호 또는 핫스왑 슬롯 순서 등), 다음과 같이 끝납니다. 순서는 다음과 같습니다.가능한꽤 안정적입니다.

systemd그러나 서로 다른 스토리지 컨트롤러가 여러 개인 경우 부팅 프로세스가 순서에 따라 진행되기 때문에 머리가 아플 수 있습니다 . 시작 시 많은 일이 병렬로 발생하므로 어쨌든 암시적 순서에 의존해서는 안 됩니다.

ZFS FAQ에는 Linux에서 올바른 유형의 장치 이름을 선택하는 방법에 대한 내용이 많이 나와 있습니다.. 원래:

  • /dev/sd*소규모 개발/테스트 설정 에만 해당
  • 작은 풀(디스크 약 10개 미만)의 경우 다음을 사용합니다./dev/disk/by-id/*
  • 더 큰 풀의 경우 가장 좋은 솔루션은 다음과 같습니다./etc/zfs/vdev.conf파일 을 설정하다기본 하드웨어 레이아웃을 반영하는 멋진 짧은 이름을 만듭니다.
  • 대규모 풀의 대체 솔루션은 /dev/disk/by-path/*길고 번거로운 이름을 사용하는 것입니다.

다행스럽게도,기존 풀의 이름을 변경하는 것은 어렵지 않습니다.: 기본적으로 가져오기 시 새 이름 구성표를 지정하면서 풀을 내보내고 다시 가져옵니다.

예를 들어 풀 이름이 지정된 경우 이를 내보낸 후 zfspool다음과 같은 이름으로 다시 가져올 수 있습니다./dev/disk/by-id/*

# <prepare pool for export, i.e. unmount mount points or stop VMs as necessary>
zpool export zfspool
zpool import -d /dev/disk/by-id zfspool
# <resume using the pool>

(이는 실제로 ZFS에 Linux LVM과 유사한 자동 검색 시스템이 있을 수 있음을 의미합니다. 부팅할 때마다가 아니라 풀을 가져올 때 검색이 발생한다는 점입니다.)

관련 정보