Управление дисковыми ресурсами на примере windows linux raid массивы

Linux: mdadm and Disks

Creating a software RAID 1 array in Linux takes all of two terminal commands. In Linux, the program mdadm (we like to pronounce it «madam»), is what we’ll use to set up the array.

First things first: You need to get the RAID software. You’ll need to download and install mdadm from your software repository. It’s pretty common, and is included in most software repos. In Ubuntu, type the following command:

sudo apt-get install mdadm

Unless you’re planning on running an email server, don’t worry about installing all of the extras for Postfix.

The command will install mdadm for you, along with a dependency called Postfix. Postfix is a SMTP service that sends email. Postfix is included so that if a drive fails or something else happens to your array, the system can alert you with an email. That’s great for IT administrators, but Postfix can be a bit of a bear to set up, so you can just set the program to use no configuration if you like.

Once mdadm is all set up, all you need to do is use the following command:

sudo mdadm —create /dev/md X —level=1 —raid-devices=[ number of drives ] [ drive name ] [ drive name ] [ etc ]

Keep up to date with the most important stories and the best deals, as picked by the PC Gamer team.

The above command will vary based on the size of your array, and how you’d like to name it. RAID devices are generally named /dev/mdX where X is the index of the array. If you only have one array, it’s a good idea to use 0 or 1 . Drive names can be any valid Linux device path. Common examples use /dev/sda or /dev/disk/by-uuid/[UUID] . Once you create your array, you’ll have to wait while the drives synchronize, which may take several minutes.

GNOME’s Disks application (gnome-disk-utility) will display information about your RIAD array once it’s created.

If you’re not sure how Linux has identified your drives, you can use lsblk to identify them:

lsblk -o name,model,mountpoint,size

The command lsblk will show you the drives and storage devices you have connected to your system, and what device names Linux has assigned to them. The drives we used for our RAID array are outlined in red.

You can also create RAID arrays in Linux using the GNOME disk utility. In Ubuntu, search for «Disks» and open the utility. On the left side of the window, click the checkbox above the list of drives. Then, select the drives you want to use to create an array and click Create RAID .

While it’s faster to create a RAID array from the terminal, you can create RAID arrays from GNOME’s Disks application as well.

Software RAID 1 offers an advantage to Linux users who set up an array with mdadm : If you read more than one file at once, each drive can fetch a separate file, giving a net boost to read operations. The caveat is that this boost will only really show up in multi-threaded applications like web servers, and won’t apply to most desktop use cases. Still, it’s a nice perk for Linux users.

Using onboard FakeRAID

Onboard FakeRAID is harder to set up, but is your only real choice if you want your RAID array to be accessible to both Windows and Linux. You can also install an OS on top of a FakeRAID array. However, if you’re only planning on using the RAID array from one OS, you’re better off using the OS-based software solutions described above.

Once your drives are physically installed, boot into your BIOS by tapping the key prompted on startup. The message will say «Press DEL to enter Setup…» or something similar.

Once you’re in your BIOS, look for an option called «SATA mode.» This option is in different places for each motherboard manufacturer, so refer to your user manual if you can’t find it. Once you’ve found the setting, change the setting from AHCI to RAID. This will let your onboard RAID software know that there are possible RAID devices to be started. When you’re done, save and reboot.

If you’re trying to enable FakeRAID with Windows already installed, Windows won’t like that the SATA mode has changed. The OS will get grumpy and prompt you to reinstall Windows. You can, however, get around Windows’ termpermental nature with a few steps. If you already changed the mode from AHCI to RAID and got the error, boot into the BIOS and change it back to AHCI. From inside Windows, open a command line using cmd and type in the following:

bcdedit /set {current} safeboot minimal

Then, reboot back into the BIOS and make the change. Once you’ve booted back into Windows, open up a command line again and type the following:

bcdedit /deletevalue {current} safeboot

Reboot once again, and Windows should be satiated.

In your BIOS, change the SATA mode from AHCI to RAID. Every BIOS is different, so the option may not appear as it does here.

On the next boot, you have to get into the RAID software to set up your arrays. If you have an Intel RAID controller, you should be prompted to hit CTRL+I to start the Intel Rapid Storage Technology (RST) RAID software. The software varies by vendor, so consult your motherboard manual on entering the RAID utility.

