内部ドライブの前に外部ドライブを挿入しないようにカーネルにどのように指示しますか?

内部ドライブの前に外部ドライブを挿入しないようにカーネルにどのように指示しますか?

通常、名前を使用する内部ドライバがあります/dev/sda/dev/sdc/dev/sdb

UUIDを介してデバイスを参照することもできますが、覚えにくいです。内部ハードウェアを変更しない限り、これらの並べ替えを防止したいと思います。少なくとも外付けハードドライブが最初の4つのドライブに接続されるのを防ぎたいと思います。

ベストアンサー1

デフォルトでは、デバイス名はストレージコントローラドライバの初期化時に先着/dev/sd*順に割り当てられます。複数の異なるストレージコントローラがある場合は、ロード順序を操作できます。

これが不可能な場合は、udevルールの作成方法を学ぶ必要があります。難しくありません。

最初の実行udevadm info -q all -a -n /dev/sda。これにより、/dev/sdaudevディスクを識別するために使用できるすべての属性が一覧表示されます。コマンドは/dev/sdaディスクデバイスから開始し、デバイスツリーの上に移動し、一度に1つの属性ブロックを出力します。最初のブロックの属性を使用できます。そしてあなたが選んだ別の作品

最初のブロックは常に実際のブロックデバイスです。便利な属性があまりない傾向がありますが、このSUBSYSTEM属性を使用して、ルールが実際のブロックデバイスに対してのみ実行されるようにすることができます。したがって、udevルールの最初の条件はですSUBSYSTEM=="block"

一般的なSATAディスクの場合、2番目のブロックにはsdドライバレベルの情報が含まれています。特定のディスクを一意に識別するために使用できるおよびATTRS{model}/またはがあります。多くのスペースを含む長い文字列にするATTRS{wwid}ことができますが、ATTRS{wwid}ドライブのシリアル番号やその他の一意の識別子を含める必要があります。これが最適です。シリアル番号の周囲にスペースやその他の重要でない文字列がある場合は、次のように一致させることができます。

ATTRS{wwid}=="*<serial number>*"

ディスクデバイスを一意に識別するのに十分な場合は、そのデバイスで何をするかを決定できます。最善の解決策は、おそらくSYMLINK+="custom_name"現在の実際のデバイス名を自動的に指すリンクを作成することです。

実際のデバイス名をハードコードするのと同じ方法を使用することもできますが、NAME="sda"そうする場合は、カスタムudevルールがまだないディスクが重複割り当てを受けないように、すべての現在のディスクに対してこれらのルールを作成することをお勧めします。 (これを行うと、/etc/fstab新しい名前と一致するようにファイルを更新して間違える場合に備えて、外部メディアから起動して問題を解決する方法も知っておく必要があります。この点ではシンボリックリンクがより安全です。)

したがって、シリアル番号がS12345でモデル文字列を含むディスクの場合は、次の規則を使用して"HyperDisk "エイリアスを割り当てることができます。 (注:属性に末尾のスペースがあることが報告された場合は、ワイルドカードを含めるかルールに含める必要があります。文字列は正確にリストされているように)。/dev/dsk_sysudevadm info

SUBSYSTEM=="block", ATTRS{model}=="HyperDisk   ", ATTRS{wwid}="*S12345*", SYMLINK+="dsk_sys"

たとえば、カスタムルールを入力し/etc/udev/rules.d/custom.rulesて再起動(または実行partprobe /dev/sda)すると、そのディスクを指すシンボリックリンクが必要になります/dev/dsk_sys。名前が変更されても、そのディスクをポイントし続けます/dev/sd*

おすすめ記事