Post navigation

Задание 1 (Установка ОС и настройка LVM, RAID)

  1. Создайте новую виртуальную машину, выдав ей следующие характеристики:

    • 1 gb ram
    • 1 cpu
    • 2 hdd (назвать их ssd1, ssd2 и назначить равный размер, поставить галочки hot swap и ssd)
    • SATA контроллер настроен на 4 порта:
  2. Начать установку Linux и дойдя до выбора жестких дисков сделать следующее:

    • Partitioning method: manual, после чего вы должны увидеть такую картину:
    • Настройка отдельного раздела под /boot: Выберите первый диск и создайте на нем новую таблицу разделов:
      • Partition size: 512M
      • Mount point: /boot
    • Повторите настройку для второго диска, но поскольку одновременно монтировать 2 раза /boot нельзя, то выберите mount point: none в итоге получив следующее (картинка с косяком, переделывать лень):
    • Настройка RAID:
    • Выберите свободное место на первом диске и настройте в качестве типа раздела physical volume for RAID
    • Выберите «Done setting up the partition»
    • Повторите точно такую же настройку для второго диска, в результате получив следующее:
    • Выберите пункт «Configure software RAID»
      • Create MD device
      • Software RAID device type: Выберите зеркальный массив
      • Active devices for the RAID XXXX array: Выбрать оба диска
      • Spare devices: Оставить 0 по умолчанию
      • Active devices for the RAID XX array: выбрать разделы, которые вы создавали под raid
      • Finish
    • В итоге вы должны получить такую картину:
    • Настройка LVM: Выберите Configure the Logical Volume Manager
    • Keep current partition layout and configure LVM: Yes
    • Create volume group
    • Volume group name: system
    • Devices for the new volume group: Выберите ваш созданный RAID
    • Create logical volume
      • logical volume name: root
      • logical volume size: 2\5 от размера вашего диска
    • Create logical volume
      • logical volume name: var
      • logical volume size: 2\5 от размера вашего диска
    • Create logical volume
      • logical volume name: log
      • logical volume size: 1\5 от размера вашего диска
    • Выбрав Display configuration details вы должны получить следующую картину:
    • Завершив настройку LVM вы должны увидеть следующее:
    • Разметка разделов: по-очереди выберите каждый созданный в LVM том и разметьте их, например, для root так:
      • Use as: ext4
      • mount point: /
    • Результат разметки корневого раздела должен получиться таким:
    • Повторите операцию разметки для var и log выбрав соответствующие точки монтирования (/var и /var/log вручную ввести), получив следующий результат:
    • Выберите Finish Partitioning
    • Вам зададут несколько вопросов, про то что у вас остался несмонтированный раздел и не настроен swap. Следует ответить отрицательно на оба вопроса.
    • Финальный результат должен получиться вот таким:
  3. Закончить установку ОС, поставив grub на первое устройство (sda) и загрузить систему.

  4. Выполните копирование содержимого раздела /boot с диска sda (ssd1) на диск sdb (ssd2)

  5. Выполнить установку grub на второе устройство:

    • Посмотреть диски в системе:

    • Перечислите все диски которые вам выдала предыдущая команда и опишите что это за диск.
    • Найдите диск на который не была выполнена установка grub и выполните эту установку:

    • Просмотрите информацию о текущем raid командой cat /proc/mdstat и запишите что вы увидели.
    • Посмотрите выводы команд: pvs, vgs, lvs, mount и запишите что именно вы увидели.

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

После выполнения этого задания рекомендуется сохранить резервную копию папки с виртуальной машиной или сделать vagrant box.

Результат: Виртуальная машина с дисками ssd1, ssd2.

Собираем программный RAID в Linux

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

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

Перед сборкой массива, диски, в моем случае два диска по 1Tb, за ранее подключаем к компьютеру.

Для работы с массивами в Linux необходимо установить утилиту администрирования и контроля программного RAID — mdadm

Запускаем терминал.

Обновляем информацию о пакетах

