Вход:  Пароль:  
FreeSource: Технологии/LVM?/RootRaidLVMMaster24 ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Ставил недавно сервер в такой конфигурации: два scsi-винта примерно по 9Гб, но разных производителей (поэтому точный размер отличался).
И попутно записывал заметки по всяким тонкостям, которые могут потом пригодиться.
Есть ненулевая вероятность, что тут есть ошибки, так же как и, думаю, что это кому-то пригодится.
Поэтому обсуждение «как сделать лучше, чем написано тут» – веллкоме.
Речь идет об инсталляторе Master 2.4, и дальнейшей работе «вручную» (средства создания софтрейдов в инсталляторе есть, да и lvm вроде тоже, но поскольку все это вместе, по отзывам, глючит, то куда надежнее сделать вручную – и уверен, что сделал верно, и узнал, как это изнутри ;)


использовались статьи:


http://alioth.debian.org/download.php/668/rootraiddoc.97.html
http://unix.ginras.ru/linux/base008.html
http://gazette.linux.ru.net/lg84/vinayak.html
http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Software-RAID-HOWTO.html



1. Запуск инсталлятора Master 24?


– выбираем _меньший_ диск из двух
– разбиваем диск: делаем только / на 550 метров (меньше инсталлятор не дает) и swap (только на 1 диске)
– FIXME можно ли в инсталляторе пометить раздел, но не указывать точку монтирования, если / уже есть?
– отменяем все пакеты в выборе по группам
– ставим как обычно.


2. Сразу после инсталляции


– один раз зайти от login:root и включить узера в группу wheel (это зависит от режима установки – в «эксперте» запускать su позволено только тем, кто в группе wheel по умолчанию после установки)


– монтируем cdrom руками (mount /dev/его /mnt/cdrom)
– ставим все что пригодится (mc, mdadm, cfdisk, sudo, lvm)
для следующей попытки – снова монтируем, потому что subfs не прописана в fstab, а apt автоматически отмонтирует cdrom
– отключаем инет-часть в sources.list
– проверим дату (hwclock)


– если при загрузке ( если старый компьютер) ругается на модули processor button – их убить (из /etc/modules)
– модули cdfs – убить (apt-get remove kernel-modules-cdfs-*)


Рекомендую отключить сразу kudzu потому что перегружаться будем много, т.е. chkconfig kudzu off


3. Установка Soft Raid?


– делаем dd bs=1(8)M if=первыйдиск of=второйдиск (bs – размер блока данных, записываемый за раз)
– sfdisk -d /dev/sda | sfdisk /dev/sdb подходит (на sdb не должно ничего
использоваться, и swap тоже – должен быть пуст)


– с пом. fdisk в интерактивном режиме ставим на разделы (из которых рейд – корень) типы FD
(на первый диск должен сказать, что используется, на второй – нет).


– ПЕРЕЗАГРУЗКА
– создаем /md1 – (не 0, чтобы номера совпадали с нумерацией обычных разедлов. по моему, это чисто эстетика – номер не важен)


mdadm -Cv /dev/md1 --level=1 --raid-devices=2 missing /dev/(второй диск, незагрузочный)1


создаем фс – mkfs -t (нужный тип) /dev/md1
Может так получится, что после добавления в этот массив недостающего второго диска и реконструкции массива в отчете о состоянии массива может появится третье устройство (т.е. mdadm будет считать что в массиве всего 3 диска и одни из них faulty, причем какой он не показывает). Может это бага mdadm. Чтобы такого не произошло, нужно после создания fs на массиве сделать
#mdadm -S /dev/md1
#mdadm -A -U summaries /dev/md1 /dev/(второй диск, загрузочный)1


– монтируем созданное mount /dev/md1 /mnt/disk
– копируем корень cp -ax / /mnt/disk
– редактируем fstab (добавим) " /dev/md1 /mnt/disk (основная фс под raid) defaults 0 1/2 " (1-для корневой фс с /, 2 – для других) – опции проверки системы fsck при загрузке.
– создаем initrd -with=raid1.o ( mkinitrd -v --with=raid1 linux-raid `uname -r`)
– копируем его (initrd-raid.img) в /boot
– а так же копируем в /mnt/disk/boot иначе потом исчезнет (потому что новый корень будет тем, что сейчас в /mnt/disk)


