Насколько зрелым и функциональным является 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, сначала прочитайте все…
Для установки используйте полный образ CD, а не образ netinst.
Действуйте как обычно, перейдите к разделу диска, настройте физические тома LVM. Вы можете установить /boot
LVM-RAID (как на Jessie, так и на Wheezy с некоторыми работами, описанными ниже).
Создайте свою группу томов. Оставьте это в меню LVM.
Сначала немного веселья - установщик не 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
Программа установки не знает, как создавать LVM-RAID LV, поэтому вам нужно использовать командную строку для этого. Обратите внимание, я не делал никаких тестов; приведенный ниже размер полосы ( -I
) является приблизительным для моей установки виртуальной машины:
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
На Джесси вы можете использовать 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
Наконец, вернитесь к установщику и нажмите «Готово» в меню LVM. Теперь вам будет представлено много логических томов. Это установщик не понимает, что происходит; игнорируйте все с rimage
или rmeta
в их названии (см. первый абзац выше для объяснения того, что это такое).
Идем дальше и создаем файловые системы, меняем разделы и т. Д. Как обычно. Установите базовую систему и т. Д., Пока не перейдете к приглашению grub.
На Джесси 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
Собственно, на моей самой последней 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 всех виртуальных дисков.
На Wheezy, после выполнения вышеизложенного, выберите «продолжить без загрузчика».
Завершите установку. Это загрузится. Вероятно.
Знание сообщества
Есть немало людей, которые знают об этом 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 и обновить этот пост.
Сноски
Я подозреваю, что вы могли бы использовать устройство отображения, чтобы склеить метаданные и данные вместе таким образом, mdadm --assemble
чтобы это произошло . Конечно, вы могли бы просто mdadm
нормально работать на логических томах ... и это было бы разумнее.
При установке 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: я давно не проводил оригинальные эксперименты. Я сделал мои оригинальные заметки доступными. Обратите внимание, что я уже сделал более свежие, описанные в этом ответе, а не в этих заметках.