Pull to refresh

Установка Debian\Ubuntu 10.04 на массив RAID 5

Reading time 7 min
Views 5.1K
Данная статья размещена по просьбе человека не имеющего аккаунта на хабре, но мечтающего влиться в его ряды.
Если у кого-то есть инвайт и желание им поделиться, пишите пожалуйста на e-mail: cibertox (друг человека) bk точка ру

Разворачивая WEB сервер, пришлось задуматься о том, чтобы не потерять весь проект, в случае непредвиденной гибели жестких дисков, как обычно это бывает по закону подлости — неожиданно.
Ответ напрашивается сам собой –использовать RAID, при этом еще и высокой скорости работы хотелось- значит RAID5 (Но этот способ годится и для использования массивов 6го и 10го уровней)
Основной проблемой в развертывании Debian\Ubuntu- невозможность установить систему, в чистом виде, на этот массив из-за того, что части файла копируются на все диски массива, а их сборка передпологает сложные вычисления.
Существуют варианты установки системного загрузчика на флешку, но это тупиковый путь и использование его на полноценной продакшн системе, не считаю правильным, все равно есть жесткие диски, да и бегать в дата центр из-за неожиданно сдохшей флешки с загрузчиком на борту – маразм!
Значит у нас есть готовый сервер с четырьмя хардами, полностью собранный.

Добро пожаловать в подкат.


Часть первая: Установка системы.


Корневая файловая система ( / ) будет находиться у нас на RAID 5.
Запускаем установку и в службе разметки жесткого диска, создаем на каждом физическом томе 3 раздела, из них, первый будет размером 2Гб, второй отдадим под раздел подкачки, сколько под него отпилить зависит от задач вашего сервера, я отдал по 512Мб. Третий-все оставшееся пространство.
Первый и третий разделы создаем как физический раздел RAID
После создания разделов на всех дисках переходим в раздел настройки программного raid
После всех телодвижений у нас получилось 12 разделов по 3 на каждом диске

/dev/sda1
/dev/sda5
/dev/sda6

/dev/sdb1
/dev/sdb5
/dev/sdb6

/dev/sdc1
/dev/sdc5
/dev/sdc6

/dev/sdd1
/dev/sdd5
/dev/sdd6


Где:
Разделы под номером 1 имеют по 2 Gb.
Разделы под номером 5 отведены под swap.
И разделы под номером 6 – все оставшееся пространство на диске.
(Данная конфигурация не аксиома, разделов можно нарезать столько сколько нужно).

Переходим к созданию массива md 0:
Выбираем тип раздела RAID1 на предложении добавить в него 2 диска заменяем двойку на 4 и 0 под резервные. Выбираем под него все разделы с номером 1 это sda1 sdb1 sdc1 sdd1
В результате мы получим 1 раздел RAID 1, размером в 2 Гб(Это важно!).
Разделы sda5 sdb5 sdc5 sdd5-отставляем нетронутыми, под подкачку.

Далее переходим к созданию массива md1 на который собственно и поселится наш RAID 5
Предложение добавить 3 диска заменяем на 4 и 0 под резерв.
Добавляем в него все диски с порядковым номером 6, это: sda6 sdb6 sdc6 sdd6

Если вы все сделали правильно, то у нас должно получиться 2 raid устройства
RAID 1 устройство #0 2Gb
RAID 5 устройство #1 24.7Gb

Для устройства выбираем тип файловой системы и точку монтирования.
Для RAID 1 выбираем точку монтирования /boot
Для RAID 5 устанавливаем точку монтирования /

Сохраняем изменения на диск и запускаем установку
Ждем ее окончания, на предложение установить системный загрузчик на диск соглашаемся –в 10.04 он будет установлен на все 4 диска. (в 8.04,8.10 он автоматически ставится только на первый диск который установлен в БИОСе- это важный нюанс! ).

Допиливаем системный загрузчик!
Так как у нас все диски промаркированы как загрузочные, особых сложностей с ними не будет, если оставить GRUB2, но лучше его заменить на GRUB1.5, во-первых он достаточно хорошо известен, во-вторых более стабилен, в третьих – его возможностей для нас, хватает с головой.
Обновляем списки пакетов
sudo apt-get update

Удаляем GRUB2
sudo apt-get purge grub2 grub-pc

устанавливаем предыдущую версию
sudo apt-get install grub

создаем меню установки
sudo update-grub
будет предложено создать файл menu.lst отвечаем Y

Удаляем остатки grub2
sudo apt-get autoremove

Устанавливаем grub на все жесткие диски

sudo su
grub-install --no-floppy /dev/sdb
grub-install --no-floppy /dev/sdc
grub-install --no-floppy /dev/sdd


Помечаем все диски, как загрузочные.

grub
device (hd1) /dev/sdb
root (hd1,0)
setup (hd1)
device (hd2) /dev/sdc
root (hd2,0)
setup (hd2)
device (hd3) /dev/sdd
root (hd3,0)
setup (hd3)

