[Manual] Установка программного RAID массива первого уровня

Всё об ОС Linux
Ответить
Сообщение
Автор
Аватара пользователя
kolobok66rus
Капитан
Капитан
Сообщения: 266
Зарегистрирован: 29.10.2010
Поблагодарили: 4 раза

#1 Сообщение 23.09.2011, 12:53

Доброго всем времени !
Предисловие (прочитать всем)
В этой теме я хотел бы рассказать и показать на примере создание RAID массива первого уровня. Я думаю на этом сайте много поклонников и серводержателей на операционной системе Linux. Я предполагаю что каждый из этих людей хотел бы защитить информацию на своём жёстком диске от случайной потери . Для таких целей и придуман RAID массив. Данный мануал написан для RAID массива первого уровня ( зеркалирование ) , то есть информация с одного жёстко диска один в один передаётся на другой жёсткий диск , тем самым копирую вам нужную и ценную информацию. В случае поломки одного из жёстких дисков , система будет продолжать безупречно работать читая информацию с другого целого жёсткого диска. Ну а после замены поломанного диска вся информация также зеркально переноситься на новый диск , тем самым опять предоставляя безопасность хранения информации.

Существует два типа RAID – аппаратный и программный. Аппаратный как вы сами догадались осуществляется непосредственно железом , ну а программный соответственно самой ОС. Ещё раз напоминаю , данный мануал написан для программного RAID массива первого уровня , другими словами зеркальный массив.

Для примера я использовал ОС Linux Debian-6.0.2.1-amd64 , с системным загрузчиком Grub 2 . Хочу сразу сказать , в Debian 5 системный загрузчик старой версии – Grub 1 , поэтому некоторые команды которые вы встретите в мануале для него не подойдут , будьте внимательны. Ну а так же для примера я взял 2 жёстких диска по 8 Гб подключённые в разъём SATA 0 и SATA I . Мануал написан для установки системы с нуля. В мануале почти после каждой команды будет приложен рисунок для большего восприятия и большего понимания этого материала.

И так начнём. Я немного забегу вперёд и постараюсь вам объяснить смысл предстоящей картины . Значит мы имеем 2 жёстких диска , в терминологии Линукса это sda и sdb , запомните это. Так же представим себе что sda подключен в разъём SATA 0 , ну а соответственно sdb в SATA I . Так как у нас первый уровень массива , то эти диски соответственно будут работать в паре , создавая один жёстки диск , именуемый как md . То есть проще говоря информация будет идти параллельно с sda и sdb , всё что будет на sda , точно так же будет и на sdb , образуя один жёсткий диск md , который в нашем случае и будет массивом. В случае краха допустим диска sda - информация автоматически будет считываться с sdb , ну а после восстановления sda , информация с sdb перенесётся на sda и они опять будут работать в паре. Ну а теперь реализуем всё это.

1. Разметка дисков
Значит мы устанавливаем систему и доходим до разметки дисков

Изображение

Тут нам придется отказаться от автоматической разметки и нажать Вручную . Далее вас попросят выбрать раздел и изменить настройки. Но так как разделов ещё нет , а точнее таблиц разделов , то выбираем первый диск , в нашем случае sda и жмём Enter

Изображение

После чего система автоматически опознает свободное место на диске и попросит вас согласиться с этим , жмём Да :

Изображение
Изображение

И так , система создала на sda свободное место . Теперь точно также проделываем с sdb , после чего мы видим 2 жёстких диска со свободным местом :

Изображение

Теперь нам надо на каждом диске создать идентичные разделы. К примеру я создавал на каждом диске по 3 раздела . Первый раздел это будущий SWAP , второй раздел будущий EXT 4 для системы и третий раздел тоже будущий EXT 4 для домашней папки. Почему будущий , вы поймёте позже. Выглядело это так , значит жмём на первый жёстки диск , в нашем случае sda

Изображение

Нажимаем Создать новый раздел и Enter

Изображение

Тут задаём размер раздела . Для своего будущего SWAP я задал 600 Мб и жмём Продолжить

Изображение

Тут выбираем Первичный и жмём Enter

Изображение

Тут выбираем Начало и так же жмём Enter и попадаем в меню настройки раздела , который мы только что создали :

Изображение

Теперь обязательно , ещё раз говорю – обязательно нажимаем Использовать как : и Enter

Изображение

