udev에서 다음 구성을 만들었습니다.
KERNEL=="sdd", SYMLINK+="QUORUML", OWNER="test", GROUP="gtest", MODE="0660"
KERNEL=="sde", SYMLINK+="QUORUMR", OWNER="test", GROUP="gtest", MODE="0660"
그 후 다른 디스크를 추가했더니 새 디스크가 , /dev/sde
기존 디스크가 가 /dev/sde
되어서 /dev/sdf
이름이 로 sde
바뀌면서 위의 udev 규칙이 잘못되었습니다 sdf
. 디스크가 올바른지 어떻게 확인하나요? 다른 아이디는 없나요? 이와 같은 것을 시도했지만 blkid
파티션이 없기 때문에 ID가 반환되지 않습니다.
[root@dbnode1 rules.d]# blkid /dev/sdd
[root@dbnode1 rules.d]#
비슷한 것을 찾고 있습니다. iscsi 디스크가 있는 경우 iscsi ID를 사용하여 이 작업을 수행할 수 있습니다.
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="360014054187384e668f45e58d036f19a", SYMLINK+="disk4", OWNER="xxxx", GROUP="xxxx", MODE="0660"
답변1
어쨌든 일치해야 합니다 SUBSYSTEM=="block", ENV{ID_SERIAL}=="xxx"
(제조업체/모델 및 일련번호). 또는 ENV{ID_SERIAL_SHORT}
(일련번호만). 또는 ENV{ID_WWN}
(드라이브의 전역적으로 고유한 식별자). 아니면 ENV{ID_PART_TABLE_UUID}
…
나는 이것을 사용하는 경향이 있는데, ID_SERIAL_SHORT
이는 내 요구 사항에 충분히 고유하기 때문입니다(드라이브 제조업체는 일련 번호를 재사용하지 않는 경향이 있고 제조업체마다 일련 번호 스타일이 다릅니다). 그리고 드라이브를 쉽게 식별할 수 있도록 접착 라벨에 인쇄합니다. 내 운전에. 핫스왑 가능한 베이. 저는 WWN을 사용하지 않습니다. 제 생각에는 WWN이 너무 유사해 서로 구별하기 어렵기 때문입니다.
장치 이름은 재부팅 후에도 지속된다는 보장이 없습니다. 종종 몇 달 또는 몇 년 동안 동일하게 유지되지만 이에 의존하는 것은 안전하지 않습니다. 커널 개발자는 다음 부팅 시 변경되지 않을 것이라는 보장이 없다는 점을 여러 번 문서화하고 언급했습니다. 왜? 드라이브가 죽을 수 있으므로(또는 커널이 장치를 검색하는 동안 회전하거나 응답하는 데 시간이 더 오래 걸림) 드라이브를 추가하거나 제거할 수 있고, 새 커널 버전이 다른 순서로 장치를 감지하거나 기타 여러 가지 이유로 장치를 감지할 수 있습니다. 이것이 추천되는 이유입니다많은이제 몇년이 지났네요"에서 /dev/sdX 이름을 사용하지 마십시오 /etc/fstab
. UUID 또는 LABEL을 사용하십시오.". udev 규칙에도 동일한 조언(고유 식별자 사용)이 적용됩니다.
특정 드라이브의 속성을 찾는 데 사용할 수 있습니다 udevadm info /dev/sdX
. 거기에는 흥미롭고 유용한 속성/프로퍼티가 많이 있지만 지금은 일련 번호에만 관심이 있습니다.
예를 들어, 내 시스템에 8TB Seagate 하드 드라이브가 있는데 현재 다음을 /dev/sda
통해 짧은 일련 번호를 찾을 수 있습니다.
$ udevadm info -q property --property=ID_SERIAL_SHORT /dev/sda
ID_SERIAL_SHORT=ZA9EL9YL
다음과 같이 udev 규칙과 함께 사용하려면:
SUBSYTEM=="block", ENV{ID_SERIAL_SHORT}=="ZA9EL9YL", SYMLINK+="QUORUML", OWNER="test", GROUP="gtest", MODE="0660"
==
처음 두 속성의 경우 할당이 아닌 비교입니다(참고자료 , man 7 udev
특히 Operators
하위 섹션 참조).
전체 일련번호와 모델 등을 알고 싶다면 다음을 사용할 수 있습니다.
$ udevadm info -q property --property=ID_SERIAL /dev/sda
ID_SERIAL=ST8000VN0022-2EL112_ZA9EL9YL
udev 규칙은 다음과 같습니다:
SUBSYTEM=="block", ENV{ID_SERIAL}=="ST8000VN0022-2EL112_ZA9EL9YL", SYMLINK+="QUORUML", OWNER="test", GROUP="gtest", MODE="0660"
특정 장치(또는 장치 유형)에 대한 udev 규칙을 만드는 경우 udevadm info /dev/name
나중에 참조할 때 필요할 경우를 대비하여 규칙 파일에 주석 처리된 출력 버전을 추가하는 것이 유용하다고 생각합니다. 댓글을 위해 #
.
그런데 필요한 경우 awk
다음과 같은 도구를 사용하여 속성 이름 없이 값을 개별적으로 추출 할 수 있습니다 cut
.
$ udevadm info -q property --property=ID_SERIAL_SHORT /dev/sda | awk -F= '{print $2}'
ZA9EL9YL
$ udevadm info -q property --property=ID_SERIAL_SHORT /dev/sda | cut -d= -f2
ZA9EL9YL