/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。私のDebianシステムでは、ファイルの最初の数行は次のようになります。

# 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プールの1つの一部であるIBM M1015、LSI SAS2008に接続されているSATAドライブ)の1つで、次のようにします。

# 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

おすすめ記事