Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Администрирование систем Linux. Знакомство с технологией RAID

Оригинал: Introduction to RAID
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 30 марта 2015 г.

Глава 10. Знакомство с технологией RAID

10.1. Аппаратная или программная реализация

Избыточный массив независимых (а в оригинале недорогих) дисков (Redundant Array of Inedependent (Inexpensive) Disks) или RAID-массив может быть реализован аппаратно или программно. Аппаратный RAID-массив обходится более дорого, но позволяет достичь более высокой производительности. Программный RAID-массив более дешев и прост в управлении, но использует ресурсы центрального процессора и оперативной памяти вашего компьютера.

Десять лет назад никто не мог поспорить с утверждением о том, что аппаратный RAID-массив является более удачным решением, но положение дел изменилась после оптимизации таких технологий, как mdadm, lvm или даже zfs с целью упрощения методики управления используемыми дисками. Хотя программные RAID-массивы и оказывают значительную нагрузку на центральный процессор, следует принимать во внимание и тот факт, что в течение последних лет производительность центральных процессоров неуклонно возрастала.

10.2. Уровни RAID-массивов

10.2.1. Дисковый массив RAID 0

В рамках дискового массива RAID 0 используются два или большее количество дисков, а сам массив обычно называется дисковым массивом с чередованием (stripping, stripe set или stripe volume). Данные разделяются на фрагменты, которые равномерно распределяются по каждому из дисков массива. Главное преимущество дискового массива RAID 0 заключается в возможности создания виртуальных дисков большего размера. Дисковый массив RAID 0 является единственным стандартизированным типом дискового массива RAID без избыточного копирования данных.

10.2.2. Дисковый массив RAID типа JBOD

В рамках дискового массива RAID типа JBOD используются два или большее количество дисков, а сам массив обычно называется дисковым массивом со связыванием (concatenating, spanning, spanned set или spanned volume). Данные записываются на первый диск до момента его полного заполнения. После этого данные записываются на следующий диск и так далее... Главное достоинство дискового массива RAID типа JBOD (расшифровывается как Just a Bunch of Disks - просто связка дисков) заключается в возможности создания виртуальных дисков большего размера. Дисковый массив RAID типа JBOD не предусматривает возможности избыточного копирования данных.

10.2.3. Дисковый массив RAID 1

В рамках дискового массива RAID 1 используются ровно два диска, а сам массив обычно называется дисковым массивом с зеркалированием (mirroring, mirror set или mirrored volume). Все данные, записываемые в дисковый массив, записываются на каждый диск. Главное достоинство дискового массива RAID 1 заключается в избыточной записи данных. Главный недостаток дискового массива данного типа заключается в потере как минимум половины доступного дискового пространства (другими словами, общая стоимость дисковых устройств возрастает как минимум вдвое).

10.2.4. А что насчет дисковых массивов RAID 2, 3 и 4?

Дисковый массив RAID 2 использует чередование данных на уровне битов, RAID 3 - на уровне байт, а RAID 4 работает аналогично RAID 5, но использует отдельный диск для хранения данных четности. Дисковый массив последнего типа обычно медленнее массива RAID 5, так как при каждой операции записи данных также осуществляется операция записи данных четности на выделенный для этих целей (замедляющий работу массива) диск. Вероятность обнаружения этих уровней RAID в составе систем, предназначенных для промышленной эксплуатации, чрезвычайно мала.

10.2.5. Дисковый массив RAID 5

В рамках дискового массива RAID 5 используются три или большее количество дисков, на каждом из которых хранятся фрагменты данных. При каждой операции записи данных в массив на один из дисков будут записываться данные четности. В отличие от дискового массива RAID 4 данные четности будут размещаться на всех дисках массива. Главное достоинство рассматриваемого дискового массива RAID 5 заключается в возможности восстановления всех данных в случае отказа одного из дисковых устройств.

10.2.6. Дисковый массив RAID 6

Дисковый массив RAID 6 очень похож на дисковый массив RAID 5, но в нем используются по две копии данных четности, следовательно дисковый массив RAID 6 защищает данные даже в случае отказа двух дисковых устройств. В рамках файловой системы zfs из состава операционной системы Oracle Solaris данный тип дискового массива носит имя raidz2 (также в рамках упомянутой файловой системы реализован тип дискового массива с названием raidz3, предусматривающий трехкратное копирование данных четности).