Устанавливаем утилиту

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

если утилита стоит вы увидите примерно такой текст

Узнаем информацию о подключенных дисках

Проверяем идентификаторы дисков которые будем использовать, их принадлежность

В данном случае, видим два диска sdb и sdc.

Их идентификаторы будут /dev/sdb и /dev/sdc, соответственно.

Из этих дисков и будем создавать массив Raid-1.

Создаем RAID массив

/dev/md0 — имя нашего будущего рейда

—livel=1 — уровень рейда, в нашем варианте собираем RAID1, если собираете RAID2 то ставим =2, ну и так далее

—raid-devices=2 — количество дисков используемых в рейде, ну и далее перечисляются их имена

После ввода команды будет вопрос

Continue creating array ? — соглашаемся, введя Y и нажимаем Enter

Если сделали все правильно, начнется процесс зеркалирования дисков.

Проверить статус можно командой

Мониторинг процесса удобно отслеживать с помощью команды

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

Желательно дождаться окончания процесса.

Создаем и монтируем файловую систему в нашем RAID

Созданный массив должен иметь свою файловую систему, так как в данном случае linux, очевидно, что это будет ext4

Создаем ее командой

/dev/md0 — имя нашего созданного массива.

Создаем точку в которую будем монтировать наш массив

/mnt/md0 — точка куда будем монтировать наш массив

Теперь можно смонтировать массив /dev/md0 в нашу ранее созданную директорию /mnt/md0

Проверить доступно ли новое пространство можно командой

В моем случае массив md0 смонтирован в /mnt/Arhiv использовано 10%

Сохраняем наш программный RAID

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

Настраиваем автоматическую сборку рейда при запуске системы.

Информацию, о нашем созданном рейде, необходимо записать в файл /etc/mdadm/mdadm.conf

Выполним команду которая сделает это автоматически

В результате в файл mdadm.conf будет сделана запись о сформированном RAID. Если открыть этот файл в блокноте то выглядеть это будет примерно так

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

Для автоматического монтирования нашего диска /dev/md0 в нашу ранее созданную директорию /mnt/md0, нам необходимо так же зделать запись в файл /etc/fstab

В результате будет сделана запись в файл fstab. Если открыть этот файл в блокноте то выглядеть это будет примерно так

Теперь можете перезагружать систему. После перезагрузки ваш RAID массив должен быть там куда вы его смонтировали.

Всем Удачи!

Установить Mdadm

Лучший способ создать RAID-массив в Linux — использовать инструмент Mdadm. Mdadm — это утилита командной строки, которая позволяет быстро и легко управлять устройствами RAID. К сожалению, это программное обеспечение по умолчанию не входит в состав большинства дистрибутивов. Если вы хотите его использовать, вам необходимо установить его вручную.

Откройте терминал и следуйте инструкциям, которые соответствуют вашей операционной системе Linux.

Общий Linux

Большинство дистрибутивов Linux имеют доступ к Mdadm и упаковывают его для своих пользователей. Тем не менее, если вы не можете найти программу в репозитории пакетов вашего дистрибутива Linux, есть другой способ: сборка из исходного кода. Следуйте приведенным ниже инструкциям, чтобы узнать, как заставить Mdadm работать.

Шаг 1. Перейдите на страницу Mdadm GitHub и узнайте, какие зависимости необходимы программе для правильной компиляции.

Шаг 2. Клонируйте исходный код с помощью команды git.

git clone https://github.com/neilbrown/mdadm
cd mdadm

Шаг 3: Скомпилируйте код с помощью команды make.

make

Шаг 4: Установите Mdadm в Linux с помощью команды make install.

sudo make install

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

cat /proc/mdstat

Personalities :

md3 : active raid0 sdb4 sda4

          581006592 blocks 64k chunks

md1 : active raid1 sdb1 sda1

          88256 blocks [2/2]

Команды

С помощью mdadm можно выполнять 7 групп операций:

Create — создание RAID-массива из нескольких дисков (с суперблоком на каждом устройстве).