– редактируем lilo на еще один вариант загрузки с новым initrd (скопируем готовую секцию и изменим параметры label и initrd)
например


– #lilo -tv – проверка
– #lilo – установка
– ПЕРЕЗАГРУЖАЕМСЯ (не забываем выбрать при загрузке именно наш новый пункт меню lilo который linux-raid)


– на этом этапе имеем смонтированный рейд в /mnt/disk, состоящий из одного раздела.
– проверим – командой mount что /dev/md1 действительно смонтировался при загрузке
– как загрузимся со смонтированным в /mnt/disk, делаем изменения в fstab/lilo
– а именно:
меняем в lilo
root= /dev/md1 (для нашего варианта загрузки linux-raid)
Так же тут можно сразу исправить параметр default=linux-raid чтобы по умолчанию загружался Inird с raid1 (иначе никакого raid у нас не получится)
а в fstab убираем запись про /mnt/disk и для / вписываем /dev/md1
– делаем загрузочную дискету на всяк случай (mkbootdisk -v --mkinitrdargs --with=raid1.o `uname -r`)
Таким образом мы загрузимся с нашего текущего диска (sda, hda), но / будет уже на raid (/dev/md1)
Теперь скопируем lilo.conf и fstab в /mnt/disk/etc – потому что при следующей загрузке он будет /


делаем #lilo -tv, если ошибок нет делаем #lilo
– ПЕРЕЗАГРУЖАЕМСЯ
– получаем, что / грузится с рейда, состоящего из одного диска /dev/sdb (или hdc..)


проверяем mount, убеждаемся что / на /dev/md1, а остальные разделы по прежнему на /dev/sda*


Если присоединяем к массиву тот же диск с которого начинали (на который была инсталированна система), делаем
делаем mdadm --add /dev/md1 /dev/sda1
если подключаем просто другой диск в массив (в случае если мы делаем массив из двух дисков переносим на него текущую систему и потом начальный диск просто удаляем из системы), делаем сначала
sfdisk -d /dev/(то диск что у нас уже в raid) | sfdisk /dev/(второй диск для raid)
а потом уже сделаем mdadm /dev/md1 -a /dev/(второй диск)1
Можно посмотреть mdadm -D /dev/md1 и убедиться что второй диск в массиве и реконструируется.


обязательно сейчас прописываем в lilo (в общую секию, не в разделы) raid-extra-boot=mbr-only (лучше указать список дисков через запятую, man lilo.conf), см. прим.
Так же изменим параметр boot=/dev/md1
проверяем #lilo -tv
должен сказать, что апдейтит записи на всех дисках (dev/sda, /dev/sdb) иначе см. прим – получим L99 при загрузке


прим.: это потому что после добавления /dev/sda в массив он начинает искать
загрузочную запись сначала на нем (начинает перебирать с первого, в отличие
от ранее явно указанного /dev/sdb, который в массиве был один), а на нем не
стоит загрузчика (точнее, старый, не от рейда). raid-extra-boot=mbr-only
решает эту проблему, при его наличии и установке lilo он записывает
загрузчики в mbr всех дисков, участвующих в массиве (и /sda тоже)


– если mdadm говорит invalid argument, то посмотреть в лог: dmesg | tail
если там can not add, has active inodes! – значит на добавляемаом в массив разделе есть что-то смонтированное или испольщующееся (например, своп-раздел, который автоматически подцепляется стартовыми скриптами при загрузке, если на диске есть раздел с типом 82)


Если #lilo -tv не ругнулся, то закрепляем изменения #lilo (который теперь у нас пропишет загрузчик с новым конфигом на диски raid массива (т.е. /dev/md1)


Получаем сервер, в котором все смонтировано на / маленького размера, а сам / – на загрузочном Soft RAID?.


4. Добавление остальных разделов, кроме /


– инсталлятор из серии drak* при разбиении разделов ведет себя оригинально: он первый раздел делает primary, остальные – засовывает в extended, причем размер этого extended делает таким, чтобы туда поместились _только_ существующие разделы.
При этом, при попытке завести еще один раздел в fdisk после инсталляции будет получена ошибка no sectors available, что удивляет поначалу, так как на диске еще полно места!
Это именно из-за того, что fdisk пытается вписать новый раздел в рамки существующего extended (еcли вы выбираете завести logical).
Поэтому надо расширить extended до конца диска с помощью, например, parted (?).
cfdisk не имеет этой проблемы (?)


Теперь на маленький раздел все ставилось с той целью, чтобы оставшееся место завести на LVM. (или отдать его под каталоги типа /usr, /var и др)
для этого сначала надо создать раздел(раделы), занимающий остальное место:
fdisk /dev/sda, n ...
fdisk /dev/sdb, n ...
Например:
mdadm -Cv (или --create, v добавляет вывод сообщений) /dev/md7 (у меня этот раздел на дисках шел под номером 7, поэтому и назвал md7) --level=1 --raid-devices=2 /dev/sda7 /dev/sdb7


создать ФС mkfs -t reiserfs /dev/md7
– поставить на разделы тип FD (иначе при перезагрузке ничего не найдет и /dev/md7 не будет)


– перезагрузиться, проверить, что /dev/md7 есть и монтируется mount /dev/md7 /mnt/disk


5. Настройка LVM 


(если он не нужен, то созданный рейд-раздел md7 можно использовать по своему усмотрению – например, отдать его весь под некую ФС с помощью mkfs, или не делать его таким большим, а сделать несколько разделов md7,8,9 (номера любые) под разные каталоги для монтирования)


для начала запустить vgscan, который создаст нужные конфиги и просмотрит наличие физических томов.
Как ни странно, без выставления разделу, на котором хотим разместить LVM, типа 8e (Linux LVM) тоже все работает! (?)
так что можно не париться, потому что рейдовому устройству (типа /dev/md7) назначить тип раздела невозможно, ибо его нет в таблице разделов физических дисков, А на нем создать таблицу разделов так же невозможно.
(это к тому, что в HOWTO на тему «как создать LVM» упоминается, что начать надо с назначения типов разделов)


– далее создаем «физический том» (т.е. место размещения логических томов) на устройстве:
pvcreate /dev/md7
можно результат провериить pvscan.
теперь на этом физическом томе создаем группу логических томов
vgcreate -s 32m vgroup /dev/md7


тут 32 – размер блока в мегах, vgroup – название группы, md7 – устройство, на котором все создается.


теперь pvscan покажет, что группа ACTIVE (а vgdisplay покажет инфу по ней).


теперь в группе можно создать тома (разделы в обычном понимании). это делается как
lvcreate -L 10G -n lvvar vgroup
и так далее, где 10G – размер тома, lvvar – его название (устройства), vgroup – к какой группе причислен.
lvscan покажет инфу, если ей указать устройство, например
lvscan /dev/vgroup/lvscan


-теперь создаем там фс:
mkfs -t reiserfs /dev/vgroup/lvvar (эти устройства работают теперь как обычные устройства разделов диска)


– для корректного монтирования из fstab при загрузке теперь надо содержимое реальных разделов перенести на тома lvm, а то окается, что /var монтируется в пустую совершенно папку, что никому не понравится ;)
делаем как выше:


mount /dev/vgroup/lvvar /mnt/disk
cp -ax /var/* /mnt/disk
umount /mnt/disk
повторить для всех томов lvm.


– теперь надо прописать, что некоторые каталоги переедут с / на свои отельные тома (в fstab)
«/dev/vgroup/lvvar /var reiserfs notail 0 2" (опции notail, 0,2 – смотреть в man fstab )


– Перезагрузиться и посмотреть вывод mount
Результат: – все разделы переехали с / на соотв. тома LVM.


Страницы, ссылающиеся на данную:


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]