/dev/disk/by-path에 디스크 드라이브 장치 파일을 생성합니다.

/dev/disk/by-path에 디스크 드라이브 장치 파일을 생성합니다.

우리의 응용 프로그램에는 하드 드라이브 테스트와 테스트 후 드라이브 삽입 및 제거가 포함됩니다. 드라이브가 테스터에 연결되면 udev는 /dev/disk/by-path에 파일을 생성합니다. 우리 애플리케이션은 이러한 파일을 보고 새 드라이브가 삽입되거나 제거되는 시기를 결정합니다. 이름에는 드라이브가 연결된 실제 슬롯이나 베이가 포함되어 있어 어떤 드라이브가 어디에 있는지 알 수 있습니다. 우리가 보고 있는 한 HBA 컨트롤러는 이 디렉토리에 이 액세스 파일을 생성하지만 드라이브가 있는 물리적 슬롯이나 베이와는 독립적인 LUN을 사용합니다. LUN만으로는 테스터가 드라이브의 물리적 위치를 알 수 없었습니다. 제 질문은 누가 파일 이름을 만들었나요? HBA 드라이브인가요? 드라이버의 소스 코드가 있으므로 이를 수정하여 LUN 대신 물리적 슬롯이나 베이를 사용하여 파일 이름을 생성할 수 있기를 바랍니다.

드라이브는 실시간으로 삽입 및 제거됩니다.

답변1

아래의 "파일" /dev/disk/by-*심볼릭 링크udev커널에서 제공하는 블록 장치에 대한 정보를 사용하여 생성됩니다. 심볼릭 링크는 드라이브의 실제 장치 노드를 가리킵니다. 예를 들어:

/dev/disk/by-path/pci-0000:00:11.0-ata-1 -> ../../sdn

그리고

/dev/disk/by-path/pci-0000:07:00.0-sas-phy0-lun-0 -> ../../sdb

드라이버는 이를 생성하지 않으며 커널도 생성하지 않습니다. 그들은 전적으로 책임이 있습니다 udev.

udev/etc/udev/rules.d/(로컬 시스템 관리자의 자체 규칙 및 재정의) 및 /lib/udev/rules.d/(시스템 기본값) 에 정의된 규칙을 사용하여 생성합니다.

예를 들어: /lib/udev/rules.d/60-persistent-storage.rules. 내 데비안 시스템에서 파일의 처음 몇 줄은 다음과 같습니다.

# do not edit this file, it will be overwritten on update

# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path}
# scheme based on "Linux persistent device names", 2004, Hannes Reinecke <[email protected]>

이 HBA의 드라이브에 대한 사용자 정의 규칙을 작성하려면 udevadm info /dev/disk/by-id/....That을 실행해 보십시오.가능한드라이브 베이를 식별하는 기호 링크를 생성할 수 있도록 충분한 정보를 제공하십시오.

예를 들어 내 드라이브(내 ZFS 풀 중 하나의 일부인 IBM M1015, LSI SAS2008에 연결된 SATA 드라이브) 중 하나에서 다음을 수행합니다.

# udevadm info /dev/disk/by-path/pci-0000:07:00.0-sas-phy0-lun-0
P: /devices/pci0000:00/0000:00:0b.0/0000:07:00.0/host0/port-0:1/end_device-0:1/target0:0:1/0:0:1:0/block/sdb
N: sdb
S: disk/by-id/ata-WDC_WD10EACS-00ZJB0_WD-WCASJ2114122
S: disk/by-id/wwn-0x50014ee2023dc46f
S: disk/by-path/pci-0000:07:00.0-sas-phy0-lun-0
E: DEVLINKS=/dev/disk/by-path/pci-0000:07:00.0-sas-phy0-lun-0 /dev/disk/by-id/ata-WDC_WD10EACS-00ZJB0_WD-WCASJ2114122 /dev/disk/by-id/wwn-0x50014ee2023dc46f
E: DEVNAME=/dev/sdb
E: DEVPATH=/devices/pci0000:00/0000:00:0b.0/0000:07:00.0/host0/port-0:1/end_device-0:1/target0:0:1/0:0:1:0/block/sdb
E: DEVTYPE=disk
E: ID_ATA=1
E: ID_ATA_DOWNLOAD_MICROCODE=1
E: ID_ATA_FEATURE_SET_AAM=1
E: ID_ATA_FEATURE_SET_AAM_CURRENT_VALUE=254
E: ID_ATA_FEATURE_SET_AAM_ENABLED=0
E: ID_ATA_FEATURE_SET_AAM_VENDOR_RECOMMENDED_VALUE=128
E: ID_ATA_FEATURE_SET_HPA=1
E: ID_ATA_FEATURE_SET_HPA_ENABLED=1
E: ID_ATA_FEATURE_SET_PM=1
E: ID_ATA_FEATURE_SET_PM_ENABLED=1
E: ID_ATA_FEATURE_SET_PUIS=1
E: ID_ATA_FEATURE_SET_PUIS_ENABLED=0
E: ID_ATA_FEATURE_SET_SECURITY=1
E: ID_ATA_FEATURE_SET_SECURITY_ENABLED=0
E: ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN=276
E: ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=276
E: ID_ATA_FEATURE_SET_SMART=1
E: ID_ATA_FEATURE_SET_SMART_ENABLED=1
E: ID_ATA_SATA=1
E: ID_ATA_SATA_SIGNAL_RATE_GEN1=1
E: ID_ATA_SATA_SIGNAL_RATE_GEN2=1
E: ID_ATA_WRITE_CACHE=1
E: ID_ATA_WRITE_CACHE_ENABLED=1
E: ID_BUS=ata
E: ID_MODEL=WDC_WD10EACS-00ZJB0
E: ID_MODEL_ENC=WDC\x20WD10EACS-00ZJB0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
E: ID_PART_TABLE_TYPE=gpt
E: ID_PART_TABLE_UUID=53ad1007-a736-ca41-a1fb-98ec491cc00a
E: ID_PATH=pci-0000:07:00.0-sas-phy0-lun-0
E: ID_PATH_TAG=pci-0000_07_00_0-sas-phy0-lun-0
E: ID_REVISION=01.01B01
E: ID_SERIAL=WDC_WD10EACS-00ZJB0_WD-WCASJ2114122
E: ID_SERIAL_SHORT=WD-WCASJ2114122
E: ID_TYPE=disk
E: ID_WWN=0x50014ee2023dc46f
E: ID_WWN_WITH_EXTENSION=0x50014ee2023dc46f
E: MAJOR=8
E: MINOR=16
E: SUBSYSTEM=block
E: TAGS=:systemd:
E: UDISKS_ATA_SMART_IS_AVAILABLE=1
E: UDISKS_IGNORE=1
E: UDISKS_PARTITION_TABLE=1
E: UDISKS_PARTITION_TABLE_COUNT=2
E: UDISKS_PARTITION_TABLE_SCHEME=gpt
E: UDISKS_PRESENTATION_HIDE=1
E: UDISKS_PRESENTATION_NOPOLICY=0
E: USEC_INITIALIZED=15128136

관련 정보