Які наслідки для продуктивності роботи VM на хості ZFS?


11

Я розглядаю можливість переходу з ext3 на ZFS для зберігання даних на моєму хості Debian Linux, використовуючи ZFS в Linux . Однією з особливостей вбивці ZFS, яку я дуже хочу, є гарантії цілісності даних. Можливо, я б з нетерпінням чекав можливості тривіального зростання сховища у міру збільшення потреб у моїх сховищах.

Однак я також запускаю кілька VM на тому ж хості. (Хоча зазвичай у моєму випадку на хості працює будь-який лише один VM.)

Враховуючи контрольну суму даних ZFS та поведінку під час запису, а також той факт, що зображення диска VM є порівняно величезними файлами (головний файл зображення диска VM наразі становить 31 ГБ), які наслідки для продуктивності в гості VM такого міграція? Які заходи можна вжити для зменшення можливого негативного впливу на продуктивність?

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

Апаратне забезпечення досить приємне для системи класу робочих станцій, але не матиме великої кількості свічки на висококласному сервері (32 ГБ оперативної пам’яті з рідкісним> 10 ГБ у використанні, 6-ядерним процесором 3,3 ГГц, на даний момент 2,6 ТБ придатним для використання дисковий простір відповідно dfі близько 1,1 ТБ вільного; перехід на ZFS, ймовірно, додасть ще трохи вільного місця ), і я не планую виконувати дедуплікацію даних (так як включення дедупіровки просто не додасть багато чого в моїй ситуації). План полягає в тому, щоб почати з конфігурації JBOD (очевидно, з хорошими резервними копіями), але я можу перейти до налаштування дзеркального дзеркала зрештою, якщо цього вимагають умови.


Також майте на увазі, що ZFS в плані IOPS краще, ніж традиційний RAID5 . RAIDZ пише виконувати зі швидкістю одного диска, тому що він не страждає від покарань за продуктивність вводу / виводу, що загрожує традиційним RAID5 / 6.
Стефан Ласєвський

1
Дякуємо всім, хто відповів за вашу думку! Я обов'язково повернусь до цього питання пізніше.
CVn

Коментар Стефана .. ну, це просто помилково. Продуктивність ZFS RAIDZ значно гірша з точки зору IOPS (з чим у вас зазвичай є проблеми в VM), ніж у традиційних масивів RAID5. Будь ласка, не припускайте покращення продуктивності запису, перейшовши на ZFS. Це рідко буває. Коефіцієнт збільшення читання парфумів залежатиме від оперативної пам’яті, доступної для ARC, та вашого розміру та дельти робочого набору. Зазвичай з VM, ZFS ARC в кінцевому підсумку допомагає в загальній продуктивності читання порівняно з альтернативами. Записи, як правило, страждають, навіть на дзеркалах, ЗАВЖДИ з рейдом.
Nex7

@ Nex7 Як писати взагалі без RAID від ZFS, а лише з одним пристроєм зберігання даних, який, наприклад, надається деяким mdraid? Чи працює ZFS порівняно з іншими файловими системами, оскільки не використовуються фантазійні RAID-матеріали?
Торстен Шьонінг

Відповіді:


4

Оскільки ZFS працює на рівні блоку, розмір файлів не має різниці. ZFS вимагає більше пам’яті та процесора, але по суті не є значно повільнішою як файлова система. Хоча вам потрібно знати, що RAIDZ не є еквівалентною за швидкістю RAID5. RAID10 добре, коли швидкість є пріоритетною.


4

ZFS на пристойному (тобто буф) апаратному забезпеченні, швидше за все, буде швидшим, ніж у інших файлових системах, ви, швидше за все, захочете створити ZIL у швидкому (тобто SSD) місці. Це по суті місце для кешування записів (ну, більше, як журнал у ext3 / 4). Це дозволяє поле "Ack" записувати як записане на диск до того, як фактичні шпинделі мають дані.

Ви також можете створити L2 ARC на SSD для кешу читання. Це фантастично в середовищі VM, де ви можете підняти фізичні диски на коліна, завантаживши декілька VM одночасно.