Тут выбираем не использовать размер. Забегу немного вперёд и объясню почему не использовать раздел и почему мы говорили будущий. Дело в том , что нам для начало надо разделить жёсткие диски по величинам разделов . То есть нам надо чтоб на наших 2 дисках sda и sdb были одинаковые по величине размеры , ещё раз повторяю одинаковые , по другому говоря идентичные. А вот потом мы из этих двух дисков будем собирать один. Но перед этим мы должны представлять структуру разделов : сколько мы хотим выделить для SWAP , сколько мы хотим выделить для системы , ну и сколько мы хотим выделить для домашней папки и так далее.. В своём примере я для будущего SWAP выделил 600Мб , для системы выделил 6Гб а для домашней папки 2 Гб. То есть в моём примере каждый диск будет поделён на 3 части , то есть sda – разделён на 3 части – 600мб , 6 Гб и 2 Гб . Второй диск sdb – должен иметь точно такую же структуру – 600Мб , 6 Гб и 2 Гб. И так продолжим . Значит нажимаем не использовать раздел и Enter

Изображение

Тут нажимаем Настройка раздела закончена и Enter , после чего нас вернёт в основное меню настройки разделов , но уже с изменёнными параметрами

Изображение

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

Изображение

Теперь создавайте идентичные разделы на диске sdb , ещё раз повторяю , размеры и расположение разделов на диске должно быть идентичным , то есть как будто вы создаёте вторую половинку разрезанного пополам яблока. В моём примере после разбивки диска sdb основное меню выглядит так :

Изображение

Посмотрите на мой пример и замете , что размеры и расположение разделов на дисках одинаковы и идентичные. Если у вас так же , то вы справились с задаче по созданию одинаковых – идентичных разделов на разных жёстких дисках. Теперь из этих двух дисков , в моём примере это sda и sdb мы будем собирать 1 общий диск именуемым массивом , точно так же как из двух половинок – целое яблоко.
2. Создание массива
И так продолжим , нажимаем настройка программного RAID

Изображение

Тут вам система ещё раз предложит проверить идентичность разделов . Если вы правильно разбили диски , о чём я неоднократно писал выше , то нажимайте Да

Изображение

Тут мы нажимаем Создать MD устройство. МD это и есть наш массив , а точнее 1 будущий слепленный раздел из 2 идентичных разделов дисков sda и sdb . Жмём Enter

Изображение

Тут выбираем RAID 1 , именно это и есть зеркальный массив. Жмём Enter .

Изображение

Тут выставляем число жёстких дисков из которых будет слеплен массив. В моём примере 2 – это sda и sdb . Вы можете использовать хоть 4 жёстких дисков. Тогда у вас повыситься безопасность хранения информации в два раза , но увеличиться время передачи информации между системой и массивом. Короче сюда ставите число жёстких дисков из которых собираете массив. В моём примере 2 , значит я ставлю двойку и нажимаю Enter

Изображение

Тут я не стал выделять резервные разделы , по умолчанию оставил 0 и нажал Продолжить . Если вы не знаете что это такое и не выделяли место для резервации массива о чём в этом мануале не написано , то тоже тупо ставьте 0 и жмите Продолжить

Изображение

Вот и настала пара так сказать скрещивать. И так выбираем пробелом 2 заранее созданных идентичных раздела. В моём примере это sda1 и sdb 1 , sda 2 и sdb 2 , sda3 и sdb3 . То есть вы заметили цифры 1,2,3 это нумерация разделов , значит у нас должны получиться 3 раздела массивного диска – это md0 , md1 и md2 . Запомните что нумерация разделов обычного диска начинается с 1 , а нумерация разделов массивного диска начинается с 0 . И так в данном примере я ставлю звёздочки над sda1 и sda2 и нажимаю Продолжить

Изображение

Тут сохраняем , нажав Да и Enter . Далее вы опять попадаете в меню создания массивного диска . Теперь проделываем тоже самое с sda2 и sdb2 :

Изображение

Если вы заметили , то sda1 и sdb1 уже тут нет , так как мы их уже скрестили. Ну а теперь проделываем такую же операцию с последним третьим разделом , в моём примере это sda3 и sdb3 :

Изображение

Эта схема конструктивна для любого количества жёстких дисков. Например если бы у вас было 3 жёстких , тогда бы вы объединяли бы диски sda , sdb и sdc и соответственно разделы sda1-sdb1-sdc1 , sda2-sdb2-sdc2 и sda3-sdb3-sdc3 . Ну что вы объединили разделы ? если да , то в меню создания массивов нажимаем Закончить

Изображение
Изображение

