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

Тема в разделе "Linux", создана пользователем altiu, 18 янв 2012.

  1. altiu

    altiu

    Сообщения:
    96
    Симпатии:
    58
    Доброго всем времени !

    В этой теме я хотел бы рассказать и показать на примере создание 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 и они опять будут работать в паре. Ну а теперь реализуем всё это.

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]
    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    И так продолжим , нажимаем настройка программного RAID

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]
    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    Обязательно устанавливайте загрузчик.

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

    Код:
    cat  /proc/mdstat
    [​IMG]

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

    Код:
    mdadm --detail /dev/md0
    [​IMG]

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

    Код:
    mdadm --detail /dev/md2
    [​IMG]

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

    Код:
    cd /etc/default/
    nano grub
    [​IMG]

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

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

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

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

    Код:
    update-grub
    [​IMG]

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

    Код:
    grub-install /dev/sdb
    [​IMG]

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

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

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

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

    Код:
    cat /proc/mdstat
    [​IMG]

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

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

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

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

    Код:
    mdadm --detail /dev/md1
    [​IMG]

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

    [​IMG]

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

    Для того чтобы удостовериться что диск sdb работает и имеет размер не меньше чем sda нужно ввести команды :

    Код:
    fdisk /dev/sdb –l
    fdisk /dev/sda –l
    [​IMG]

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

    Код:
    sfdisk -d /dev/sda | sfdisk --force /dev/sdb
    [​IMG]

    Этим самым мы создали на диске 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
    [​IMG]

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

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

    Код:
    cat /proc/mdstat
    [​IMG]

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

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

    MFS

    Сообщения:
    1.310
    Симпатии:
    537
    Автора забыл прописать: kolobok66rus
     
  3. altiu

    altiu

    Сообщения:
    96
    Симпатии:
    58
    Ну так скажем что он это я или как вам удобней , я это он .... Не буду объяснять причину , почему тут ник другой получился ...

    С уважением Алексей !
     
    MFS нравится это.