В этой статье я поделюсь шагами по настройке программного рейда, то есть линейного рейда, который очень похож на RAID 0 с небольшими отличиями, которые мы рассмотрим в следующих главах. Я написал еще одну статью со сравнением и различием между различными типами RAID с использованием цифр, включая плюсы и минусы отдельных типов RAID, чтобы вы могли принять обоснованное решение, прежде чем выбирать тип RAID для своей системы.
Если вы используете несколько дисков в неизбыточной конфигурации и хотите иметь возможность что-то восстанавливать при сбое любого из дисков, то, по крайней мере, вам нужно убедиться, что ваши данные не распределены по всем устройствам. При использовании чередующейся разметки части большинства файлов окажутся на всех дисках, а это означает, что при потере любого диска вы безвозвратно теряете части почти каждого файла, не говоря уже о частях самих структур файловой системы. Это означает, как вы, кажется, уже догадались, что вам нужно использовать линейное распределение, которое, по сути, объединяет экстенты составляющих устройств вместе и дает вам некоторый шанс восстановить файлы, которые полностью существуют на выживших устройствах после сбоя устройства.
Для линейного RAID требуется как минимум два диска, но не требуется, чтобы диски-участники были одного размера или типа. Поскольку система записывает на каждый диск до тех пор, пока он не заполнится, скорость и размер отдельных дисков практически не имеют значения с точки зрения совокупной производительности RAID.
Создание линейного массив RAID
Я добавил два виртуальных диска (/dev/sdb и /dev/sdc) к моей виртуальной машине для демонстрации этой статьи. Пока на этих дисках нет доступных разделов.
[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 27.5G 0 part
├─centos-root 253:0 0 25.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 4G 0 disk
sdc 8:32 0 4G 0 disk
sr0 11:0 1 1024M 0 rom
Важные правила разметки
Вот некоторые моменты, которые следует помнить при разбиении.
- Если вам не требуется автоопределение и вы планируете использовать целые диски в качестве членов массива, вам не нужно разделять диски-участники по отдельности.
- Установите для разделов тип Linux Raid Auto (0xFD), если вы хотите, чтобы ядро автоматически запускало массивы во время загрузки. В противном случае оставьте их как Linux (0x83).
- Массивы RAID-0 и линейные RAID-массивы могут содержать разделы разного размера без потери места на диске. Помните, что когда меньшие диски, принадлежащие RAID-0, заполняются, чередуются только оставшиеся диски. Таким образом, вы можете увидеть переменную производительность на RAID-0 с дисками-участниками разного размера по мере заполнения массива.
- Использование согласованных дисков настоятельно рекомендуется при работе с любым нелинейным RAID-массивом.
Разметка с помощью fdisk
Вам не нужно разбивать диски перед их использованием в массиве, но разбиение на разделы дает несколько преимуществ.
- Разбиение на разделы необходимо, если вы хотите, чтобы ядро автоматически запускало массивы, потому что драйвер md использует тип раздела для идентификации дисков-членов.
- Устройства md не поддерживают разбиение на разделы напрямую, но в некоторых случаях наличие файловой системы, охватывающей весь массив, нежелательно. Использование программного RAID для системных разделов означает, что необходимы разделы меньшего размера. В конце концов, вы же не хотите, чтобы /var или /boot охватывали весь массив.
Далее мы начнем создавать разделы на наших дисках /dev/sdb и /dev/sdc с помощью fdisk.
[root@node1 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xbea244e4.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-8388607, default 2048): ⇐ Я нажал Enter, оставив значение по умолчанию
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-8388607, default 8388607): ⇐ Я нажал Enter, оставив значение по умолчанию
Using default value 8388607
Partition 1 of type Linux and of size 4 GiB is set
Command (m for help): t ⇐ Изменить тип раздела
Selected partition 1
Hex code (type L to list all codes): l ⇐ Список доступных типов разделов
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): fd ⇐ Измените тип раздела выбранного раздела на fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): w ⇐ Сохраните изменения
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Далее мы повторим те же шаги для /dev/sdc
[root@node1 ~]# fdisk /dev/sdс
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xbea244e4.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-8388607, default 2048): ⇐ Я нажал Enter, оставив значение по умолчанию
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-8388607, default 8388607): ⇐ Я нажал Enter, оставив значение по умолчанию
Using default value 8388607
Partition 1 of type Linux and of size 4 GiB is set
Command (m for help): t ⇐ Изменить тип раздела
Selected partition 1
Hex code (type L to list all codes): l ⇐ Список доступных типов разделов
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): fd ⇐ Измените тип раздела выбранного раздела на fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): w ⇐ Сохраните изменения
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Обновите таблицу разделов в ядре
[root@node1 ~]# partprobe
Теперь проверьте доступные разделы на вашем узле и проверьте изменения. Итак, теперь у нас есть два новых раздела /dev/sdb1 и /dev/sdc1 для настройки программного рейда линейного режима.
[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 27.5G 0 part
├─centos-root 253:0 0 25.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 4G 0 disk
└─sdb1 8:17 0 4G 0 part
sdc 8:32 0 4G 0 disk
└─sdc1 8:33 0 4G 0 part
sr0 11:0 1 1024M 0 rom
Создайте линейный программный RAID
Чтобы создать программный рейд в линейном режиме, выполните приведенную ниже команду.
[root@node1 ~]# mdadm -Cv -llinear -n2 /dev/md0 /dev/sd{b,c}1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Или вы также можете использовать длинную версию этой команды для создания линейного рейда.
# mdadm --create --verbose --level=linear --raid-devices=2 /dev/md0 /dev/sdb1 /dev/sdc1
Здесь,
-C, --create
Create a new array.
-v, --verbose
Be more verbose.
-l, --raid-level
Select the RAID level: linear, 0, 1, 4, or 5.
-n, --raid-disks
Set the number of member disks in the array.
mdadm автоматически активирует вновь созданные линейные массивы рейдов. Информация о массиве и его дисках теперь доступна через псевдофайл /proc/mdstat.
[root@node1 ~]# cat /proc/mdstat
Personalities : [linear]
md0 : active linear sdc1[1] sdb1[0]
8380416 blocks super 1.2 0k rounding
unused devices: <none>
Создаем файловую систему
Затем создайте файловую систему на новом программном RAID-массиве. Мы создадим файловую систему ext4 на нашем линейном рейд-массиве.
[root@node1 ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
524288 inodes, 2095104 blocks
104755 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2145386496
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Создаем точку монтирования
Создайте точку монтирования для доступа к программному рейд-массиву.
[root@node1 ~]# mkdir /linear_raid
Затем смонтируйте массив рейдов в созданный каталог.
[root@node1 ~]# mount /dev/md0 /linear_raid/
Проверьте статус монтирования, который также дает более подробную информацию о точке монтирования, доступном пространстве и т. д.
[root@node1 ~]# df -h /linear_raid/ Filesystem Size Used Avail Use% Mounted on /dev/md0 7.8G 36M 7.3G 1% /linear_raid
Затем добавьте запись для массива в файл /etc/fstab, чтобы он автоматически монтировался при перезапуске системы.
[root@node1 ~]# tail -n 1 /etc/fstab
/dev/md0 /linear_raid ext4 defaults 0 0
Проверьте изменения программного рейда
После перезагрузки проверьте статус рейда
[root@node1 ~]# cat /proc/mdstat
Personalities : [linear]
md0 : active linear sdc1[1] sdb1[0]
8380416 blocks super 1.2 0k rounding
unused devices: <none>
[root@node1 ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jun 10 16:28:24 2019
Raid Level : raid1
Array Size : 2094080 (2045.00 MiB 2144.34 MB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Jun 10 16:32:08 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : node1.golinuxcloud.com:0 (local to host node1.golinuxcloud.com)
UUID : cdde32cb:6150eddb:35ab33ee:faba0154
Events : 17
Надеюсь, что шаги из статьи по настройке программного RAID с использованием линейного RAID в Linux были полезны. Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.
Если есть вопросы задавайте их в комментариях. Понравилась статья? Расскажите о ней друзьям в социальных сетях.