Assemble — сборка (ранее созданного) массива и его активация. Диски из которых собирается массив могут указываться явно или будет выполнен их автоматический поиск. mdadm проверяет, образуют ли компоненты корректный массив.

Build  — объединение дисков в массив (без суперблоков). Для таких массивов mdadm не различает создание и последующую сборку. Также невозможно проверить, были ли указаны необходимые устройства в верном порядке. Не используйте этот режим, если вы не знаете зачем это нужно.

Manage — Управление массивом: добавление новых свободных дисков (spares) и удаление неработоспособных (faulty devices).

Follow/Monitor — Следить за одним или несколькими md-устройствами и реагировать на изменение их состояния. Это имеет смысл только для массивов уровней 1, 4, 5, 6 или multipath-массивов, так так только они могут иметь различные состояния. raid0 или linear не могут иметь недостающих, запасных или сбойных дисков, поэтому там не за чем следить.

Grow — расширение или уменьшение размера (shrink) массива, либо иное его реформирование (reshape). На данный момент поддерживается изменение активного размера компонентов в RAID-массивах уровней 1/4/5/6, а также изменение количества активных устройств в RAID1.

Misc  — прочие операции с независимыми дисками. Например: просмотр и модификация суперблоков массива и остановка активных массивов.

Получение информации о RAID-диске и его разделах

Для определения того, является ли устройство массивом или его частью, можно использовать утилиту mdadm с ключом -Q (—query). Указанные в этом разделе операции относятся к группе прочих, но указывать ключ (—misc) не обязательно. Ключ -Q также можно не указывать — если в параметрах mdadm указано только дисковое устройства, то этот ключ подразумевается по умолчанию.

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

mdadm -Q /dev/sde2
/dev/sde2: is not an md array /dev/sde2: device 6 in 8 device undetected raid5 /dev/md2. Use mdadm —examine for more detail.

массив целиком

mdadm -Q /dev/md0
/dev/md0: 467.51GiB raid5 3 devices, 0 spares. Use mdadm —detail for more detail.

Более подробную информацию о массиве в целом или его части можно получить используя соответственно ключи -D (—detail) и -E (—examine).

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

Причем, массив должен быть запущен, а для раздела это не важно — главное, чтобы он был частью хоть какого-либо массива.
mdadm -D /dev/md0
/dev/md0: Version : 00.90.03 Creation Time : Tue Jan 22 20:41:09 2008 Raid Level : raid5 Array Size : 490223232 (467.51 GiB 501.99 GB) Used Dev Size : 245111616 (233.76 GiB 250.99 GB) Raid Devices : 3 Total Devices : 3 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Mar 25 10:52:30 2008 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : 3d40658b:58e8e3bb:f2dc72f0:8ce9d084 Events : 0.12 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1

Восстановление RAID при сбое, замена диска

Если у вас вышел из строя или повредился один из дисков в RAID-массиве, его можно заменить другим. Для начала определим, поврежден ли диск и какой диск нам следует менять.

Personalities : 
md0 : active raid1 vdb
20954112 blocks super 1.2 [2/1] 

Из листинга команды, вы видим, что только один диск активен. Так же о проблеме говорит . Когда оба диска рабочие, вывод будет .

Подробная информация о RAID-массиве также показывает, что естт проблемы:

/dev/md0:
Version : 1.2
Creation Time : Tue Oct 29 12:39:22 2019
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Oct 29 14:41:13 2019
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1

– данная строка указывает на то, что диск в raid-массиве поврежден.

В нашем случае нужно заменить неисправный диск /dev/vdc. Для восстановления массива, нужно удалить нерабочий диск и добавить новый.

Удаляем неиспраный диск:

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

Восстановление диска запустится автоматически после добавления нового диска:

/dev/md0:
Version : 1.2
Creation Time : Tue Oct 29 12:39:22 2019
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Oct 29 14:50:20 2019
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Rebuild Status : 69% complete
Name : server.vpn.ru:0 (local to host server.vpn.ru)
UUID : 9d59b1fb:7b0a7b6d:15a75459:8b1637a2
Events : 42
Number Major Minor RaidDevice State
0 253 16 0 active sync /dev/vdb
2 253 48 1 spare rebuilding /dev/vdd

— показывает текущее состояние восстановления массива.

— показывает какой диск добавляется к массиву.

После восстановления массива, листинг по дискам выглядит так:

State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Creating a RAID 1 Array

The RAID 1 array type is implemented by mirroring data across all available disks. Each disk in a RAID 1 array gets a full copy of the data, providing redundancy in the event of a device failure.

  • Requirements: minimum of 2 storage devices
  • Primary benefit: Redundancy
  • Things to keep in mind: Since two copies of the data are maintained, only half of the disk space will be usable

Identify the Component Devices

To get started, find the identifiers for the raw disks that you will be using:

As you can see above, we have two disks without a filesystem, each 100G in size. In this example, these devices have been given the and identifiers for this session. These will be the raw components we will use to build the array.

Create the Array

To create a RAID 1 array with these components, pass them in to the command. You will have to specify the device name you wish to create ( in our case), the RAID level, and the number of devices:

If the component devices you are using are not partitions with the flag enabled, you will likely be given the following warning. It is safe to type y to continue:

The tool will start to mirror the drives. This can take some time to complete, but the array can be used during this time. You can monitor the progress of the mirroring by checking the file:

As you can see in the first highlighted line, the device has been created in the RAID 1 configuration using the and devices. The second highlighted line shows the progress on the mirroring. You can continue the guide while this process completes.

Create and Mount the Filesystem

Next, create a filesystem on the array:

Create a mount point to attach the new filesystem:

You can mount the filesystem by typing:

Check whether the new space is available by typing:

The new filesystem is mounted and accessible.

Save the Array Layout

To make sure that the array is reassembled automatically at boot, we will have to adjust the file. You can automatically scan the active array and append the file by typing:

Afterwards, you can update the initramfs, or initial RAM file system, so that the array will be available during the early boot process:

Add the new filesystem mount options to the file for automatic mounting at boot:

Your RAID 1 array should now automatically be assembled and mounted each boot.

Создание и сборка массива

Весь этот процесс состоит из нескольких этапов:

  • делаем разметку двух дисков sdb и sdc одинакового объёма, задаём тип разделов Linux RAID
  • собираем зеркало из разделов
  • форматируем массивы
  • монтируем и проверяем работу
  • подключаем в автозагрузку — прописываем в /etc/fstab

В первую очередь необходимо установить mdadm.

В Gentoo:

# emerge sys-fs/mdadm

В CentOS Stream:

# yum install mdadm

В Debian:

# apt install mdadm

В Ubuntu Server 20.10 уже есть, здесь ничего дополнительно устанавливать не нужно.

Теперь переходим к разметке диска sdb:

# cfdisk /dev/sdb

Зададим таблицу разделов GPT, создаём 2 раздела sdb1 и sdb2 и тип этих разделов Linux RAID

Теперь копируем структуру диска sdb на диск sdc утилитой sfdisk:

# sfdisk -d /dev/sdb | sfdisk /dev/sdc

Проверяем:

# fdisk -l /dev/sdb
# fdisk -l /dev/sdc

Затем создаём массивы md1 и md2 с первым и вторым разделами каждого диска соответственно:

# mdadm --create --verbose /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdc1
# mdadm --create --verbose /dev/md2 -l 1 -n 2 /dev/sdb2 /dev/sdc2
  • l — уровень RAID (для зеркала нам нужен RAID 1, соответственно наше значение будет 1)
  • n — количество дисков (так как у нас 2 диска, значит наше значение будет 2)

Теперь необходимо подождать, когда закончится синхронизация. Промониторить это можно командой

# cat /proc/mdstat

После окончания синхронизации запишем конфиг массивов.

Для Gentoo и CentOS:

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

а для Debian и Ubuntu Server:

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

После этого отформатируем созданные массивы в ext4:

# mkfs.ext4 /dev/md1
# mkfs.ext4 /dev/md2

Теперь создадим каталоги /mnt/data, /mnt/data/part1 и /mnt/data/part2

# mkdir /mnt/data /mnt/data/part{1,2}

примонтируем массивы: /dev/md1 — в /mnt/data/part1, а /dev/md2 -в /mnt/data/part2

# mount /dev/md1 /mnt/data/part1
# mount /dev/md2 /mnt/data/part2

Получить подробную информацию по массиву можно с помощью команды:

# mdadm --detail /dev/md1
# mdadm --detail /dev/md2

Размонтировать массивы можно командой:

# umount /mnt/data/part{1,2}

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

# nano /etc/fstab
/dev/md1 /mnt/data/part1 ext4 noatime 1 0
/dev/md2 /mnt/data/part2 ext4 noatime 1 0

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

# mdadm /dev/md1 --fail /dev/sdc1
# mdadm /dev/md1 --remove /dev/sdc1
# mdadm /dev/md1 --add /dev/sdd1

Действия при выходе одного жёсткого диска из строя[править]

Если один жёсткий диск вышел из строя, то загрузите операционную систему (она будет работать и на одном диске), зайдите под пользователем root и проделайте следующее:

1. Посмотрите, что сломалось:

# cat /proc/mdstat 
Personalities :  
md1 : active raid1 sda2
      4723008 blocks [2/1] 
      
md0 : active (auto-read-only) raid1 sda1
      513984 blocks [2/1] 

Из вывода видно, что диск sdb недоступен: U_ показывает отсутствие второго раздела под RAID.

2. Подключаем диск и копируем таблицу разделов с диска sda на диск sdb. Также перечитаем скопированную таблицу разделов для ядра. Пример для таблицы разделов MBR:

# dd if=/dev/sda of=/dev/sdb bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00682677 s, 75.0 kB/s
# hdparm -z /dev/sdb

/dev/sdb:
 re-reading partition table

Вместо hdparm можно использовать команду partprobe без параметров.

В случае GPT нужно копировать 2048 байт в начале диска (bs=2048), следом нужно запустить parted и подтвердить «починку» второй копии GPT, и уже тогда перечитывать ядром таблицу томов.

3. Добавляем разделы со второго диска к RAID-массиву:

# mdadm /dev/md0 -a /dev/sdb1
mdadm: added /dev/sdb1
# mdadm /dev/md1 -a /dev/sdb2
mdadm: added /dev/sdb2

4. Смотрим, что получилось:

# cat /proc/mdstat 
Personalities :  
md1 : active raid1 sdb2 sda2
      4723008 blocks [2/1] 
        recovery =  0.6% (32064/4723008) finish=9.7min speed=8016K/sec
      
md0 : active raid1 sdb1 sda1
      513984 blocks [2/2] 
      
unused devices: <none>

Всё нормально: md0 уже засинхронизировался, md1 в процессе синхронизации.

5. Через некоторое время (точнее — 10 минут, смотрите значение finish на этапе 4) смотрим ещё раз:

# cat /proc/mdstat
Personalities :  
md1 : active raid1 sdb2 sda2
      4723008 blocks [2/2] 
      
md0 : active raid1 sdb1 sda1
      513984 blocks [2/2] 
      
unused devices: <none>

Теперь RAID полностью восстановлен.

6. Обязательно восстанавливаем загрузчик, для lilo:

# lilo
Added ALTLinux *
Added failsafe
The Master boot record of  /dev/sda  has been updated.
Warning: /dev/sdb is not on the first disk
The Master boot record of  /dev/sdb  has been updated.
One warning was issued.

или для grub2:

# grub-autoupdate
Updating grub on /dev/sdb
Installation finished. No error reported.
Updating grub on /dev/sda
Installation finished. No error reported.

и или для grub2:

