Pull to refresh

UUID и /dev/disk/by-id спешат на помощь

Reading time 3 min
Views 17K
Поднимал недавно на новом сервере Xen и столкнулся с одной очень интресной проблемой — при загрузке случайным образом выбирался sda и sdb из двух винтов, не смотря на то, что в BIOS все было жестко прописано. Таким образом получалось, что сервер загружался через раз. И тогда я принялся думать, как бы мне решить эту проблему :) Все было не сложно, если бы не одно но, один из дисков был зашифрован :)
Итак, для начала краткое описание ситуации:
имели сервер с поднятым Xen и двумя IDE HDD: 160 Gb — система и 400 Gb — зашифрованный диск с гостевыми доменами Xen. Все работало прекрасно, системный диск мастер, доменный — слэйв. Но в один прекрасный день слэйв решил, что больше так жить нельзя и тихо умер :). Решено было не заморачиваться и на его замену пришел новый 400 Gb SATA диск. В BIOS было прописано жестко кто есть кто, то есть какой диск первый, а какой второй и решено было продолжить загрузку.
Появился экран GRUB, повисел свои три секунды и пошла загрузка. Правда недалеко, как говорится, не долго музыка играла, недолго фраер танцевал, так как после загрузки initrd образа система сказала мне свое «фи» словами, что не может найти рутовый раздел. Посмотрев друг на друга (имеется ввиду я и Xen), я решил что мне показалось и нажал три волшебных кнопки, после чего система, видимо поняв намек, пошла на перезагрузку. Перепроверка BIOS показала, что я ничего не напутал и решено было попробовать еще раз. "И снова здравствуйте, то есть я хотела бы знать где МОЙ root partition?" — сказала мне система. Прокрутив вывод сообщений я с удивлением обнаружил, что мой IDE диск стал sdb, а SATA — sda. Что-то в этой сказке не так, подумал колобок доедая лисицу подумал я и решил, ну если ты так решила, не вопрос, сейчас сделаем тебе как хочешь. Опять три кнопки и при загрузки заход в меню GRUB и там правка на sdb, далее кнопочка b и пошел процесс загрузки. Я откинулся на спинку стула, но как оказалось зря и не надолго, так как система опять меня спросила: «Где я?», на что я только и смог ответить: «Кто здесь?», так как просмотрев процесс я заметил, что в этот раз диски уже определились нормально и я зря указал GRUB, что рутовый раздел на sdb. Плюнув на все, Нажав еще раз три кнопочки, оставил все как есть и «О, чудо!» система загрузилась как положено. :)
Вроде бы можно было успокоиться, списав все на неподходящее расположение звезд на небе и рака в созведии девы, но повторные перезагрузки показали, что я в здравом уме, а вот систему по какому-то ей одной известному алгоритму (хотя я подозреваю что это просто /dev/rand), решала кто сегодня в доме хозяин, а кому мыть посуду :)
Про то, что можно использовать UUID я знал давно, но было одно но, в виде второго винта с зашифрованными данными и пары скриптов, которые автоматизировали подключение и запуск гостевых доменов, а они, при инициализации посредством cryptsetup create, использовали жесткие указатели на девайсы (что-то типа /dev/sdb1). Надо было что-то думать, чтобы было элегантно и по возможности быстро :)
Вопрос с загрузкой был решен быстро, хвала UUID. Узнав какому разделу и какой принадлежит был подправлен menu.lst для GRUB и fstab.
Делается это примерно так:
# tune2fs -l /dev/sda3 | grep -i uuid

Filesystem UUID: 269f023a-bf30-4a6e-a866-6c414dec0ef6

в menu.lst:
title Xen 3.2-1-amd64 / Debian GNU/Linux, kernel 2.6.26-2-xen-amd64
root (hd0,0)
kernel /xen-3.2-1-amd64.gz
module /vmlinuz-2.6.26-2-xen-amd64 root=UUID=269f023a-bf30-4a6e-a866-6c414dec0ef6 ro console=tty0
module /initrd.img-2.6.26-2-xen-amd64

и кусок из fstab:
UUID=269f023a-bf30-4a6e-a866-6c414dec0ef6 / ext3 errors=remount-ro 0 1

И вот тут встал вопрос со swap разделом. Многие не знают как назначить на swap раздел UUID (по умолчанию инсталлер создает без него). Для этого просто пересоздаем его, предварительно отключив:
# swapoff
# mkswap /dev/gde_swap
# vol_id /dev/gde_swap | grep UUID
ID_FS_UUID=c52042d0-8527-48bd-812c-d51000059098
ID_FS_UUID_ENC=c52042d0-8527-48bd-812c-d51000059098
берем отсюда UUID и прописываем в fstab.

Но вот как же быть с криптованным винтом? Там UUID не увидишь :( Пришлось лезть в irc канал Debian (irc.debian.org) и поспрашивать совета там :) Вот они мне и рассказали про /dev/disk/by-id/ :)
Заглянув туда, я нашел то, что мне и как оказалось cryptsetup тоже, оказалось вполне достаточно для дальнейшего безбедного существования, а имено, искомую ссылку на девайс: scsi-SATA_ST3400633AS_9NF0BZ3B-part1. Правка скриптов прошла быстро и безболезнено, а далее наступил момент истины — контрольный выстрел перезагрузка :)

Хвала всем и на всякий случай святому Патрику тоже (привет слаководам ;)) все прошло на ура :)

Итак, как говорится, терпение и труд все перетрут :) И главное не стесняться и поспрашивать у тех кто знает :)

PS: Еще раз большое спасибо приветлевым парням с irc.debian.org.

UPD: с джамперами все в порядке :) перепроверял, так как это тоже было первое, что пришло в голову :)
Tags:
Hubs:
+6
Comments 3
Comments Comments 3

Articles