継続的な命名/権限を保証するために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、新しいブロック(または文字)デバイスファイルを作成しますが、すでに1つあるため、/dev/sdd新しいファイルを作成する必要はなく、そのファイルへのシンボリックリンクだけが必要です(udevが属性を使用して実行する操作SYMLINK)。

udevの「自動化」部分が不要な場合や必要なく、デバイスを起動または接続するたびに手動でコマンドを実行できる場合でも、その機能を使用せずに代わりにmknodシンボリックリンクを作成することをお勧めします。

あなたが望むものがデバイスに良い(そして安定した)「パス」ならば、ファイルシステムまたはパーティションのラベルを設定することをお勧めします。その後、/dev/disk/by-partlabeludev inとoutによって生成されたデフォルトのシンボリックリンクの1つを使用できます/dev/disk/by-label

ストレージと連携する他のシステムツールもudevを使用しているため、udevを使用してシンボリックリンクを作成すると、これらのツールはそれがそのデバイスへのシンボリックリンクであることを認識します。手動で作成されたノードの場合はそうでない可能性があります(ただし、たとえばlsblk実行するとlsblk /disks/QUORUML表示するのに十分スマートです/dev/sdd)。

関連情報