raid

Перевод рабочей Linux Debian Squeeze на RAID1

Случилось так что винт начал сыпаться потихоньку, поэтому нужно было срочно заменить его на другой.
Заодно сделать RAID1 из двух винтов чтобы больше такое не повторилось. На старом винте не было никакого рейда.

1.Для начала устанавливаем необходимые утилиты

aptitude install initramfs-tools mdadm

2.Проверяем как разбит диск

# fdisk -l
 
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Support for 3TB drives on Adaptec Controllers

Support for 3TB drives is available on the following controllers:

Series 7 (7805, 7805Q, 71605E, 71605, 71605Q, 71685, 72405)
Series 6, 6E, 6Q, and 6T (6405, 6445, 6805, 6405E, 6805E, 6405T, 6805T, 6805Q, 6805TQ)
Series 2 (2405, 2045, 2805): using firmware/BIOS version 5.2.0 Build 17911 (or later)
Series 5 (5405, 5445, 5805, 5085, 51245, 51645, 52445): using firmware/BIOS version 5.2.0 Build 17911 (or later)
Q Series (5805Q, 2405Q): using firmware/BIOS version 5.2.0 Build 17911 (or later)

Setting cache on RAID controller

Real RAID controllers (not those found onboard of mainboards) normally have a battery backed cache (or an ultracapacitor + flash memory "zero maintenance cache") which is used for buffering writes to improve speed. Even if it's battery backed, the individual hard disk write caches need to be turned off, as they are not protected from a powerfail and will just lose all contents in that case.

RAID 1 + RAID 10 + LVM + GRUB 2 в MBR каждого винта

Вобщем 4 sas-винта, на которые надо поставить debian.
Всё разбиение дисков делаю прямо в установщике.
Принцип такой:
Каждый винт делим на 2 партиции: 1-ая - 100М, 2-ая - "всё остальное".
Из первых маленьких партиций (по 100М) собираем RAID 1 (md0), монтируем в /boot.
Из вторых больших - собираем RAID 10 (md1)
Там же в LVM, создаем группу томов из RAID 10 (md1)
и 2 логических тома: один - под SWAP, другой - под корень системы
всё форматируем и размечаем таблицы.
Позже, GRUB спросит куда установиться ему.

mdadm. Добавление диска в raid массив

Если вдруг один винт в массиве сдох, в моем случае RAID 10

# cat /proc/mdstat 
Personalities : [raid10] 
md0 : active raid10 sda1[0] sdd1[3] sdb1[1]
      143369216 blocks super 1.2 512K chunks 2 near-copies [4/3] [UU_U]
 
unused devices: <none>

об этом говорит нехватка буквы тут [UU_U], ну и другие понятные вещи )

добавляем новый винт в массив:

mdadm /dev/md0 --add /dev/sdc1

после чего можно увидеть такое:

# cat /proc/mdstat 
Personalities : [raid10] 
md0 : active raid10 sdc1[2] sda1[0] sdd1[3] sdb1[1]

Перепрошивка контроллера LSI SAS1068E на матери Supermicro X8ST3-F

Итак.
Собственно имеется мамка Supermicro X8ST3-F, а на ней встроенный контроллер LSI SAS1068E,
который поддерживает только софтварный RAID.

Скачал мануал к мамке.
http://www.supermicro.com/support/resources/results.cfm
Там расписано как включить или выключить рейд, а также что он имеет 2 режима Software и IT.
По дефолту стоит Software, то есть джумпер рядом с разъемами SAS - закрыт. Что такое режим IT оставалось только догадываться ))

Покопавшись в инете и почитав форумы, выяснилось, что режима аж целых 3 ))
1. IR. Integrated RAID. Needs I-Button chip to work.

ext3 re-enable internal journal

# Before: There is an ext3 filesystem with external journal (possible proken/unavailable)
# After: Filesystem uses internal journal again

# Step 1: Turn off (broken) external journal
tune2fs -0 ^has_journal /dev/someSdX

# Step 2: Enable internal journal
tune2fs -o journal_data -O has_journal /dev/someSdX

# Should work as before now
mount /mount/point/of/someSdX

Put ext3 journal on other (SSD) device (greatly improves write performance on hardware raid controllers)

# Before:
# /dev/someSdX is an ext3 data partition with internal (default) journal
# /dev/theSsdY is a partion of (max) 400MB on SSD
# Hint: Have all the Partitions aligned to MiB for optimal performance

# After:
# /dev/someSdX automatically uses external journal (idenfied by fs label)

# Turn off internal journal (takes some time)
tune2fs -O ^has_journal /dev/someSdX

# Create journal with speaking label
mke2fs -O journal_dev -L someSdX_journal /dev/theSsdY

# Make data partition use the journal device
tune2fs -o journal_data -j -J device=LABEL=someSdX_journal /dev/someSdX