Диски переходять у VDEV, VDEV входять в zpools (будь-коли, використовуйте цілі диски за один раз). Якщо це менша система, можливо, ви хочете мати один zpool і (якщо вас не дуже турбує втрата даних) один VDEV. VDEV - це місце, де ви вибираєте рівень RAID (хоча ви також можете відображати дзеркальні VDEV, якщо у вас достатньо дисків). Самий повільний диск у VDEV визначає, наскільки швидкий весь VDEV.

ZFS стосується цілісності даних - причина багатьох традиційних інструментів для обслуговування файлової системи не існує (наприклад, fsck) - це проблема, яку вони вирішують, не може існувати у файловій системі ZFS.

IMO найбільшим недоліком ZFS є те, що якщо ваші файлові системи наближаються до повного (скажімо, 75% +), воно стає ДУЖЕ повільним. Просто не туди.


2

31 Гб насправді зовсім не великий ...

У будь-якому випадку, залежно від файлової системи, яку ви використовуєте, ви можете виявити, що ZFS трохи повільніше, але, враховуючи технічні характеристики, це може бути незначним.

Очевидно, що ZFS використовуватиме гарний фрагмент оперативної пам’яті для кешування, що може зробити ваші віртуальні пристрої загальними для використання (коли не читати чи писати). Я не впевнений, як ZFS налаштований на Linux, але, можливо, вам доведеться обмежити його ARC, якщо це можливо, щоб зупинити його втечу всією своєю оперативною пам’яттю (бачачи, як вам потрібно буде гідний шматок для вашої хост-системи та ВМ).

Я б увімкнув стиснення (порада в ці дні - увімкнути його, якщо у вас немає вагомих причин цього не робити). Пам'ятайте, що це потрібно зробити перед тим, як розміщувати дані у файловій системі. Більшість людей дивуються, коли реально ввімкнути це, оскільки алгоритми стиснення, як правило, працюють швидше, ніж дисковий IO. Я сумніваюся, що це спричинить велику кількість продуктивності вашого 6-ядерного процесора. Я не сподівався, що VM сильно стиснуться, але мені вдалося перетворити ~ 470 ГБ даних VM в 304 ГБ лише за допомогою налаштування стиснення за замовчуванням.

Не турбуйтеся про дедупу, це просто повернеться, щоб переслідувати вас пізніше, і ви будете проводити тижні, перетасовуючи дані, намагаючись позбутися від нього.

Якщо у вас виникають проблеми з продуктивністю, то очевидною відповіддю є додати SSD як ZIL / L2ARC або навіть обидва. Не ідеально використовувати один пристрій для обох, але це, швидше за все, покращить продуктивність у пулі, що містить невелику кількість дисків / vdevs.

Додамо: я б дуже спробував розпочати з надмірної конфігурації, якщо можливо (в ідеалі дзеркала), або перетворити на дзеркала з смуги якнайшвидше. Незважаючи на те, що ZFS перевірятиме всі дані та виявляє помилки під час руху (або під час скрабу), він не зможе нічого з цим зробити (без використання копій = 2, що подвоїть використання диска). Ви просто залишите це повідомлення про те, що у файлах (можливо, ваших образах диска VM) є помилки, з якими ви не зможете багато зробити, не видаляючи і не створюючи ці файли.


"Ви просто залишите це повідомлення про те, що у файлах є помилки ... про які ви не зможете багато зробити". Це гарна думка, і я ціную це. Це сказало, що ось, де мої нічні резервні копії. Так як він нічого не стоїть між мною і мовчазною корупцією даних, тож навіть якщо ZFS просто відмовляється дозволити мені прочитати файл або його частину, поки я не відновлю його з (відомий хороший ) резервне копіювання, це величезне поліпшення гарантій цілісності даних.
CVn

Що стосується розміру файлу, немає, 31 Гб не зовсім об'єктивно величезний (хоча вона по - , як і раніше ~ 1,2% від моєї загальної ємності системи), але моє занепокоєння було більше уздовж лінії , що КПС буде мати систему копіювання всіх цих даних туди і назад безперервно, помилкове уявлення, яке Джеймс Райан швидко виправив .
CVn

1

Залежно від ваших випадків використання та віртуальних машин я розглядаю наступне. Нехай операційна система хоста подбає про файли, які ви зберігаєте в томах ZFS.