quit

(На hd0 ставить не надо он туда прописался при инсталляции автоматически)

Что у нас получилось в результате?!
У нас создано 2 раздела RAID1-создалась копия раздела boot на четырех дисках -он хранится в чистом виде как на обычном диске, по этому любой из четырех дисков является загрузочным, после этого корневой раздел находящийся на RAID 5 монтируется самостоятельно и операционка стартует совершенно спокойно.

Часть вторая: Действия при выходе из стоя жесткого диска.



В случае непредвиденной гибели одного из четырех дисков в массиве, у нас осталось 3 копии раздела /boot и работоспособный раздел / -который перешел в режим degraded.
Перед внедрением системы, необходимо потренироваться на кошках – выдергиваем один диск и смотрим, что произошло, вводя команду:

cat /proc/mdstat

Выдаст такую таблицу

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdb6[1] sda6[0] sdc6[3]
24087360 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U]

md0 : active raid1 sdc1[3] sdb1[1] sda1[0]
1951680 blocks [4/3] [UU_U]


Где: md1 список разделов которые остались работоспособными ( из примера видно что нас покинул раздел sdd6 который находился третьим по списку [UU_U] -нумерация начинается с 0).
Тоже самое и на разделе md0. только раздел sdd1
Заменяем жесткий диск — если это полноценный сервер поддерживающий горячую замену, новый должен определиться сам, если этого не произошло по каким-либо причинам, то ничего страшного нет –спокойно перезагружаемся с любого из 3х оставшихся дисков и вводим команду.
Предварительно перейдя в режим супер — пользователя:
sudo su
fdisk –l

получаем картину такого содержания:
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004b95a

Device Boot Start End Blocks Id System
/dev/sda1 1 244 1951744 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sda2 244 1306 8530945 5 Extended
/dev/sda5 244 306 500736 82 Linux swap / Solaris
/dev/sda6 306 1306 8029184 fd Linux raid autodetect

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008e1c9

Device Boot Start End Blocks Id System
/dev/sdb1 1 244 1951744 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdb2 244 1306 8530945 5 Extended
/dev/sdb5 244 306 500736 82 Linux swap / Solaris
/dev/sdb6 306 1306 8029184 fd Linux raid autodetect

Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00007915

Device Boot Start End Blocks Id System
/dev/sdc1 * 1 244 1951744 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdc2 244 1306 8530945 5 Extended
/dev/sdc5 244 306 500736 82 Linux swap / Solaris
/dev/sdc6 306 1306 8029184 fd Linux raid autodetect

Disk /dev/sdd: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/md0: 1998 MB, 1998520320 bytes
2 heads, 4 sectors/track, 487920 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 24.7 GB, 24665456640 bytes
2 heads, 4 sectors/track, 6021840 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 65536 bytes / 196608 bytes
Disk identifier: 0x00000000


Из этой портянки видно что, наш новый диск определился, но не содержит раздела

Disk /dev/sdd: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn't contain a valid partition table


Копируем раздел с живого диска например с sda используя ключ –force (без использования ключа в 10.04 система ни в какую не хочет его создавать в ubuntu 8 этот ключ не требуется)
sfdisk -d /dev/sda | sfdisk /dev/sdd --force

проверяем правильность копирования
fdisk –l
Нам покажет что на всех четырех дисках есть разделы, но а вот на устройстве md0 нет

Disk /dev/md0: 1998 MB, 1998520320 bytes
2 heads, 4 sectors/track, 487920 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table


Исправим это, добавим наш вновь созданный sdd1 в массив.

mdadm --add /dev/md0 /dev/sdd1
должно выдать

mdadm: added /dev/sdd1
После этого сразу же начнется ребилд нашего raid 1

Тоже самое проделываем с нашим raid5
mdadm --add /dev/md1 /dev/sdd6
получаем:
mdadm: added /dev/sdd6

запускается ребилд, если интересно посмотреть на процесс, вводим
cat /proc/mdstat

нам выдаст:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd6[4] sdb6[1] sda6[0] sdc6[3]
24087360 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U]
[=>...................] recovery = 8.8% (713984/8029120) finish=1.1min speed=101997K/sec


Где указана степень восстановления, когда работа закончится, немного подождав, вводим команду повторно и получаем следующее:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd6[2] sdb6[1] sda6[0] sdc6[3]
24087360 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

md0 : active raid1 sdd1[2] sdc1[3] sdb1[1] sda1[0]
1951680 blocks [4/4] [UUUU]


Из этого видно что все разделы восстановлены.
Нам осталось сделать новый диск загрузочным,
grub
device (hd2) /dev/sdd
root (hd2,0)
setup (hd2)
quit


Вот, пожалуй, и все, ваш сервер как новенький, вся информация осталась целой.
Tags:
Hubs:
+5
Comments 5
Comments Comments 5

Articles