Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.3. udev 장치 관리자에 대한 장치 매퍼 지원

udev 장치 관리자의 기본 역할은 /dev 디렉터리에서 노드를 설정하는 동적 방법을 제공하는 것입니다. 이러한 노드 생성은 사용자 공간의 udev 규칙 적용에 의해 결정됩니다. 이러한 규칙은 특정 장치를 추가, 제거 또는 변경으로 인해 커널에서 직접 전송된 udev 이벤트에서 처리됩니다. 이는 지원 핫플러그를 위한 편리한 중앙 메커니즘을 제공합니다.
udev 장치 관리자는 실제 노드를 만드는 것 외에도 이름을 지정할 수 있는 심볼릭 링크를 만들 수 있습니다. 이렇게 하면 필요한 경우/dev 디렉토리에서 사용자 지정 이름 지정 및 디렉터리 구조를 자유롭게 선택할 수 있습니다.
udev 이벤트에는 처리 중인 장치에 대한 기본 정보(예: 이름, 해당 하위 시스템, 장치의 유형, 사용된 메이저 및 마이너 번호, 이벤트 유형)가 포함되어 있습니다. udev 규칙 내에서도 액세스할 수 있는 /sys 디렉토리에 있는 /sys 디렉토리에 있는 모든 정보에 액세스할 수 있으며 이 정보를 기반으로 간단한 필터를 활용하고 이 정보를 기반으로 규칙을 실행할 수 있습니다.
udev 장치 관리자는 또한 노드의 권한을 중앙 집중식으로 설정하는 방법을 제공합니다. 사용자 지정 규칙 세트를 쉽게 추가하여 이벤트를 처리하는 동안 사용 가능한 모든 장치에 대한 권한을 정의할 수 있습니다.
udev 규칙에 직접 프로그램 후크를 추가할 수도 있습니다. udev 장치 관리자는 이러한 프로그램을 호출하여 이벤트를 처리하는 데 필요한 추가 처리를 제공할 수 있습니다. 또한 프로그램은 이 처리의 결과로 환경 변수를 내보낼 수 있습니다. 제공된 모든 결과는 규칙에서 정보의 보조 소스로 사용할 수 있습니다.
udev 라이브러리를 사용하는 모든 소프트웨어는 사용 가능한 모든 정보로 udev 이벤트를 수신하고 처리할 수 있으므로 처리는 udev 데몬에만 바인딩되지 않습니다.

A.3.1. 장치 매퍼와 udev 통합

장치 매퍼는 udev 통합을 직접 지원합니다. 이렇게 하면 LVM 장치를 포함하여 장치 매퍼 장치와 관련된 모든 udev 처리와 장치 매퍼가 동기화됩니다. udev 데몬의 규칙 애플리케이션은 장치의 변경 사항 소스(예: dmsetup 및 LVM)와의 병렬 처리 형식이므로 동기화가 필요합니다. 이러한 지원이 없으면 사용자가 이전 변경 이벤트의 결과로 udev 규칙에 의해 열려 있고 처리된 장치를 제거하려고 시도하는 것이 일반적이었습니다. 해당 장치의 변경 사이에 매우 짧은 시간이 있을 때 이는 특히 일반적이었습니다.
Red Hat Enterprise Linux는 일반 및 LVM에도 장치 매퍼 장치에 대해 공식적으로 지원되는 udev 규칙을 제공합니다. 표 A.1. “장치 맵 장치의 udev 규칙” /lib/udev/rules.d 에 설치된 이러한 규칙을 요약합니다.

표 A.1. 장치 맵 장치의 udev 규칙

파일 이름설명
10-DM.rules
일반 장치 매퍼 규칙을 포함하고 /dev/dm-N 대상을 사용하여 /dev/mapper 에 심볼릭 링크를 만듭니다. 여기서 N은 커널에 의해 장치에 동적으로 할당된 번호입니다(/dev/dm-N 은 노드임).
참고: /dev/dm-N 노드는 N 번호가 동적으로 할당되고 장치 활성화 방식에 따라 변경되기 때문에 스크립트에 사용하지 않아야 합니다. 따라서 /dev/mapper 디렉터리의 실제 이름을 사용해야 합니다. 이 레이아웃은 노드/symlink를 생성해야 하는 방법에 대한 udev 요구 사항을 지원하기 위한 것입니다.
11-DM-lvm.rules
LVM 장치에 적용되는 규칙을 포함하고 볼륨 그룹의 논리 볼륨에 대한 심볼릭 링크를 만듭니다. 심볼릭 링크는 /dev/ dm-N 대상이 있는 /dev/ Cryostatname 디렉터리에 생성됩니다.
참고: 장치 매퍼 하위 시스템에 대한 향후 모든 규칙의 이름을 지정하기 위한 표준과 일치하려면 udev 규칙은 11-dm-subsystem_name.rules 형식을 따라야 합니다. udev 규칙을 제공하는 모든 libdevmapper 사용자는 이 표준을 따라야 합니다.
13-dm-disk.rules 일반적으로 모든 장치 매퍼 장치에 적용할 규칙이 포함되어 있으며 /dev/ disk/by-id 및 /dev /disk/by-uuid 디렉터리에 심볼릭 링크를 생성합니다.
95-dm-notify.rules libdevmapper 를 사용하여 대기 프로세스에 알리는 규칙이 포함되어 있습니다(예: LVM 및 dmsetup). 모든 udev 처리가 완료되었는지 확인하기 위해 이전 규칙이 적용된 후 알림이 수행됩니다. 그런 다음 알림을 받은 프로세스가 재개됩니다.
69-dm-lvm-metad.rules 시스템에 새로 표시된 블록 장치에서 LVM 스캔을 트리거하고 가능한 경우 LVM 자동 활성화를 수행하는 후크가 포함되어 있습니다. lvm.conf 파일에서 use_lvmetad=1 으로 설정된 lvmetad 데몬을 지원합니다. 클러스터형 환경에서는 lvmetad 데몬 및 자동 활성화가 지원되지 않습니다.
12-dm-permissions.rules 파일을 통해 사용자 지정 권한 규칙을 추가할 수 있습니다. 이 파일은 /lib/udev/rules 디렉터리에 설치되지 않습니다. / usr/share/doc/device-mapper-버전 디렉터리에 있습니다. 12-dm-permissions.rules 파일은 예로 지정된 일부 일치하는 규칙에 따라 권한을 설정하는 방법에 대한 힌트를 포함하는 템플릿입니다. 파일에는 몇 가지 일반적인 상황에 대한 예제가 포함되어 있습니다. 이 파일을 편집하여 /etc/udev/rules.d 디렉토리에 수동으로 배치하면 업데이트가 유지되므로 설정이 유지됩니다.
이러한 규칙은 이벤트를 처리하는 동안 다른 규칙에서 사용할 수 있는 모든 기본 변수를 설정합니다.
다음 변수는 10-dm.rules 로 설정됩니다.
  • DM_NAME: 장치 매퍼 장치 이름
  • DM_UUID: 장치 매퍼 장치 UUID
  • DM_SUSPENDED: 장치 매퍼 장치의 일시 중단 상태
  • DM_UDEV_RULES_VSN:udev 규칙 버전 (이전에 언급된 변수가 공식 장치 맵퍼 규칙에 의해 직접 설정되어 있는지 확인하는 다른 모든 규칙)
