15 Ноября 2006, 22:31:00
Использованы матариалы: http://users.piuha.net/martti/comp/ubuntu/en/raid.html обсуждаем на форуме: http://www.ubuntu.liski.su/index.php?topic=71.0 Зачем это нужно: Выдержка из Википедии: RAID 1 (Mirroring — «зеркало»). Он имеет защиту от выхода из строя половины имеющихся аппаратных средств (в общем случае — одного из двух жёстких дисков), обеспечивает приемлемую скорость записи и выигрыш по скорости чтения за счёт распараллеливания запросов. Недостаток заключается в том, что приходится выплачивать стоимость двух жёстких дисков, получая полезный объем одного жёсткого диска. Изначально предполагается, что жёсткий диск — вещь надёжная. Соответственно, вероятность выхода из строя сразу двух дисков равна (по формуле) произведению вероятностей, то есть ниже на порядки! К сожалению, реальная жизнь — не теория. Два винчестера берутся из одной партии и работают в одинаковых условиях, а при выходе из строя одного из дисков нагрузка на оставшийся увеличивается, поэтому на практике при выходе из строя одного из дисков следует срочно принимать меры — вновь восстанавливать избыточность. Для этого с любым уровнем RAID (кроме нулевого) рекомендуют использовать диски горячего резерва HotSpare. Достоинство такого подхода — поддержание постоянной надёжности. Недостаток — ещё большие издержки (то есть стоимость трёх винчестеров для хранения объёма одного диска). 1. УстановкаИтак, устанавливаем в компьютер, который будет нашим сервером, два SATA или два IDE жестких диска, чтобы использовать их как RAID1 массив (т.е. 2 hdd в зеркале). Далее берем дистрибутив Ubuntu "Alternate install CD" или его серверный вариант, и начинаем установку Ubuntu 6.06. Я сразу начну с того момента, когда установщик предлагает разметку жестких дисков. Выбираем пункт меню: изменить таблицу разделов вручную. Предполагается, что жесткие диски sda и sdb (hda и hdb - в случае IDE), еще не имеют разделов, или мы тут же сразу стираем на них все, что там ранее было установлено.
P.S. Рисунки на английском, диски SATA и виртуальные, но это лучше, чем ни каких рисунков. Далее создаем как показано на рисунках ниже- на каждом диске по 3 раздела, т. е. для каждого будующего тома по одному разделу на каждом диске. Примечание: необходимо, как минимум 2: один для корневого тома (точка монтирования / и другой для тома подкачки swap. В нашем примере добавлен еще третий том с точкой монтирования- /home. В настройка каждого раздел должено быть выбрано первичный и использовать как "физический том для RAID" (0xFD). (!!!!!) Кроме того быть первый раздел должен быть еще и загрузочным.
Нажимаем на верхнюю надпись-конфигурирование программного RAID. И в новом окне, поочереди, создаем три (3) MD (multidisk) устройства, и конфигурируем их как RAID-1, по 2 раздела в каждом устройстве. (т. е. соглашаемся по умолчанию), без запасных девайсов (то же по умолчанию). Рис. 6. На риснуке выше 2 раздела в раиде. Рис. 7. Выше видим и соглашаемся: Нет запасных устройств. Далее нажимаем продолжение и устанавливаем-* ( звездочки), пробелом, напротив парных разделов, Таким образом создаем и настраиваем Multidiski- MD устройства. Формула их настройки выглядит так: md0=sda1+sdb1, md1=sda2+sdb2 и md2=sda3+sdb3 или для IDE md0=hda1+hdb1, md1=hda2+hdb2 и md2=hda3+hdb3. В конце, для подготовленных MD устройств, выбираем соответствующие файловые системы и точки монтирования. Нажимаем на пункт меню: Настройка разделов закончена. После этого вы получите предупреждение на английском, суть которого сводится к следующему: разрешить или нет загрузку с отказавшего массива? В целях обеспечения беспрерывной работы следует ответить утвердительно, но следует помнить, что это потенциальная угроза сохранности данных и
необходимо обеспечить регулярный контроль за состоянием массива. Рис. 10.Записываем все изменения на диск. И заканчиваем установку дистрибутива в обычном порядке: После окончания установки дистрибутива, обязательно установите Grub на второй диск, чтобы имееть возможность грузиться с этого диска в будущем, если сломается первый! root@serv1:/home/victor# sudo grub-install /dev/sda root@serv1:/home/victor# sudo grub grub> device (hd1) /dev/sdb grub> root (hd1,0) grub> setup (hd1) grub> quit Добавляем загрузку со второго (second) HD в grubРедактируем файл menu.list ### To boot if sda fails ### title Ubuntu 8.04.1, kernel 2.6.24-19-generic /dev/sda fail root (hd1,0) kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/md0 ro quiet splash initrd /boot/initrd.img-2.6.24-19-generic ### End mod ### 2. Проверка правильности настройки и работы RAID-1 массива.Для проверки правильности настроики необходимо выполнить следующие команды: root@serv1:/home/victor# grep /dev/md /etc/fstab /dev/md0 / ext3 defaults,errors=remount-ro 0 1 /dev/md2 /home ext3 defaults 0 2 /dev/md1 none swap sw 0 0 root@serv1:/home/victor# df -h / /home Filesystem Size Used Avail Use% Mounted on /dev/md0 9.2G 2.1G 6.7G 24% / /dev/md2 11G 129M 9.5G 2% /home и root@serv1:/home/victor# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda3[0] sdb3[1] 10707200 blocks [2/1] [UU] md1 : active raid1 sda2[0] sdb2[1] 489856 blocks [2/2] [UU] md0 : active raid1 sda1[0] sdb1[1] 9767424 blocks [2/2] [UU] root@serv1:/home/victor# sudo mdadm --query --detail /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Wed Nov 12 00:57:28 2006 Raid Level : raid1 Array Size : 9767424 (9.31 GiB 10.00 GB) Device Size : 9767424 (9.31 GiB 10.00 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Wed Nov 12 04:38:19 2006 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 UUID : 754cd310:4f102bc3:b590c767:672a9c4e Events : 0.11700 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 3. Восстановление RAID-1, при выходе из строя одного из дисков.При выходе из строя одного из дисков (я отсоединил диск sda), мы при проверке увидим следующие записи: root@serv1:/home/victor# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda3[0] 10707200 blocks [2/1] [U_] md1 : active raid1 sda2[0] 489856 blocks [2/1] [U_] md0 : active raid1 sda1[0] 9767424 blocks [2/1] [U_] unused devices: root@serv1:/home/victor# sudo mdadm --query --detail /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Wed Nov 12 00:57:28 2006 Raid Level : raid1 Array Size : 9767424 (9.31 GiB 10.00 GB) Device Size : 9767424 (9.31 GiB 10.00 GB) Raid Devices : 2 Total Devices : 1 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Wed Nov 12 04:45:52 2006 State : active, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 UUID : 754cd310:4f102bc3:b590c767:672a9c4e Events : 0.11812 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 0 0 - removed Присоединяем новый диск. С помощью утилиты fdisk, создаем на нем соответствующие разделы: sdb1, sdb2 и sdb3 разделы. sfdisk -d /dev/hda | sfdisk /dev/hdb Маркируем их с помощью команды fdisk t, как fd. Вы должны увидеть примерно вот такую картину:root@serv1:/home/victor# fdiskКоманда (m для справки): p Диск /dev/sdb: 80.0 ГБ, 80026361856 байт 255 головок, 63 секторов/дорожку, 9729 цилиндров Единицы = цилиндры по 16065 * 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система /dev/sdb1 * 1 4863 39062016 fd Автоопределение Linux raid /dev/sdb2 4864 9118 34178287+ fd Автоопределение Linux raid /dev/sdb3 9119 9240 979965 fd Автоопределение Linux raid Команда (m для справки): Затем выполняем следующиие команды: root@serv1:/home/victor# sudo mdadm --add /dev/md0 /dev/sdb1 mdadm: hot added /dev/sdb1 root@serv1:/home/victor# sudo mdadm --add /dev/md1 /dev/sdb2 mdadm: hot added /dev/sdb2 root@serv1:/home/victor# sudo mdadm --add /dev/md2 /dev/sdb3 mdadm: hot added /dev/sdb3 Проверяем:root@serv1:/home/victor# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[2] sda3[0] 10707200 blocks [2/1] [U_] resync=DELAYED md1 : active raid1 sda2[0] sdb2[1] 489856 blocks [2/2] [UU] md0 : active raid1 sdb1[2] sda1[0] 9767424 blocks [2/1] [U_] [>....................] recovery = 2.2% (215168/9767424) finish=16.2min speed=9780K/sec unused devices: После синхронизации дисков вывод команд проверки, должен быть таким, как до замены диска. В версии Ubuntu 7.10 необходимо обратить внимание на ошибку, которая обсуждалась здесь: https://bugs.launchpad.net/ubuntu/+bug/120375 https://bugs.launchpad.net/ubuntu/+bug/157648
Все!!! ОБСУДИТЬ НА ФОРУМЕ: http://www.ubuntu.liski.su/index.php?topic=71.0 Для версии 8.04 для исправления известного бага, можно предложить решение от: http://kuparinen.org/martti/comp/ubuntu/en/raid.html Внимание: Известный баг serious bug о невозможности произвести загрузку при одном диске. Исправить можно с помощью patch . cd /tmp wget http://www.iki.fi/kuparine/comp/ubuntu/en/local.diff cd /usr/share/initramfs-tools/scripts sudo patch -p0 < /tmp/local.diff sudo update-initramfs -k all -u Пожалуйста помните, что патч надо применять всякий раз при обновлении ядра!!!! В версии 8.04.3 и выше баг устранен!!!! |