место в рейтинге
  • 961299
  • 660
  • 77
Нравится блог?
Подписывайтесь!

Софт рейд массив из двух жестких дисков на CentOS 6.4.

В этой короткой записке написано как сделать софт рейд на примере CentOS 6.4

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

Все операции проводимые с жесткими дисками очень опасны для данных, вы можете потерять всю информацию. Если конечно таковая имеется. Любые манипуляции надо производить только тогда, когда есть резервная копия критически важных данных.

Рассмотрим два случая создания программного рейд массива:

1. Системный диск c уже работающей CentOS + Рейд массив из двух одинаковых жестких диска.

 

2. Чистая установка CentOS на два диска присутствующих в системе.

 

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

Второй случай, тоже очень таки используемый. Например у нас есть почтовый сервер и мы хотим повысить дисковую отказоустойчивость. Если сгорит один жесткий диск в таком сервере, другой диск продолжить работать.

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

В конце записки есть небольшая инструкция по замене сбойного диска на новый рабочий.

Первый случай: Системный диск + Рейд массив из двух одинаковых жестких диска.

Допустим у нас имеется сервер с одним жестким диском, этот диск системный. Мы добавили к нему еще два жестких диска объемом 35 Гбайт для организации программного рейда.

 

Краткое содержание:

1. Определяем какие жесткие диски будут в рейде

2. Создаем рейд массив из двух HDD

3. Записываем файловую систему в рейд

4. Создаем конфиг файл утилиты mdadm

5. Монтируем рейд в системе

6. Автомонтирование рейд массива при загрузке системы

 

1. Определяем какие жесткие диски будут в рейде

Чтобы определить какие жесткие диски есть в системе, введем комманду:

# fdisk -l | grep "Disk /dev/sd"

Disk /dev/sda: 18589 MB, 8589934592 bytes

Disk /dev/sdb: 1008589 MB, 8589934592 bytes

Disk /dev/sdc: 1008589 MB, 8589934592 bytes

Здесь мы видим что у нас в компьютере имеется три физических жестких диска, это:

1. sda

2. sdb

3. sdc

Первый жесткий диск sda является системным, его размер 18 Гбайт, а два добавленных пустые. Из них будем делать рейд.

 

2. Создаем рейд массив из двух HDD

Установим mdadm:

# yum install mdadm -y

Для организации рейд массива зеркального типа (уровень 1).

Вводим следующею команду для создания рейд массива:

# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

Continue creating array? y

Здесь мы не указываем определенные разделы, так как у нас их нет. Поэтому мы сразу написали имена дисков участвующих в массиве sdb и sdc. Разделы пишутся так sdb1 или sdb2.

Рассмотрим данную команду по ближе:

-- level               - задает тип рейд массива, это может быть 0, 1, 5, 6.

--raid-devices    - задает количество дисков участвующих в организации рейда

/dev/sdb           - первый жесткий диск

/dev/sdc            - второй жесткий диск

/dev/md0          - собственно, имя создаваемого массива

Проверяем, создался ли массив:

# cat /proc/mdstat

Personalities : [raid1]

md0 : active raid1 sdc[1] sdb[0]

8387572 blocks super 1.2 [2/2] [UU]

 

3. Записываем файловую систему в рейд

Разметим пространство создав файловую систему на нашем рейде, в качестве ФС (файловая система) берем ext4:

# mkfs.ext4 /dev/md0

 

4. Создаем конфиг файл утилиты mdadm

Теперь, создадим конфиг файл для утилиты mdadm:

# mdadm --detail --scan --verbose > /etc/mdadm.conf

Осталось не много, при монтируем наш рейд в системе, чтобы в него могли писать программы.

 

5. Монтируем рейд в системе.

Создадим точку монтирования, каталог /raid:

# mkdir /raid

При монтируем рейд в каталог /raid:

# mount /dev/md0 /raid