다음 변수는 11-dm-lvm.rules:에서 설정됩니다.
  • DM_LV_NAME: 논리 볼륨 이름
  • DM_VG_NAME: 볼륨 그룹 이름
  • DM_LV_LAYER: LVM 계층 이름
이러한 모든 변수는 12-dm-permissions.rules 파일에서 사용하여 12-dm-permissions.rules 파일에 설명된 대로 특정 장치 매퍼 장치에 대한 권한을 정의할 수 있습니다.

A.3.2. udev를 지원하는 명령 및 인터페이스

표 A.2. “udev를 지원하기 위한 dmsetup 명령” udev 통합을 지원하는 dmsetup 명령이 요약되어 있습니다.

표 A.2. udev를 지원하기 위한 dmsetup 명령

명령설명
dmsetup udevcomplete udev 가 규칙 처리를 완료하고 대기 중인 프로세스 잠금 해제를 완료했음을 알리는 데 사용됩니다( 95-dm-notify.rulesudev 규칙 내에서 호출됨).
dmsetup udevcomplete_all 디버깅 목적으로 모든 대기 중인 프로세스의 잠금을 수동으로 해제하는 데 사용됩니다.
dmsetup udevcookies 디버깅 목적으로 모든 기존 쿠키(시스템 전체 세마포)를 표시하는 데 사용됩니다.
dmsetup udevcreatecookie 쿠키 생성(semaphore)을 수동으로 만드는 데 사용됩니다. 이는 하나의 동기화 리소스에서 더 많은 프로세스를 실행하는 데 유용합니다.
dmsetup udevreleasecookie 하나의 동기화 쿠키 아래에 배치된 모든 프로세스와 관련된 모든 udev 처리를 기다리는 데 사용됩니다.
udev 통합을 지원하는 dmsetup 옵션은 다음과 같습니다.
--udevcookie
udev 트랜잭션에 추가하려는 모든 dmsetup 프로세스에 대해 정의해야 합니다. udevcreatecookieudevreleasecookie 와 함께 사용됩니다.
COOKIE=$(dmsetup udevcreatecookie)
  dmsetup command --udevcookie $COOKIE ....
  dmsetup command --udevcookie $COOKIE ....
  ....
  dmsetup command --udevcookie $COOKIE ....
dmsetup udevreleasecookie --udevcookie $COOKIE
--udevcookie 옵션을 사용하는 것 외에도 변수를 프로세스 환경으로 내보낼 수 있습니다.
export DM_UDEV_COOKIE=$(dmsetup udevcreatecookie)
  dmsetup command ...
  dmsetup command ...
  ...
  dmsetup command ...
--noudevrules
udev 규칙을 비활성화합니다. 노드/symlinks는 libdevmapper 자체(이전 방식)에 의해 생성됩니다. udev 가 제대로 작동하지 않는 경우 이 옵션은 디버깅을 위한 것입니다.
--noudevsync
udev 동기화를 비활성화합니다. 이는 디버깅 목적으로도 사용됩니다.
dmsetup 명령 및 해당 옵션에 대한 자세한 내용은 dmsetup(8) 도움말 페이지를 참조하십시오.
LVM 명령은 udev 통합을 지원하는 다음 옵션을 지원합니다.
  • --noudevrules: dmsetup 명령과 마찬가지로 udev 규칙을 비활성화합니다.
  • --noudevsync: dmsetup 명령과 마찬가지로 udev 동기화를 비활성화합니다.
lvm.conf 파일에는 udev 통합을 지원하는 다음 옵션이 포함되어 있습니다.
  • udev_rules: 전역적으로 모든 LVM2 명령에 대해 udev_rules 를 활성화/비활성화합니다.
  • udev_sync: 전역적으로 모든 LVM 명령에 대해 udev 동기화를 활성화/비활성화합니다.
lvm.conf 파일 옵션에 대한 자세한 내용은 lvm.conf 파일의 인라인 주석을 참조하십시오.