![udev는 iSCSI 장치의 ID를 어디서 얻나요?](https://linux55.com/image/18650/udev%EB%8A%94%20iSCSI%20%EC%9E%A5%EC%B9%98%EC%9D%98%20ID%EB%A5%BC%20%EC%96%B4%EB%94%94%EC%84%9C%20%EC%96%BB%EB%82%98%EC%9A%94%3F.png)
iscsi-initiator-utils를 사용하여 CentOS 5에서 일부 iscsi 장치를 성공적으로 사용하고 있으며 /dev/disk에 udev에서 만든 일부 심볼릭 링크가 있습니다.
# ls -l /dev/disk/by-path/ip-* /dev/disk/by-id/scsi-*
lrwxrwxrwx 1 root root 9 Sep 29 15:41 /dev/disk/by-id/scsi-14f504e46494c45006779706e4d772d746d36582d6869556e -> ../../sdb
lrwxrwxrwx 1 root root 9 Sep 29 15:41 /dev/disk/by-path/ip-192.168.20.149:3260-iscsi-iqn.2006-01.com.openfiler:tsn.0a16ba8cb6c9-lun-0 -> ../../sdb
나는 by-path가 장치의 IQN임을 알고 있으며 by-id가 SCSI 장치 식별자라고 가정합니다.
/dev/sdb에서 이러한 값을 직접 가져오는 방법을 알고 싶습니다. scsi_id -g /dev/sdb
아무것도 반환하지 않습니다.
(심볼릭 링크를 매핑하고 파일 이름에서 ID를 제거할 수 있다는 것을 알고 있지만 이는 중복됩니다. udev가 어딘가에서 이러한 ID를 가져오고 있으며 어디서인지 알고 싶습니다.)
답변1
udevinfo
명령을 시도
반품man 7 udev
예:
[root@centos ~]# udevinfo -q all -n /dev/sda1 | grep 'ID_FS_UUID=' | awk -F'=' '{print $2}'
358c8298-3889-4982-8831-817a18ae4e67
[root@centos ~]# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Dec 1 12:47 358c8298-3889-4982-8831-817a18ae4e67 -> ../../sda1
[root@centos ~]# readlink -e /dev/disk/by-uuid/358c8298-3889-4982-8831-817a18ae4e67
/dev/sda1
다른 하나는 blkid로, udev와 통합되어 uuid를 표시합니다.
[root@centos ~]# blkid
/dev/mapper/VolGroup00-LogVol01: TYPE="swap"
/dev/mapper/VolGroup00-LogVol00: UUID="7951711f-0564-46a5-8e1c-427eff4b4115" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="358c8298-3889-4982-8831-817a18ae4e67" TYPE="ext3"
/dev/hdc: LABEL="VBOXADDITIONS_4.1.2_73507" TYPE="iso9660"
/dev/VolGroup00/LogVol00: UUID="7951711f-0564-46a5-8e1c-427eff4b4115" TYPE="ext3"
/dev/VolGroup00/LogVol01: TYPE="swap"
답변2
udev는 커널에서 생성된 uevent를 수신합니다. udev와 동일한 방식으로 이 정보를 얻으려면 그들의 말을 듣고 무언가를 구축해야 합니다. 다음은 이 작업에 대한 몇 가지 샘플 코드와 설명입니다.
http://lwn.net/Articles/242046/
udev가 정보를 얻는 방법에 대한 추가 정보: