KsI-wiki online documents

Linux-software-raid

Материал из Ksimute

Перейти к: навигация, поиск
Коробанов Сергей
Сентябрь 24, 2007

Как ставить linux на software Raid.
Счас практически все борды умеют делать Raid
По крайней мере raid 0 и raid 1

Сначала немного теории:
Плагиатом заниматься не буду, и авторство кусков, которые я "одолжил" сохраню :)
своими словами описывть структуру Рэйдов 0-10 смысла нет :)

http://www.z-a-recovery.com/rus-art-raid.htm
http://www.ixbt.com/storage/raids.html

И к обязательному изучению:
Linux Software Raid Howto
http://rus-linux.net/MyLDP/HOWTO-ru/Soft-RAID-2.4/software-raid-howto-2.4.html

Приступим:

RAID - сокращение для "Redundant Array of Inexpensive (or Independent) Disks" (Избыточный Массив Недорогих (или Независимых) Дисков), изначально конкурировавший со SLED ("Single Large Expensive Disk" - "Один Большой Дорогой Диск"). Чтобы обеспечить дополнительную надежность и/или увеличить скорость, данные в RAID распределены между несколькими физическими дисками (называемыми "составляющими дисками"). Существует несколько "уровней RAID", отличающихся алгоритмами размещения данных. Массив дисков представляется операционной системе как один большой диск, и с точки зрения хранения файлов (и драйверов файловой системы вообще), операции с RAID ничем не отличаются от операций с обычными дисками.

RAID может обеспечиваться как драйвером - это называется "программным RAID" (software RAID), так и специальным аппаратным контроллером - "аппаратный RAID" (hardware RAID).

Еще есть такое "образование" как JBOD
JBOD (просто куча дисков - Just a Bunch Of Disks), также называемый "Span"/"Spanned Volume"

Если говорить строго, то JBOD не является RAID'ом в полном смысле, потому что JBOD-массив не имеет никакой избыточности. При выходе из строя одного из дисков в JBOD массиве, из строя выходит весь массив, и все данные, хранящиеся на нем, теряются. Типичное применение JBOD - просто объединение нескольких (маленьких) дисков в один (большой). Это разумно только для дисков имеющих разную емкость. Для дисков с одинаковой емкостью лучшее решение - создание RAID 0, обеспечивающего такое же увеличение емкости в сочетании с увеличением скорости чтения\записи в обычных приложениях.


Отсебятина:

JBOD - кривое решение. Для задачи объединения дисков различной емкости лучше подходит LVM.
Одно из преимущест LVM - возможность объединения в Volume партиций а не дисков целиком.


Типы RAID:


  • RAID 0, также называемый "Чередованным набором" он же stripe
  • RAID 1, "Зеркало" он же mirror
  • RAID 5, "Чередованный набор с четностью" он же stripe set with parity
  • RAID 5 использует функцию четности для обеспечения избыточности и восстановления данных. Для организации массива типа RAID 5 требуется минимум 3 диска. Всегда теряется объем, равный емкости одного диска.
  • RAID 3 и RAID 4 похожи на RAID 5, но используют выделенный диск для хранения четности. При записи, производительность системы упирается в производительность этого диска.
  • RAID 6 похож на RAID 5, но использует две разные функции четности. RAID6 переносит двойной отказ (одновременный отказ двух дисков). Это необходимо в массивах большого объема, где восстановление RAID5 занимает слишком много времени и становится заметной вероятность того, что еще один диск откажет прежде чем избыточность восстановится.
  • RAID 10. Отказоустойчивый массив с дублированием и параллельной обработкой Эта архитектура являет собой массив типа RAID 0, сегментами которого являются массивы RAID 1. Он объединяет в себе очень высокую отказоустойчивость и производительность.


Отсебятина:

Рулят следующие raid: Raid-1 Зеркало (как дешевая система повышенной надежности) Широко распространен Raid-5 и для серьезных решений уважается 10-й.
С остальными в практике не сталкивался. Raid-0 отстой. Надежность падает в 2 раза.

Почему именно Софтваре рэйд:
Читаем:
http://linux.yyz.us/why-software-raid.html

Why prefer Linux software RAID?
  • Potential for increased hardware and software biodiversity
  • Kernel engineers have much greater ability to diagnose and fix problems, as opposed to a closed source firmware. This has often been a problem in the past, with hardware RAID.
  • Disk format is public
  • ...thus, no vendor lock-in: Your data is not stored in a vendor-proprietary format.
  • A controller-independent, vendor-neutral layout means disks can be easily moved between controllers. Sometimes a complete backup+restore is required even when moving between hardware RAID models from the same vendor.
  • Eliminates single-points-of-failure (SPOF) compared to similar configurations of hardware RAID.
  • RAID5 XOR runs on host CPU, which practically guarantees that it is far faster than the pitiful hardware RAID microcontrollers.
  • RAID5 XOR speed increases as host CPU speeds increase.
  • RAID speed increases as host CPU count (multi-thread, multi-core) increases, following current market trends.
  • Cost. A CPU and memory upgrade is often cheaper and more effective than buying an expensive RAID card.
  • Level of abstraction. Linux software RAID can distribute data across ATA, SCSI, iSCSI, SAN, network or any other block device. It is block device agnostic. Hardware RAID most likely cannot even span a single card.
  • Hardware RAID has a field history of bad firmwares corrupting data, locking up, and otherwise behaving poorly under load. (certainly this is highly dependent on card model and firmware version)
  • Hardware RAID firmwares have a very limited support lifetime. You cannot get firmware updates for older hardware. Sometimes the vendor even ceases to exist.
  • Each hardware RAID has a different management interface, and level of feature support.
  • Your hardware RAID featureset is largely locked in stone, at purchase time. With software RAID, the featureset grows with time, as new features are added to Linux... no hardware upgrade required.
  • Additional RAID mode support. Most hardware controllers don't support RAID-6 as Linux software RAID does, and Linux will soon be adding RAID-5E and RAID-6E support.
  • Error handling and logging varies from vendor to vendor (and card to card), with hardware RAID.
  • Many ATA-based hardware RAID solutions either (a) fail to manage disk lifetimes via SMART, or (b) manage SMART diagnostics in a non-standard way.

Why prefer Linux hardware RAID?

  • Software RAID may saturate PCI bus bandwidth long before a hardware RAID card does (this presumes multiple devices on a single PCI bus).
  • RAID5 XOR calculations are performed on the host CPU (as opposed to offloaded, in hardware RAID situation).
  • Battery backup on high end cards allows faster journalled rebuilds.
  • Battery-backed write-back cache may improve write throughput.


Переводить не буду. Итак все понятно.

Разумеется на серьезных проектах применять Software Raid - это бред.
Хотя, например, DNS сервер. (он очень мало с диском работает) можно и на софтваре Raid поднять.
Но если стоит выбор - "Software raid" на борде или Software raid средствами операционки - я лично предпочту, чтобы рэйдом рулило ядро, а не кривой драйвер от вендора.

На серверах начального ценового диапазона аппарвтных рэйдов нет. Что не удивительно, т.к. неисправимый оптимизм - при стоимости сервера в 1500 уе, ожидать наличие на борту контроллера стоимостью 700 - 1000 уе.
И многие небольшие фирмы не могут себе позволить нормальный аппаратный рэйд.

В дешевых серверах обычно делают поддержку софтварного рэйда. Т.е. конфигурируем рэйд в биосе, ставим операционку, устанавливаем драйвер от рэйда (или устонавливаем его в процессе установки) и операционная система осознала свое счастье обладания массивом...

Смысла в таком решении не вижу абсолютно. Кроме глюков драйверов от производителя чипсета raid, сильно ограниченной техподдержки и невыпускания новых драйверов производителями.
Да и ресурсы камня такой рэйд кушает как ядерный.
Еще зачастую нельзя восстановить массив во время работы системы, или проконтроллировать процесс восстановления такого рэйда и т.п.

Вообщем недорэйд какой-то сплошной.

Правильнее сделать массив стредствами операционной системы, и все правильные операционки это умеют! имеем linux дистрибутив gentoo ядро на данный момент 2.6.20.7

Опишу создание зеркала:

При сборке ядра включаем поддержку рэйдов.

Бъем 2 партиции:
cfdisk /dev/sda

  1. - Type FD - linux raid autodetect
  2. - linux swap


Своп держать в рэйде - извращение.

Создаем raidtab:

  host@ksi ~ $ cat /etc/raidtab 
  raiddev /dev/md0
  raid-level                  1
  nr-raid-disks               2
  nr-spare-disks              0
  chunk-size                  4
  persistent-superblock       1
  device                      /dev/sda1
  raid-disk                   0
  device                      /dev/sdb1
  raid-disk                   1


После партирования создаем рэйд:

  #mkraid /dev/md0

To create raid using mdadm (raidtools - now unsupported):

  #mdadm --create /dev/md0 -l mirror --raid-devices=2 /dev/sda1 /dev/sdb1


форматируем:

#mkreiserfs /dev/md0


монтируем:

  mount /dev/md0 /mnt/md0

копируем дистрибутив.

делаем chroot:
chroot /mnt/md0

правим fstab:

/dev/md0                /               reiserfs        defaults               0<br>

правим lilo.conf:
boot=/dev/md0
image = /boot/vmlinuz
root = /dev/md0
label = Gentoo
read-write
прописываем mbr в каждый диск:
  #lilo -M /dev/sda
  #lilo -A /dev/sda
  #lilo -M /dev/sdb
  #lilo -A /dev/sdb


Все.
Теперь можно грузиться с любого диска и при вылетании просто заменяем его, партируем добавляем в raid
man raidhotadd ждем, пока засинхронизируются диски.

смотрим mdstat
#cat /proc/mdstat


и после окончания синхронизации заново прописываем lilo
Теперь наши данные, как и вся операционка на зеркале, можно спать спокойно :).