Якщо можливо, створіть лише LUN ​​для кожного VM, що містить лише Операційну систему та необхідні бінарні файли. І представіть сховище даних для окремих даних як поділки через NFS, samba або iSCSI (або zvols, як зазначено в коментарях). ZFS може відслідковувати кожен файл за допомогою контрольної суми та часу доступу. Звичайно, якщо швидкість не настільки важлива, ви також можете включити стиснення в деяких сховищах даних. Користь буде відсутнім шаром іншої файлової системи. Якщо ви створили LUN для другого Virtual Harddrive та створили NTFS Filesystem на вершині цього, ZFS повинен обробляти велику Binary blob, яка не знає жодного вмісту чи файлів, і тому не можу скористатись кешем ZIL або ARC у так само, як і файли літака.

Згадуючи ACL, ZFS може використовувати ACL через NFSv4 або Samba (якщо вони включені). Я дійсно визнаю, що я використовую ZFS на FreeBSD, і не можу впевнитись, як включити ACLs Sambas, що спаровуються на томах ZFS. Але я впевнений, що це не повинно бути великою справою.

Дедуплікація у поєднанні з кешем читання є великою перевагою, коли справа стосується економії місця та покращення масивного читання (бурі завантаження), оскільки всі віртуальні машини починають читати одні й ті ж блоки.

Те саме стосується знімків ZFS для віртуальних машин та сховищ даних. Ви можете створити простий скрипт оболонки, заморозити відеомагнітофон, зробити знімок VM та Datastore і продовжити роботу, або просто Datastore в поодинці, і клонувати ВМ представити знімок оригіналу та протестувати деякі речі.

Можливості безмежні у ZFS;)

EDIT: Сподіваюсь, я зараз це пояснив трохи краще

EDIT2: Особиста думка: Подумайте про використання RAIDZ2 (RAID6), оскільки ви можете протистояти подвійному відмові диска! Якщо у вас залишився один запасний диск, він ніколи не помилиться, але для швидкої реакції має бути достатньо двох відмов диска. Я просто розмістив свій скрипт для моніторингу стану диска тут


Я не впевнений, що отримую. Ви хочете сказати, що я повинен зберігати файли, які використовуються віртуальними машинами, як окремі файли у файловій системі ZFS, а не як образ диска? Що з такими речами, як розділи, завантажувальні сектори, атрибути, про які ZFS не знає, Windows ACL в контексті Linux, ...? Я або вас не розумію, або ви відповідаєте на щось інше, ніж те, що я прошу. Чи можете ви перечитати питання та відредагувати свою відповідь, щоб уточнити, як це стосується моєї проблеми щодо зберігання?
CVn

Щодо знімків: можливо, не потрібно буде фактично заморожувати VM. ZFS використовує Copy-on-Write (COW), а це означає, що знімки миттєві і нададуть вам повне зображення диска. Деякі адміністратори використовують це для баз даних MySQL та PostGRES, не заморожуючи їх бази даних (наприклад, без простоїв), хоча інші спершу обробляють таблиці. Якщо вам потрібно заморозити VM, знімок ZFS повинен зайняти лише кілька секунд.
Стефан Ласевський

Майкл, я думаю, Daywalker переглядає дзвінки, де ви можете створити файл, який діє як блоковий пристрій. Я б використовував NFS, а не окремі дзвінки для віртуальних машин (ну в цьому випадку це виглядає так, що це все локально, а просто файли у файловій системі). Так, звуки можуть бути крутими, але вони є додатковим шаром ускладнення. І знімки ZFS за визначенням відповідають. Це не означає, що ОС ВМ знає, що потрібно переправляти дані на диск, але ви отримаєте послідовність файлової системи з тим же рівнем, як якщо б ви втратили живлення на VM.
TheFiddlerWins

Дедуп дуже ресурсомісткий. Використання стиснення не є (і для віртуальних машин), ймовірно, поверне вам багато місця завдяки пробілу в файлових системах VM.
TheFiddlerWins

@ MichaelKjörling Тільки редагуйте мій пост, сподіваючись на краще розуміння (також із коментарями TheFiddlerWins та Стефана Ласєскі
Daywalker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.