In Intel’s RST menu, you should see some options and a list of hard drives on your system. Select «Create RAID Volume.»

When you first start Intel RST, you disks will all be Non-RAID Disks.

On the next screen, give the RAID array a name and hit Enter. In the next field, use the up and down arrow keys to select the RAID level labeled «RAID 1 (Mirror)» and hit Enter again.

When creating your array, select «RAID1 (Mirror).»

Hit Enter again to create the volume. Confirm that you’re OK with wiping everything off the disks in your array by typing Y .

Back on the home screen, you’ll see a RAID volume, with the status of the disks used in the array changed from «Non-RAID disk» to «Member Disk.» Use the down arrow to select Exit to save and exit the software.

After creating your array, you’ll see the array name and the disks listed as «Member.»

On the next boot, your FakeRAID array will appear as a single disk to the operating system. Additionally, RST will display the status of your RAID disks during the boot process, before the operating system loads.

While RAID 1 isn’t a replacement for a backup, it is an excellent addition to any data resilience strategy.

Current page:

Page 2

Prev Page Page 1

Alex first built a PC so he could play Quake III Arena as a young lad, and he’s been building desktop PCs ever since. A Marine vet with a background in computer science, Alex is into FOSS and Linux, and dabbles in the areas of security and encryption. When he’s not looking up console Linux commands or enjoying a dose of Windows 10-induced schadenfreude, he plays with fire in his spare time.

Photo by Mirko Blicke on Unsplash

Software RAID in Windows, macOS, and Linux

Solid Foundation

If RAID hardware is missing on your server, Windows, Linux, and macOS offer various options for building software RAID.

Windows, Linux, and macOS offer a wide range of alternatives for creating software RAID data storage. However, RAID as a software solution does not make sense in some cases because the performance is less than optimal and parity information is not calculated by a dedicated processor. Additionally, it does not support hot swap – that is, the ability to replace hard drives on the fly. Hardware solutions are generally recommended for RAID (redundant array of independent disks) systems, but sometimes admins might find software RAID on their servers useful.

Software RAID in Windows

In addition to storage pools, legacy disks, spanned volumes, and striped volumes, Windows Server allows you to create a software-based RAID5 system, as well as a mirrored volume that requires two hard drives to which all information is written and from which you can boot. If you are creating a disk that spans more than one physical drive, you need to select the disks that you want to include when defining the drive type. For the configuration, use the Disk Management tool, which you launch by calling diskmgmt.msc. For software RAID in Windows Server 2019, you can also use the resilient filesystem (ReFS). Creating and managing software RAID will be similar to using NTFS, with the benefit of the higher stability of ReFS.

Setting Up Disks

After initializing, you can view and set up the volumes in Disk Manager. If you are configuring a specific storage system, such as software RAID or a storage pool, and you need to convert a hard drive, you are automatically prompted. Once the disks are established, you can set them up with logical drives. The drives, simply referred to as «Disk 0,» «Disk 1,» and so on, in Windows Server, can be created with the New Simple Volume
option in the context menu of the free space you

Use Express-Checkout link below to read the full article (PDF).

Buy this article as PDF

Express-Checkout as PDF

Price $2.95
(incl. VAT)

TABLET & SMARTPHONE APPS

US / Canada

UK / Australia

Related content

  • Linux Software RAID

    Manage storage by building software RAID with the Linux 
    mdadm command.

  • Tuning SSD RAID for optimal performance

    Hardware RAID controllers are optimized for the I/O characteristics of hard disks; however, the different characteristics of SSDs require optimized RAID controllers and RAID settings.

  • Building a virtual NVMe drive

    An economical and high-performing hybrid NVMe SSD is exported to host servers that use it as a locally attached NVMe device.

  • Creating Virtual SSDs

    An economical and high-performing hybrid NVMe SSD is exported to host servers that use it as a locally attached NVMe device.

  • RAID Inc. Announces New RAID Solution

comments powered by

Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs



Support Our Work

ADMIN content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Отчет о том как мы мигрировали с Windows raid0 на Linux raid5, какие подводные камни встретили и как их преодолевали.

Предистория. Отдел дизайна обслуживается файловым сервером под управлением Windows 2003. Изначально он проектировался для обмена данными, но со временем его стали использовать для долговременного хранения файлов, несмотря на то что у него программный raid0. Наступило время очередного обновления оборудования. После закупки «неожиданно» выяснилось что на новой материнской плате Windows 2003 не стартует, производитель драйвера не выпускает и рекомендует использовать более новую версию Windows, что неприемлемо по лицензионным соображениям.

В итоге было принято два решения:

  • Перенести сервер в виртуальную машину под KVM
  • Использовать для хранения данных raid5

Вопросов по виртуализации нет — делалось не раз. Основная проблема это нулевой рейд, организованный средствами Windows. Было потрачено время на попытку примонтировать windows-raid0 в linux — не удалось, несмотря на описания в интернете того что это возможно.

Вторая проблема: на Windows сервере винчестеров для raid0 два, по 2TB каждый, весь массив заполнен данными и скопировать их некуда. Новых винчестеров купили тоже два но уже по 3TB. Руководство отдела изначально хотело их присоединить к имеющемуся нулевому рейду и получить виртуальный диск для хранения данных в 10TB.

Путем объяснения удалось убедить в неправильности такого подхода, но убедить докупить третий винчестер на 3TB не удалось, поэтому решили действовать в последовательности:

1) Собрать raid5 с одним отсутствующим винчестером

mdtest# mdadm --create /dev/md4 -l 5 -n 3 /dev/sda1 /dev/sdb1 missing

2) Передать raid5 в Windows и его средствами скопировать данные

3) По завершению копирования из оставшихся дисков собрать raid0 и передать его в качестве третьего блочного устройства в raid5

mdtest# mdadm --create /dev/md3 -l 0 -n 2 /dev/sdc1 /dev/sdd1
mdtest# mdadm --add /dev/md4 /dev/md3

Оттестировали данный вариант в виртуальной машине с меньшим объемом данных — все получается замечательно, по завершению теста имеем raid5, проводим несколько жестких перезагрузок, отключаем-включаем виртуальные винчестеры — рейд живет как и положено — самовосстанавливается и потерь данных нет.

Очень смущает то что, после того как скопированы данные, имеется деградированный массив и он восстанавливается за счёт двух винчестеров с которых они были скопированы, в случае сбоя на этом этапе — полная потеря всей информации. Значит нужно данные где-то предварительно забэкапить. Но все осложняется тем что из свободных винчестеров есть только два по 1TB. Обстановка накаляется, утром данные на сервере должны быть как минимум в доступе на чтение.

Ревизия других серверов показала что у нас есть сервер с 2TB свободного места, это спасает ситуацию, мы можем сохранить образ одного из двух 2TB винчестеров и на этапе восстановление raid5 использовать его в страйпе с винчестером на 1TB, в случае сбоя все данные в сохранности. Итоговая схема:

/dev/md3 - raid0: 1TB + 2TB
/dev/md4 - raid5: 2x3TB + /dev/md3

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

Собираем raid5 без одного винчестера, запускаем Windows 2003 под Linux в KVM, начинаем копирование и видим что скорость записи очень низкая 3-6МB/s, при этом запись из-под Linux на тот же деградированный raid5 (утроенного объема данных от оперативной памяти) прошло на средней скорости в 80MB/s, но из-за того что исходные данные можно скопировать только из под Windows это никак не помогает. Да мы знаем что скорость записи на деградированный raid5 снижается, но откуда такая разница между Linux и Windows.

Для теста попробовали из-под Windows копировать данные на одиночный диск — 100MB/s. Может реализация mdadm такова что Windows плохо себя чувствует в операциях на запись в raid? Маловероятно — у нас несколько Windows работают поверх raid1 собранных в mdadm. Эксперимента ради собрали raid1, скорость копирования из под Windows в тех же пределах что и на одиночный диск — примерно 100MB/s.

Наши ошибки в том что мы поверили статье где из контекста утверждалось: «изначально собранный в mdadm raid5 из двух винчестеров и одного отсутствующего является по реализации нулевым рейдом», а также то что тестирование мы проводили только под Linux, начни мы копирование во время тестов из-под Windows проблема была известна раньше.

Тестовая среда должна полностью повторять продуктивную.

Возвращаемся к тестам

Принимается решение собрать из двух 3TB винчестеров raid0, скопировать данные, а затем пересобрать этот массив в raid5.

1) Создаем raid0

mdtest# mdadm --create /dev/md4 -l 0 -n 2 /dev/sda1 /dev/sdb1

2) Копируем данные, на этот раз из-под Windows, скорость записи 60-100MB/s

3) Преобразуем raid0 в raid1

mdtest# mdadm /dev/md4 --grow --level=5
mdadm: level of /dev/md4 changed to raid5

Данная операция производится мгновенно mdadm -D /dev/md4 рапортует о том что у нас raid5

mdtest# mdadm -D /dev/md4
/dev/md4:
     Raid Level : raid5
   Raid Devices : 3
  Total Devices : 2
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
    Number   Major   Minor   RaidDevice State
       0     252        0        0      active sync   /dev/dm-0
       1     252        1        1      active sync   /dev/dm-1
       2       0        0        2      removed

4) Добавляем третье блочное устройство

mstest# mdadm --add /dev/md4 /dev/md3
mdadm: added /dev/md3

Смотрим статус:

mdtest# mdadm -D /dev/md4
/dev/md4:
     Raid Level : raid5
   Raid Devices : 3
  Total Devices : 3
          State : clean, degraded, recovering
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
 Rebuild Status : 2% complete
    Number   Major   Minor   RaidDevice State
       0     252        0        0      active sync   /dev/dm-0
       1     252        1        1      active sync   /dev/dm-1
       3     252        2        2      spare rebuilding   /dev/dm-2

Тесты завершены успешно.

Фактическая миграция

  1. Собрали mdadm-raid0 [md4] из двух 3TB винчестеров.
  2. В Windows скопировали на mdadm-raid0 данные с windows-raid0.
  3. Сохранили образ второго винчестера из windows-raid0 на соседнем сервере (2TB).
  4. Преобразовали mdadm-raid0 в mdadm-raid5.
  5. Собрали mdadm-raid0 [md3] из диска 1TB и второго диска из windows-raid0.
  6. Добавили в mdadm-raid5 третьим блочным устройством mdadm-raid0 [md3].
Примечания

Во время пересборки raid5, для ускорения проводилась оптимизация, stripe_cache_size был увеличен на максимум до 32768: echo 32768 > /sys/block/md4/md/stripe_cache_size. Write Intent Bitmap был отключен: mdadm --grow --bitmap=none /dev/md4.

Если windows-raid0 заполнен до предела, то на нем сильная фрагментация данных, проводить дефрагментацию на 4TB долго, мы вышли из положения копируя в несколько потоков программой Microsoft Richcopy

Очень толковое руководства по командам mdadm «Программный RAID в Linux».

mdadm – утилита для работы с программными RAID-массивами в Linux. В статье мы рассмотрим, как работать с утилитой mdadm (multiple disks admin) для создания массива, добавления дисков, управления дисками, добавление hot-spare и много другой полезной информации.

Содержание:

  • Установка утилиты управления программным RAID — mdadm
  • Создание RAID из 2-х дисков
  • Создание файловой системы на RAID, монтирование
  • Просмотр состояния, проверка целостности RAID массива
  • Восстановление RAID при сбое, замена диска
  • Добавление и удаление дисков в RAID массив на Linux
  • Добавление Hot-Spare диска в RAID массив
  • Удаление массива
  • Mdmonitor: Мониторинг состояния RAID и email оповещения
  • RAID массив в состоянии inactive

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

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

  • Для Centos/Red Hat используется yum/dnf:
    yum install mdadm
  • Для Ubuntu/Debian:
    apt-get install mdadm

В резульатте в системе будет установлена сама утилита mdadm и необходимые библиотеки:

Running transaction Installing : libreport-filesystem-2.1.11-43.el7.centos.x86_64 1/2 Installing : mdadm-4.1-1.el7.x86_64 2/2 Verifying : mdadm-4.1-1.el7.x86_64 1/2 Verifying : libreport-filesystem-2.1.11-43.el7.centos.x86_64 2/2 Installed:  

