지속적인 이름 지정/권한을 보장하기 위해 mknod 대신 udev 규칙을 사용하는 이유는 무엇입니까?

지속적인 이름 지정/권한을 보장하기 위해 mknod 대신 udev 규칙을 사용하는 이유는 무엇입니까?

udev rule디스크 이름과 디스크 권한을 보장하는 데 사용되는 몇 가지 구성을 보았습니다 . 그러나 최근에 다음과 같이 "별칭 생성"할 수 있는 디스크를 mknod지정하여 블록 장치의 별칭처럼 작동하는 명령을 발견했습니다 .major:minor

[root@dbnode1 disks]# lsblk
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdd                   8:48   0  160M  0 disk

mknod /disks/QUORUML b 8 48

이제 사용하기가 너무 쉽기 때문에 왜 udev rules대신 사용하는지 궁금합니다 . 나의 주요 요점은 지속적인 이름 지정 및 권한을 보장하는 것입니다.mknodmknod

답변1

왜?신뢰할 수 있음!

드라이버가 새 장치를 감지하면 주 및 부 장치 번호가 할당되고, 장치가 제거되면 이러한 장치 번호가 해제되어 나중에 다시 사용할 수 있습니다.

그 결과 감지 순서가 변경되면 장치 번호와 해당 SD 태그 간의 연결도 변경됩니다.

이는 고유한 디스크가 있는 소규모 시스템에서는 특이한 것으로 간주될 수 있지만 이동식 미디어, 핫스왑 가능한 디스크 어레이를 생각해 보세요...병렬 감지로 덮습니다...sdb, sdc...엄밀히 말하면 순서는 예측할 수 없습니다. .

이것이 메이저 및 마이너 번호 범위(또는 /etc/fstab 파일과 같이 장치를 참조할 때 관련 SD 이름)를 사용하고 싶지 않은 이유입니다. 잘못된 장치를 설치하면 큰 문제가 발생할 수 있습니다.

답변2

가장 큰 이유는 udev 규칙이 "자동"이기 때문입니다. 새 장치가 연결될 때마다(또는 부팅 중에 검색될 때마다) udev는 모든 규칙 파일을 처리하므로 수동으로 아무것도 할 필요가 없습니다.

또한 mknod새 블록(또는 문자) 장치 파일을 생성하지만 이미 하나가 있으므로 /dev/sdd새 파일을 생성할 필요가 없으며 해당 파일에 대한 심볼릭 링크만 있으면 됩니다(udev가 속성을 사용하여 수행하는 작업입니다 SYMLINK).

udev의 "자동화" 부분을 원하지 않거나 필요하지 않고 장치를 부팅하거나 연결할 때마다 수동으로 명령을 실행할 수 있는 경우에도 해당 기능을 사용하지 말고 mknod대신 심볼릭 링크를 생성하는 것이 좋습니다.

당신이 원하는 것이 장치에 대한 좋은(그리고 안정적인) "경로"라면, 파일 시스템이나 파티션에 대한 레이블을 설정하는 것이 좋습니다. 그런 다음 /dev/disk/by-partlabeludev in 및 out 에 의해 생성된 기본 심볼릭 링크 중 하나를 사용할 수 있습니다 /dev/disk/by-label.

스토리지와 함께 작동하는 다른 시스템 도구도 udev를 사용하므로 udev를 사용하여 심볼릭 링크를 생성하면 이러한 도구는 그것이 해당 장치에 대한 심볼릭 링크임을 알게 됩니다. 수동으로 생성된 노드의 경우에는 그렇지 않을 수 있습니다(그러나 예를 들어 lsblk실행하면 lsblk /disks/QUORUML표시할 만큼 똑똑합니다 /dev/sdd).

관련 정보