Может кому пригодится. Делаем программный Raid1 (mirror) на двух одинаковых дисках. Разбиваем абы как - на размеры разделов особо можно не смотреть.
1. Разбиваем первый диск на разделы командой
fdisk /dev/sda
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 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: 0x325b359c
Device Boot Start End Blocks Id System
/dev/sda1 * 1 5 40131 fd Linux raid autodetect
/dev/sda2 6 1311 10490445 fd Linux raid autodetect
/dev/sda3 1312 30401 233665425 5 Extended
/dev/sda5 1312 1443 1060258+ fd Linux raid autodetect
/dev/sda6 1444 6666 41953716 fd Linux raid autodetect
/dev/sda7 6667 11889 41953716 fd Linux raid autodetect
/dev/sda8 11890 17112 41953716 fd Linux raid autodetect
/dev/sda9 17113 22335 41953716 fd Linux raid autodetect
/dev/sda10 22336 30401 64790113+ 83 Linux
В командах это будет что то вроде
fdisk /dev/sda
n
p
1
ENTER
+32M
t
fd
ну и так далее.
2. Такие же в точности разделы создаем на втором диске.
sfdisk -d /dev/sda | sfdisk /dev/sdb
Возможно придется добавить --force если что то sfdisk не понравится - но будьте аккуратны - ДУМАЙТЕ.
3. убедитесь что таблицы разделов записались
иногда достаточно partprobe, можно перезагрузиться.
4. sda10 sdb10 не будут частями raid1 - просто разделы. Это так запланировано, не удивляйтесь
mke2fs /dev/sda10
mke2fs /dev/sdb10
5. Создаем raid
for i in 1 2 5 6 7 8 9
do
mknod /dev/mdi;
mdadm --create /dev/mdi /dev/sdb$i
done
6. Создаем файловые системы на получившихся дисках
mke2fs /dev/md1
for var in 5 6 7 8 9
do
mke2fs -j /dev/md$var
done
mkswap -L swap1 /dev/md2
swapon -L swap1 /dev/md2
e2label /dev/md5 root
e2label /dev/md1 boot
e2label /dev/md6 var
e2label /dev/md7 usr
e2label /dev/md8 opt
e2label /dev/md9 home
7. теперь создаем загрузчики на обоих дисках
grub --no-floppy
find /boot/grub/stage1
# our disks are /dev/sda /dev/sdb and we received
# (hd0,0)
# (hd1,0)
device (hd0) /dev/sda
root (hd0,0)
setup (hd0)
# in sdb we use hd0 since we go here if actual hd0 failed
grub --no-floppy
device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)
8. В /boot/grub/grub.conf добавляем что то вроде
title Linux
root (hd0,0)
kernel /boot/kernel-2.6.36-core2-v1 root=/dev/md5 raid=noautodetect md=5,/dev/sda5,/dev/sdb5 md=1,/dev/sda1,/dev/sdb1 md=6,/dev/sda6,/dev/sdb6 md=7,/dev/sda7,/dev/sdb7 md=8,/dev/sda8,/dev/sdb8 md=9,/dev/sda9,/dev/sdb9 md=2,/dev/sda2,/dev/sdb2
9. После запусков grub бывало слетала таблица разделов. Закономерности не нашел - стал просто грузиться и проверять сразу после запуска grub - жалко терять дальнейшие усилия по установке.
После создания всех разделов raid некоторое время будет синхронизироваться (см /proc/mdstat) - это нормально [UU] появится только по завершении синхронизации.
10 Можно теперь прописать в fstab (не указаны sda10 и sdb10)
LABEL="home" /home ext3 noatime 0 2
LABEL="swap1" none swap sw 0 0
LABEL="root" / ext3 noatime 0 1
LABEL="var" /var ext3 noatime 0 2
LABEL="boot" /boot ext2 noatime 1 2
LABEL="usr" /usr ext3 noatime 0 1
LABEL="opt" /opt ext3 noatime 0 2
Для просмотра состояния нашего raid смотрим
cat /proc/mdstat
[UU] - это значит все хорошо
[_U] или [U_] - это значит один из "дисков" помер и raid работает только на одной копии. надо срочно восстанавливать.
Для восстановления ситуации вроде [U_] для md2 из sda2 sdb2 можно идти таким путем:
mdadm --detail /dev/md2
внимательно читаем что получилось, помечаем отвалившийся раздел как fail, затем удаляем его и добавляем новый. Понятно что это надо делать скорее всего для всех md? так как обычно дохнет весь винт. Пример:
mdadm --stop /dev/md2
mdadm --fail /dev/md2 /dev/sdb2
mdadm --remove /dev/md2 /dev/sdb2
mdadm --add /dev/md2 /dev/sdb2
здесь в /dev/md2 состоящем из /dev/sda2 и /dev/sdb2 отказал sdb2, мы уже воткнули новый sdb (рабочий и такого же размера) сделали на нем такие же разделы при помощи
sfdisk -d /dev/sda | sfdisk /dev/sdb
(либо наоборот если отказал sda)
Далее надо прописать так же как и раньше grub
Замечу что были сложности с --metadata=0.90 - mdadm давал ошибку при --add. Удалось обойти загрузившись с дистрибутива - там другая версия mdadm которая отрабатывает без ошибки.
Удачи! И не забывайте запускать регулярно
smartctl -a /dev/sda
smartctl -a /dev/sdb
только там вы узнаете что один из ваших дисков уже смертельно болен
программный raid под Linux
программный raid под Linux
Последний раз редактировалось folk 30 ноя 2019, 15:54, всего редактировалось 1 раз.
Причина: test
Причина: test
Вернуться в «Computer Science»
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 12 гостей