UDEVルールが特定の名前セットにデバイスを割り当てないようにする方法

UDEVルールが特定の名前セットにデバイスを割り当てないようにする方法

RAIDアレイにはいくつかのUDEVルールがあります。 10 個のハードドライブ名は、/dev/sda から /dev/sdj と指定されます。

ディスクはいつでも存在しない可能性があります。

任意のUSBなどのデバイスが欠落しているハードドライブ名の1つを使用しないようにUDEVルールを作成するにはどうすればよいですか?

たとえば、何らかの理由で2台目のハードドライブ/ 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を使用するためには重要ではありません。

関連情報