RAID с LVM против MDRAID - плюсы и минусы?

51

В своем ответе на вопрос «Смешанные типы рейдов» Х.Брейн предлагает использовать LVM для реализации RAID против более стандартного MDRAID.

После небольшого исследования кажется, что LVM также поддерживает функциональность RAID. Раньше я использовал LVM поверх MDRAID и до сих пор не знал, что LVM также поддерживает функциональность RAID. Похоже, это относительно недавняя разработка, но я точно не выяснил, когда это было реализовано.

Итак, это альтернативные способы реализации программного RAID в Linux. Каковы плюсы и минусы этих двух разных подходов? Я ищу сравнения характеристик между двумя подходами, чтобы люди могли решить, что лучше для них. Выводы, основанные на экспериментах (как, например, эта функция не работает так же хорошо, как эта функция, и вот почему) также в порядке, если вы включите свои данные в ответ.

Некоторые конкретные вопросы для решения:

  1. Предположим, я хочу сделать SW RAID + LVM (общий сценарий). Должен ли я использовать поддержку LVM для sw RAID и, таким образом, использовать одну утилиту вместо двух? Есть ли у этого более комплексного подхода какие-либо преимущества?
  2. Имеет ли LVM поддержка SW RAID существенные недостатки по сравнению с более зрелым MDADM? В частности, насколько стабильной / безошибочной является поддержка LVM для sw RAID? Кажется, эта поддержка восходит к 2011 году (см. Ниже), в то время как MDADM намного старше. Кроме того, как это сравнивается с точки зрения набора функций? Имеет ли он существенные недостатки по сравнению с MDADM? И наоборот, поддерживает ли он какие-либо функции SW RAID, которых нет у MDADM?

ПРИМЕЧАНИЯ:

  1. Подробное обсуждение ведется по адресу http://www.olearycomputers.com/ll/linux_mirrors.html, но я не смог выяснить, в какую дату он был написан.

    Аналогичный вопрос о Serverfault: зеркало Linux LVM против зеркала MD . Однако этот вопрос был задан в 2010 году, и ответы могут быть устаревшими.

  2. Запись в журнале изменений для версии 2.02.87 - 12 августа 2011 г.

    Добавьте конфигурацию --with-raid для нового сегмента 'raid' для поддержки MD RAID 1/4/5/6

    Итак, похоже, что поддержка RAID в LVM около 3 лет.

Фахим Митха
источник
Одно преимущество, о котором я могу подумать, - это использование связанных с HA функций, доступных для LVM.
Братчли
1
@JoelDavis Можете ли вы уточнить? Я не знаю, что означают функции, связанные с HA.
Фахим Митха
Кроме того, обычно вы работаете с логическими томами, а не с mdтомами. Таким образом, у вас есть lvextendи pvmoveдоступны для перемещения между устройствами, в то mdвремя как с процессом намного больше ручного без явной выгоды.
Братчли
@JoelDavis, возможно, напишите ответ?
Фахим Митха
2
LVM всегда поддерживал raid1 и raid0. Совсем недавно они отказались от собственной реализации и вместо этого использовали внутренний код личности рейда md, открывая другие уровни рейда.
psusi

Ответы:

55

Насколько зрелым и функциональным является LVM RAID?

LVM-RAID на самом деле mdraid под прикрытием. Он в основном работает путем создания двух логических томов на каждое устройство RAID (один для данных, называемых «rimage»; один для метаданных, называемых «rmeta»). Затем он передает их существующим драйверам mdraid. Поэтому такие вещи, как обработка ошибок чтения с диска, балансировка нагрузки ввода-вывода и т. Д., Должны быть достаточно зрелыми.

Это хорошие новости.

инструменты

Вы не можете использовать mdadmего (по крайней мере, не простым способом), а инструменты LVM RAID далеко не так совершенны. Например, в Debian Wheezy lvsне может сообщить вам состояние синхронизации RAID5. Я очень сомневаюсь, что восстановление и восстановление (особенно в ситуациях «этого никогда не должно случиться!») Примерно так же хорошо, как и mdadm (и я случайно столкнулся с одним из тех, кто участвовал в моем тестировании, и, наконец, просто разочаровался в его восстановлении - восстановление с mdadm было бы легко).

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

