ArchLinux — Software RAID

в 11:57, , рубрики: archlinux, linux, raid, ssd, Железо, метки: , ,

Недавно я прикупил себе две SSD'шки Kingmax SMP35 емкостью 60 Гб каждая. На них мы с отцом запилили хардварный RAID 1 средствами материнской платы и поставили Восьмерку (Окошки). Поплевались и снесли. Я решил опробовать RAID-массив в линуксе и выбор мой пал на арч (это менее изученый дистр из всех использовавшихся мною). Под катом картинок не будет, но выводы программ я выкладывать буду (:

Hardware RAID vs. Software RAID

Вы наверное уже приготовились к тесту с кучей подробностей, плюшек и пряников? Однако все гораздо проще — хардварный массив не воспринимается в арче как массив. Вот и все дела. Значит, лепим софтварь. Испытания проводятся на самом свежем релизе арча с установочным скриптом pacstrap. Весь процесс установки я приводить не буду, но хронологию я сохраню и постараюсь донести и до Вас.

Поехали!

Загружаемся с установочного(ой) диска(флэшки). Для начала смотрим вывод программы fdisk для того, чтобы сориентироваться в «жестянках».

fdisk -l

Disk /dev/sda: 60.0 GB, 60022480896 bytes
81 heads, 63 sectors/track, 22973 cylinders, total 117231408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2d5689a5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   117231407    58614680   fd  Linux raid autodetect

Disk /dev/sdb: 60.0 GB, 60022480896 bytes
81 heads, 63 sectors/track, 22973 cylinders, total 117231408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009e9af

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   117231407    58614680   fd  Linux raid autodetect

Disk /dev/sdc: 515 MB, 515899392 bytes
64 heads, 32 sectors/track, 492 cylinders, total 1007616 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x25086445

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           0      757759      378880   17  Hidden HPFS/NTFS

Disk /dev/sdc1: 387 MB, 387973120 bytes
64 heads, 32 sectors/track, 370 cylinders, total 757760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x25086445

     Device Boot      Start         End      Blocks   Id  System
/dev/sdc1p1   *           0      757759      378880   17  Hidden HPFS/NTFS

Disk /dev/mapper/arch_root-image: 707 MB, 707788800 bytes
255 heads, 63 sectors/track, 86 cylinders, total 1382400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/arch_lib-modules: 98 MB, 98566144 bytes
255 heads, 63 sectors/track, 11 cylinders, total 192512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/arch_usr-share: 438 MB, 438304768 bytes
255 heads, 63 sectors/track, 53 cylinders, total 856064 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Находим наши SSD'шки (если вы все еще не создали разделы — самое время. Я использовал тип раздела Linux RAID Auto, код — fd)
Далее создаем наш софтварный массив:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Я создавал зеркальный массив, поэтому «уровень» равен 1, а в зависимости от количества разделов в массиве вы изменяете --raid-devices

На вопрос действительно ли мы хотим создать массив отвечаем утвердительно. Готово! Осталось только создать файловую систему и примонтировать раздел для установки системы:

mkfs.ext4 /dev/md0
mount /dev/md0 /mnt

Я создал файловую систему типа ext4, но вы можете создать и другую. Чтобы посмотреть список всех доступных фс напишите mkfs.и нажмите таб.

Установка системы и конфигурация загрузчика

По официальному мануалу ставим систему до пункта «Установка загрузчика». Весь трабл в том, что груб первый не поддержиает загрузку с RAID-массива, но это умеет делать второй. Поэтому мы пишем

pacstrap /mnt grub2-bios

Далее следуем тому же мануалу до пункта «Создание ramdisk'a». Порядок немного другой.

grub-mkconfig -o /boot/grub/grub.cfg
grub-install /dev/sda
grub-install /dev/sdb
mdadm --examine --scan >> /etc/mdadm.conf

Сначала мы генерируем конфиг груба, после ставим его на все жестянки в массиве, а затем генерируем конфиг самого массива. Далее добавляем хук массива в конфиг рамдиска

nano /etc/mkinitcpio.conf
ищем HOOKS="что-то там" и пишем в конец mdadm
У меня строка такая:
HOOKS="base udev autodetect pata scsi sata filesystems usbinput fsck mdadm"

Далее генерируем рамдиск

mkinitcpio -p linux

Если на экране появилась надпись Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays, то это значит, что все хорошо (:
Выходим из chroot, отмонтируем раздел и перезагружаемся. После загрузки проверяем диски через fdisk -l

fdisk -l


Disk /dev/sda: 60.0 GB, 60022480896 bytes
81 heads, 63 sectors/track, 22973 cylinders, total 117231408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2d5689a5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   117231407    58614680   fd  Linux raid autodetect

Disk /dev/sdb: 60.0 GB, 60022480896 bytes
81 heads, 63 sectors/track, 22973 cylinders, total 117231408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009e9af

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   117231407    58614680   fd  Linux raid autodetect

Disk /dev/md0: 60.0 GB, 59987787776 bytes
2 heads, 4 sectors/track, 14645456 cylinders, total 117163648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Где md0 и есть RAID-массив, с которого была загружена система

Вот и все! (: Всем добра и удачи в ваших начинаниях!

Спасибо пользователю sergeyotro за поправку смысловой ошибки

Автор: xxxTy3uKxxx

* - обязательные к заполнению поля