Второй способ монтирования, он более безопасный:

# vi /etc/rc.d/rc.local

/bin/mount -t ext4 /dev/md0 /raid

 

6. Автомонтирование рейд массива при загрузке системы

Чтобы ваш рейд всегда автоматически монтировался при загрузке ОС, добавьте строчку в файл /etc/fstab:

/dev/md0 /raid ext4 defaults 1 2

 

Заключение:

Итого мы имеем программный рейд массив уровня 1 (зеркалирование) на двух дисках, помимо отдельного системного диска. Это будет полезно при работе гипервизора или когда нужно хранить отдельно  важные данные.

Второй случай: Рейд массив из двух дисков имеющихся в системе

Этот случай самый распространенный, именно его используют многие админы.

Допустим у нас новенький сервер, в нем установлено два жестких диска объемом 35 Гб.

Рейд массив в этом случае будет создаваться во время установки операционной системы.

Кратко надо будет сделать следующее:

1. Во время установки операционной системы создать одинаковые разделы на двух жестких дисках:

  • swap - раздел подкачки, размер 1 Гб
  • RAID partition - раздел RAID, выделить под него все оставшееся место за вычетом 1Гб

2. Объеденить оба жестких в рейд массив

3. Установить систему на рейд массив

4. Установить загрузчик на диск sdb

5. Настроить конфигурационный файл загрузчика, чтобы загрузка шла в случае неудачи с диска который еще работает.

Вроде все ясно.

Приступим....

 

Покажу как это делается в картинках. Вставляем DVD диск с CentOS в компьютер и перезагружаемся.

Нажимаем первый пункт, установка или обновление.

Нажимаем кнопку "SKIP"

Нажимаем NEXT

Нажимаем NEXT

Нажимаем NEXT

Нажимаем NEXT

Нажимаем NEXT

Нажимаем NEXT

Вводим пароль суперадминистратора

Выбираем "Create Custom Layout"

Видим два жестких диска sda и sdb, нажимаем CREATE

Выбираем Standart Partition и жмем Create.

 

Ставим галку напротив диска sda как на картинке.

Выбираем File System Type = swap и указываем размер 1000 MB

Заполняем и нажимаем кнопку OK, после чего создаться раздел SWAP объемом 1000 MB

Теперь создадим корневой раздел /.

Нажимаем опять кнопку Create. Выбираем RAID Partition как на картинке.

Ставим галочку на sda диске, выбираем File System type = software RAID.

А также ставим выбираем Fill to maximim alowable size и нажимаем кнопку OK.

Все, мы создали два раздела на первом жестком диске sda. Аналогичную операцию  требуется проделать со вторым жестким диском sdb.

 

Нажимаем кнопку Create. Выбираем второй жесткий диск sdb (галка). Создаем на нем раздел Swap, объемом в 1000 МБ.

Галочка Fixed size.

Size  - 1000

Нажать кнопку OK.

Нажимаем кнопку Create, выбираем File System Type- Software RAID

Галка - Fill to maximum allowable size

Кнопка - OK

Теперь у нас созданы одинаковые разделы двух жестких дисках.

Осталось объеденить эти два диска в RAID массив.

Нажимаем как обычно по кнопке Create, выбираем RAID Device.

Mount Point:  /

File System Type:   Ext4

RAID Device: md0

RAID Level: RAID1

Галочки напротив sda и sdb дисков.

Кнопка OK.

 

Все рейд массив создан. Осталось установить на него операционную систему.

Нажимаем по кнопке Next.

Нажимаем Write changes to disk.

Нажимаем Next, загрузчик Grub будет установлен на диск sda. После установки ОС, мы скопируем его на второй диск sdb,

чтобы система грузилась с любого диска в случае краха одного из них.

Минимальная инсталяция. Нажимаем Next

Процесс установки системы.

Установка завершена, нажмите Reboot для перезагрузки.

Вводим логин root

Пароль свой.

Проверим состояние массива:

# cat /proc/mdstat

Копируем загрузчик Grub на второй жесткий диск sdb.

Вводим в терминале:

# grub

grub> find /boot/grub/stage1

hd (0,1)

hd (1,1)

grub> root (hd0,1)

grub> setup (hd0)

grub> root (hd1,1)

grub> setup (hd1)

grub> quit

Этими командами мы скопировали загрузчик на второй жесткий диск sdb.

Теперь подправим конфигурационный файл grub.conf

# vi /boot/grub/grub.conf

Добавляем в этот файл  строчку:

fallback=1

Этот параметр позволит загрузчику в случае неудачи загрузки с диска sda, загрузится с диска sdb.

А также надо удалить или закоментить строку:

splashimage=(hd0,1)/boot/grub/splash.xpm.gz

Но осталось еще добавить следующие строчки, чтобы Grub мог загрузится со второго жесткого диска:

title CentOS (2.6.32-358.el6.i686)

root (hd1,1)

kernel /boot/vmlinuz-2.6.32-358.el6.i686 ro root=UUID=fc8b1c7e-2529-4c2a-accf-3b27004968a6 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_MD_UUID=0dbaca2b:ef34020c:3a8414fa:f4311c8c SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /boot/initramfs-2.6.32-358.el6.i686.img

 

Вот полный файл grub.conf

 

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You do not have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /, eg.

#          root (hd0,1)

#          kernel /boot/vmlinuz-version ro root=/dev/md0

#          initrd /boot/initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

fallback=1

#splashimage=(hd0,1)/boot/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.32-358.el6.i686)

root (hd0,1)

kernel /boot/vmlinuz-2.6.32-358.el6.i686 ro root=UUID=fc8b1c7e-2529-4c2a-accf-3b27004968a6 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_MD_UUID=0dbaca2b:ef34020c:3a8414fa:f4311c8c SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /boot/initramfs-2.6.32-358.el6.i686.img

title CentOS (2.6.32-358.el6.i686)

root (hd1,1)

kernel /boot/vmlinuz-2.6.32-358.el6.i686 ro root=UUID=fc8b1c7e-2529-4c2a-accf-3b27004968a6 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_MD_UUID=0dbaca2b:ef34020c:3a8414fa:f4311c8c SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /boot/initramfs-2.6.32-358.el6.i686.img

Обязательно закоментируйте строчку:

splashimage=(hd0,1)/boot/grub/splash.xpm.gz

В противном случае будете видеть следующею ошибку если один из дисков умрет:

failed to read image

Все, теперь все должно работать! Проверьте чтобы в настройках Grub у вас были одинаковые настройки для двух дисков, в противном случае будут проблемы с загрузкой.

Чтобы массив быстрее перестраивался, можно внести специальную настройку:

# echo 50000 >/proc/sys/dev/raid/speed_limit_min

Обязательно, после всех проделанных операций, проверяйте как ведет себя массив без  одного жесткого диска. Грузится ли система с одним диском.

Замена диска в массиве

Бывает так, что со временем диск в массиве умирает. Он может просто не определятся в BIOS (CentOS) или может чудить из за механических поломок или плохой поверхности.

Процедура замены в случае сгоревшего диска следующая:

1. Выключаете сервер

2. Вынимаете сгоревший диск и устанавливаете новый

3. Создаете разделы на новом диске как на выжившем работающем носителе.

4. Добавляете новый диск в массив.

5. Копируете загрузчик grub

 

Давайте рассмотрим последовательность замены диска если команда рапортует нам о нехватке диска в массиве - [U_]

# cat /proc/mdstat

cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda2[0]
7875520 blocks super 1.0 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>

Как видим одного диска - нет!

Теперь сама процедура:

1. Выключаете сервер

# shutdown -h now

2. Вынимаете сгоревший диск и устанавливаете новый

Открутите винты и отсоедините шлейфы - уберите сгоревший диск.

За место него установите заведомо исправный диск.

3. Создаете разделы на новом диске как на выжившем работающем носителе.

Включите сервер и введите команду:

# sfdisk -d /dev/sda | sfdisk /dev/sdb --force

Этой командой мы копируем разделы с диска sda на диск sdb. Диск sda - это выживший, а диск sdb - это новый диск напарник.

Чтобы система увидела новые разделы диска sdb введите:

# sfdisk -R /dev/sdb

4. Добавляете новый диск в массив.

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

# mdadm /dev/md0 --add /dev/sdb2

5. Копируете загрузчик grub

Вводим в терминале:

# grub

grub> find /boot/grub/stage1

hd (0,1)

hd (1,1)

grub> root (hd0,1)

grub> setup (hd0)

grub> root (hd1,1)

grub> setup (hd1)

grub> quit

 

Процедура замены в случае если S.M.A.R.T. выдает неутишительный отчет  с диагнозом - диск скоро умрет:

1. Убираете диск из массива

2. Выключаете сервер

2. Вынимаете сгоревший диск и устанавливаете новый

3. Создаете разделы на новом диске как на выжившем работающем носителе.

4. Добавляете новый диск в массив.

5. Копируете загрузчик grub

 

Здесь все тоже самое что и в первом случае, за исключением одного но - точнее первого пункта:

Чтобы убрать диск из массива введите команду:

# mdadm --manage /dev/md0 --fail /dev/sdb

Здесь мы указали что диск sdb сбойный, и что с ним работать уже нельзя.

Далее можно удалить его из массива:

# mdadm /dev/md0 -r /dev/sdb

Процедура добавления нового диска в массив идет уже по описанной процедуре которую я описал выше.

 

Краткий FAQ:

1. Массив создался под именем md0 с двумя разделами sda2 и sdb2, после отключения одного из дисков и дальнейшего включения массивов стало два md0 и md127. В первом md0 диск раздел sda2, а во втором md127 раздел диск sdb2.

Решение:

Отключаем массив md127:

# mdadm -S /dev/md127

Добавляем диск sdb2 в массив md0:

# mdadm /dev/md0 --add /dev/sdb2

Проверяем состояние массива:

# cat /proc/mdstat

Должна быть синхронизация...

Или, если первый способ не прошел, значить делаем так:

Создаем новый конфиг mdadm:

mdadm --detail --scan --verbose > /etc/mdadm.conf

Такое может быть если нету конфигурационного файла /etc/mdadm.conf

Ну и потом как обычно, делаем настройку для автомонтирования при загрузки системы:

Открываем файл /etc/fstab

и добавляем строчку для монтирования:

/dev/md0 /raid ext4 defaults 1 2

2. Как скопировать загрузчик Grub с одного диска на другой в массиве. Чтобы система грузилась при неудачной загрузки с одного из дисков.

Решение:

Находим разделы дисков:

# grub

> find /boot/grub/stage1

hd (0,1)

hd (1,1)

Копируем загрузчик:

> root (hd0,1)

> setup (hd0)

> root (hd1,1)

> setup (hd1)

> quit

3. Не правильно при монтировал массив в /etc/fstab, теперь файловая система упала в режим Read Only, что делать?

Появляются ошибки при редактировании файл /etc/fstab вроде этих:

W10: Warning: Changing a readonly file

E45: 'readonly' option is set (add !to override)

Решение:

Главное не паниковать,  если не правильно при монтирован массив, то файловая система просто перейдет в режим Read Only.

Нам необходимо смонтировать файловую систему в режиме записи, для этого вводим следующею команду:

# mount -o remount,rw /

 

И далее исправить /etc/fstab так чтобы массив нормально функционировал.

 

4. Как сделать не большой тюнинг массива уровня 5?

Решение:

Добавляем в /etc/rc.d/rc.local строчку:

echo 8192 > /sys/block/md0/md/stripe_cache_size

 
Almas AkeHayc
Пишу для себя, блог как записная книжка. Со временем все забывается, а у меня оно все в бложике. Будьте упертым глухим бегемотиком :)
13 мая 2013, 15:52
13324

Загрузка...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Дастархан в те времена был скромен. Не было понятия «сынау» - осуждения кто как живет, какой в доме ремонт и т.д. Пока взрослые обсуждали задержку заработной платы, мы играли в армию, жмурки, строили городки...
socium_kzo
5 дек. 2016 / 15:19
  • 29308
  • 30
Верховный Суд презентовал комментарий к Гражданскому процессуальному кодексу

Верховный Суд презентовал комментарий к Гражданскому процессуальному кодексу

ГПК содержит 505 статей, многие из которых написаны несколько сложным юридическим языком. Однако теперь понять их можно проще и без обращения к юристу.
RuSnake
6 дек. 2016 / 10:31
  • 10990
  • 0
Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

"Мужчины должны у вас тут права качать, ибо их процент в вашей численности населения уступает проценту женщин". Я машинально начала уверять, что у нас в стране таковых не имеется...
Sapientia
5 дек. 2016 / 10:52
  • 10762
  • 71
Известный европейский фотограф показал истинную красоту казашек

Известный европейский фотограф показал истинную красоту казашек

С 26 по 30 ноября в Алматы гостил известный европейский фотограф Ян Маклайн в рамках реализации совместного проекта с Казахстаном. Подробности не уточняются, однако ходят слухи о том, что этот...
Muchacho55
7 дек. 2016 / 18:29
  • 9302
  • 8
Распил 1 млрд долларов или спасение для Алматы? В 2017-м начнётся строительство БАКАД

Распил 1 млрд долларов или спасение для Алматы? В 2017-м начнётся строительство БАКАД

Конечно, Алматы заслужил эту дорогу. Невзирая на все издержки, которые могут возникнуть. Заслужил и как крупнейший город Казахстана, и как субъект, формирующий своими налогами около четверти всех...
merurg
7 дек. 2016 / 12:35
  • 7404
  • 20
«Лицо дьявола»? Страшный силуэт на стекле – не оправдание водительской безответственности

«Лицо дьявола»? Страшный силуэт на стекле – не оправдание водительской безответственности

Казнет уже которые сутки подряд обсуждает страшную аварию на трассе Астана – Боровое, где сошлись страшные мистические знаки и где из-за банальной человеческой безответственности гибли люди..
openqazaqstan
8 дек. 2016 / 13:14
  • 6507
  • 6
Невозвращенцы-болашаковцы должны государству почти 2 млрд тенге. Кто их теперь вернет?

Невозвращенцы-болашаковцы должны государству почти 2 млрд тенге. Кто их теперь вернет?

Как сообщают новостные порталы, в Нью-Йорке нашёлся бывший болашаковец Ержан Еликов, исчезнувший пять лет назад и всё это время не выходивший на связь с родителями. Да-да, это именно он, «тот самый».
openqazaqstan
вчера / 14:31
  • 5993
  • 22
На самом деле дела плохи: казахстанские школьники на 49-м, а не на 12-м месте по математике

На самом деле дела плохи: казахстанские школьники на 49-м, а не на 12-м месте по математике

О том, как масс-медиа раздула миф о казахстанских вундеркидов в розовый воздушный шар, пока его не проколола правда-иголка. Получается, что казахстанские дети не могут применить теорию в практике...
ardakzhurynov
7 дек. 2016 / 0:17
  • 5881
  • 36
10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

Я почти год проработала в школе, и когда уходила оттуда, была самым счастливым человеком в мире. Тот год, честно говоря, я и сейчас вспоминаю с ужасом.
demonica
6 дек. 2016 / 17:21
  • 6275
  • 78