Недостающие функции

Текущие версии LVM-RAID не поддерживают сжатие ( lvreduce) логического тома RAID. Они также не поддерживают изменение количества дисков или уровня RAID ( lvconvertвыдает сообщение об ошибке, которое пока не поддерживается). lvextendработает и может даже увеличить уровни RAID, которые mdraid получил только недавно, например RAID10. По моему опыту, расширение LV является гораздо более распространенным, чем сокращение их, так что это действительно разумно.

Некоторые другие функции mdraid отсутствуют, и особенно вы не можете настроить все параметры, которые вы можете использовать с mdadm.

В более старых версиях (как, например, в Debian Wheezy) LVM RAID также не поддерживает рост. Например, на Wheezy:

root@LVM-RAID:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.

В общем, вы не хотите запускать версии Wheezy.

Выше, как только вы установите его. Это тоже не тривиальный процесс.

Проблемы с инструментом

Играя с моей Jessie VM, я отключил (виртуально) один диск. Это сработало, машина осталась работать. lvsТем не менее, не дал никаких указаний, что массивы были ухудшены. Я снова прикрепил диск и удалил секунду. Остался в бегах (это raid6). Повторно прикреплен, до сих пор нет указаний от lvs. Я побежал lvconvert --repairна томе, он сказал мне, что все в порядке. Затем я вытащил третий диск ... и машина умерла. Заново вставил, перезагрузил, и теперь не знаю, как исправить. mdadm --force --assembleбы исправить это; ни, vgchangeни lvchangeкажется, не имеют этой опции (lvchange принимает --force, но, похоже, ничего не делает). Даже пытаясь dmsetupнапрямую передать таблицу сопоставления ядру, я не мог понять, как ее восстановить.

Кроме того, mdadmэто специальный инструмент только для управления RAID. LVM делает намного больше, но кажется (и я признаю, что это довольно субъективно), как будто функциональность RAID была как бы вытолкнута туда; это не совсем подходит.

Как вы на самом деле устанавливаете систему с LVM RAID?

Вот краткое описание того, как установить его на Debian Jessie или Wheezy. Джесси намного проще; обратите внимание, если вы собираетесь попробовать это на Wheezy, сначала прочитайте все…

  1. Для установки используйте полный образ CD, а не образ netinst.

  2. Действуйте как обычно, перейдите к разделу диска, настройте физические тома LVM. Вы можете установить /bootLVM-RAID (как на Jessie, так и на Wheezy с некоторыми работами, описанными ниже).

  3. Создайте свою группу томов. Оставьте это в меню LVM.

  4. Сначала немного веселья - установщик не dm-raid.koзагружает и даже не загружает модуль! Таким образом, вы можете получить его из пакета linux-image, который будет установлен. Переключитесь на консоль (например, Alt- F2) и:

    cd /tmp
    dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
    depmod -a -b /tmp
    modprobe -d /tmp dm-raid
    
  5. Программа установки не знает, как создавать LVM-RAID LV, поэтому вам нужно использовать командную строку для этого. Обратите внимание, я не делал никаких тестов; приведенный ниже размер полосы ( -I) является приблизительным для моей установки виртуальной машины:

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. На Джесси вы можете использовать RAID10 для обмена. На Wheezy RAID10 не поддерживается. Таким образом, вместо этого вы можете использовать два раздела подкачки, каждый RAID1. Но вы должны точно указать, на какие физические тома их помещать, или он поместит обе половины зеркала на один и тот же диск . Да. Шутки в сторону. Во всяком случае, это выглядит так:

    lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
    lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
    
  7. Наконец, вернитесь к установщику и нажмите «Готово» в меню LVM. Теперь вам будет представлено много логических томов. Это установщик не понимает, что происходит; игнорируйте все с rimageили rmetaв их названии (см. первый абзац выше для объяснения того, что это такое).

  8. Идем дальше и создаем файловые системы, меняем разделы и т. Д. Как обычно. Установите базовую систему и т. Д., Пока не перейдете к приглашению grub.

  9. На Джесси grub2 будет работать, если он установлен в MBR (или, возможно, с EFI, но я этого не проверял). На Wheezy установка не удастся, и единственное решение - сделать бэкпорт Джесси grub2. Это на самом деле довольно просто, он аккуратно компилируется на Wheezy. Каким-то образом, поместите ваши перенесенные пакеты grub /target(или сделайте это через секунду после chroot), затем:

    chroot /target /bin/bash
    mount /sys
    dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb 
    grub-install /dev/vda … grub-install /dev/vdd # for each disk
    echo 'dm_raid' >> /etc/initramfs-tools/modules
    update-initramfs -kall -u
    update-grub # should work, technically not quite tested²
    umount /sys
    exit
    
  10. Собственно, на моей самой последней Jessie VM висела grub-install. Переключившись на F2 и выполнив while kill $(pidof vgs); do sleep 0.25; doneто же самое для lvs, получил через grub-install. Несмотря на это, он генерировал действительный конфиг, но на всякий случай я сделал chroot /target /bin/bash, удостоверился, /procи /sysбыл смонтирован, и сделал update-grub. На этот раз оно завершено. Затем я dpkg-reconfigure grub-pcвыбрал установку grub на MBR всех виртуальных дисков.

  11. На Wheezy, после выполнения вышеизложенного, выберите «продолжить без загрузчика».

  12. Завершите установку. Это загрузится. Вероятно.

