udev에서 ACTION=="change"와 일치하는 장치 이벤트는 무엇입니까?

udev에서 ACTION=="change"와 일치하는 장치 이벤트는 무엇입니까?

udev지금까지 제가 만든 규칙은 다음과 같이 추가되거나 제거된 장치만 처리합니다.

ACTION=="add"...또는ACTION=="remove"...

내가 만난한 가지 예장치와 관련된 규칙인 것 같습니다.상태 변화게다가:

ACTION=="add|change", KERNEL=="sd[b-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 12 /dev/%k"

일치하는 장치가 있는 한 위의 규칙이 적용된다고 생각합니다.다음에 추가또는 그 상태다양성.

질문:어떤 유형의 상태 변경이 발생할 수 있습니까(일반적으로, 특히 USB 하드 드라이브의 경우)?

제가 찾을 수 있는 모든 udev 문서를 확인했는데 장치 상태 변경이나 구체적으로 관련된 언급이나 사용 가이드가 거의 없습니다 ACTION="change".

답변1

예를 들어 "변경"은 SD 카드 리더기에서 SD 카드를 제거 또는 삽입하거나 USB 인클로저 내부의 하드 드라이브를 SATA 인클로저로 변경하는 것에 해당합니다. 장치 자체는 추가되거나 제거되지 않지만 미디어는 더 이상 동일하지 않습니다.

답변2

udev 변경 이벤트는 미디어 체인저(테이프 - Netbackup 등과 같은 환경) 또는 SD 카드 리더가 다른 미디어 또는 SD 카드를 연속적으로 사용할 때 트리거됩니다. 동일한 장치를 다시 추가하는 경우(San 디스크를 다시 추가하거나 스위치 측에서 스위치를 비활성화/활성화하거나 대상 측에서 대상 포트를 비활성화/활성화합니다)

다음은 기존 san lun(Vexata VX100 어레이의) udev 이벤트에서 대상 포트를 비활성화할 때 호스트 측에서 볼 수 있는 몇 가지 변경 사항입니다.

KERNEL[34942.047543] change   /devices/virtual/block/dm-0 (block)
KERNEL[34942.047596] change   /devices/virtual/block/dm-1 (block)
KERNEL[34942.047613] change   /devices/virtual/block/dm-2 (block)
KERNEL[34942.047631] change   /devices/virtual/block/dm-3 (block)
KERNEL[34942.047678] change   /devices/virtual/block/dm-4 (block)
UDEV  [34942.053448] change   /devices/virtual/block/dm-3 (block)
UDEV  [34942.053486] change   /devices/virtual/block/dm-4 (block)
UDEV  [34942.053507] change   /devices/virtual/block/dm-0 (block)
UDEV  [34942.053536] change   /devices/virtual/block/dm-2 (block)

답변3

ENV이는 커널이 특정 콘텐츠를 설명하는 이벤트 속성( ) 및 ENV컨텍스트를 제공하는 장치 속성(또한 ) 과 함께 장치에 대한 변경 사항을 보고하기 위해 uevent를 발행했음을 의미합니다 . 이는 장치 속성(sysfs의 파일 구조에 해당)과 다르며 를 ATTR실행하면 이러한 속성이 무엇인지 확인할 수 있습니다 sudo udevadm monitor --kernel --udev -p --subsystem-match=usb.

이러한 uevent는 장치를 관리하는 특정 커널 모듈에 의해 발생하므로 전체 이벤트 목록이나 보장된 이벤트 집합이 없습니다. 이벤트의 원인을 호출 kobject_uevent하거나 이해하려면 문서를 확인하거나 관련 모듈의 소스 코드를 확인해야 합니다 .kobject_uevent_env

관련 정보