Наскільки зрілим і характерним є 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. На мій досвід, збільшення НН набагато частіше, ніж їх зменшення, тому це насправді розумно.
Деяких інших функцій 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
, проте, не вказував на те, що масиви були деградовані. Я знову приєднав диск і видалив секунду. Залишився бігом (це рейд6). Повторно не додається, до сих пір немає вказівок від 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 (на Джессі та на 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
) нижче - цілком здогадка для моєї настройки VM:
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
У Джессі ви можете використовувати RAID10 для своп. У Wheezy RAID10 не підтримується. Тож замість цього ви можете використовувати два swap-розділи, кожен 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
в його імені (див. перший абзац вище для пояснення, що це таке).
Вперед і створюйте файлові системи, міняйте розділи тощо як звичайно. Встановіть базову систему тощо, поки ви не отримаєте запит на груб.
Для Джессі grub2 працюватиме, якщо його встановити в MBR (або, можливо, з EFI, але я цього не перевіряв). На Wheezy установка не вдасться, і єдиним рішенням є підтримка гру Джессі2. Це насправді досить просто, він чітко збирається на Wheezy. Якось заставте свої підтримувані пакети з грубом /target
(або зробіть це через секунду після хротуа), а потім:
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
).
Якщо ваші потреби належним чином обслуговуються декількома великими mdadm масивами RAID, розрізаними на розділи за допомогою LVM, я б запропонував продовжувати використовувати це. Якщо замість цього вам доведеться створювати багато масивів (або навіть масивів логічних томів), замість цього перейдіть до LVM-RAID. Але зберігайте хороші резервні копії.
Багато можливостей використання LVM RAID (і навіть mdadm RAID) переймаються такими речами, як кластерні системи зберігання / об'єктні системи, ZFS та btrfs. Я рекомендую також дослідити їх, вони можуть краще відповідати вашим потребам.
Дякую
Я хотів би подякувати psusi за те, що він змусив мене переглянути стан LVM-RAID та оновити цю публікацію.
Виноски
Я підозрюю, що ви могли використовувати картограф пристрою для склеювання метаданих та даних разом таким чином, що mdadm --assemble
це займе. Звичайно, ти можеш просто працювати mdadm
на логічних томах просто чудово ... і це було б безпечніше.
Роблячи встановлення Wheezy, я не зміг цього зробити вперше і завершився без конфігурації 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: Минув час, коли я насправді робив оригінальні експерименти. Я зробив свої оригінальні замітки доступними. Зауважте, що зараз я робив новітні, висвітлені в цій відповіді, а не в цих записках.