Знание сообщества

Есть немало людей, которые знают об этом mdadmи имеют большой опыт развертывания. Google, скорее всего, ответит на большинство ваших вопросов. Обычно вы можете ожидать ответа на вопрос здесь, чтобы получить ответы, вероятно, в течение дня.

Этого нельзя сказать о LVM RAID. Трудно найти гидов. Большинство поисков в Google, которые я запускаю, вместо этого находят меня при использовании массивов mdadm в качестве PV. Честно говоря, это, вероятно, в значительной степени потому, что он более новый и менее распространенный. В некотором смысле, это несправедливо - считать это несправедливым, но если что-то пойдет не так, гораздо большее существующее сообщество вокруг mdadm повышает вероятность восстановления моих данных.

Заключение

LVM-RAID продвигается довольно быстро. На Wheezy это не очень удобно (по крайней мере, без бэкпорта LVM и ядра). Ранее, в 2014 году, на тестировании Debian это выглядело как интересная, но незаконченная идея. Текущее тестирование, в основном то, что станет Джесси, похоже на то, что вы могли бы фактически использовать, если вам часто нужно создавать небольшие кусочки с различными конфигурациями RAID (что является административным кошмаром mdadm).

Если ваши потребности адекватно обслуживаются несколькими большими RAID-массивами mdadm, разделенными на разделы с использованием LVM, я бы посоветовал продолжать использовать это. Если вместо этого вам придется создавать много массивов (или даже массивов логических томов), рассмотрите возможность переключения на LVM-RAID. Но сохраняйте хорошие резервные копии.

Многие виды использования LVM RAID (и даже mdadm RAID) используются такими вещами, как кластерные системы хранения / объектные системы, ZFS и btrfs. Я рекомендую также изучить их, они могут лучше удовлетворить ваши потребности.


Спасибо тебе

Я хотел бы поблагодарить psusi за то, что он заставил меня пересмотреть состояние LVM-RAID и обновить этот пост.

Сноски

  1. Я подозреваю, что вы могли бы использовать устройство отображения, чтобы склеить метаданные и данные вместе таким образом, mdadm --assembleчтобы это произошло . Конечно, вы могли бы просто mdadmнормально работать на логических томах ... и это было бы разумнее.

  2. При установке Wheezy мне не удалось сделать это в первый раз, и я перестал работать без конфигурации grub. Я должен был загрузить систему, введя всю информацию в приглашении grub. После загрузки это сработало, так что я думаю, что оно будет нормально работать с установщиком. Если вы попадаете в приглашение grub, вот магические строки для ввода:

    linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
    initrd /boot/initrd.image-3.2.0-4-amd64
    boot
    

PS: я давно не проводил оригинальные эксперименты. Я сделал мои оригинальные заметки доступными. Обратите внимание, что я уже сделал более свежие, описанные в этом ответе, а не в этих заметках.

derobert
источник
2
Вы на самом деле получаете эту ошибку из-за того, что версия lvm в wheezy очень старая и глючная; у меня на Ubuntu 14.04 с lvm версии 2.02.98 он работает очень хорошо (я считаю, что Джесси, по крайней мере, новенькая). Во-вторых, команда, показанная вами как неудачная, является изменением размера - изменение формы - это нечто совершенно другое. Изменение формы означает изменение с raid1 на raid5 или с raid5 с 3 дисками на raid5 с 4 дисками. Это все еще не поддерживается, но просто изменение размера работает нормально.
psusi
@psusi Ах, я думал, что они также считают изменение размера изменением формы (так как оно изменяет геометрию RAID, учитывая, что не так много, как изменение количества дисков). Я думал, что прежде, чем я получу ошибку, попробовав это на Джесси, я перепроверю это. (Нужно собрать новую виртуальную машину Jessie LVM-RAID, так что это займет немного.) Спасибо.
Дероберт
dpkg-debобеспечивает более чистый способ извлечения файлов из пакетов deb, не нужно переходить к этапам.
Муру
@muru dpkg-debдоступен в среде установщика? Раньше не было ... Обязательно проверяйте и Уизи.
Дероберт
@derobert ar -xтоже должен работать, чтобы распаковать архивы deb, хотя это более громоздко. Кроме того, как насчет обновления вашего ответа с текущим статусом?
Фахим Митха
7

Я не знал, что LVM может сделать RAID тоже. Лично я бы придерживался mdadm, так как это более зрелое программное обеспечение, которое делает то же самое. Если что-то сломается с LVM RAID, вы, вероятно, не сможете получить такую ​​большую поддержку, как если бы вы использовали mdadm. Кроме того, я бы не стал доверять LVM RAID, поскольку исторически сложилось, что LVM не является самым надежным программным обеспечением.

ZFS и BTRFS - это будущее. Преимущества, которые они дают, выходят за рамки возможного на блочном уровне. Если я не стремлюсь к совместимости, я больше не буду использовать LVM / mdadm. ZFS и BTRFS обладают множеством функций, таких как сжатие, дедупликация и копирование при записи, но я не буду вдаваться в подробности, поскольку это будет немного не по теме.

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

Бесплатные пули
источник
Спасибо за ответ. Подумайте немного о том, почему вы не доверяете LVM.
Фахим Митха
2
«ZFS и BTRFS - это будущее» Не обязательно. Насколько мне известно, ZFS в Linux все еще основана на FUSE, поэтому в основном она используется для получения функций ZFS без использования Solaris или FreeBSD. BTRFS - это круто, но это не обязательно будущее. Например, Red Hat, кажется, движется в направлении, LVM+XFSа не BTRFS. Они поддерживают BTRFS, но это больше похоже на Oracle / SuSE.
Братчли
Не сказать, что я почему-то не люблю btrfs (на самом деле мне это очень нравится). Просто это не то направление, в котором движется такой крупный дистрибутив, как Red Hat, и я не могу придумать, что BTRFS может сделать, что LVM / XFS, по крайней мере, не может достаточно хорошо приблизиться.
Братчли
Я также сказал бы, что BTRFS будет хорошим, но LVM может сделать много вещей, которые BTRFS просто не может сделать (пока). Например, вы можете создавать гибридные тома и снимки с тонким предоставлением, ни один из которых (AFAIK) BTRFS не может сделать.
Братчли
9
«Насколько мне известно, ZFS в Linux все еще основана на FUSE», это было неверно уже более пяти лет. ZoL - это модуль ядра, полностью готовый к работе. Я активно использую его с начала 2010 года.
Джим Солтер,