Раздел root под lvm2 (При загрузке не может смонтировать / под lvm2)

Cent OS, Scientific Linux

Модератор: Модераторы разделов

ujinv
Сообщения: 14
ОС: Fedora Linux 9

Раздел root под lvm2

Сообщение ujinv »

Доброго времени суток!

"Всегда сначала читай маны..."
Незвестный мудрец.
"Никогда не чините то, что ещё не поломано."
Народная мудрость.

Преамбула
Все описанное ниже производилось с: компьютер с 1-м IDE-винчестером 40GB - /dev/sda1 - /boot, /dev/VolGroup00/LogVol00 - /; ОС Fedora 9.
После очередного бездумного апдейта своего домашнего сервера, выяснилось что GRUB перестал работать, а именно после сообщения система висла и никак не реагировала на мое вмешательство. Было постановлено - "Систему восстановить!" и я начал работать.
Процесс
Первым делом, загрузившись с LiveUSB Fedora 9 (cdrom на данной машине не установлен) было решено восстановить загрузчик:

Код: Выделить всё

#grub-install /dev/sda1
#reboot

Лучше не стало - вместо зависшего "GRUB_" моему вниманию был представлен не единожды заполненный этими же словами экран. Итого дальше GRUB_ не продвинулись.
Следующим этапом было монтирование из-под LiveDVD раздела /boot (/dev/sda1) и просмотр его содержимого. В ходе осмотра ничего неожиданного не было обнаружено. Я решил что в логах искать не было смысла, так как всё самое интересное зависало до начало их записи.
Далее начинаются не очень обоснованные действия: из раздела /boot всё было удалено и записаны файлы из соотвествующего раздела LiveDVD, а именно каталог /boot/grub и файлы vmlinuz, system.map и initrd. GRUB был снова переустановлен коммандами:

Код: Выделить всё

#grub
grub>root (hd0,0)
*ля-ля-ля всё ок - ext2fs - наше все
grub>setup (hd0,0)
*тра-та-та stage1 ... no
остальное всё ок*
grub>quit

После этого создал свой /boot/grub/grub.conf со следующим текстом:

Код: Выделить всё

title Fedora 9
root (hd0,0)
kernel /vmlinuz root=/dev/VolGroup00/LogVol00 ro
initrd /initrd

После перезагрузки GRUB сработал как надо, пошла загрузка системы, но дальше initrd дело не пошло - вывалилось с Kernel Panic - к сожалению не скажу точно что за ошибка была дословно, но как я понял проблема была с монтированием /
На третьем этапе было принято решение не использовать kernel и initrd из комплекта LiveDVD. Для этого был очищен /boot и выполнены следующие команды:

Код: Выделить всё

# mkdir /media/old
#mount -t ext3 /dev/sda2 /media/old
/dev/sda2 file system is already mounted or /media/old is busy.
#mount -t ext3 /dev/VolGroup00/LogVol00 /media/old
/dev/VolGroup00/LogVol00 file system is already mounted or /media/old is busy.
#vgscan
#vgchange -ay
Phisical volume /dev/VolGroup00 is now active.
#mount -t ext3 /dev/VolGroup00/LogVol00 /media/old
#mount -t ext3 /dev/sda1 /media/old/boot
#chroot /media/old yum remove kernel -y
#chroot /media/old yum install kernel -y

В результате мы получаем в /boot рабочий набор vmlinuz+initrd для нашего текущего ядра.
На всякий пожарный также сделаем собственный initrd

Код: Выделить всё

#cd /media/old/boot
#chroot /media/old mkinitrd --force-lvm-mod initrd-custom 2.6.26.5-45.fc9.i686

После перезагрузки как я ни пытался с различными параметрами и разными initrd запустить систему, ничего не выходило - загрузка продолжалась до момента, когда должен быть смонтирован / и тут выходил конфуз, из под lvm почему-то не получалось смонтировать этот раздел и boot failed.
Развязка
"А теперь, внимание, вопрос."
Проштудировав множество форумов, в которых решалась похожая проблема, удалось выяснить несколько интересных моментов:
1. Такие проблемы как правило возникали на FC3-5.
2. Такие проблемы как правило возникали у людей использующих RAID-массивы.
3. За что эта проблема досталась мне? (см. вступление)

