RAID 어레이에 대한 몇 가지 UDEV 규칙이 있습니다. 10개의 하드 드라이브 이름은 /dev/sda에서 /dev/sdj로 지정됩니다.
디스크는 언제든지 존재하지 않을 수 있습니다.
임의의 USB 등 장치가 누락된 하드 드라이브 이름 중 하나를 사용하지 못하도록 UDEV 규칙을 작성하려면 어떻게 해야 합니까?
예를 들어, 어떤 이유로 두 번째 하드 드라이브 /dev/sdb가 분리된 후 누군가 완전히 다른 포트에 USB 장치를 연결하는 경우 USB가 필요합니다.아니요/dev/sdb가 됩니다.
시스템에서 사용 가능한 각 USB 포트를 자체 이름으로 매핑하는 방법을 알아낼 수 있지만 더 깔끔한 방법이 있어야 합니까? 이런 생각을 하다가 "USB 장치라면 k부터 z까지 이름을 지정하세요.
KERNEL=="sd?", SUBSYSTEM=="block", DEVPATH="*usb", NAME="sd[k-z]", GOTO="END_20_PERSISTENT_DISK"
KERNEL=="sd?*", ENV{DEVTYPE}=="partition", SUBSYSTEM=="block", DEVPATH=="*usb*", NAME="sd[k-z]%n"
이 시스템은 임의의 USB 또는 하드 드라이브 장치를 수용하여 완전히 자율적으로 설계되었습니다. 이것이 바로 태그 및 uuid 대신 DEVPATH를 사용하는 이유입니다.
답변1
USB 드라이브를 연결하고 사용하세요
udevadm info -a -p /sys/block/sd*
여기서 *는 디스크 할당 번호(sda1, sda3, sdb2 등)입니다.
그런 다음 다음과 같은 udev 규칙을 작성했습니다.
KERNEL=="sd*", SUBSYSTEMS==" block", ATTRS{serial}=="**************", SYMLINK+="sdb%n"
물론 udevadm 정보를 기반으로 편집하십시오.
또 다른 좋은 해결책은 DISK_UID 또는 LABEL을 사용하여 마운트하는 것입니다. 그런 다음 /dev/sd*는 중요하지 않게 됩니다. LABEL 또는 DISK_UUID를 사용하여 마운트합니다. 저는 LABEL을 선호합니다. 여기에 내 fstab의 예가 있습니다.
LABEL=memoria swap swap defaults 0 0
LABEL=root / ext4 defaults,acl 1 1
LABEL=utenti /home ext4 defaults,acl 1 2
utenti 및 root는 lvm 볼륨입니다. /dev/sd*는 e2label 명령을 사용하여 파티션에서 LABEL을 사용하는 데 중요하지 않습니다.