2.2. udev 장치 이름 지정 규칙
사용자 공간 장치 관리자(udev
) 하위 시스템을 사용하면 장치에 영구 이름을 할당하는 규칙을 정의할 수 있습니다. 이러한 규칙은 .rules
확장자가 있는 파일에 저장됩니다. udev 규칙을 저장하기 위한 두 가지 기본 위치가 있습니다.
-
/usr/lib/udev/rules.d/
디렉터리에는 설치된 패키지와 함께 제공되는 기본 규칙이 포함되어 있습니다. -
/etc/udev/rules.d
디렉터리는 사용자 지정udev
규칙을 위한 것입니다.
/usr/lib/udev/rules.d/
의 규칙이 수정되면 업데이트 중에 패키지의 규칙 파일로 덮어씁니다. 따라서 수동 또는 사용자 지정 규칙을 /etc/udev/rules.d
에 명시적으로 제거할 때까지 유지해야 합니다. 사용하기 전에 두 디렉터리의 udev
규칙이 병합됩니다. /etc/udev/rules.d
의 규칙의 이름이 /usr/lib/udev/rules.d/
에 있는 이름과 동일한 경우 이전 규칙의 이름이 우선합니다.
이러한 규칙의 목적은 시스템 재부팅 및 구성 변경 시에도 스토리지 장치가 일관되고 예측 가능하게 식별되도록 하는 것입니다.
udev
규칙은 장치 추가, 변경 또는 제거에 대해 알리는 수신 이벤트를 기반으로 실행할 작업을 정의합니다. 또한 영구 스토리지 속성 및 직접 udev
에 대한 값을 수집하여 수집된 정보를 기반으로 /dev
콘텐츠를 생성하는 데 도움이 됩니다. udev
규칙은 키-값 쌍을 사용하여 사람이 읽을 수 있는 형식으로 작성됩니다.
스토리지 장치의 경우 udev
규칙은 /dev/disk/
디렉터리에 심볼릭 링크 생성을 제어합니다. 이러한 심볼릭 링크는 스토리지 장치에 대한 사용자에게 친숙한 별칭을 제공하여 이러한 장치를 참조하고 관리하는 것이 더 편리합니다.
사용자 지정 udev
규칙을 생성하여 일련 번호, WWN(World Wide Name) 식별자 또는 기타 장치별 특성과 같은 다양한 속성에 따라 장치의 이름을 지정하는 방법을 지정할 수 있습니다. 특정 이름 지정 규칙을 정의하면 시스템 내에서 장치가 식별되는 방식을 정확하게 제어할 수 있습니다. 장치에 대한 /dev에 특정 사용자 지정 심볼릭 링크를 만들려면 시스템의 udev(7)
도움말 페이지를 참조하십시오.
udev
규칙은 매우 유연하지만 udev
제한 사항을 알고 있어야 합니다.
-
접근성 타이밍:
udev
쿼리 시 일부 스토리지 장치에 액세스할 수 없습니다. -
이벤트 기반 처리: 커널은 언제든지
udev
이벤트를 보낼 수 있으므로 장치에 액세스할 수 없는 경우 규칙 처리를 트리거하고 링크 제거를 트리거할 수 있습니다. - 지연 시간: 이벤트 생성과 처리 사이에 여러 장치가 지연되어 커널 탐지와 링크 가용성 사이에 지연이 발생할 수 있습니다.
-
장치 접근성:
blkid
와 같은udev
규칙에 의해 호출된 외부 프로그램은 장치를 간략하게 열어 다른 작업을 위해 일시적으로 액세스할 수 없게 만들 수 있습니다. -
링크 업데이트:
/dev/disk/
의udev
에서 관리하는 장치 이름은 주요 릴리스마다 변경될 수 있으므로 링크 업데이트가 필요합니다.
다음 표에는 /dev/disk에서 사용할 수 있는 심볼릭 링크가 나열되어 있습니다.
장치 유형 | 비영구 이름(커널 이름) | 영구 Symlink 이름 |
---|---|---|
실제 장치 | ||
NVMe (Non-Volatile Memory Express) | /dev/nvme* |
/dev/disk/by-id/nvme-<wwid> |
SCSI (Small Computer System Interface) | /dev/sd*, /dev/sr* |
/dev/disk/by-id/scsi-<model>_<serial> |
ATA(Advanced Technology Attachment)/atapi(ATA Packet Interface) | /dev/sd*, /dev/sr* |
/dev/disk/by-id/ata-<model>_<serial> |
CCISS (Compaq Command Interface for SCSI-3 Support) | /dev/cciss* |
/dev/disk/by-id/cciss-<model>_<serial> |
virtio(가상 입력 출력) | /dev/vd* | /dev/disk/by-id/virtio-<serial> |
PMEM (Persistent Memory) | /dev/pmem* | /dev/disk/by-id/pmem-<uuid> |
MMC(MultiMedia Card) | /dev/mmcblk* | /dev/disk/by-id/mmc-<name>_<serial> |
memstick (Memory Cryostat) | /dev/msblk* | /dev/disk/by-id/memstick-<name>_<serial> |
가상 장치 | ||
loop | /dev/loop* |
/dev/disk/by-loop-inode/<id_loop_backing_device>-<id_loop_backing_inode> |
DM (device-mapper) | /dev/dm-* |
/dev/mapper/<name> |
MD (여러 장치) | /dev/md* |
/dev/md/<devname> |
파티션(실제 또는 가상 장치 상단에 있음) | ||
(임의 경우) | (임의 경우) |
/dev/disk/by-partuuid/<uuid> |
LVM PV(Logical Volume Manager 물리 볼륨; 실제 또는 가상 장치의 상단에 있음) | ||
(임의 경우) | (임의 경우) | /dev/disk/by-id/lvm-pv-uuid-<pvuuid> |
2.2.1. 기존 장치의 장치 연결 값 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
현재 udev
데이터베이스에서 기존 장치의 장치 링크 값을 가져올 수 있습니다.
사전 요구 사항
- 장치가 존재하고 시스템에 연결됩니다.
프로세스
기존 장치의
/dev
아래의 기본 커널 장치 노드(DEVLINKS
)에 할당된 모든 장치 심볼릭 링크(DEV
LINKS )를 나열합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow nvme0n1 을 장치 이름으로 교체합니다.
다음 명령을 사용하여 모든 devlinks가 가리키는 기본 커널 이름을 가져올 수도 있습니다.
udevadm info --name /dev/nvme0n1 --query property --property DEVNAME --value /dev/nvme0n1
# udevadm info --name /dev/nvme0n1 --query property --property DEVNAME --value /dev/nvme0n1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 커널 이름과 devlinks는 서로 바꿔 사용할 수 있습니다.
다음 명령을 사용하여 devlinks 중 하나를 사용하여 devlinks의 전체 목록을 가져올 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow