РЕЙДИНГ із LVM проти MDRAID - плюси і мінуси?


51

У своїй відповіді на питання "змішані типи рейдів" HBruijn пропонує використовувати 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, але я не зміг дізнатися, на яку дату написано.

    Аналогічне запитання на сервері за замовчуванням: дзеркало LVM Linux та дзеркало 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.
Faheem Mitha

Крім того, є звичайна перевага в тому, що ви працюєте з логічними томами замість mdтомів. Таким чином, у вас є lvextendі pvmoveдоступні для переміщення між пристроями, тоді як з mdцим процесом набагато більше керівництва без чіткої вигоди.
Братчлі

@JoelDavis може написати відповідь?
Faheem Mitha

2
LVM завжди підтримував рейд1 та 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. На мій досвід, збільшення НН набагато частіше, ніж їх зменшення, тому це насправді розумно.

Деяких інших функцій 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, спочатку прочитайте все про це ...

  1. Використовуйте повне зображення для встановлення CD, а не netinst.

  2. Продовжуйте, як звичайно, перейдіть до розбиття диска, налаштуйте фізичні томи LVM. Ви можете надіти /bootLVM-RAID (на Джессі та на 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) нижче - цілком здогадка для моєї настройки VM:

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. У Джессі ви можете використовувати 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
    
  7. Нарешті, поверніться до інсталятора та натисніть «Готово» у меню LVM. Тепер вам буде представлено безліч логічних томів. Ось інсталятор не розуміє, що відбувається; ігноруйте все з їхнім іменем rimageабо rmetaв його імені (див. перший абзац вище для пояснення, що це таке).

  8. Вперед і створюйте файлові системи, міняйте розділи тощо як звичайно. Встановіть базову систему тощо, поки ви не отримаєте запит на груб.

  9. Для Джессі 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
    
  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).

Якщо ваші потреби належним чином обслуговуються декількома великими mdadm масивами RAID, розрізаними на розділи за допомогою LVM, я б запропонував продовжувати використовувати це. Якщо замість цього вам доведеться створювати багато масивів (або навіть масивів логічних томів), замість цього перейдіть до LVM-RAID. Але зберігайте хороші резервні копії.

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


Дякую

Я хотів би подякувати psusi за те, що він змусив мене переглянути стан LVM-RAID та оновити цю публікацію.

Виноски

  1. Я підозрюю, що ви могли використовувати картограф пристрою для склеювання метаданих та даних разом таким чином, що mdadm --assembleце займе. Звичайно, ти можеш просто працювати mdadmна логічних томах просто чудово ... і це було б безпечніше.

  2. Роблячи встановлення 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: Минув час, коли я насправді робив оригінальні експерименти. Я зробив свої оригінальні замітки доступними. Зауважте, що зараз я робив новітні, висвітлені в цій відповіді, а не в цих записках.


2
Ви насправді отримуєте цю помилку через те, що версія lvm у хрипі є надзвичайно старої та баггі; для мене це працює чудово тут, на Ubuntu 14.04 з lvm версією 2.02.98 (я вважаю, Джессі принаймні така нова). По-друге, команда, яку ви показали невдалою, - це зміна розміру - переформатування - це зовсім інше. Переформатування означає перехід від raid1 до raid5 або від 3 диска raid5 до 4 диску raid5. Це все ще не підтримується, але просто зміни розміру працює добре.
psusi

@psusi Ах, я подумав, що вони також вважають зміни розміру занадто змінною формою (оскільки це змінює геометрію RAID, якщо це не було дедалі стільки, скільки змінюється кількість дисків). Я подумав, перш ніж у мене з’явиться помилка, спробувавши це на Джессі, я це ще раз перевірю. (Доведеться побудувати новий LVM-RAID VM Jessie, тому знадобиться трохи.) Дякую.
дероберт

dpkg-debнадає більш чіткий спосіб вилучення файлів з деб-пакетів, не потрібно переходити пошагово.
muru

@muru dpkg-debдоступний у середовищі інсталятора? Це раніше не було ... Переконайтесь, що перевірити і Wheezy.
дероберт

@derobert також ar -xповинен працювати над розпакуванням архівів deb, хоча це незграбно. Також як щодо оновлення своєї відповіді поточним статусом?
Faheem Mitha

7

Я не знав, що і LVM може робити RAID. Особисто я б дотримувався mdadm, оскільки це набагато більш зріле програмне забезпечення, яке робить те саме. Якщо щось порушиться з LVM RAID, ви, ймовірно, не зможете отримати стільки підтримки, ніж якби ви пішли з mdadm. Крім того, я б не довіряв LVM RAID, оскільки історично LVM виявився не самим надійним програмним забезпеченням.

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

Зрештою, зробіть свої дослідження та використовуйте все, що відповідає вашим потребам / бажанням.


Дякую за відповідь. Подумайте про те, щоб трохи розширити, чому ви не довіряєте LVM.
Faheem Mitha

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 все ще базується на ВПЕРЕДЖЕННІ", це було неправильним протягом більше п'яти років. ZoL - це модуль ядра і повністю готовий до виробництва. Я широко використовую його з початку 2010 року.
Джим Салтер,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.