# grub-install /dev/sda
Установка завершена. Ошибок нет.
# grub-install /dev/sdb
Установка завершена. Ошибок нет.
# update-grub

Тестируем производительность RAID при помощи Iozone

является инструментальным средством тестирования, с помощью которого можно измерять различные дисковые операции ввода/вывода, в том числе чтение/запись в случайном порядке, последовательное чтение/запись и повторное чтение/повторную запись. Он позволяет экспортировать результаты в файл Microsoft Excel или LibreOffice Calc.

Включите . Затем:

# yum install iozone 

Установка пакета Iozone на Debian 7

# aptitude install iozone3 

Команда iozone, указанная ниже, выполнит все тесты с массивом RAID-10:

# iozone -Ra /dev/md0 -b /tmp/md0.xls 
  • -R: генерирует результат в виде отчета в формате, совместимом с Excel.
  • -a: запускает команду iozone в полностью автоматическом режиме с выполнением всех тестов и с записью записей/файлов всех необходимых размеров. Размеры записей: 4k-16M; и размеры файлов: 64k-512М.
  • -b /tmp/md0.xls: указывает сохранять результаты тестирования в определенном файле.

Надеюсь, что эта статья окажется полезной. Вы можете добавить свои размышления или посоветовать, как улучшить производительность RAID 10.

Средняя оценка 5 при 1 голосовавших

Параметры, влияющие на производительность

stripe_cache_size

Значение по умолчанию – 256, диапазон от 32 до 32768, при этом увеличение хотя бы до 8192 сильно помогает скорости записи:

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

Внимание: измеряется в , и может быть очень прожорливо в плане потребления ОЗУ. При вышеуказанном значении , размере страницы памяти в 4096 байт (используемом в ядре Linux на x86 и x86-64) и четырёх дисках в RAID, потребление памяти составит:

8192 * 4096 * 4 = 134217728 байт (128 мегабайт)

Write Intent Bitmap

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

Write intent bitmaps with Linux software RAID — blog.liw.fi

Эффект можно уменьшить, использовав большее значение параметра (см. ), например я сейчас использую . Можно также практически полностью исключить его, использовав bitmap во внешнем файле – на диске, не входящем в массив. Для раздела, где будет храниться файл с bitmap, автором рекомендуется файловая система ext2 или ext3, однако и при размещении его на XFS каких-либо проблем не возникало.

mdadm --grow --bitmap=internal --bitmap-chunk=131072 /dev/md0

mkfs.ext4 -E stride=,stripe_width=

Важно правильно задать при создании ФС эти параметры, если забыли — ничего страшного, можно и позже их поменять с помощью .

  • mkfs.ext3 RAID stride calculation

  • Calculating EXT2 EXT3 EXT4 stride size when using RAID

  • http://alephnull.com/benchmarks/sata2009/stride.html

XFS пытается определить соответствующие значения автоматически, если у неё не получается – см. на предмет и .

Chunk size

Задаётся при создании массива, параметром mdadm . Изменить в уже работающем массиве – крайне долгая, и вероятно не вполне безопасная операция, требующая, к тому же, самой свежей версии (3.1) и достаточно нового ядра (2.6.31+).

Дефолтным значением в старых было 64K, в новых – стало 512K. По мнению автора , “512K новым дискам подходит лучше”, по моему – не всё так однозначно. Пока что предпочитаю продолжить использование 64K.

  • http://louwrentius.blogspot.com/2010/05/raid-level-and-chunk-size-benchmarks.html

Другим автором по результатам тестов рекомендуется размер в 128K:

http://alephnull.com/benchmarks/sata2009/chunksize.html

Read-Ahead

# Посмотреть текущий:
blockdev --getra /dev/md?

#Поменять:
blockdev --setra <новое значение в секторах (512 байт)> /dev/md?

Экспериментов с этим пока не проводил, скорость чтения с массива (на трёхдисковом RAID5, достигающая суммы линейной скорости двух дисков) устраивает и так.

