sdaとsdbは引き続き交換されます

sdaとsdbは引き続き交換されます

ボックスはUbuntu 16.04を実行しているHPマイクロサーバーです。最近、ブートデバイスを64GB SSDに「アップグレード」しました。 1TB SATAドライブもあります。

/dev/sda1通常、SSDのプライマリパーティションとして起動し、/dev/sda5パーティションをスワップし、/dev/sdb1にマウントされている1Tb HDDのパーティションを指します/mnt/media0

問題は時々すべてが変わるということです。今SSDは、/dev/sdb1メディア/dev/sdb5パーティションは今です/dev/sda1

/etc/fstabもちろん、これはスワップとメディアマウントが以前の名前の下にリストされているため失敗します/dev/sd*

だから私は持っています:

  1. BIOSを確認しましたが、常に64GB SSDが最初のドライブとして表示され、1TB IDEが2番目のドライブとして表示されます。

  2. ボリュームラベルでメディアドライブを参照するように変更しようとしましたが、/etc/fstabこれはUbuntuを起動せずに回復モードに切り替えました。

  3. スワップおよび(ext4)メディアパーティションを参照するためにUUIDを使用するように変更しようとしました/etc/fstab(実際のデフォルトパーティションがリストされています)。しかし、それから二番目の問題にぶつかりました。

各パーティションのUUIDを見つけるために次のコマンドを実行すると...

ls /dev/disk/by-uuid
blkid

どちらも最初のエントリ(プライマリパーティションのUUID)のみを一覧表示します。使用されているメディアパーティションのUUIDのみが表示されます(実際に起動時に割り当てられているsdb1ようです)。

tune2fs -l /dev/sdb1

ただし、対応するUUIDを使用すると、/etc/fstabUbuntuは起動せずに回復モードに入ります。

だから私の質問は次のとおりです。

  • ドライブ間の交換をインポートして停止する/dev/sda方法はありますか?/dev/sdb

  • 別のパーティションのUUIDをシステムに表示させるにはどうすればよいですかfstab

  • そして/またはスワップとメディアパーティションを確実にマウントする他の方法はありますか?

答え1

で「ディスク/ID別」名を使用できます/etc/fstab

ls -l /dev/disk/by-id

これらのデバイス名は、他のファイル(initrd、grub config)でも使用できます。したがって、grub設定を更新してinitrdを再生成することもできます。

答え2

他のカーネルはudevをサポートし、他のカーネルはudev(eudev)をサポートしていないので、ハードドライブを交換し続けます!

はい、sysv、openrc、およびs6 initの交換(systemdの交換)を試み始めたときにも、この問題が困難になりました。

問題は、同じディスク上に異なるLinux vmlinuzイメージをビルドすると、grubユーティリティとその構成ファイルにあります。特に、1つのカーネルビルドでは有効になり、他のカーネルビルドでは有効になっていない場合GRUB_DISABLE_LINUX_UUID/etc/default/grubなど)に問題があります。

==理由#1==

だから…犯人は誰ですか?古いビシステム。 Non-systemdは、どのSATA / IDEコネクタが使用されているかに関係なく、sdaドライブが常に起動ディスクラベルになるようにスワップを実行します。

ドライブの位置合わせはATA(SATAまたはlibataライブラリ)デバイスによって行われ、並べ替えはファイルから削除されますdrivers/scsi/ida_probe()GRUB_DEVICE_BOOT/etc/default/grub

==理由#2==

CONFIG_SCSI_DEBUG「yes」(または「vmlinuzブートパラメータで」でinitramfsを使用している場合は「m」)を指定するscsi_debug=add_host:1と、既存のハードドライブの「sd」タグインデックスのインデックス番号が1ずつ上がります。つまり、にsda1なりますsdb1

関連情報