10.2.7. Дисковый массив RAID 0+1

Дисковый массив RAID 0+1 является зеркалируемым дисковым массивом (1) с чередованием данных (0). Это означает, что в первую очередь вам придется создать два дисковых массива с чередованием данных RAID 0, после чего объединить их в рамках одного зеркалируемого дискового массива RAID 1. К примеру, в том случае, если у вас имеется шесть дисков объемом в 100 ГБ, каждый из дисковых массивов с чередованием данных будет иметь объем в 300 ГБ. После объединения этих дисковых массивов в рамках одного дискового массива общий объем последнего будет равен 300 ГБ. Дисковый массив RAID 0+1 может пережить выход из строя одного из дисковых устройств. При этом он переживет выход из строя второго диска только в том случае, если этот диск содержит тот же набор фрагментов данных, что и вышедший из строя диск.

10.2.8. Дисковый массив RAID 1+0

Дисковый массив RAID 1+0 является дисковым массивом с чередованием данных (0), состоящим из зеркалируемых дисковых массивов (1). К примеру, в том случае, если у вас имеется шесть дисков объемом в 100 ГБ каждый, в первую очередь вам придется создать три зеркалируемых дисковых массива объемом в 100 ГБ каждый. После этого вы можете объединить их в рамках одного дискового массива с разделением данных объемом в 300 ГБ. В случае использования описанной структуры дискового массива, он может пережить выход из строя до трех дисков с тем условием, что все вышедшие из строя диски не находятся в составе одного из зеркалируемых дисковых массивов.

10.2.9. Дисковый массив RAID 50

Дисковый массив RAID 50 является дисковым массивом с чередованием данных, состоящим из дисковых массивов RAID 5. Если у вас имеется девять дисков объемом в 100 ГБ каждый, вы можете создать три массива RAID 5 объемом в 200 ГБ каждый. После этого вы можете скомбинировать их в рамках одного большого дискового массива с чередованием данных.

10.2.10. Множество других типов дисковых массивов

Также на практике может использоваться множество других комбинаций описанных типов дисковых массивов RAID, таких, как RAID 30, 51, 60, 100, 150,

10.3. Создание программного массива RAID 5

10.3.1. Имеются ли в наличии три диска?

В первую очередь вам придется подключить к вашему компьютеру три диска. В данном примере мы добавили три новых диска объемом в восемь гигабайт каждый. Для проверки корректности подключения дисков следует воспользоваться командой fdisk -l.

[root@rhel6c ~]# fdisk -l 2> /dev/null | grep MB
Disk /dev/sdb: 8589 MB, 8589934592 bytes
Disk /dev/sdc: 8589 MB, 8589934592 bytes
Disk /dev/sdd: 8589 MB, 8589934592 bytes

10.3.2. Тип раздела fd

Следующий шаг заключается в создании раздела типа fd на каждом из подключенных дисков. Тип раздела fd позволяет задействовать технологию автоматического обнаружения разделов дисковых массивов RAID в Linux (Linux RAID autodetect). Рассмотрите приведенный ниже (сокращенный) пример:

[root@rhel6c ~]# fdisk /dev/sdd
...
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): 
Using default value 1044

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

10.3.3. Проверка корректности создания разделов на дисках

Теперь все три диска готовы к работе в составе дискового массива RAID 5, поэтому нам остается лишь передать системе информацию о том, как работать ними.

[root@rhel6c ~]# fdisk -l 2> /dev/null | grep raid
/dev/sdb1       1        1044     8385898+  fd Linux raid autodetect
/dev/sdc1       1        1044     8385898+  fd Linux raid autodetect
/dev/sdd1       1        1044     8385898+  fd Linux raid autodetec

10.3.4. Создание дискового массива RAID 5

Обычно следующий шаг заключается в создании таблицы разделов RAID в рамках файла /etc/raidtab. Но на сегодняшний день вы можете ограничиться только вызовом утилиты mdadm с передачей корректных параметров.

