[Comm] заметки в процессе установки master24 на rootraid + lvm

Mike Lykov =?iso-8859-1?q?combr_=CE=C1_vesna=2Eru?=
Пт Июн 3 15:10:52 MSD 2005


Ставил недавно сервер в такой конфигурации: два 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. выбираем _меньший_ диск из двух 

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

2. после инсталляции

 - один раз зайти от login:root т включить узера в группу wheel
 - монтируем cdrom руками (mount /dev/его /mnt/cdrom)
 - ставим все что пригодится (mc, mdadm, cfdisk, sudo, lvm)
для следующей попытки - снова монтируем, потому что subfs не прописана в 
fstab, а apt автоматически отмонтирует cdrom
 - отключаем инет-часть в sources.list
 - проверим дату (hwclock)
3. если при загрузке (старая машина) ругается на модули processor button убить
 - модули cdfs - убить

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

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

 - ПЕРЕЗАГРУЗКА
 - создаем /md1 -  (чтобы номера совпадали)
mdadm ?Cv /dev/md1 ?level=1 ?raid-disks=2 missing /dev/(второй диск, 
незагрузочный)
создаем фс - mkfs -t (нужный тип) /dev/md0
 - монтируем созданное mount /dev/md0 /mnt/disk
 - копируем корень cp ?ax / /mnt/disk
 - редактируем fstab (добавим) /dev/md1 /mnt/disk (основная фс под raid) 
defaults 0 1/2 (1-для корневой фс с /), 2 - для других - опуии проверки 
системы fsck при загрузке.
 - создаем initrd -with=raid1.o
 - копируем его в /boot
 - а так же копируем в /mnt/disk/boot!
 иначе потом исчезнет (потому что новый корень будет тем, что сейчас 
в /mnt/disk)

 - редактируем lilo на еще один вариант загрузки с новым initrd
 - #lilo -tv - проверка
 - #lilo - установка
 - ПЕРЕЗАГРУЖАЕМСЯ

 - на этом этапе имеем смонтированный рейд в /mnt/disk, состоящий из одного 
раздела.
 - проверим -  командой mount что /dev/md1 действительно смонтировался при 
загрузке 
 - как загрузимся со смонтированным в /mnt/disk, делаем изменения в fstab/lilo  
ТАМ! (при след. загрузке они будут основными)

 - а именно: меняем в lilo 
root= /dev/md1
а в fstab убираем запись про /mnt/disk и для / вписываем /dev/md1 
 - делаем загрузочную дискету на всяк случай

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

проверяем mount, не должно быть не-md разделов
проверяем fstab, не должно быть старых разделов 

делаем mdadm --add /dev/md1 /dev/sda1
обязательно сейчас прописываем в lilo raid-extra-boot=mbr-only (можно список 
дисков через запятую, man lilo.conf), см. ниже
проверяем #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!  - значит на добавляемаом в массив 
разделе есть что-то смонтированное или испольщующееся. 

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

далее: 

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

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

создать ФС mkfs -t reiserfs /dev/md7

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

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

далее: засетапить LVM.

для начала запустить vgscan, который создаст нужные конфиги и просмотрит 
наличие физических томов.
Как ни странно, без выставления разделу, на котором хотим разместить LVM, типа 
8e (Linux LVM) тоже все работает! (?)
так что можно не париться, потому что рейдовому устройству (типа /dev/md7) 
назначить тип раздела невозможно, ибо его нет в таблице разделов физических 
дисков, А на нем создать таблицу разделов так же невозможно.
 - далее создаем "физический том" (т.е. место размещения логических томов) на 
устройстве:
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.
----------------------


-- 
Mike Lykov
Samara, "Vesna" parfum company, System administrator 



Подробная информация о списке рассылки community