Возможные решения проблемы:
1. Ещё раз посмотреть, быть может я где-нибудь ошибся в индексах
2. Попробовать сделать новый initrd изменив скрипт его создания в /etc/mkinitrd и вручную добавить модули ответственные за работу с LVM.
3. Использовать опцию загрузки ядра break=premount и вручную вводить vgchange -ay.

А теперь, собственно вопрос: как быть и что делать?

PS: тред начат с работы, поэтому могут присутствовать некоторые ошибки, так как написано по памяти.
Спасибо сказали:
Аватара пользователя
abbris
Сообщения: 34
ОС: Fedora, CentOS

Re: Раздел root под lvm2

Сообщение abbris »

Вот уж действительно, много судорожных и не обдуманных действий.
Для подобных манипуляций стоит пользоваться не Live{CD|USB}, а rescue режимом установочного диска, потому как initrd, используемый в Live-системах весьма отличается от используемых в обычных.
Предлагать решения по ремонту вашей системы непросто, но как "обходной вариант", коли у вас разделы на lvm (что хорошо и правильно), думаю лучше и проще поступить так:
1. Загрузитесь с установочного носителя в rescue режим.
2. С помощью parted выделите место под новую установку системы, где-то 2-3ГБ. Таким образом, у вас должны быть как минимум разделы: для /boot - тот, что использовался прежней системой, новый раздел для нового корня и прежние разделы, в том числе и корень прежней системы.
3. Перезагружаемся с установочного носителя в режим инсталляции и устанавливаем систему заново, используя /boot и новый(!) корень. Устанавливаем минимальный набор приложений.
4. По окончании установки перезагружаемся в новую минимальную систему и в ней в меню grub'а добавляем еще одну запись для загрузки прежней системы, указав ядру параметр root=/dev/VolGroup00/LogVol00, т.е. прежний корень. Также указываем метку для меню загрузки, чтобы знать что грузим.
5. Перезагружаемся и выбираем в меню grub'а вариант с прежним корнем.

Если кроме grub'а и ядра ничего не было повреждено, то все должно загрузиться, если же были повреждены еще какие-либо пакеты, то вы должны увидеть эти проблемы.
Из "второй" ("спасательной") системы можно выполнять все необходимые манипуляции с пакетами, используя опцию yum'а --installroot, в которой указать точку монтирования корня прежней системы. Переустановив поврежденные пакеты, вероятно, можно вернуть систему к полноценной жизни.
просто жить просто работать (пунктуация по вкусу)
Спасибо сказали:
Аватара пользователя
Ali1
Сообщения: 2250

Re: Раздел root под lvm2

Сообщение Ali1 »

Постарайтесь правильно описать таблицу разделов диска.
Видимо :
/dev/sda1 - /boot
/dev/sdaN - /LVM
Попробуйте с DVD:
boot: linux rescue
chroot /mnt/sysimage
grub-install /dev/sda в MBR ставить загрузчик надо.
Это надо было сделать сразу.
После сноса /boot и имея Live CD
выполнить правильно chroot в старый корень, смонтировать /boot,
удалить ядро, установить ядро, установить grub.
Спасибо сказали:
ujinv
Сообщения: 14
ОС: Fedora Linux 9

Re: Раздел root под lvm2

Сообщение ujinv »

Ali1
Спасибо за ответ!
Ali1 писал(а):
06.11.2008 16:04
После сноса /boot и имея Live CD
выполнить правильно chroot в старый корень, смонтировать /boot,
удалить ядро, установить ядро, установить grub.

=
в топикстарте так и было сделано, но не помогло.
см.
#mount -t ext3 /dev/VolGroup00/LogVol00 /media/old
#mount -t ext3 /dev/sda1 /media/old/boot
#chroot /media/old yum remove kernel -y
#chroot /media/old yum install kernel -y

abbris
Спасибо за ответ!
А вот с установкой на ещё однин раздел такой же системы - это оч. интересная идея! Сегодня вечером обязательно попробую! :thumbs:
А если я не буду для неё (новой установки) создавать LVM (а просто сделаю её /dev/sda5 напимер), будет ли в initrd поддержка /dev/mapper? Меня терзают смутные сомнения, что именно из-за отсутствия оного у меня все проблемы в жизни.
Спасибо сказали:
Аватара пользователя
Ali1
Сообщения: 2250

Re: Раздел root под lvm2

Сообщение Ali1 »

ujinv писал(а):
06.11.2008 18:44
...
А если я не буду для неё (новой установки) создавать LVM (а просто сделаю её /dev/sda5 напимер), будет ли в initrd поддержка /dev/mapper? Меня терзают смутные сомнения, что именно из-за отсутствия оного у меня все проблемы в жизни.

Вас терзают правильные сомнения. И как вы будете ресайзить LVM?
#mount -t ext3 /dev/VolGroup00/LogVol00 /media/old
#mount -t ext3 /dev/sda1 /media/old/boot
#chroot /media/old yum remove kernel -y
#chroot /media/old yum install kernel -y

Не правильно
Перед сменой корня нужно смонтировать proc и dev , а boot после.
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2142
Статус: *бунту ненавистник
ОС: linux

Re: Раздел root под lvm2

Сообщение landgraf »

Ali1 писал(а):
06.11.2008 19:32
Перед сменой корня нужно смонтировать proc и dev , а boot после.

ну ну

Код:

mount -t ext3 /dev/VolGroup00/LogVol00 /media/old mount -t ext3 /dev/sda1 /media/old/boot rpm -ihv --force --nodeps --root=/media/old kernel-blabla.rpm


лирическое отступление, у меня на экзамене RHCT такая задачка была :rolleyes:
Спасибо сказали:
Аватара пользователя
Ali1
Сообщения: 2250

Re: Раздел root под lvm2

Сообщение Ali1 »

landgraf писал(а):
06.11.2008 21:58
Ali1 писал(а):
06.11.2008 19:32
Перед сменой корня нужно смонтировать proc и dev , а boot после.

ну ну ...

А как вам:

Код:

# mount /dev/mapper/VolGroup00-LogVol00 /mnt/sysimage/ # rpm -ihv --force --nodeps --root=/mnt/sysimage/ /home/ali/kernel-2.6.25-14.fc9.i686.rpm rpmdb: Program version 4.3 doesn't match environment version ошибка: ошибка(4) db-30974 из dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch ошибка: невозможно открыть индекс Packages используя db3 - (-30974) ошибка: не могу открыть базу данных Packages в /mnt/sysimage/var/lib/rpm предупреждение: /home/ali/kernel-2.6.25-14.fc9.i686.rpm: Заголовок V3 DSA signature: NOKEY, key ID 4f2a6fd2 rpmdb: Program version 4.3 doesn't match environment version ошибка: ошибка(4) db-30974 из dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch ошибка: не могу открыть базу данных Packages в /mnt/sysimage/var/lib/rpm

Т.е Ваш метод работает в пределах одной версии.

Код:

# uname -a Linux aliCD.ali.mtu.ru 2.6.26.5-28.fc8 #1 SMP Sat Sep 20 09:12:30 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux # mount /dev/mapper/VolGroup00-LogVol00 /mnt/sysimage/ # mount -t sysfs /dev/sysfs /mnt/sysimage/sys/ # mount -t proc /dev/proc /mnt/sysimage/proc/ # mount -t tmpfs -o bind,mode=755,rw /dev /mnt/sysimage/dev/ # chroot /mnt/sysimage/ /bin/bash [root@aliCD /]# mount devpts /dev/pts -t devpts -o rw,mode=600 [root@aliCD /]# mount /dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) /proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,mode=600) [root@aliCD /]# rpm -ihv --force --nodeps kernel-2.6.25-14.fc9.i686.rpm предупреждение: kernel-2.6.25-14.fc9.i686.rpm: Заголовок V3 DSA signature: NOKEY, key ID 4f2a6fd2 Подготовка... ########################################### [100%] 1:kernel ########################################### [100%] [root@aliCD /]# ll /boot/ итого 6516 -rw-r--r-- 1 root root 86348 Май 1 2008 config-2.6.25-14.fc9.i686 -rw------- 1 root root 3582559 Ноя 6 23:54 initrd-2.6.25-14.fc9.i686.img -rw-r--r-- 1 root root 892575 Май 1 2008 System.map-2.6.25-14.fc9.i686 -rwxr-xr-x 1 root root 2088288 Май 1 2008 vmlinuz-2.6.25-14.fc9.i686 ..... #reboot ..... [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.25-14.fc9.i686 #1 SMP Thu May 1 06:28:41 EDT 2008 i686 i686 i386 GNU/Linux

PS а в RIP вообще rpm нету.
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2142
Статус: *бунту ненавистник
ОС: linux

Re: Раздел root под lvm2

Сообщение landgraf »

Ali1 писал(а):
07.11.2008 00:14
Т.е Ваш метод работает в пределах одной версии.

правильно, а что мешает загрузиться с установочного диска в resvue режиме?
Спасибо сказали:
Аватара пользователя
Ali1
Сообщения: 2250

Re: Раздел root под lvm2

Сообщение Ali1 »

landgraf писал(а):
07.11.2008 07:11
Ali1 писал(а):
07.11.2008 00:14
Т.е Ваш метод работает в пределах одной версии.

правильно, а что мешает загрузиться с установочного диска в resvue режиме?

А нет его. :)
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2142
Статус: *бунту ненавистник
ОС: linux

Re: Раздел root под lvm2

Сообщение landgraf »

Ali1 писал(а):
07.11.2008 08:28
А нет его. smile.gif

а скачать? netinstall, например
Спасибо сказали:
ujinv
Сообщения: 14
ОС: Fedora Linux 9

Re: Раздел root под lvm2

Сообщение ujinv »

Итак, продолжим.
1. С liveusb была произведена ещё одна установка fedora9 в ту же группу LVM - VolGroup00 : LogVol00 - старая система, LogVol01 - swap, LogVol02 - новая система.
2. Исправлен /boot/grub/menu.lst на предмет добавления следующих строк

Код: Выделить всё

title Fedora2
root (hd0,0)
kernel vmlinuz-{тра-та-та} ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd initrd-{тра-та-та}

3. Попытка загрузки в Fedora2 после ребута не увенчалась успехом с примерно следующими комментариями:
невозможно смонтировать /dev/root, /proc, /selinux и ещё несколько таких ошибок, затем невозможно switch root.
4. После загрузки в свежеустановленную систему и монтирования восстанавливаемого раздела, в нем были обнаружены слудующие странности:
в корне появились директории dev, proc, selinux и все те, которые не смогли смонтироваться в п.3, но они не просто появились, а стали подсвечены красным в mc и никаких действий над собой производить не позволяли.
5. При последующих попытках загрузки в Fedora2 стала вылетать ошибка чтения фс, дословно к сожалению не помню, но она быстро забивала весь экран своими сообщениями и приходилось делать хард-ресет.

Напрашивается вопрос: а не проще ли монтировать к уже свежеустановленной системе старые /usr, /home, /etc, /var ?
Спасибо сказали:
ujinv
Сообщения: 14
ОС: Fedora Linux 9

Re: Раздел root под lvm2

Сообщение ujinv »

Как показала практика и

Код: Выделить всё

# fsck /dev/VolGroup00/LogVol00

не сходится физический размер раздела и запись в partition table, затем долгое и однообразное исправление ошибок, которое к слову не пропускается ключем -а или -y, так что видимо придется отказаться от восстановления раздела и спасти то что ещё можно спасти.
Но всё-таки я не понимаю, почему установщик с liveUSB при ресайзе убил мне часть информации. И это фрустрирует меня всё больше и больше.
Спасибо сказали: