Linuxはハードドライブ文字を割り当てるためにどのアルゴリズムを使用しますか?

Linuxはハードドライブ文字を割り当てるためにどのアルゴリズムを使用しますか?

/dev/sda/dev/sdb/同じシステムを繰り返し起動しても、デバイス名と物理ハードドライブ間のマッピングは変更されずに残ることがわかりました。

ただし、ハードドライブをマザーボードの別のスロットに接続したり、ドライブを追加/削除しても、状況が変わらないかどうかはわかりません。

デバイス名を物理ハードディスクにマッピングすることに関して、Linuxはどのような保証をしますか?

物理ハードドライブを/ dev /のファイルにマップするためにどのようなルールを使用しますか?

ベストアンサー1

ドライブ名(通常のLinuxシステム)はカーネルによって決定され(デバイスが最初にカーネルで検出される必要があるため)、後でudevによって変更される可能性があります。どのようにどのハードウェアがどのブロック特殊ファイルにマップされるかを決定するのは実装の詳細であり、udev構成、カーネル構成、モジュール設定、およびその他のさまざまな(運用を含む)によって異なります。

同じハードウェアと構成を使用しても、デバイスとドライブの文字マッピングが常に同じであることを保証することはできません(一部のシステムは、特に並列モジュールローディングシステムなどの競合条件のためにデバイス名を変更する傾向があります)。

質問されていない質問に答えるには、/dev/sd*どのデバイスにインストールするかを事前に知らない限り(fdisk使用や検査後に手動でインストールした場合などblkid)、それを識別子として使用しないでください。代わりに、ファイルシステムのラベル、ファイルシステムのUUID、またはディスクIDを使用して、検索順序ではなくその属性で正しいデバイス、パーティション、またはファイルシステムを指していることを確認してください。でディスクIDを見つけることができます/dev/disk/by-id。これは便利なマウント位置であり、常に同じディスクを使用することを保証します。

/dev/sda1たとえば、現在のパーティションで使用可能なディスクIDを見つけるには、次のようにしますfind

$ find -L /dev/disk/by-id -samefile /dev/sda1
/dev/disk/by-id/wwn-0x5000cca22dd9fc29-part1
/dev/disk/by-id/ata-HGST_HUS724020ALA640_PN1181P6HV51ZW-part1

おすすめ記事