Installing Arch Linux on RAID

Note: The following section is applicable only if the root filesystem resides on the array. Users may skip this section if the array holds a data partition(s).

You should create the RAID array between the Partitioning and steps of the Installation Procedure. Instead of directly formatting a partition to be your root file system, it will be created on a RAID array.
Follow the section to create the RAID array. Then continue with the installation procedure until the pacstrap step is completed.
When using UEFI boot, also read .

Update configuration file

Note: This should be done outside of the chroot, hence the prefix to the filepath.

After the base system is installed the default configuration file, , must be updated like so:

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

Always check the configuration file using a text editor after running this command to ensure that its contents look reasonable.

Continue with the installation procedure until you reach the step , then follow the next section.

Configure mkinitcpio

Note: This should be done whilst chrooted.

Add to the section of the to add support for mdadm into the initramfs image:

/etc/mkinitcpio.conf
...
 HOOKS=(base udev autodetect keyboard modconf block mdadm_udev filesystems fsck)
...

If you use the hook with a FakeRAID array, it is recommended to include mdmon in the array:

/etc/mkinitcpio.conf
...
BINARIES=(mdmon)
...

Then Regenerate the initramfs.

See also .

Note: Every time when you make changes to , the initramfs needs to be regenerated.

Root device

Point the parameter to the mapped device. E.g.:

root=/dev/md/MyRAIDArray

If booting from a software raid partition fails using the kernel device node method above, an alternative way is to use one of the methods from Persistent block device naming, for example:

root=LABEL=Root_Label

See also .

RAID0 layout

Note: This also affects existing mdraid RAID0 users that upgrade from an older version of the Linux kernel to 5.3.4 or newer.

raid0.default_layout=2

The correct value depends upon the kernel version that was used to create the raid array: use if created using kernel 3.14 or earlier, use if using a more recent version of the kernel. One way to check this is to look at the creation time of the raid array:

mdadm --detail /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Thu Sep 24 10:17:41 2015
        Raid Level : raid0
        Array Size : 975859712 (930.65 GiB 999.28 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Thu Sep 24 10:17:41 2015
             State : clean
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : archiso:root
              UUID : 028de718:20a81234:4db79a2c:e94fd560
            Events : 0

    Number   Major   Minor   RaidDevice State
       0     259        2        0      active sync   /dev/nvme0n1p1
       1     259        6        1      active sync   /dev/nvme2n1p1
       2     259        5        2      active sync   /dev/nvme1n1p2

Here we can see that this raid array was created on September 24, 2015. The release date of Linux Kernel 3.14 was March 30, 2014, and as such this raid array is most likely created using a multizone layout ().

Известные проблемы[править]

Частая ошибка при создании RAID устройств заключается в том, что dmraid-driver берет управление над всеми устройствами, которые должны были использоваться в новом RAID устройстве.
Будет выдано сообщение об ошибке такого вида

mdadm: Cannot open /dev/sdb1: Device or resource busy 

Чтобы решить эту проблему, вы должны собрать новый образ initrd(initramfs) без dmraid-driver.
Пример для ядра «2.6.18-8.1.6.el5»-kernel:

mkinitrd --without-dmraid /boot/NO_DMRAID_initrd-2.6.18-8.1.6.el5.img 2.6.18-8.1.6.el5

После этого, система должна быть перезагружена с новым initrd(initramfs). Отредактируйте ваш /boot/grub/grub.conf чтобы указать новый initrd(initramfs).

Если по каким-то причинам собрать новый образ initrd(initramfs) нет возможности, может помочь команда

dmsetup remove_all

Если один из компонентов массива переходит в статус «Failed», то обычно помогает его ручное удаление из массива, а затем – добавление заново. Например:

mdadm --manage /dev/md1 --remove /dev/sdd1
mdadm --manage /dev/md1 --add /dev/sdd1

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

mdadm --manage /dev/md0 --remove /dev/sda1 

необходимо сначала пометить его как поврежденный

mdadm /dev/md0 -f /dev/sda1 

после уже удалить его

mdadm /dev/md0 -r /dev/sda1 

и вновь добавить

mdadm /dev/md0 -a /dev/sda1

При повторении этой ситуации следует проверить дисковый накопитель на исправность.

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

mdadm: cannot find /dev/sda1: No such file or directory

Решение: удалить все диски удаленные из системы.

mdadm /dev/md0 -r detached

Implementation

The RAID devices can be managed in different ways:

Software RAID
This is the easiest implementation as it does not rely on obscure proprietary firmware and software to be used. The array is managed by the operating system either by:
  • by an abstraction layer (e.g. );
    Note: This is the method we will use later in this guide.
  • by a logical volume manager (e.g. );
  • by a component of a file system (e.g. ZFS, ).
Hardware RAID
The array is directly managed by a dedicated hardware card installed in the PC to which the disks are directly connected. The RAID logic runs on an on-board processor independently of the host processor (CPU). Although this solution is independent of any operating system, the latter requires a driver in order to function properly with the hardware RAID controller. The RAID array can either be configured via an option rom interface or, depending on the manufacturer, with a dedicated application when the OS has been installed. The configuration is transparent for the Linux kernel: it does not see the disks separately.
FakeRAID

Which type of RAID do I have?

Since software RAID is implemented by the user, the type of RAID is easily known to the user.

However, discerning between FakeRAID and true hardware RAID can be more difficult. As stated, manufacturers often incorrectly distinguish these two types of RAID and false advertising is always possible. The best solution in this instance is to run the command and looking through the output to find the RAID controller. Then do a search to see what information can be located about the RAID controller. Hardware RAID controllers appear in this list, but FakeRAID implementations do not. Also, true hardware RAID controller are often rather expensive, so if someone customized the system, then it is very likely that choosing a hardware RAID setup made a very noticeable change in the computer’s price.

Troubleshooting

If you are getting error when you reboot about «invalid raid superblock magic» and you have additional hard drives other than the ones you installed to, check that your hard drive order is correct. During installation, your RAID devices may be hdd, hde and hdf, but during boot they may be hda, hdb and hdc. Adjust your kernel line accordingly. This is what happened to me anyway.

Error: «kernel: ataX.00: revalidation failed»

If you suddenly (after reboot, changed BIOS settings) experience Error messages like:

Feb  9 08:15:46 hostserver kernel: ata8.00: revalidation failed (errno=-5)

Is does not necessarily mean that a drive is broken. You often find panic links on the web which go for the worst. In a word, No Panic. Maybe you just changed APIC or ACPI settings within your BIOS or Kernel parameters somehow. Change them back and you should be fine. Ordinarily, turning ACPI and/orACPI off should help.

Start arrays read-only

When an md array is started, the superblock will be written, and resync may begin. To start read-only set the kernel module parameter . When this is set, new arrays get an ‘auto-ro’ mode, which disables all internal io (superblock updates, resync, recovery) and is automatically switched to ‘rw’ when the first write request arrives.

Note: The array can be set to true ‘ro’ mode using before the first write request, or resync can be started without a write using .

To set the parameter at boot, add to your kernel line.

Or set it at module load time from file or from directly from :

# echo 1 > /sys/module/md_mod/parameters/start_ro

Recovering from a broken or missing drive in the raid

You might get the above mentioned error also when one of the drives breaks for whatever reason. In that case you will have to force the raid to still turn on even with one disk short. Type this (change where needed):

# mdadm --manage /dev/md0 --run

Now you should be able to mount it again with something like this (if you had it in fstab):

# mount /dev/md0

Now the raid should be working again and available to use, however with one disk short. So, to add that one disc partition it the way like described above in . Once that is done you can add the new disk to the raid by doing:

# mdadm --manage --add /dev/md0 /dev/sdd1

If you type:

# cat /proc/mdstat

you probably see that the raid is now active and rebuilding.

You also might want to update your configuration (see: ).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: