Comments 36
Хабр превращается в унылый Linux HOWTO
+5
И чем это плохо? Вас ведь никто не заставляет читать это. Кому-нибудь моя заметка однозначно пригодится.
+3
Свежие GRUB-ы прекрасно умеют superblock 1.2. Кроме того, он даже предпочтительный.
Сегодня поднимал машину, сделал 1.2, конфиг GRUB-а — тупо grub-mkconfig. И всё, работает, внутрь не лез.
Сегодня поднимал машину, сделал 1.2, конфиг GRUB-а — тупо grub-mkconfig. И всё, работает, внутрь не лез.
+1
Речь не про /boot на RAID, а про / на RAID'е.
Ядро не может загрузить систему, если та лежит на RAID'е с v1.2 суперблоком. А /boot у меня вообще на отдельном диске лежит, на простом разделе. Не вижу смысла его на зеркало запихивать.
Ядро не может загрузить систему, если та лежит на RAID'е с v1.2 суперблоком. А /boot у меня вообще на отдельном диске лежит, на простом разделе. Не вижу смысла его на зеркало запихивать.
0
Все в одном разделе, md 1.2. Работает.
Ядру, по сути, абсолютно по фигу, где рут. Смонтировать рут — задача initrd. Кто мешает сунуть в initrd mdadm, собрать оттуда массив, смонтировать рут и отдать его init-у?
Ядру, по сути, абсолютно по фигу, где рут. Смонтировать рут — задача initrd. Кто мешает сунуть в initrd mdadm, собрать оттуда массив, смонтировать рут и отдать его init-у?
+1
Можно и так, но я не использую initrd.
-1
Загрузка 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
0
Друг! Красноглазик! (не обижайся, я такой же).
Линуха может стартовать без initrd образа. Но зачем?
Когда ты для себя откроешь LVM,pxe и еще много страшных слов ты поймешь как ты до этого извращался.
Я тебе подскажу прекрасную программу genkernel для твоего дистрибутива. Просто пишешь genkernel all и наслаждаешься!!!
Линуха может стартовать без initrd образа. Но зачем?
Когда ты для себя откроешь LVM,pxe и еще много страшных слов ты поймешь как ты до этого извращался.
Я тебе подскажу прекрасную программу genkernel для твоего дистрибутива. Просто пишешь genkernel all и наслаждаешься!!!
+2
Не совсем понял, кому адресовано обращение )) Если мне, то спс за красноглазика — я действительно такой, и в прямом, и обратном смысле :-D
Кстати сказать, с LVM я хорошо знаком — уже много лет им пользуюсь, отличная штука ))) Он у меня поверх софт-рэйда работает.
И про genkernel я тоже знаю, только не нужен он мне, у меня и без него все прекрасно работает ))
У меня make bzImage && make modules && make modules_install уже настолько вошли в привычку, что я без них никак ))
Кстати сказать, с LVM я хорошо знаком — уже много лет им пользуюсь, отличная штука ))) Он у меня поверх софт-рэйда работает.
И про genkernel я тоже знаю, только не нужен он мне, у меня и без него все прекрасно работает ))
У меня make bzImage && make modules && make modules_install уже настолько вошли в привычку, что я без них никак ))
0
/ по lvm без initrd? Это как? Я так не умею…
Я всё кроме boot на lvm перетащил. Однозначно удобнее.
Я всё кроме boot на lvm перетащил. Однозначно удобнее.
+1
Нет, корень просто на зеркале лежит, без 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
0
уже давно можно делать просто
make && make modules_install && make install
make && make modules_install && make install
0
Извиняюсь за оффтопик,
а насколько удачно линукс можно грузить с корнем на lvm?
а насколько удачно линукс можно грузить с корнем на lvm?
0
Грузить вполне удачно можно, c помощью initrd. Он с этим замечательно справляется.
Но вообще, я не вижу смысла запихивать корень на LVM. Я считаю, что на LVM имеет смысл ложить те разделы, которые в последствии будут изменяться (расширяться, например). Изменение размера разделов может понадобиться на /usr и /var, а вот все остальное, в объемном смысле, остается практически без изменений, либо изменяется незначительно (за исключением /etc и /lib, которые и так небольшого размера).
Все каталоги за исключением /usr и /var у меня, как я писал выше, занимают порядка 200 метров.
Но вообще, я не вижу смысла запихивать корень на LVM. Я считаю, что на LVM имеет смысл ложить те разделы, которые в последствии будут изменяться (расширяться, например). Изменение размера разделов может понадобиться на /usr и /var, а вот все остальное, в объемном смысле, остается практически без изменений, либо изменяется незначительно (за исключением /etc и /lib, которые и так небольшого размера).
Все каталоги за исключением /usr и /var у меня, как я писал выше, занимают порядка 200 метров.
0
Корень на 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.
0
Раздел /usr тоже, в общем-то остаётся без изменений, кроме развечто случаев серьёзного перепрофилирования сервера (внезапное добавление Xorg/kde/gnome) или злоупотребления /usr/src.
Если его не расшаривать между серверами для экономии на спичках — то и отделать от корня особо смысла нету.
Если его не расшаривать между серверами для экономии на спичках — то и отделать от корня особо смысла нету.
0
Интереснее было бы почитать про загрузку линукс с /boot на софтовом рэйде.
Я делал на двух дисках 2 зеркальных софтовых рэйда:
1) /boot
2) физический том lvm, на котором всё остальное.
При этом система загружалась нормально. При отказе одного из физических дисков система загружалась нормально, при отказе другого нет.
Видимо, grub прописался в mbr только одного диска.
Я делал на двух дисках 2 зеркальных софтовых рэйда:
1) /boot
2) физический том lvm, на котором всё остальное.
При этом система загружалась нормально. При отказе одного из физических дисков система загружалась нормально, при отказе другого нет.
Видимо, grub прописался в mbr только одного диска.
0
надо было grub-install /dev/sda && grub-install /dev/sdb делать
Ну или аналогичное через его шелл.
Ну или аналогичное через его шелл.
0
А можно поподробнее про /boot на софтварном рэйде?
0
Есть 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 и делаем там всё остальное
0
да, я именно так уже поставил debian squeeze.
и оно как минимум загрузилось.
но мне не до конца понятна матчасть и, соответственно, границы применимости такого подхода:
— как grub распознаёт софтварный raid? куда и что ему тыкать ежлифчо?
— это работает только для raid1 или вообще для всего, что умеет md?
— если в наглую вынуть один из дисков из raid1 — будут ли они работать поодиночке?
и оно как минимум загрузилось.
но мне не до конца понятна матчасть и, соответственно, границы применимости такого подхода:
— как grub распознаёт софтварный raid? куда и что ему тыкать ежлифчо?
— это работает только для raid1 или вообще для всего, что умеет md?
— если в наглую вынуть один из дисков из raid1 — будут ли они работать поодиночке?
0
1. Насколько я понимаю, grub его не распознаёт. Просто грузится с первого раздела одного из дисков как с ext3/4
2. Не уверен что сработает с другими видами рэйдов, см. п.1.
3. Работать будут, и я это проверял. Загружаться по идее должны, но у меня получилось загружаться только с одним конкретным из двух физических дисков. Дальше свои эксперименты не проводил.
2. Не уверен что сработает с другими видами рэйдов, см. п.1.
3. Работать будут, и я это проверял. Загружаться по идее должны, но у меня получилось загружаться только с одним конкретным из двух физических дисков. Дальше свои эксперименты не проводил.
0
А можете подсказать что делать с такой проблемой?
Был диск 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, каким образом это можно сделать?
0
По-идее должно что-то сработать вот такой командой:
Т.е. он создаст новый 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, а там уже попробовать что-то восстановить можно. Но боюсь как бы он не потёр чего лишнего.
0
Если Вы создали массив без опции --assume-clean, которая не трогает данные, а трогает только суперблоки, то боюсь Вашим данным кирдык. Без этой опции mdadm синхронизируе диски, и неизвестно что он запишет поверх Ваших данных на разделах sda5 и sdb5. Если же Вы запускали с --assume-clean тогда данные останутся нетронуты, даже несмотря на разные версии суперблоков.
Но попробовать все же стоит. См. ниже.
Но попробовать все же стоит. См. ниже.
0
Что касается восстановления. Сделайте копии разделов с помощью 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
0
Там тип массива — зеркало и второго диска так и не было, поэтому кирдык не должен быть и я решил попробовать.
Пересоздал через
Но после этого файловая система не увиделась, монтироваться отказывалась.
Я сделал 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 это восстановил.
Спасибо за совет!
0
Sign up to leave a comment.
Articles
Change theme settings
Загрузка Linux с корнем на RAID