Нещодавно я почав використовувати LVM на деяких серверах для жорстких дисків більше 1 ТБ. Вони корисні, розширювані та досить прості в установці. Однак я не зміг знайти жодних даних про небезпеку та застереження ЛВМ.
Які недоліки використання LVM?
Нещодавно я почав використовувати LVM на деяких серверах для жорстких дисків більше 1 ТБ. Вони корисні, розширювані та досить прості в установці. Однак я не зміг знайти жодних даних про небезпеку та застереження ЛВМ.
Які недоліки використання LVM?
Відповіді:
Підсумок
Ризики використання LVM:
Перші дві проблеми з LVM поєднуються: якщо кешування запису працює неправильно, і у вас втрата електроенергії (наприклад, PSU або UPS виходить з ладу), можливо, доведеться відновитись із резервного копіювання, що означає значний час простою. Основна причина використання LVM - більший час роботи (додавання дисків, зміна розміру файлових систем тощо), але важливо правильно встановити кешування записів, щоб уникнути фактичного скорочення часу роботи LVM.
- Оновлено грудень 2018 року: оновлений знімковий матеріал, включаючи стабільність ZFS та btrfs як альтернативу знімків LVM
Пом'якшення ризиків
LVM може працювати добре, якщо ви:
Деталі
Я досліджував це досить небагато в минулому, відчував деяку втрату даних, пов’язану з LVM. Основні ризики, пов'язані з ННМ, і які я знаю, це:
Уразливий кеш-запис для запису на жорсткий диск за рахунок гіпервізорів VM, кешування диска або старих ядер Linux і ускладнює відновлення даних завдяки складнішим структурам диска - детальніше див. Нижче. Я бачив, що повні установки LVM на декількох дисках пошкоджуються без жодного шансу на відновлення, і кешування записів на жорсткий диск на жорсткому диску є небезпечною комбінацією.
data=ordered
опції ext3 (або data=journal
для додаткової безпеки), плюс barrier=1
щоб гарантувати, що кешування ядра не впливає на цілісність. (Або використовуйте ext4, який дає змогу встановити бар'єри за замовчуванням .) Це найпростіший варіант і забезпечує хорошу цілісність даних за вартістю продуктивності. (Linux змінив параметр ext3 за замовчуванням на більш небезпечний data=writeback
, тому не покладайтеся на настройки за замовчуванням для FS.)hdparm -q -W0 /dev/sdX
всі диски в /etc/rc.local
(для SATA) або використовуйте sdparm для SCSI / SAS. Однак, згідно з цим записом у поширених запитаннях XFS (що дуже добре в цій темі), привід SATA може забути це налаштування після відновлення помилки накопичувача - значить, ви повинні використовувати SCSI / SAS, або якщо ви повинні використовувати SATA, то поставте Команда hdparm у роботі cron, що працює щохвилини.Забезпечення кешування записів увімкнено для продуктивності (та впорядкування лежачих дисків)
Більш складний, але ефективний варіант полягає в тому, щоб увімкнути кешування запису SSD / жорсткого диска та покластися на бар'єри для запису ядра, які працюють з LVM на ядрі 2.6.33+ (подвійний перевір, шукаючи повідомлення "бар'єрних" в журналах).
Ви також повинні переконатися, що налаштування RAID, налаштування гіпервізора VM та файлова система використовують бар'єри для запису (тобто вимагає, щоб диск накопичував очікувані записи до та після запису основних метаданих / журналу). XFS використовує бар'єри за замовчуванням, але ext3 цього не робить , тому для ext3 слід використовувати barrier=1
в параметрах монтажу, а ще використовувати data=ordered
або data=journal
як вище.
SSD - накопичувачі є проблематичними , оскільки використання кеша запису має вирішальне значення для терміну служби SSD. Найкраще використовувати SSD, який має суперконденсатор (щоб увімкнути промивання кешу при відключенні електроенергії, а отже, дозволити кеш-пам'ять не бути записаною).
Настройка накопичувача розширеного формату - кешування запису, вирівнювання, RAID, GPT
pvcreate
для вирівнювання ПВ. Цей потік списку електронної пошти LVM вказує на роботу, виконану в ядрах протягом 2011 року, і випуск часткового блоку запису при змішуванні дисків з 512 байтовими та 4 кіБ секторами в одному LV.Важче відновити дані завдяки складнішим структурам на диску :
/etc/lvm
, що може допомогти відновити основну структуру LV, VG та PVs, але не допоможе втратити метадані файлової системи.Важко правильно змінити розмір файлових систем - легко змінювати розмір файлової системи часто надається як перевага LVM, але вам потрібно виконати півдесятка команд оболонки, щоб змінити розмір FS на базі LVM - це можна зробити, коли весь сервер все ще працює, а в деяких випадках при встановленому FS, але я ніколи б не ризикував останнім без попереднього резервного копіювання та використання команд, попередньо протестованих на еквівалентному сервері (наприклад, клон відновлення аварійних виробничих серверів).
lvextend
підтримки опції -r
( --resizefs
) - якщо така є, це більш безпечний і швидкий спосіб змінити розмір LV і файлової системи, особливо якщо ви скорочуєте FS, і ви можете в основному пропустити цей розділ.resize2fs
для ext3 та до lvextend
або lvreduce
. Без особливої обережності розміри можуть дещо відрізнятися через різницю між 1 ГБ (10 ^ 9) та 1 ГіБ (2 ^ 30), або тому, як різні інструменти округляють розміри вгору або вниз.Здається, що розмір LV повинен бути більшим за розмір FS на 2 x розмір фізичної величини LVM (PE) - але перевірте посилання вище для деталей, оскільки джерело для цього не є авторитетним. Часто дозволяти 8 MiB достатньо, але, можливо, краще дозволити більше, наприклад, 100 MiB або 1 GiB, просто для безпеки. Щоб перевірити розмір PE та ваш логічний обсяг + розміри FS, використовуючи 4 KiB = 4096 байтових блоків:
Показує розмір PE в KiB:
vgdisplay --units k myVGname | grep "PE Size"
Розмір усіх НН:
lvs --units 4096b
Розмір (ext3) FS, припускає розмір блоку в 4 кіБ FS:
tune2fs -l /dev/myVGname/myLVname | grep 'Block count'
Навпаки, налаштування без LVM дозволяє змінити розмір FS дуже надійним та простим - запустити Gparted та змінити розмір потрібних FS , тоді він зробить усе за вас. На серверах можна використовувати parted
з оболонки.
Знімки важкі у використанні, повільні та баггі - якщо знімок закінчується заздалегідь виділеним простором, він автоматично скидається . Кожен знімок даного LV є дельтою проти цього LV (а не проти попередніх знімків), який може вимагати багато місця під час зйомки файлових систем із значною активністю запису (кожен знімок більший за попередній). Безпечно створити LV-знімок, що має той самий розмір, що і оригінальний НН, оскільки знімок ніколи не втратить вільного місця.
Знімки також можуть бути дуже повільними (тобто 3 - 6 разів повільніше, ніж без LVM для цих тестів MySQL ) - див. Цю відповідь, що висвітлює різні проблеми з знімком . Повільність частково пояснюється тим, що знімки вимагають багатьох синхронних записів .
Знімки мали деякі значні помилки, наприклад, у деяких випадках вони можуть робити завантаження дуже повільним або спричиняти повний збій завантаження (тому що ядро може вичерпати очікування кореневого FS, коли це знімок LVM [зафіксовано в initramfs-tools
оновленнях Debian , березень 2015] ).
Альтернативи знімків - файлові системи та VM гіпервізори
Знімки VM / хмари:
Знімки файлової системи:
Знімки на рівні файлової системи з ZFS або btrfs прості у використанні і, як правило, краще, ніж LVM, якщо ви на голому металі (але ZFS здається набагато більш зрілим, просто більше клопоту встановити):
Знімки для онлайн-резервного копіювання та fsck
Знімки можна використовувати для забезпечення послідовного джерела для резервного копіювання, якщо ви обережні з виділеним простором (в ідеалі знімок має той же розмір, що і резервне копіювання НН). Чудовий rsnapshot (з 1.3.1) навіть керує створенням / видаленням LVM-знімків для вас - дивіться це HOWTO на rsnapshot за допомогою LVM . Однак зверніть увагу на загальні проблеми з знімками та те, що знімок не повинен вважатися резервним копієм сам по собі.
Ви також можете використовувати знімки LVM для того, щоб робити онлайн-fsck: робити знімок LV та fsck знімок, використовуючи при цьому основний FS-знімок, не описаний тут, - однак це не зовсім просто, тому найкраще використовувати e2croncheck, як описано Тедом Ц 'o , супровідник ext3.
Вам слід тимчасово "заморозити" файлову систему під час зйомки - деякі файлові системи, такі як ext3 та XFS, зроблять це автоматично, коли LVM створює знімок.
Висновки
Незважаючи на все це, я все ще використовую LVM в деяких системах, але для налаштування робочого столу я віддаю перевагу сирим розділам. Основна перевага, яку я бачу від LVM, - це гнучкість переміщення та зміни розміру FS, коли ви повинні мати великий час роботи на сервері - якщо вам це не потрібно, gparted простіше і має менший ризик втрати даних.
LVM вимагає великої обережності щодо налаштування кешування записів через гіпервізори VM, кешування на жорсткому диску / SSD тощо, але те саме стосується використання Linux як сервера БД. Відсутність підтримки більшості інструментів ( gparted
включаючи критичні розрахунки розміру testdisk
тощо) робить його складнішим, ніж повинен бути.
Якщо ви використовуєте LVM, будьте дуже обережні зі знімками: використовуйте знімки VM / хмари, якщо це можливо, або досліджуйте ZFS / btrfs, щоб повністю уникнути LVM - ви можете виявити, що ZFS або btrs є достатньо зрілими порівняно з LVM зі знімками.
Підсумок: Якщо ви не знаєте про проблеми, перелічені вище та як їх вирішити, краще не використовувати LVM.
Я [+1] цю посаду, і принаймні для мене я думаю, що більшість проблем існують. Бачили їх під час роботи декількох 100 серверів і декількох 100 ТБ даних. Для мене LVM2 в Linux відчуває себе як "розумна ідея", у когось була. Як і деякі з них, вони часом виявляються "не розумними". Тобто, не маючи суворо відокремлених станів ядра та користувальницького простору (lvmtab), можливо, було б по-справжньому розумним, тому що можуть виникнути проблеми з корупцією (якщо ви не правильно знайдете код)
Ну, тільки що це розділення було з причини - відмінності демонструються з поводженням з втратами на PV та в режимі он-лайн повторної активації VG, тобто відсутніх ПВ, щоб повернути їх у гру - Що таке вітер від "оригінальних LVM" (AIX , HP-UX) перетворюється на лайно на LVM2, оскільки керованість станом недостатньо хороша. І навіть не змушуйте мене говорити про виявлення втрат Quorum (ха-ха) або обробку станом (якщо я видалю диск, він не буде позначений як недоступний. У ньому навіть немає чортового статусу)
Re: стабільність pvmove ... чому так
втрата даних pvmove
така стаття найвищого рейтингу в моєму блозі, гммм? Щойно я дивлюсь на диск, на якому досі вивішені дані фізскалу lvm про стан від середини pvmove. Мені здається, що я маю на увазі деякі повідомлення, і загальна думка, що копіювати дані живого блоку з простору користувача просто сумно. Приємна цитата зі списку lvm "здається, що vgreduce --missing не обробляє pvmove" Це означає, якщо диск відхиляється під час pvmove, тоді інструмент управління lvm змінюється з lvm на vi. Так, також сталася помилка, коли pvmove продовжується після помилки читання / запису блоку і насправді більше не записує дані на цільовий пристрій. WTF?
Re: Знімки КР робиться небезпечно, оновивши НОВІ дані в область lv знімка, а потім об'єднавшись назад, як тільки ви видалите оснащення. Це означає, що під час останнього злиття нових даних у вихідний НН ви маєте великі шипи введення-виведення, і, що ще важливіше, ви, звичайно, також маєте набагато більший ризик пошкодження даних, оскільки не знімок буде порушений, коли ви натиснете на стіна, але оригінальна.
Перевага полягає у продуктивності: робити 1 запис замість 3. Вибір швидкого, але небезпечного алгоритму - це те, чого, очевидно, очікують від людей, таких як VMware та MS, на "Unix", я вважаю, що все буде "зроблено правильно". Я не бачив великих проблем з продуктивністю, доки у мене зберігається резервна копія знімків на іншому дисководі, ніж основні дані (і резервне копіювання на ще одне, звичайно)
Re: Шлагбауми Я не впевнений, чи можна звинувачувати це в LVM. Наскільки я знаю, це було проблемою Devmapper. Але може бути якась провина за те, що насправді не піклується про цю проблему, щонайменше, від ядра 2.6 до 2.6.33. AFAIK Xen - єдиний гіпервізор, який використовує O_DIRECT для віртуальних машин, яка була проблема, коли використовується "цикл", тому що ядро все одно кешуватиметься цим. У Virtualbox принаймні є деякі налаштування для відключення таких матеріалів, а Qemu / KVM, як правило, дозволяє кешувати. Усі FUSE FS також мають там проблеми (немає O_DIRECT)
Re: Розміри Я думаю, що LVM робить "округлення" відображеного розміру. Або він використовує GiB. У будь-якому випадку вам потрібно використовувати розмір VG Pe і помножити його на номер LE на LV. Це має дати правильний розмір нетто, і це питання завжди є проблемою використання. Це погіршується файловими системами, які не помічають подібного під час fsck / mount (привіт, ext3) або не мають робочого в режимі он-лайн "fsck -n" (привіт, ext3)
Звичайно, це говорить про те, що ви не можете знайти хороших джерел для такої інформації. "скільки ЛЕ для VRA?" "що таке фіскальне зміщення для PVRA, VGDA, ... тощо"
Порівняно з оригіналом, LVM2 - це головний приклад "Ті, хто не розуміє UNIX, засуджені, щоб винаходити його погано".
Оновлення через кілька місяців: я вже потрапив у сценарій "повного знімка" для тесту. Якщо вони будуть заповнені, знімки блокуються, а не оригінальний LV. Я помилявся там, коли вперше опублікував це. Я зібрав неправильну інформацію від якогось документа, або, можливо, я зрозумів це. У своїх налаштуваннях я завжди був дуже параноїком, щоб не давати їм заповнити, і тому я ніколи не виправлявся. Можна також розширити / зменшити знімки, що є задоволенням.
Що я досі не змогла вирішити - це визначити вік знімка. Щодо їхньої продуктивності, на сторінці проекту «тонкий» фідра є примітка, в якій сказано, що техніка знімків переглядається, щоб вони не повільніше ставились із кожним знімком. Я не знаю, як вони це реалізують.
якщо ви плануєте використовувати знімки для створення резервних копій - будьте готові до головного хіта на продуктивність, коли знімок присутній. докладніше читайте тут . інакше все добре. Я використовую lvm у виробництві протягом декількох років на десятках серверів, хоча моя основна причина використовувати його - атомний знімок, а не здатність легко розширювати обсяги.
btw, якщо ви будете використовувати накопичувач 1 Тб, пам’ятайте про вирівнювання розділів - найімовірніше, цей накопичувач має фізичні сектори 4 кБ.
Адам,
Ще одна перевага: ви можете додати новий фізичний об'єм (PV), перемістити всі дані до цього PV і потім видалити старий PV без будь-яких перерв у службі. Я використовував цю здатність принаймні чотири рази за останні п’ять років.
Недолік, який я ще не бачив, чітко вказав: Існує дещо крута крива навчання для LVM2. Переважно в абстракції, яку він створює між вашими файлами та базовим носієм інформації. Якщо ви працюєте лише з кількома людьми, які діляться справами на наборі серверів, ви можете виявити додаткову складність для вашої команди в цілому. Більші команди, присвячені роботі з ІТ, зазвичай не матимуть такої проблеми.
Наприклад, ми широко використовуємо це тут у своїй роботі, і ми зайняли час, щоб навчити всю команду основам, мові та голим принципам відновлення систем, які не завантажуються належним чином.
Одне застереження, яке конкретно слід зазначити: якщо ви завантажуєтесь з логічного тома LVM2, ви ускладнили операції по відновленню, коли сервер виходить з ладу. Knoppix та друзі не завжди мають для цього потрібні речі. Отже, ми вирішили, що наш / завантажувальний каталог буде на власному розділі і завжди буде малим та рідним.
В цілому, я фанат LVM2.
/boot
окремо - це завжди гарна ідея
vgchange -ay
щоб знайти обсяги LVM.