Программный RAID под Linux
Введение
Это руководство посвящено установке, настройке и администрированию mdadm программного RAID в системах Linux.Предпосылками
- Установленная ОС Linux
- Выделенный сервер с несколькими дисками
- Корневой доступ
Шаг 1 - Подготовка
Сначала вы должны подумать о том, какую систему RAID вы хотите запустить. Это зависит от цели и количества дисков, установленных на самом сервере.Примечание. RAID не следует рассматривать как резервную копию данных, поскольку он не обеспечивает защиту от потери данных. Это только увеличивает доступность данных.
Шаг 1.1 - Выбор уровня RAID
Выбор правильного уровня RAID не прост и зависит от нескольких факторов:- Сколько дисков у сервера?
- Каковы твои цели?
- Больше места для хранения / меньше доступности
- Более высокая доступность / Меньше места для хранения
RAID0 :
Если существует группа из двух или более разделов, разделы логически объединяются в один раздел. Здесь доступность уменьшается. Если один из дисков неисправен автоматически, все данные будут потеряны .
- профессионал
- Объединяет доступное пространство для хранения.
- Увеличивает производительность диска.
- против
- В случае сбоя диска данные всех дисков будут потеряны.
Если существует группа из двух или более разделов, данные зеркально отображаются в каждом разделе.
- профессионал
- Увеличивает надежность / доступность данных.
- Увеличивает скорость чтения данных.
- против
- Доступное пространство для хранения уменьшено вдвое.
Группа из трех или более разделов, в которой данные отражаются в двух из трех разделов. Так называемые «четности» хранятся на третьем разделе, с помощью которого можно восстанавливать данные на неисправных дисках в RAID.
Узнайте больше о RAID5
- профессионал
- Повышенная надежность / доступность данных.
- Оптимальное использование хранилища
- Увеличивает скорость чтения данных.
- против
- Меньшая производительность при доступе к записи
- Линейный: объединить несколько разделов
- Multipath: нет RAID, но сопоставление файла двум разным путям в одном разделе (зеркалирование).
- Faulty: эмулирует неисправную систему RAID для тестовых случаев
- Уровень 4: как и уровень 0, но с дополнительным устройством для битов четности (повышенная надежность).
- Уровень 6: как и уровень 5, но с двумя независимыми битами четности на сегмент (повышенная надежность).
Шаг 1.2 - Список дисков в системе
Для краткого и понятного списка всех доступных блочных устройствlsblk
можно использовать команду . Вот пример вывода:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 232.9G 0 disk
├─sda1 8:1 0 10G 0 part /
├─sda2 8:2 0 208.1G 0 part /home/han/data
<font color=#38B0DE>-=─sda3=- Proudly Presents
sr0 11:0 1 1024M 0 Rome
fdisk -l
могут быть использованы. Вот пример вывода:Disk /dev/sda: 80.0 GByte, 80026361856 Byte
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinder of 16065 × 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x92669266
Device boot. Start End Blocks Id System
/dev/sda1 * 1 1305 10482381 83 Linux
/dev/sda2 1306 3977 21462840 83 Linux
/dev/sda3 4508 9729 41945715 83 Linux
/dev/sda4 3978 4507 4257225 82 Linux Swap / Solaris
Примечание . Для программного RAID-массива необязательно добавлять весь диск в RAID-массив. Отдельных разделов достаточно.
Шаг 2 - Создание программного RAID
Шаг 2.1 - Подготовка дисков
Сначала диски должны быть отформатированы соответственно.Создайте новую пустую таблицу разделов на диске:
- Для больших 2 ТБ накопителей или ПК с UEFI:
sudo parted /dev/sda mklabel gpt
- Для дисков меньше 2 ТБ и BIOS:
sudo parted /dev/sda mklabel msdos
sudo parted -a optimal -- /dev/sda mkpart primary 2048s -8192s
Подсказка : 8192 сектора в конце диска намеренно оставлены неиспользованными для подготовки к сбоям. Это позволяет вам использовать диски с несколькими секторами в качестве замены из-за свободного места.Отметьте вновь созданный раздел как раздел RAID:
sudo parted /dev/sda set 1 raid on
Шаг 2.2 - Создание программного RAID
Под Linuxmdadm
это основной инструмент. Это интерфейс к функциям RAID ядра.Для создания RAID 1 достаточно следующей команды:
sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sda1 /dev/sdb2
sudo mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sda1 /dev/sdb2 /dev/sdc3 /dev/sdd4
--create /dev/md0
- Создает новую конечную точку с именем md0. Если конечные точки с таким именем уже существуют, выберите другое свободное имя (md1, md2 и т. Д.).--auto md
- Создает «классическую» конечную точку без предварительного разбиения.--level=
- Тип уровня RAID.--raid-devices
- Количество отдельных устройств, из которых должен состоять RAID./dev/sde1 /dev/sde2 ...
- Отдельные устройства для объединения. Порядок идентификаторов или, в идеале, идентификаторов соответствующих физических устройств, должен быть записан, если RAID необходимо собрать вручную в чрезвычайной ситуации.
mdX
можно использовать немедленно, а систему можно также выключить или перезапустить в течение этого времени. Текущий статус создания RAID можно узнать с помощью следующей команды:watch cat /proc/mdstat
Personalities : [raid0] [raid1]
mdX : active raid1 sda1[1] sdb1[0]
8384448 blocks super 1.2 [2/2] [UU]
[==============>.......] check = 74.7% (6267520/8384448) finish=0.1min speed=202178K/sec
sudo mkfs.ext4 /dev/md0
sudo mount /dev/mdX /mnt/md0
Здесь соответствующая строка должна быть введена в файл
/etc/fstab
:/dev/mdX /mnt/md0 xt4 defaults 0 2
(Необязательно) Диски Hotspare : Диски / разделы Hotspare - это те, которые обычно не используются. Они используются, если один из активных дисков / разделов системы RAID имеет ошибку или неисправен. Если в программном рейде не определен диск горячего резервирования, восстановление поврежденного RAID-массива необходимо запустить вручную. Если имеется горячий резерв, восстановление будет начато автоматически. Горячий резервный диск можно добавить с помощью следующей команды.
mdadm --add /dev/md/X /dev/sdX1
Шаг 3 - Удаление программного RAID
Чтобы удалить программный RAID, необходимо выполнить следующие шаги:- Остановите RAID:
sudo umount /dev/md0 sudo mdadm --stop /dev/md0
- Удалить записи автоматического монтирования (например
/etc/fstab
) - Удалить записи RAID в
mdadm.conf
. - Удалить суперблок используемых разделов:
sudo mdadm --zero-superblock /dev/sda1 /dev/sdb1
- Отключить флаг RAID:
sudo parted /dev/sda set 1 raid off
Шаг 4 - Управление программным RAID
Шаг 4.1 - Получить статус RAID
Краткий список всех RAID-массивов в системе можно получить с помощью вывода файла/proc/mdstat
.Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[1] sda1[0]
8380416 blocks super 1.2 [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
536739840 blocks super 1.2 [2/2] [UU]
bitmap: 3/4 pages [12KB], 65536KB chunk
md1 : active raid1 sdb2[1] sda2[0]
1047552 blocks super 1.2 [2/2] [UU]
unused devices: <none>
sudo mdadm --detail /dev/md/2
/dev/md/2:
Version : 1.2
Creation Time : Fri Feb 22 17:19:37 2019
Raid Level : raid1
Array Size : 536739840 (511.88 GiB 549.62 GB)
Used Dev Size : 536739840 (511.88 GiB 549.62 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Sun May 26 13:49:02 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : bitmap
Name : rescue:2
UUID : c76e5446:f3c41fbc:0b62ca86:803a7e88
Events : 2170
Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 8 19 1 active sync /dev/sdb3
Шаг 4.2 - Заменить неисправный диск
Для этого сначала необходимо удалить неисправный диск из RAID:sudo mdadm --manage /dev/md/0 -r /dev/sda1
Для разбиения нового диска достаточно скопировать таблицу разделов с существующего диска.
Для разделенных на MBR дисков:
sfdisk --dump /dev/sda > sda_parttable_mbr.bak # Backs up partition table
sfdisk -d /dev/sda | sfdisk /dev/sdb # Copy partition table from sda to sdb
sgdisk --backup=sda_parttable_gpt.bak /dev/sda # Create a backup of the partition table
sgdisk --load-backup=sda_parttable_gpt.bak /dev/sdb # Copy the created backup of the partition table to sdb
sudo mdadm --manage /dev/md/0 -a /dev/sda1
faulty
:sudo mdadm --manage --set-faulty /dev/md/0 /dev/sda1
watch cat /proc/mdstat
.Как только восстановление RAID завершено, раздел должен быть удален из RAID и добавлен снова, чтобы удалить состояние «неисправен». Это делается с помощью команд:
sudo mdadm --manage /dev/md/0 -r /dev/sda1 # To be removed
sudo mdadm --manage /dev/md/0 -a /dev/sda1 # To be added again
* * Примечание . Если система находится на самом RAID-массиве, необходимо установить загрузчик на соответствующий диск. Это делается с помощью следующей команды:update grub && grub-install /dev/sda
Шаг 4.3 - Расширить RAID
Только RAID с уровнями 1, 5 и 6 могут быть расширены.Новый раздел должен быть сначала добавлен в качестве горячего резерва:
sudo mdadm /dev/md0 --add /dev/sda1
sudo mdadm --grow --raid-devices=5 /dev/md0 --backup-file=/root/md0.bak
Примечание : в указанном файлеФайловая система должна быть расширена, чтобы можно было использовать только что созданное пространство хранения. Расширение происходит с помощью следующих команд:--backup-file
сохраняются критические области (обычно несколько МБ). Если во время расширения происходит сбой системы, расширение можно продолжить позже, используя следующую команду:Файл резервной копии не должен быть расположен на RAID, чтобы быть расширенным! Использованиеsudo mdadm /dev/md0 --continue --backup-file=/tmp/md0.bak
backup-file
не обязательно, но настоятельно рекомендуется.
sudo umount /dev/md0 /mnt # Unmount the file system
sudo fsck.ext4 -f /dev/md0 # Force the check, even if it has recently been checked
sudo resize2fs /dev/md0 # Extend file system to maximum size
sudo mount /dev/md0 /mnt # Mount the file system again
Шаг 4.4 - RAID-мониторы
Для мониторинга RAID эта запись может быть сохранена как crontab (sudo crontab -e
):0 0 * * * /usr/share/mdadm/checkarray --cron --all --quiet >/dev/null 2>&1 # Runs every day at 00:00 AM
Вывод
В этой статье мы рассказали, как выбрать подходящий уровень RAID для вашего проекта, а затем настроить его в системах Linux, используяmdadm
. Кроме того, будут обсуждаться административные задачи, такие как расширение RAID или замена неисправных жестких дисков.
Комментариев 0