
Ящик представляет собой микросервер HP, работающий под управлением Ubuntu 16.04. Недавно я «обновил» загрузочное устройство до SSD на 64 ГБ. Дополнительно имеется диск SATA на 1 ТБ.
Обычно он загружается /dev/sda1
как основной раздел (на SSD) и /dev/sda5
как раздел подкачки, и /dev/sdb1
указывает на раздел на жестком диске объемом 1 ТБ, который смонтирован в /mnt/media0
.
Проблема в том, что иногда все это меняется, и SSD теперь /dev/sdb1
, /dev/sdb5
а раздел носителя теперь /dev/sda1
.
Это, конечно, приводит к сбою монтирования разделов подкачки и носителей, поскольку они указаны под /etc/fstab
своими предыдущими /dev/sd*
именами.
Так что я:
Проверил BIOS, и он постоянно указывает SSD объемом 64 ГБ как первый диск, а IDE объемом 1 ТБ — как второй.
Я попытался изменить
/etc/fstab
ссылку на носитель по метке тома, но это приводит к сбою Ubuntu при запуске и переводит меня в режим восстановления.Я попытался изменить
/etc/fstab
ссылку на разделы подкачки и носителя (ext4) с помощью UUID (так как, по сути, он указывает основной раздел)ноИ тут я сталкиваюсь со второй проблемой.
Когда я выполняю следующую команду, чтобы найти UUID различных разделов...
ls /dev/disk/by-uuid
blkid
оба перечисляют только 1 запись – UUID основного раздела. Я могу видеть только UUID раздела носителя, используя (при загрузке, где он, по сути, назначается, sdb1
очевидно)
tune2fs -l /dev/sdb1
но опять же, если я использую этот UUID, /etc/fstab
то Ubuntu не загружается и переходит в режим восстановления.
Итак, мои вопросы:
Есть ли способ запустить
/dev/sda
и/dev/sdb
остановить переключение между дисками?Как мне заставить систему видеть UUID других разделов, чтобы я мог использовать их
fstab
?и/или есть ли другой способ надежно смонтировать разделы подкачки и носители?
решение1
Вы можете использовать имена «disk/by-id» в /etc/fstab
, см.
ls -l /dev/disk/by-id
Обратите внимание, что эти имена устройств могут также использоваться в других файлах (initrd, grub configs). Поэтому вы можете обновить конфигурацию grub и пересоздать initrd.
решение2
Он продолжает менять жесткий диск, потому что в разных ядрах есть поддержка udev, а в других нет поддержки udev (eudev)!
Да, я тоже был этим задет, когда начал экспериментировать с sysv, openrc и заменой init s6 (заменой systemd).
Проблема заключается в утилитах grub и их конфигурационных файлах при сборке разных образов Linux vmlinuz на одном диске, ОСОБЕННО при включении GRUB_DISABLE_LINUX_UUID
( /etc/default/grub
и т. д.) для одной сборки ядра и отключении для других.
== Причина №1 ==
Итак... кто виноват? Старый не-systemd. Подкачка происходит не-systemd, чтобы диск sda всегда был начальной меткой диска, независимо от того, какой разъем SATA/IDE используется.
Заказ дисков выполняется устройством ATA (библиотека SATA или libata), а переупорядочивание выполняется drivers/scsi/ida_probe()
. Удалите это GRUB_DEVICE_BOOT
из вашего /etc/default/grub
файла.
== Причина №2 ==
Указание CONFIG_SCSI_DEBUG
«yes» (или «m», если используется initramfs с « scsi_debug=add_host:1
в параметрах загрузки vmlinuz) почти наверняка увеличит индекс метки «sd» вашего существующего жесткого диска(ов) на единицу: т. е. ваш диск sda1
станет sdb1
.