web-dev-qa-db-ja.com

ブート間の/ sda / sdbの変更を防ぐ方法は?

Gentoo Linuxを古いハードウェアにインストールします。マザーボードにはIDEとSATAハードドライブの両方があります。2つのIDEと1つのSATAハードドライブがあります。接続され、それらでRAIDを実行する予定です。

しかし、私は問題に気づきました:/ dev/sdaにマップされたハードドライブは、起動するたびに変更されます!

インターネットから答えを探していました。そして、私は 永続的なデバイス名 が解決策になる可能性があることを発見しました。しかし、システム全体で互換性の問題が発生するのではないかと心配しています。さらに、/dev/disk/by-labelを使用できない限り、(名前が非常に長いため)非常に不便です。しかし、by-label/dev/sdaおよび/dev/sdbを参照できないようです-/dev/sda1のみが可能です。さらに、BIOSを使用する古いハードウェアの場合、 GPTではなくMBRしか使用できない と思います。 MBR環境でディスクラベルを変更するにはどうすればよいですか?

一方、私の心の理想的なソリューションは、/dev/sdaがすべてのブートで同じハードディスクにマップされることです。想像上、これは「bootmap」という名前のファイルをハードディスクに保存することで実現できます。そして、「/ sda」は「bootmap」ファイルに書き込まれます。システムの起動中に、「bootmap」内に「/ sda」が見つかった場合、ドライブは/dev/sdaにマップされます。 「/ sdb」が見つかると、/dev/sdbにマッピングされます。等々。 (しかし、私はそれがおそらくそれほど理想的ではないことを知っています。)

では、ブート間の/dev/sda変更のマッピングを回避するにはどうすればよいですか?

別の方法として、ラベルを編集する方法もいいでしょう。 -互換性の問題がどこにもないことを考えると。

(PS-どちらの方法でも、インターネット上での解決策はまだありません。)

3
midnite

ほとんどのファイルシステムには固有のUUIDがあり、ラベルを付けて、固有の値に設定できます。これらにより、/dev/disk/by-uuidまたは/dev/disk/by-labelを介してファイルシステムを含むボリュームを参照できます。他のタイプのボリューム(RAID、LVMなど)にも一般に名前が付けられています。 RAIDおよびLVMボリュームは、ボリュームの接続方法に関係なく、物理ボリューム内の一意の識別子に基づいて組み立てられます。したがって、ディスクをそのように参照する必要があるのは珍しいことです。

接続方法に基づいてディスクにアクセスする必要がある場合は、/dev/disk/by-idを使用できます。エントリはBUS-SERIALまたはBUS-NAME-SERIALの形式です。ところで、すべての/dev/disk/サブディレクトリは dev 、特に 永続ストレージルール によって維持されます。

別の解決策は、/devの下に独自のシンボリックリンクを作成することです。これを行うためのudevルールを作成できます。次のようなルールを含むファイル/etc/udev/rules.d/50-local-persistent-disks.rulesを追加します

SUBSYSTEM=="block", ATTRS{model}=="Yoyodine HD9001", \
  ATTRS{serial}=="123-456-789", \
  SYMLINK+="myfancyname"

udevadm info -a /dev/sdaを実行して、使用できる…==…パターンを確認します。複数のパターンを使用する場合、それらは同じ出力ブロックからのものである必要があり、異なる親デバイスからのパターンを混在させることはできません。

ディスクタイプ/モデルにのみバインドされている/ dev/disk/by-id /リンクを安全に使用できると思います。

lrwxrwxrwx 1 root root   9 Jul 14 15:13 ata-Hitachi_HDS123456789_PVC1234567890 -> ../../sda

/ dev/disk/by-pathがコントローラーと偶然に遭遇する可能性は低いです:

lrwxrwxrwx 1 root root   9 Jul 14 15:13 pci-0000:00:1f.2-ata-2 -> ../../sda
lrwxrwxrwx 1 root root  10 Jul 14 15:13 pci-0000:00:1f.2-ata-2-part1 -> ../../sda1
lrwxrwxrwx 1 root root  11 Jul 14 15:40 pci-0000:00:1f.2-ata-2-part10 -> ../../sda10
lrwxrwxrwx 1 root root  11 Jul 14 15:43 pci-0000:00:1f.2-ata-2-part11 -> ../../sda11
lrwxrwxrwx 1 root root  11 Jul 14 15:13 pci-0000:00:1f.2-ata-2-part12 -> ../../sda12
0
Alex