Поделиться через


Настройка RAID программного обеспечения в Linux

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

Присоединение дисков данных

Для настройки устройства RAID необходимо настроить два или более пустых дисков данных. Основной причиной создания RAID-устройства является повышение производительности операций ввода-вывода на диске. В зависимости от ваших потребностей во вводе-выводе, вы можете выбрать подключение дисков, хранящихся в нашем стандартном хранилище, с производительностью до 500 IO/ps на диск, или в нашем премиальном хранилище, с производительностью до 5000 IO/ps на диск. В этой статье не объясняется подробно, как подготовить и подключить диски данных к виртуальной машине Linux. Дополнительные инструкции по присоединению пустого диска данных к виртуальной машине Linux в Azure см. в статье Microsoft Azure “Присоединение диска” .

Это важно

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

Установка служебной программы mdadm

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES и openSUSE

    zypper install mdadm
    

Создание секций диска

В этом примере мы создадим один раздел диска в /dev/sdc. Новый раздел диска будет называться /dev/sdc1.

  1. Запустите fdisk, чтобы начать создание секций

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. Нажмите «n» в командной строке, чтобы создать раздел new partition:

    Command (m for help): n
    
  3. Затем нажмите клавишу "p", чтобы создать pосновной раздел.

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Нажмите клавишу "1", чтобы выбрать номер раздела 1:

    Partition number (1-4): 1
    
  5. Выберите начальную точку новой секции или нажмите <enter>, чтобы принять значение по умолчанию для размещения секции в начале свободного места на диске:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Выберите размер секции, например "+10G", чтобы создать секцию размером 10 гигабайт. Кроме того, нажмите <enter> создайте одну секцию, которая охватывает весь диск:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Затем измените идентификатор и type раздела с идентификатором 83 по умолчанию (Linux) на идентификатор fd (автоматический рейд Linux):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Наконец, запишите таблицу разделов на диск и выйдите из fdisk.

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

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

  1. В следующем примере будет осуществлено чередование (уровень RAID 0) трёх разделов, расположенных на трёх отдельных дисках данных (sdc1, sdd1, sde1). После выполнения этой команды создается новый RAID-устройство с именем /dev/md127. Кроме того, обратите внимание, что если эти диски данных раньше были частью другого неисправного массива RAID, возможно, потребуется добавить параметр --force в команду mdadm:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Создание файловой системы на новом устройстве RAID

    CentOS, Oracle Linux, SLES 12, openSUSE и Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 — включите boot.md и создайте mdadm.conf

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Примечание.

    Перезагрузка может потребоваться после внесения этих изменений в системы SUSE. Этот шаг не требуется в SLES 12.

Добавление новой файловой системы в /etc/fstab

Это важно

Неправильное редактирование файла /etc/fstab может привести к незагружаемой системе. Если у вас есть сомнения, см. инструкции по правильному изменению этого файла в документации дистрибутива. Также рекомендуется перед внесением изменений создать резервную копию файла /etc/fstab.

  1. Создайте нужную точку подключения для новой файловой системы, например:

    sudo mkdir /data
    
  2. При редактировании /etc/fstab UUID следует использовать для ссылки на файловую систему, а не имя устройства. Используйте служебную программу blkid, чтобы определить идентификатор UUID для новой файловой системы:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Откройте /etc/fstab в текстовом редакторе и добавьте запись для новой файловой системы, например:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    Или SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    Затем сохраните и закройте /etc/fstab.

  4. Проверьте правильность записи /etc/fstab:

    sudo mount -a
    

    Если эта команда приводит к ошибке, проверьте синтаксис в файле /etc/fstab.

    Затем выполните команду mount, чтобы убедиться, что файловая система подключена:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Необязательно) Параметры аварийной загрузки

    конфигурация файла fstab

    Многие дистрибутивы включают параметры подключения nobootwait или nofail, которые могут быть добавлены в файл /etc/fstab. Эти параметры допускают сбои при подключении определенной файловой системы и позволяют системе Linux продолжать загрузку, даже если не удается правильно подключить файловую систему RAID. Дополнительные сведения об этих параметрах см. в документации по дистрибутиву.

    Пример (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    параметры загрузки Linux

    Помимо указанных выше параметров, параметр ядра "bootdegraded=true" может позволить системе загружаться, даже если RAID воспринимается как поврежденный или пониженный, например, если диск данных непреднамеренно удаляется из виртуальной машины. По умолчанию это также может привести к незагрузочной системе.

    Ознакомьтесь с документацией по дистрибутиву по правильному изменению параметров ядра. Например, во многих дистрибутивах (CentOS, Oracle Linux, SLES 11) эти параметры можно добавить вручную в файл "/boot/grub/menu.lst". В Ubuntu этот параметр можно добавить в переменную GRUB_CMDLINE_LINUX_DEFAULT в "/etc/default/grub".

Поддержка TRIM/UNMAP

Некоторые ядра Linux поддерживают операции TRIM и UNMAP для отмены неиспользуемых блоков на диске. Эти операции в основном полезны в стандартном хранилище для информирования Azure о том, что удаленные страницы больше не допустимы и могут быть удалены. Отмена страниц может сэкономить затраты, если вы создаете большие файлы, а затем удаляете их.

Примечание.

RAID не может выдавать команды на удаление, если размер блока для массива установлен менее значения по умолчанию (512 КБ). Это связано с тем, что степень детализации изображения на узле также составляет 512 КБ. Если вы изменили размер блока массива с помощью параметра --chunk= mdadm, запросы TRIM/unmap могут игнорироваться ядром.

Существует два способа включить поддержку операций TRIM в виртуальной машине Linux. Как обычно, обратитесь к документации дистрибутива, чтобы выбрать рекомендуемый метод.

  • Используйте опцию монтирования discard в /etc/fstab, например:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • В некоторых случаях вариант discard может повлиять на производительность. Кроме того, вы можете вручную выполнить команду fstrim из командной строки или добавить ее в crontab для регулярного выполнения.

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL или CentOS

    # sudo yum install util-linux
    # sudo fstrim /data