mdadm.x86_64 0:4.1-1.el7 Dependency Installed: libreport-filesystem.x86_64 0:2.1.11-43.el7.centos Complete!

Создание RAID из 2-х дисков

У меня на сервере установлены два дополнительных диска и я хочу содать на низ програмное зеркало (RAID1). Диски пустые, данные на них не писались. Для начала, нужно занулить все суперблоки на дисках, которые мы будем добавлять в RAID-массив:

# mdadm --zero-superblock --force /dev/vd{b,c}

У меня два есть два чистых диска vdb и vdc.

mdadm --zero-superblock - очистка дисков передо добавлением в raid

mdadm: Unrecognised md component device - /dev/vdb
mdadm: Unrecognised md component device - /dev/vdc

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

Чтобы собрать программный RAID1 из двух дисков в устройстве /dev/md0, используйтк команду:

# mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/vd{b,c}

Где «-l 1» — это тип массива, в нашем случае RAID1

А «-n 2«- это количество дисков, которое добавляется в массив.

Если нужно создать RAID0 в режиме страйп (stripe) для увеличения скорости чтения/записи данных за счет распараллеливания команд между несколькими физическими дисками, используйте команду:

# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/vdb /dev/vdc

RAID 5 из трех или более дисков:

# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/vdb /dev/ vdс /dev/vdd

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

mdadm - создать raid1 из 2-х дисков в Linux

Теперь при просмотре информации о дисках, мы видим наш массив:

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 20G 0 disk
├─vda1 253:1 0 512M 0 part /boot
└─vda2 253:2 0 19.5G 0 part /
vdb 253:16 0 20G 0 disk
└─md0 9:0 0 20G 0 raid1
vdc 253:32 0 20G 0 disk
└─md0 9:0 0 20G 0 raid1

Создание файловой системы на RAID, монтирование

Чтобы создать файловую систему ext4 на нашем RAID1 массиве из двух дисков, используйте команду:

# mkfs.ext4 /dev/md0

создать файловую систему ext4 на raid томе

Создадим директорию backup и примонтируем к ней RAID устройство:

# mkdir /backup
# mount /dev/md0 /backup/

# df -h

Filesystem Size Used Avail Use% Mounted on
 devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 44M 452M 9% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 20G 1.4G 19G 7% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/md0 20G 45M 19G 1% /backup

Массив смонтировался без ошибок. Чтобы не монтировать устройство каждый раз вручную, внесем изменения в fstab:

# nano /etc/fstab

/dev/md0 /backup ext4 defaults 1 2

fstab - авто-монтирование raid устройства в каталог

Просмотр состояния, проверка целостности RAID массива

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

#echo 'check' > /sys/block/md0/md/sync_action

После чего, нужно посмотреть вывод файла:

#cat /sys/block/md0/md/mismatch_cnt

Если в результате вы получаете 0, то с вашим массивом все в порядке:

проверка целостности raid в linux

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

#echo 'idle' > /sys/block/md0/md/sync_action

Чтобы проверить состояние всех RAID -массивов доступны на сервере, используйте команду:

# cat /proc/mdstat

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

В листинге команды, видим информацию о нашем ранее созданном raid.

Более подробную информацию о конкретном raid-массиве, можно посмотреть командой:

# mdadm -D /dev/md0

mdadm -D /dev/md0 - получить информацию о raid массиве в linux

Разберем основные пункты листинга команды:

  • Version – версия метаданных;
  • Creation Time – дата и время создания raid-массива;
  • Raid Level – уровень raid-массива;
  • Array Size – объем дискового пространства для raid-массива;
  • Used Dev Size – используемый объем для устройств;
  • Raid Device – количество дисков в raid-массиве;
  • Total Devices – количество добавленных в raid-массив дисков;
  • State – текущее состояние (clean – все ОК);
  • Active Devices — количество активных дисков в raid-массиве;
  • Working Devises — количество рабочих дисков в raid-массиве;
  • Failed Devices – количество устройств со сбоями в raid-массиве;
  • Spare Devices – количество запасных дисков в raid-массиве;
  • Consistency Policy — параметр задающий тип синхронизации после сбоя в raid-массиве, rsync — полная синхронизация после восстановления raid-массива (доступны режимы bitmap, journal, ppl);
  • UUID – идентификатор raid-массива

Краткую информацию можно посмотреть с помощью утилиты fdisk:

# fdisk -l /dev/md0

Disk /dev/md0: 21.5 GB, 21457010688 bytes, 41908224 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

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

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

# cat /proc/mdstat

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

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

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

# mdadm -D /dev/md0

/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

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

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

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

# mdadm /dev/md0 --remove /dev/vdc

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

# mdadm /dev/md0 --add /dev/vdd

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

# mdadm -D /dev/md0

/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

rebuild Status : 69% complete
— показывает текущее состояние восстановления массива.

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

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

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

Добавление и удаление дисков в RAID массив на Linux

Чтобы разобрать ранее созданный массив, нужно отмонтировать его :

# umount /backup

И выполнить команду:

# mdadm -S /dev/md0

mdadm: stopped /dev/md0

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

# mdadm -S /dev/md0

mdadm: error opening /dev/md0: No such file or directory

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

# mdadm --assemble —scan

mdadm --assemble —scan пересборка массива

Данная команда просканирует диски из разобранного или развалившегося RAID массива и по метаданным попробует собрать из них RAID.

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

# mdadm /dev/md0 --fail /dev/vdc

После чего диск можно будет удалить командой::

# mdadm /dev/md0 --remove /dev/vdc

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

# mdadm /dev/md0 --add /dev/vdd

Добавление Hot-Spare диска в RAID массив

Вы можете добавит в массив hot-spare диск для горячей замены при выходе из строя одного из активных дисков. Добавьте свободный диск в нужный массив:

# mdadm /dev/md0 --add /dev/vdc

После чего проверив статус raid-массива, мы увидим данный диск как spare:

mdadm - добавить hot-spare диск в raid массив

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

# mdadm /dev/md0 --fail /dev/vdb

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

mdadm - faulty - сбойный диск

Диск /dev/vdb помечен как нерабочий, а hot-spare диск стал одним из активных дисков RAID и запустился процесс восстановления.

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

Добавить пустой диск массиву:

# mdadm /dev/md0 --add /dev/vdb

Теперь данный диск будет отображаться как hot-spare, чтобы сделать его рабочим, расширим raid-массив:

# mdadm -G /dev/md0 —raid-devices=3

После чего запустится процесс пересборки массива:

mdadm - програмный raid linux spare rebuilding

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

Number Major Minor RaidDevice State
3 253 32 0 active sync /dev/vdc
2 253 48 1 active sync /dev/vdd
4 253 16 2 active sync /dev/vdb

Удаление массива

Если вы хотите безвозвратно удалить raid-массив, используйте следующую схему:

# umount /backup
– отмонтируем массив от директории

# mdadm -S /dev/md0
— останавливаем RAID устройство

После чего очищаем все суперблоки на дисках, из которых он был собран:

# mdadm --zero-superblock /dev/vdb
# mdadm --zero-superblock /dev/vdc

Mdmonitor: Мониторинг состояния RAID и email оповещения

Для мониторинга состояния RAID массива можно использовать службу mdmonitor. Сначала нужно создать файл /etc/mdadm.conf с конфигурацией текущего массива:

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

Конфигурационный файл mdadm.conf не создается автоматически. Его нужно создавать и актуализировать вручную.

В конце файла /etc/mdadm.conf добавьте email адрес администратора, на который нужно слать оповещения о проблемах с RAID:

MAILADDR [email protected]

Останолось перезапустить службу mdmonitor через systemctl:

# systemctl restart mdmonitor

После этого система будет оповещать вас по email об ошибках в mdadm и неисправных дисках.

RAID массив в состоянии inactive

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

# cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : inactive vdc[1] vdb[0]
20954112 blocks super
unused devices: <none>

В этом случае нужно остановить массив командой:

# mdadm --stop /dev/md0

И пересобрать его:

# mdadm --assemble --scan –force

Если массив прописан в /etc/fstab, нужно перемонтировать его командой:

# mount -a

Есть способы создания программного RAID на уже установленной ОС. В этом случае вам придется вручную скопировать таблицы всех разделов на новый диск, и вручную переместить содержимое системного диска на RAID из одного диска, очистить первый диск и добавить его в RAID, после чего поправить initramfs и загрузик GRUB. Поэтому все-таки лучше, если вы выберите режим установите CentOS на программный RAID при развертывании сервера.

Утилита mdadm упрощает работу с raid-массивами в Linux. В данной статье я описал основные моменты работы с данной утилитой, а также затронул самые частые вопросы, которые возникают при работе с raid-массивами через утилиту mdadm.

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

Для создания RAID массивов используются аппаратные специальные контроллеры. Однако создать RAID массив можно и без такого контролера. Такие массивы называются программными. В этой статье мы рассмотрим как создать программный RAID Linux.

Содержание статьи

  • Что такое RAID
  • Создание программного RAID в Linux

  • Выводы

Аббревиатура RAID расшифровывается как Redundant Array of Inexpensive Disks. С помощью этой технологии вы можете превратить несколько реальных жестких дисков в один виртуальный диск с увеличенным объемом и скоростью передачи данных. Но объем полученного диска и параметры его работы уже зависят от выбранного режима работы RAID. Доступны такие режимы:

  • RAID 0 — позволяет увеличить скорость записи. Все диски массива будут использоваться для записи данных, поэтому их скорости будут складываться. Например, если у вас есть три диска объемом 512 Гб и скоростью записи 200 Мб в секунду, то объединив их в RAID 0 вы получите виртуальный диск объемом 1,5 Тб и максимальной скоростью записи 600 Мб в секунду.
  • RAID 1 — этот режим увеличивает сохранность данных. Во время записи одни и те же данные пишутся параллельно на подключённые диски. В результате у вас будет несколько копий одних и тех же данных. Если один из дисков массива выйдет из строя, система продолжит работать, так как данные есть ещё и на другом диске. Например, если вы объедините два диска по 1 Тб в RAID 1, то получите один виртуальный диск с объемом 1 Тб.
  • RAID 10 — объединяет в себе два предыдущих варианта. Он может состоять как минимум из четырех дисков. В таком случае сначала создаются два массива RAID 1, а поверх них создается массив RAID 0 для увеличения производительности.

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

Создание программного RAID в Linux

Шаг 1. Установка mdadm

Для управления программными RAID массивами в Linux используется утилита mdadm. Для того чтобы установить её в Ubuntu или Debian выполните такую команду:

sudo apt install mdadm

Для установки утилиты в CentOS/Fedora/RedHat необходимо выполнить:

sudo yum install mdadm

Шаг 2. Подготовка дисков

Посмотреть список дисков, подключённых к системе можно с помощью команды lsblk:

lsblk

В этой статье я покажу как объединить три диска в RAID на примере дисков /dev/sda, /dev/sdb и /dev/sdc. Сначала необходимо определиться стоит ли размещать RAID непосредственно на диски или на разделы. Лучше выбрать разделы, так как это дает больше гибкости и безопасности. Во первых, операционная система может перезаписать суперблок RAID если он размещён прямо на диске. Во вторых, если вы выделяете весь диск под RAID, то у вас могут возникнуть проблемы при замене диска. Диски одинакового объема, обычно, немного отличаются у разных производителей. Поэтому для замены вам придется искать точно такой же диск с точно таким же реальным объемом. Если же у вас будет раздел, вы просто сможете создать раздел нужного объема.

Сначала нужно создать таблицу разделов на всех выбранных дисках:

sudo parted /dev/sda mklabel msdos
sudo parted /dev/sdb mklabel msdos
sudo parted /dev/sdc mklabel msdos

Если на диске уже существует таблица разделов программа предупредит о том, что создание новой сотрёт все данные с диска. После создания таблицы разделов следует создать по разделу на каждом диске. Например, создадим разделы размером 460 гигабайт. Для этого можно воспользоваться той же командой parted:

sudo parted /dev/sda mkpart primary ext4 2048 460Gb
sudo parted /dev/sdb mkpart primary ext4 2048 460Gb
sudo parted /dev/sdc mkpart primary ext4 2048 460Gb

Теперь диски готовы к размещению на них RAID:

Шаг 3. Создание RAID 0

Для создания RAID массива надо выполнить команду mdadm с опцией —create, указать режим работы массива, количество дисков и сами диски. Синтаксис команды такой:

$ sudo mdadm —create /dev/имя_массива —level=режим_работы —raid-devices=количество_устройств список устройств

Например:

sudo mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

После выполнения этой команды вы увидите раздел raid в lsblk. С этим разделом можно работать как с любым обычным разделом в вашей системе.

Шаг 4. Тестирование RAID 0

Давайте для примера отформатируем полученный раздел в файловую систему Ext4, смонтируем и попробуем записывать туда файлы:

sudo mkfs -t ext4 /dev/md0
sudo mount /dev/md0 /mnt

Затем можно тестировать скорость с помощью dd:

sudo dd if=/dev/zero of=/mnt/file bs=1G count=5

Как видите, при записи 5 Гб данных мы получаем скорость 400 Мб/сек, это уже на уровне обычного SSD.

Шаг 5. Информация о RAID

Найти информацию обо всех созданных в системе RAID массивах вы можете в файле /proc/mdstat:

cat /proc/mdstat

Именно так можно посмотреть RAID Linux. Посмотреть более детальную информацию о массиве /dev/md0 можно с помощью самой утилиты mdadm:

sudo mdadm --detail /dev/md0

Здесь в том числе отображается состояние RAID Linux. Посмотреть детальную информацию о каждом устройстве, которое входит в RAID можно с помощью опции —examine:

sudo mdadm --examine /dev/sda1 /dev/sdb1 /dev/sdc1

Шаг 6. Сохранение RAID массива

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

sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf

Затем нужно пересоздать initramfs с поддержкой этого массива:

sudo update-initramfs -u

С полученным массивом можно обращаться как с обычным разделом диска. Например, для того чтобы автоматически монтировать его в систему добавьте такую строчку в /etc/fstab:

sudo vi /etc/fstab

/dev/md0 /mnt/ ext4 defaults 0 0

На этом создание raid массива linux завершено.

Шаг 7. Переименование RAID массива

Если вы не выполните предыдущий пункт и перезагрузите компьютер, то можете получить RAID массив с именем md127 вместо md0, такое имя также может быть присвоено второму RAID массиву. Для того чтобы переименовать массив, его придется пересобрать. Для этого сначала остановите существующий массив:

sudo mdadm --stop /dev/md127

Затем выполните команду переименования. Синтаксис у неё такой:

$ sudo mdadm —assemble —update=name —name=номер /dev/md_номер список устройств

Например:

sudo mdadm --assemble --update=name --name=0 /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1

После этого следует повторить предыдущий шаг для уже правильного сохранения RAID устройства.

Шаг 8. Удаление RAID массива

Если вы не хотите чтобы ваши диски и дальше были объединены в RAID, его можно удалить. Для этого выполните такую команду:

sudo mdadm --remove /dev/md0

Она удалит все метаданные с дисков /dev/md0. Дальше останется только удалить или закомментировать секцию данного RAID массива в /etc/mdadm/mdadm.conf

sudo vi /etc/mdadm/mdadm.conf

Шаг 10. Создание массива RAID 1

Теперь вы знаете как создать raid linux на примере RAID 0. Давайте ещё разберемся с RAID 1. Для создания RAID 1 используется такая же команда как и для RAID 0, но указывается другой уровень работы массива:

sudo mdadm --create /dev/md0 --level=1 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

Затем вы можете убедится что RAID создан посмотрев информацию о нём:

sudo mdadm --detail /dev/md0

Ну и с помощью lsblk можно оценить размер устройства:

lsblk

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

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

Выводы

В этой статье мы рассмотрели как создать программный RAID в Linux. Как видите здесь нет ничего очень сложного. Может и программный RAID не такой производительный, как аппаратный, зато полностью решает задачи объединения дисков.

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Попытка ссылки на несуществующий токен windows 10 принтер
  • Windows installer service cannot be accessed
  • Midi устройства windows 10
  • Что такое контроллер универсальной последовательной шины usb windows 7
  • Windows 11 tweaks github