Comments 36
Хабр превращается в унылый Linux HOWTO
И чем это плохо? Вас ведь никто не заставляет читать это. Кому-нибудь моя заметка однозначно пригодится.
Свежие GRUB-ы прекрасно умеют superblock 1.2. Кроме того, он даже предпочтительный.
Сегодня поднимал машину, сделал 1.2, конфиг GRUB-а — тупо grub-mkconfig. И всё, работает, внутрь не лез.
Сегодня поднимал машину, сделал 1.2, конфиг GRUB-а — тупо grub-mkconfig. И всё, работает, внутрь не лез.
Речь не про /boot на RAID, а про / на RAID'е.
Ядро не может загрузить систему, если та лежит на RAID'е с v1.2 суперблоком. А /boot у меня вообще на отдельном диске лежит, на простом разделе. Не вижу смысла его на зеркало запихивать.
Ядро не может загрузить систему, если та лежит на RAID'е с v1.2 суперблоком. А /boot у меня вообще на отдельном диске лежит, на простом разделе. Не вижу смысла его на зеркало запихивать.
Все в одном разделе, md 1.2. Работает.
Ядру, по сути, абсолютно по фигу, где рут. Смонтировать рут — задача initrd. Кто мешает сунуть в initrd mdadm, собрать оттуда массив, смонтировать рут и отдать его init-у?
Ядру, по сути, абсолютно по фигу, где рут. Смонтировать рут — задача initrd. Кто мешает сунуть в initrd mdadm, собрать оттуда массив, смонтировать рут и отдать его init-у?
Можно и так, но я не использую initrd.
Загрузка Linux с корнем на RAID
Возможно вы имели в виду software-raid?
У меня например RAID
а параметры grub вот такие:
splashimage=(hd0,0)//grub/splash.xpm.gz
title Chainload into GRUB 2
root (hd0,0)
kernel /grub/core.img
title Debian GNU/Linux, kernel 3.0.1-amd64
root (hd0,0)
kernel /vmlinuz-3.0.1-amd64 root=/dev/sda5 ro
initrd /initrd.img-3.0.1-amd64
Друг! Красноглазик! (не обижайся, я такой же).
Линуха может стартовать без initrd образа. Но зачем?
Когда ты для себя откроешь LVM,pxe и еще много страшных слов ты поймешь как ты до этого извращался.
Я тебе подскажу прекрасную программу genkernel для твоего дистрибутива. Просто пишешь genkernel all и наслаждаешься!!!
Линуха может стартовать без initrd образа. Но зачем?
Когда ты для себя откроешь LVM,pxe и еще много страшных слов ты поймешь как ты до этого извращался.
Я тебе подскажу прекрасную программу genkernel для твоего дистрибутива. Просто пишешь genkernel all и наслаждаешься!!!
Не совсем понял, кому адресовано обращение )) Если мне, то спс за красноглазика — я действительно такой, и в прямом, и обратном смысле :-D
Кстати сказать, с LVM я хорошо знаком — уже много лет им пользуюсь, отличная штука ))) Он у меня поверх софт-рэйда работает.
И про genkernel я тоже знаю, только не нужен он мне, у меня и без него все прекрасно работает ))
У меня make bzImage && make modules && make modules_install уже настолько вошли в привычку, что я без них никак ))
Кстати сказать, с LVM я хорошо знаком — уже много лет им пользуюсь, отличная штука ))) Он у меня поверх софт-рэйда работает.
И про genkernel я тоже знаю, только не нужен он мне, у меня и без него все прекрасно работает ))
У меня make bzImage && make modules && make modules_install уже настолько вошли в привычку, что я без них никак ))
/ по lvm без initrd? Это как? Я так не умею…
Я всё кроме boot на lvm перетащил. Однозначно удобнее.
Я всё кроме boot на lvm перетащил. Однозначно удобнее.
Нет, корень просто на зеркале лежит, без lvm. Он всего 200 метров. Все остальные разделы на raid+lvm.
Т.е. схема примерно такая:
1. /boot — на отдельном физическом диске. Не RAID, не LVM.
2. / — RAID-1 (софт)
3. swap — RAID-0 (софт)
4. /usr — раздел лежит на LVM, который в свою очередь лежит на soft-raid (RAID-1).
Все остальные разделы по такому же принципу как и /usr
Т.е. схема примерно такая:
1. /boot — на отдельном физическом диске. Не RAID, не LVM.
2. / — RAID-1 (софт)
3. swap — RAID-0 (софт)
4. /usr — раздел лежит на LVM, который в свою очередь лежит на soft-raid (RAID-1).
Все остальные разделы по такому же принципу как и /usr
уже давно можно делать просто
make && make modules_install && make install
make && make modules_install && make install
Извиняюсь за оффтопик,
а насколько удачно линукс можно грузить с корнем на lvm?
а насколько удачно линукс можно грузить с корнем на lvm?
Грузить вполне удачно можно, c помощью initrd. Он с этим замечательно справляется.
Но вообще, я не вижу смысла запихивать корень на LVM. Я считаю, что на LVM имеет смысл ложить те разделы, которые в последствии будут изменяться (расширяться, например). Изменение размера разделов может понадобиться на /usr и /var, а вот все остальное, в объемном смысле, остается практически без изменений, либо изменяется незначительно (за исключением /etc и /lib, которые и так небольшого размера).
Все каталоги за исключением /usr и /var у меня, как я писал выше, занимают порядка 200 метров.
Но вообще, я не вижу смысла запихивать корень на LVM. Я считаю, что на LVM имеет смысл ложить те разделы, которые в последствии будут изменяться (расширяться, например). Изменение размера разделов может понадобиться на /usr и /var, а вот все остальное, в объемном смысле, остается практически без изменений, либо изменяется незначительно (за исключением /etc и /lib, которые и так небольшого размера).
Все каталоги за исключением /usr и /var у меня, как я писал выше, занимают порядка 200 метров.
Корень на lvm грузится легко.
Ядро собирается genkernel'ом, он сам подсказывает что grub'у надо написать dolvm domdadm.
Смысл корня на lvm в удобстве переноса его на другой диск, удобстве изменения размера.
С lvm ты зависишь только от boot раздела, который можно собрать в RAID1 c metadata=0.90.
Ядро собирается genkernel'ом, он сам подсказывает что grub'у надо написать dolvm domdadm.
Смысл корня на lvm в удобстве переноса его на другой диск, удобстве изменения размера.
С lvm ты зависишь только от boot раздела, который можно собрать в RAID1 c metadata=0.90.
Раздел /usr тоже, в общем-то остаётся без изменений, кроме развечто случаев серьёзного перепрофилирования сервера (внезапное добавление Xorg/kde/gnome) или злоупотребления /usr/src.
Если его не расшаривать между серверами для экономии на спичках — то и отделать от корня особо смысла нету.
Если его не расшаривать между серверами для экономии на спичках — то и отделать от корня особо смысла нету.
Интереснее было бы почитать про загрузку линукс с /boot на софтовом рэйде.
Я делал на двух дисках 2 зеркальных софтовых рэйда:
1) /boot
2) физический том lvm, на котором всё остальное.
При этом система загружалась нормально. При отказе одного из физических дисков система загружалась нормально, при отказе другого нет.
Видимо, grub прописался в mbr только одного диска.
Я делал на двух дисках 2 зеркальных софтовых рэйда:
1) /boot
2) физический том lvm, на котором всё остальное.
При этом система загружалась нормально. При отказе одного из физических дисков система загружалась нормально, при отказе другого нет.
Видимо, grub прописался в mbr только одного диска.
надо было grub-install /dev/sda && grub-install /dev/sdb делать
Ну или аналогичное через его шелл.
Ну или аналогичное через его шелл.
А можно поподробнее про /boot на софтварном рэйде?
Есть 2 физических диска.
Во время установки:
1. на каждом создаём 2 раздела:
1.1 500 мегабайт
1.2 Всё оставшееся место.
2. Каждый раздел форматируем как физический том raid.
3. После этого создаём зеркальный рэйд из двух 500-мегабайтных разделах
4. Создаём зеркальный рэйд на двух больших разделах
5. Зеркальный рэйд на 500 мб форматируем как ext3/ext4 и используем как /boot
6. Большой рэйд форматируем как физический том lvm и делаем там всё остальное
Во время установки:
1. на каждом создаём 2 раздела:
1.1 500 мегабайт
1.2 Всё оставшееся место.
2. Каждый раздел форматируем как физический том raid.
3. После этого создаём зеркальный рэйд из двух 500-мегабайтных разделах
4. Создаём зеркальный рэйд на двух больших разделах
5. Зеркальный рэйд на 500 мб форматируем как ext3/ext4 и используем как /boot
6. Большой рэйд форматируем как физический том lvm и делаем там всё остальное
да, я именно так уже поставил debian squeeze.
и оно как минимум загрузилось.
но мне не до конца понятна матчасть и, соответственно, границы применимости такого подхода:
— как grub распознаёт софтварный raid? куда и что ему тыкать ежлифчо?
— это работает только для raid1 или вообще для всего, что умеет md?
— если в наглую вынуть один из дисков из raid1 — будут ли они работать поодиночке?
и оно как минимум загрузилось.
но мне не до конца понятна матчасть и, соответственно, границы применимости такого подхода:
— как grub распознаёт софтварный raid? куда и что ему тыкать ежлифчо?
— это работает только для raid1 или вообще для всего, что умеет md?
— если в наглую вынуть один из дисков из raid1 — будут ли они работать поодиночке?
1. Насколько я понимаю, grub его не распознаёт. Просто грузится с первого раздела одного из дисков как с ext3/4
2. Не уверен что сработает с другими видами рэйдов, см. п.1.
3. Работать будут, и я это проверял. Загружаться по идее должны, но у меня получилось загружаться только с одним конкретным из двух физических дисков. Дальше свои эксперименты не проводил.
2. Не уверен что сработает с другими видами рэйдов, см. п.1.
3. Работать будут, и я это проверял. Загружаться по идее должны, но у меня получилось загружаться только с одним конкретным из двух физических дисков. Дальше свои эксперименты не проводил.
А можете подсказать что делать с такой проблемой?
Был диск raid1 /dev/md1 с дисками /dev/sda5 и /dev/sdb5
Второй раздел /dev/sdb5 я удалил, после чего при каждой загрузке /dev/md1 стал ругаться что нехватает диска.
Я пытался это починить (сделать второй диск failed), но второпях накосячил — удалил /dev/md1 (mdadm -S /dev/md1) и вместо --assemble сделал --create, т.е. создал поверх старого /dev/md1 новый диск, по-дефалту на старом было 0.90 суперблок, а на новом 1.2.
Теперь стоит задача вытащить данные со старого /dev/md1, каким образом это можно сделать?
Был диск raid1 /dev/md1 с дисками /dev/sda5 и /dev/sdb5
Второй раздел /dev/sdb5 я удалил, после чего при каждой загрузке /dev/md1 стал ругаться что нехватает диска.
Я пытался это починить (сделать второй диск failed), но второпях накосячил — удалил /dev/md1 (mdadm -S /dev/md1) и вместо --assemble сделал --create, т.е. создал поверх старого /dev/md1 новый диск, по-дефалту на старом было 0.90 суперблок, а на новом 1.2.
Теперь стоит задача вытащить данные со старого /dev/md1, каким образом это можно сделать?
По-идее должно что-то сработать вот такой командой:
Т.е. он создаст новый array, а там уже попробовать что-то восстановить можно. Но боюсь как бы он не потёр чего лишнего.
# mdadm --create /dev/md1 --assume-clean -n 2 -l 1 --metadata=0.90 /dev/sda5 missing
mdadm: /dev/sda5 appears to contain an ext2fs file system
size=117185984K mtime=Sun Dec 11 21:26:34 2011
Continue creating array?
Т.е. он создаст новый array, а там уже попробовать что-то восстановить можно. Но боюсь как бы он не потёр чего лишнего.
Если Вы создали массив без опции --assume-clean, которая не трогает данные, а трогает только суперблоки, то боюсь Вашим данным кирдык. Без этой опции mdadm синхронизируе диски, и неизвестно что он запишет поверх Ваших данных на разделах sda5 и sdb5. Если же Вы запускали с --assume-clean тогда данные останутся нетронуты, даже несмотря на разные версии суперблоков.
Но попробовать все же стоит. См. ниже.
Но попробовать все же стоит. См. ниже.
Что касается восстановления. Сделайте копии разделов с помощью dd, например так:
и пробуйте создать с ключем --assume-clean и --metadata, так как Вы написали выше. В случае чего у Вас есть образы разделов, которые можно влить обратно
# dd if=/dev/sda5 bs=4k of=part_sda5.backup
# dd if=/dev/sdb5 bs=4k of=part_sdb5.backup
и пробуйте создать с ключем --assume-clean и --metadata, так как Вы написали выше. В случае чего у Вас есть образы разделов, которые можно влить обратно
# dd if=part_sda5.backup bs=4k of=/dev/sda5
# dd if=part_sdb5.backup bs=4k of=/dev/sdb5
Там тип массива — зеркало и второго диска так и не было, поэтому кирдык не должен быть и я решил попробовать.
Пересоздал через
Но после этого файловая система не увиделась, монтироваться отказывалась.
Я сделал fsck.ext3 на этот диск и он всё же всё восстановил, хотя и обнаружил довольно много ошибок. Но всё потом успешно примонтировалось и вроде даже все файлы живы!
Видимо из-за того что суперблоки у 1.2 в начале, а у 0.90 в конце — когда я собрал на 1.2 — он перезаписал начало ext3-системы, но fsck это восстановил.
Спасибо за совет!
Пересоздал через
# mdadm --create /dev/md1 --assume-clean -n 2 -l 1 --metadata=0.90 /dev/sda5 missing
Но после этого файловая система не увиделась, монтироваться отказывалась.
Я сделал fsck.ext3 на этот диск и он всё же всё восстановил, хотя и обнаружил довольно много ошибок. Но всё потом успешно примонтировалось и вроде даже все файлы живы!
Видимо из-за того что суперблоки у 1.2 в начале, а у 0.90 в конце — когда я собрал на 1.2 — он перезаписал начало ext3-системы, но fsck это восстановил.
Спасибо за совет!
Sign up to leave a comment.
Загрузка Linux с корнем на RAID