softRAID 1
Как создать софт рейд массив в ОС Linux? Есть два варианта. Первый — если в установке ОС есть возможность сделать RAID во время разметки дисков (например, Debian). Второй — создание RAID из уже установленной ОС.
Теперь рассмотрим второй вариант.
Устанавливаем ОС на один диск из RAID массива. Я использовал данный метод на Proxmox, поэтому использую deb пакеты.
Если вы будете использовать softRAID на Proxmox, то имейте ввиду, что официально поддержки softRAID нет и вы делаете все на свой страх и риск.
Установим необходимые пакеты:
aptitude update && aptitude install mdadm screen parted
Для Proxmox, то для установки ниже описанных пакетов нужно добавить бесплатный репозиторий командой
echo "deb http://download.proxmox.com/debian wheezy pve pve-no-subscription" >> /etc/apt/sources.list.d/proxmox.list
Проверим используемые диски. Тут можно сделать командой fdisk -l
, (выведет подробный список разделов), команду df
(выведет список используемого места), команду parted -s /dev/sdХ print
в случае использования GPT. Допустим, что у нас есть два диска: sda — диск с системой, sdb — пустой диск.
Если необходимо — затираем данные на SDB: dd if=/dev/zero of=/dev/sdb bs=100M count=1
и делаем перезагрузку.
Копируем логические разделы с диска на диск.
sgdisk -R /dev/sdb /dev/sda
Присвоим новому жесткому диску случайный UUID.
sgdisk -G /dev/sdb
sgdisk --randomize-guids --move-second-header /dev/sdb
Посмотрим результат операций.
parted -s /dev/sda print
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB primary bios_grub
2 2097kB 537MB 535MB ext3 primary boot
3 537MB 500GB 500GB primary lvm
parted -s /dev/sdb print
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB primary bios_grub
2 2097kB 537MB 535MB primary boot
3 537MB 500GB 500GB primary lvm
Если у вас такой же результат — время сменить флаги скопированных разделов на raid.
parted -s /dev/sdb set 2 "raid" on
parted -s /dev/sdb set 3 "raid" on
Смотрим результат
parted -s /dev/sdb print
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB primary bios_grub
2 2097kB 537MB 535MB primary raid
3 537MB 500GB 500GB primary raid
Идем дальше и на всякий случай очищаем суперблоки. Что это?
Каждое устройство в RAID-массиве md может содержать метаданные (не путайте с метаданными файловых систем), иногда называемые суперблоком (superblock). Информация из суперблоков на устройствах, входящих в массив, позволяет драйверу md корректно заново собирать массив после его остановки. Особенностью суперблока является то, что данных хранимые в нём, содержатся в процессорно-независимом формате, то есть вы можете свободно перемещать RAID-массив между различными платформами.
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
# mdadm --zero-superblock /dev/sdb2
mdadm: Unrecognised md component device - /dev/sdb2
# mdadm --zero-superblock /dev/sdb3
mdadm: Unrecognised md component device - /dev/sdb3
Данный вывод говорит нам о том, что диск не участвовал в RAID. Можно создавать RAID массив. Внимание, процесс долгий и зависит от размера ваших дисков на 1 ТБ занимает около 3-4 часов.
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3
В конце должна вывестись вот это строка
mdadm: array /dev/md2 started.
Посмотрим на рехультат создания массивов.
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1]
487731008 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sdb2[1]
521920 blocks super 1.2 [2/1] [_U]
В выводе видно состояние массивов — [_U]. Это обозначает, что в массиве есть лишь один диск. Так и должно быть, ведь второй (первый) мы в массив еще не включили.
Добавляем информацию о массивах в конфигурационный файл:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Скопируем раздел boot на соответствующий массив
mkfs.ext3 /dev/md1
mkdir /mnt/md1
mount /dev/md1 /mnt/md1
cp -ax /boot/* /mnt/md1
umount /mnt/md1
rmdir /mnt/md1
Далее нам нужно закоментировать в /etc/fstab строку описывающую монтирование boot-раздела с UUID и пропишем монтирование соответствующего массива:
nano /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext3 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz ext3 defaults 0 1
# UUID=d097457f-cac5-4c7f-9caa-5939785c6f36 /boot ext3 defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
/dev/md1 /boot ext3 defaults 0 1
Если вы используете raid на Proxmox, то первое время удалите параметр errors=remount-ro. Если ваш диск повредится или RAID был собран не корректно, то через некоторое время вы потеряете доступ к VM на хосте. После сбора RAID создайте WM на хосте и нагрузите на серьезную операцию (архивирование, например) на пару часов и перезагрузите хост. Если всё хорошо — параметр можно включить.
ОПИСАТЬ ЗДЕСЬ LIVE CD И ОТКЛЮЧЕНИЕ FSTAB
Перезагружаемся и настроим GRUB загрузчик.
Настраиваем GRUB (делаем это абсолютно так же как и в оригинальной статье):
echo 'GRUB_DISABLE_LINUX_UUID=true' >> /etc/default/grub
echo 'GRUB_PRELOAD_MODULES="raid dmraid"' >> /etc/default/grub
echo 'GRUB_TERMINAL=console' >> /etc/default/grub
echo raid1 >> /etc/modules
echo raid1 >> /etc/initramfs-tools/modules
Переустанавливаем GRUB:
grub-install /dev/sda —recheck
grub-install /dev/sdb —recheck
update-grub
update-initramfs -u
Теперь добавим раздел boot с первого (sda) диска в массив. Сначала пометим его флагом «raid», а затем и добавим:
parted -s /dev/sda set 2 "raid" on
mdadm --add /dev/md1 /dev/sda2
mdadm: added /dev/sda2
Если посмотреть теперь состояние массивов:
cat /proc/mdstat
Personalities : [raid1]
md2 : active (auto-read-only) raid1 sdb3[1]
487731008 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sda2[2] sdb2[1]
521920 blocks super 1.2 [2/2] [UU]
unused devices: <none>
то мы увидим, что md1 стал «двухдисковым» — [UU]. Теперь нужно перенести основной раздел — LVM.
screen bash
pvcreate /dev/md2
vgextend pve /dev/md2
pvmove /dev/sda3 /dev/md2
vgreduce pve /dev/sda3
pvremove /dev/sda3
Добавляем раздел sda3 в массив:
parted -s /dev/sda set 3 "raid" on
mdadm --add /dev/md2 /dev/sda3
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[2] sdb3[1]
487731008 blocks super 1.2 [2/1] [_U]
[>....................] recovery = 0.3% (1923072/487731008) finish=155.4min speed=52070K/sec
md1 : active raid1 sda2[2] sdb2[1]
521920 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Оригинальные статьи.
http://habrahabr.ru/post/218757/
http://ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/#.VetfeJdN2M8