Как вы видите в моём примере получилось 3 устройства RAID -0,1 и 2 , а точнее md0 , md1 и md2 . Теперь пришло время указать нашим новым разделам файловую систему и точку монтирования. В своём примере у меня md0 – это SWAP , md1 – это система , а md 2 – это домашняя папка. И так поехали , нажимаем на md0 - а точнее на RAID устройство #0

Изображение

Тут нажимаем Использовать как :

Изображение

В моём примере первым делом я начал создавать SWAP и соответственно выбрал раздел подкачки , нажимаем Enter
Потом я создал системный раздел и раздел для домашней папки. В моём примере после указания разделов получилось вот так :

Изображение

Ну что присвоили разделам файловую систему и точки монтирования ? Если да то нажимаем Закончить разметку и записать изменения на диск .

Изображение

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

Изображение

Обязательно устанавливайте загрузчик.
3. Установка и настройка загрузчика Grub
По окончанию установки и перезагрузки входите в систему из под root. В своём примере я установил консольную версию ОС. Вам также для примера и ознакомления рекомендую консольную версию. И так продолжим . Давайте посмотрим на наш созданный массив , для чего вводим команду :

Код: Выделить всё

cat  /proc/mdstat
Изображение

Как видно из рисунка [2/2] [UU] означают исправность массива. Так же вы можете посмотреть на информацию для каждого из разделов массива , для чего вводим команду :

Код: Выделить всё

mdadm --detail /dev/md0
Изображение

Или для раздела md2

Код: Выделить всё

mdadm --detail /dev/md2
Изображение

Ну что же хорошо что хорошо. Теперь поговорим о заргрузчике. По умолчанию загрузчик устанавливается на первый жёстки диска , то есть на sda . Поэтому при выходе из строя диска sda система у вас не загрузиться , для этого надо дополнительно установить загрузчик и на sdb. Забегу немного вперёд . Для нашей версии ОС используется загрузчик Grub2 и по умолчанию он устанавливается с графическим режимом отображения информации. Саму же так называемую графику он берёт с sda. То есть я что вам хочу этим сказать , а то что если вы даже установите загрузчик на sdb и выйдет из строя диск sda , то система всё равно не сможет загрузиться , так как сам загрузчик встанет в стопор при поиске этой графики на sda , который у нас вышел из строя и отключён. Для этого надо пояснить загрузчику о том , что бы он отображал информацию в консольном варианте , при котором не надо подгружать никакую графику ни с каких разделов или дисков. Для этого мы вводим команды :

Код: Выделить всё

cd /etc/default/
nano grub
Изображение

Тут нам просто напросто нужно раскоментировать строку

Код: Выделить всё

GRUB_TERMINAL=console
Этим самым мы дали понять загрузчику о том чтоб он загружался в консольном режиме. Ну что же сохраняем нажав Ctrl+O и Enter

Выходим из редактора нажав Ctrl+X

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

Код: Выделить всё

update-grub
Изображение

Наконец пришла пора установить загрузчик на диск sdb , для чего вводим команду

Код: Выделить всё

grub-install /dev/sdb
Изображение

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

Код: Выделить всё

grub-install /dev/sda
Хочу сразу сказать , если вы сделали массив для большего числа жёстких дисков , то вам обязательно требуется установить загрузчик на каждый из них.

Теперь мы уверенны , что при выходе любого из жёстких дисков , система обязательно загрузиться , используя ресурсы оставшегося или оставшихся целых диска(-ов).
4. Имитация поломки жёсткого диска
И так пришло время с имитировать поломку. В моём примере я имитирую поломку диска sdb. То есть я просто отключаю жёсткий диск от разъёма SATA I . И включаю компьютер. Вы так же можете ради эксперимента повторить за мной . но не забудьте выключить компьютер перед отключением от разъёма . Вы так же можете приобрести салазки для горячей замены жёстких дисков , тогда вам вообще не требуется отключать компьютер. То есть при крахе одного из жёстких вы можете его заменить без отключении и перезагрузки системы. Включаем компьютер и вводим команду

Код: Выделить всё

cat /proc/mdstat
Изображение

На моём примере мы видим что отсутствует 1 диск из общей сборки , о чём свидетельствуют надписи
[2/1] [_U]

Если бы у вас был массив из 3 жёстких дисков и поломался бы 1 , то у вас должны были бы быть надписи

[3/2] [_UU] или [3/2] [U_U] или [3/2] [UU_]

Так же можем проверить командами для каждого раздела массива , например для моего примера :

Код: Выделить всё

mdadm --detail /dev/md1
Изображение

Ну что же , давайте попробуем заменить якобы поставить новый жёсткий диск и включить его обратно в наш массив. Перед этим я хотел бы для наглядности в домашней папке создать к примеру какую-нибудь папку и текстовый файл. Для чего я это делаю ? А для того что бы вам показать что с этим файлом и папкой ничего не произойдёт. В данный момент я создаю на отключенном диске sdb , то есть массив использует ресурсы только диска sda . То есть при правильном добавлении наша папка с файлом должна будет зеркально скопироваться на будущий вставленный диск sdb. И так создаём :

Изображение

Теперь отключаем компьютер , берём точно такой же жёстки диск и подсоединяем в разъём SATA I , а точнее в тот в котором у нас был sdb . Хотя по теории можно цеплять в любой доступный пустой разъём. Хочу сразу сказать что новый диск желательно чтоб был идентичным по своей специфике , размеру , скорости и марки. Но если не представляет такой возможности , то вы можете вставить диск другой марки , но размер диска должен быть не меньше диска sda , а так же скорость вращения и передачи данных должна быть идентичной. В моём примере я вставляю такой же диск 8 Гб и включаю компьютер.
5. Восстановление массива
Для того чтобы удостовериться что диск sdb работает и имеет размер не меньше чем sda нужно ввести команды :

Код: Выделить всё

fdisk /dev/sdb –l
fdisk /dev/sda –l
Изображение

На рисунке мы видим что sdb имеет точно такой же размер что и sda , но не имеет не одного раздела.
Теперь нам надо сделать таблицу разделов на sdb идентичную таблице разделов на sda . Для этого мы воспользуемся утилитой sfdisk . Вводим команду :

Код: Выделить всё

sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Изображение

Этим самым мы создали на диске sdb таблицу разделов идентичную таблице разделов на диске sda.
Теперь нам необходимо каждый раздел диска sdb включить в наш массив. Если вы помните , то на нашем примере SWAP это sdb1 и md0 , Система это sdb2 и md1 а домашний каталог это sdb3 и md2.

Для включения разделов воспользуемся утилитой mdadm . И так для начала я собираю SWAP область для чего ввожу команду:

Код: Выделить всё

mdadm --manage /dev/md0 --add /dev/sdb1
Так как раздел не настолько велик и в основном пустует , то зеркальная копия информации s sda1 на sdb1 скопируется мгновенно. Для проверки можете набрать команду :

Код: Выделить всё

mdadm --detail /dev/md0
Изображение

Теперь я собираю разделы домашнего каталога и системные разделы, для чего ввожу команды :

Код: Выделить всё

mdadm --manage /dev/md1 --add /dev/sdb2

Код: Выделить всё

mdadm --manage /dev/md2 --add /dev/sdb3
Но не торопитесь , если у вас размер разделов приличный , то для копирования информация потребуется определённое время . Для мониторинга копирования вы можете набрать команду :

Код: Выделить всё

cat /proc/mdstat
Изображение

Из рисунка мы видим что для наш раздел md2 восстановлен ещё только на 9,3% . При больших и плотных объёмах придётся подождать.
После завершения объединения-восстановления всех разделов не забудьте установить заргрузчик на новый диск. В моём примере я выполнил команду

Код: Выделить всё

grub-install /dev/sdb
Помните я создавал для примера текстовый файл ? Этот файл теперь должен так же быть зеркально скопирован на sdb. И так проверим ? Отключаем в этот раз диск sda от разъёма SATA 0 и включаем компьютер . Если у вас загрузилась ОС , то вы всё сделали верно и правильно , поздравляю вас !
Теперь заходим в наш домашний каталог и смотрим . Текстовый документ и папка присутствуют. Открываем текстовый документ :

Изображение
CPU -AMD Phenom II X6 1100T Black Edition (HDE00ZF) 3.3 ГГц
MEM -SAMSUNG DDR-III DIMM 4Gb <PC3-10600> x4 - 16Гб
OC - Linux Debian 6.0.1 amd_64

Мой сервер CS:GO [NO-STEAM] : 46.48.26.209:27022

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#2 Сообщение 24.09.2011, 14:46

Замечательно. Замечания есть, в основном по мелочи. Но одно значительно - не следует создавать два раздела swap и собирать их в рейд. Если оба раздела будут активны, то система сама разберётся, как эффективней использовать swap-пространство и организует массив.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

zoobeen
Нович0к
Нович0к
Сообщения: 1
Зарегистрирован: 06.06.2012

#3 Сообщение 06.06.2012, 17:01

А где картинки?)))

Ответить