Приведенная ниже строка команды разделена на две строки для удобного размещения на странице данной книги, но вам в любом случае придется передать утилите все параметры в одной строке без использования символа обратного слэша (\).

[root@rhel6c ~]# mdadm --create /dev/md0 --chunk=64 --level=5 --raid-\
devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

В примере ниже приведен сокращенный вывод команды fdisk -l, содержащий информацию о созданном дисковом массиве RAID 5.

[root@rhel6c ~]# fdisk -l /dev/md0

Disk /dev/md0: 17.2 GB, 17172135936 bytes
2 heads, 4 sectors/track, 4192416 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 131072 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Мы можем использовать созданный дисковый массив RAID 5 при рассмотрении следующей темы: LVM.

10.3.5. Файл /proc/mdstat

Информация о состоянии устройств из состава дискового массива RAID может быть получена из файла /proc/mdstat. В данном примере показано содержимое этого файла, при рассмотрении которого можно сделать вывод о том, что в текущий момент идет процесс пересборки дискового массива RAID 5.

[root@rhel6c ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      16769664 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [============>........]  recovery = 62.8% (5266176/8384832) finish=0\
.3min speed=139200K/sec

А в этом примере показано содержимое этого же файла, соответствующее активному состоянию дискового массива RAID 5.

[root@rhel6c ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
    16769664 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]

10.3.6. Команда mdadm --detail

Используйте команду mdadm --detail для получения информации о виртуальном устройстве дискового массива RAID.

[root@rhel6c ~]# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Jul 17 13:48:41 2011
     Raid Level : raid5
     Array Size : 16769664 (15.99 GiB 17.17 GB)
  Used Dev Size : 8384832 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sun Jul 17 13:49:43 2011
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           Name : rhel6c:0 (local to host rhel6c)
           UUID : c10fd9c3:08f9a25f:be913027:999c8e1f
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      active sync   /dev/sdd1

10.3.7. Деактивация программного дискового массива RAID

Информация о программном дисковом массиве присутствует в файле /proc/mdstat тогда, когда этот массив активен. Полная деактивация (остановка) массива, после которой вы сможете использовать диски из его состава для других целей, может быть осуществлена с помощью утилиты mdadm.

[root@rhel6c ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

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

10.3.8. Дополнительное чтение

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

mdadm /dev/md0 --add /dev/sdd1 --fail /dev/sdb1 --remove /dev/sdb1

10.4. Практическое задание: RAID

1. Добавьте три виртуальных диска объемом в 1 ГБ каждый в виртуальную машину.

2. Создайте программный дисковый массив RAID 5 на основе этих трех дисков. (Не обязательно создавать файловую систему на результирующем виртуальном диске.)

3. С помощью утилиты fdisk и файловой системы /proc удостоверьтесь в корректности создания дискового массива RAID 5.

4. Деактивируйте дисковый массив RAID 5 и удалите созданные разделы с дисков.

5. Создайте дисковый массив RAID 1 для зеркалирования данных на двух дисках.

10.5. Корректная процедура выполнения практического задания: RAID

1. Добавьте три виртуальных диска объемом в 1 ГБ каждый в виртуальную машину.

2. Создайте программный дисковый массив RAID 5 на основе этих трех дисков. (Не обязательно создавать файловую систему на результирующем виртуальном диске.)

3. С помощью утилиты fdisk и файловой системы /proc удостоверьтесь в корректности создания дискового массива RAID 5.

4. Деактивируйте дисковый массив RAID 5 и удалите созданные разделы с дисков.

5. Создайте дисковый массив RAID 1 для зеркалирования данных на двух дисках.

[root@rhel6c ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 \
/dev/sdb1 /dev/sdc1 
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@rhel6c ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] [raid1] 
md0 : active raid1 sdc1[1] sdb1[0]
      8384862 blocks super 1.2 [2/2] [UU]
      [====>................] resync = 20.8% (1745152/8384862) \
finish=0.5min speed=218144K/sec

Предыдущий раздел: Оглавление Следующий раздел:
Глава 9. Знакомство с идентификаторами UUID   Глава 11. Управление логическими томами