Чи дійсно ZFS накладається на кожен vdev, навіть у дуже великих zpools?


3

Я читав, що ZFS розміщує дані у zpool у всіх vdevs верхнього рівня, припускаючи, що всі vdevs додані на початку життя пулу. Все, що я прочитав, здається, вважає це гарною справою. Але, мені здається, як для розгортання з багатьма дисками, це не призведе до хорошої загальної продуктивності всіх цих дисків у багатокористувацькому (або навіть просто багатопроцесорному) середовищі.

Припустимо, наприклад, що у мене є 96 дисків, які я використовую для створення 12 vdevs з 8 дисків кожен, які я додаю до моєї zpool. Тоді я накладаю його на користувачів, і вони наповнюють його всілякими божевіллями. Деякі файли - це десятки гігабайт, інші - невеликі файли конфігурації програм користувача тощо.

Пізніше користувач A хоче скопіювати декілька багатогігабайтних файлів. Вона запускає rsync або колись, і відчуває спалахуючу ефективність від основної послідовної зчитування 12 смугастих vdevs. Але тоді користувач B запускає іншу програму, яка також вимагає досить великих фрагментів даних одночасно. Тепер дискові головки постійно витягують rsync користувача A для роботи з користувачем B, і хоча кожна програма індивідуально відносно послідовна, 96 дисків є залученими до запитів обох користувачів, і дивіться схеми пошуку та ефективність, що більше відповідають випадковим I / О.

У цьому 12-ти Vdevs з 8 дисковими конфігураціями, кожен vdev все ще має 8 дисків, які мають ефективність, тому я б очікував, що послідовний введення-вивід буде дуже хорошим навіть без додаткової смуги на інші vdevs. Чи не було б краще для ZFS поставити багато гігабайт на один vdev, перш ніж перейти на інший? (У своїх експериментах я отримую смужки близько 500 тис.) Таким чином, читання користувача A матиме лише 1/12 шансу використовувати ті самі диски, що і читання користувача B, і вони обидва отримують продуктивність, що відповідає послідовним I / O більшу частину часу.

Чи є спосіб отримати хороші показники від ZFS в цій конфігурації / навантаженні?


Ви припускаєте RAID-Z2? Ви отримуєте лише IOPS одного диска на VDEV в RAID-Z2, а не комбінованого IOPS. Так, це було б повільно, але саме тому ви намагаєтеся використовувати 10k, 15k або SSD. Крім того, ви завжди повинні використовувати дзеркала замість RAID-Z із ZFS, якщо зможете покращити IOPS та пропускну здатність.
Копіювати запуск Початок

ZFS оптимізує записи, оскільки вони вважаються вузьким місцем для більшості робочих навантажень. ZFS намагається перетворити невеликі випадкові записи у великі блокові записи за допомогою SLOG. І ARC не кешує лінійні зчитування, а лише випадкові. Якщо ваші шаблони вводу-виводу не кешуються ARC та SLOG, ви отримаєте досить погані IOPS від RAIDZ vdevs
ptman

Відповіді:


1

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

Ні, ви не можете змінити це або розділити без створення окремих пулів.

Для покращення продуктивності над такими смугастими налаштуваннями ZFS включає власний планувальник вводу- виводу в компонент ZIO (саме тому для Linux- термінів або планівок Noop рекомендується).

Ще один шар, що покращує такі навантаження - це ARC, який серед іншого включає кеш попереднього вибору. Ви можете пришвидшити ARC за допомогою L2ARC на окремих швидких пристроях, еквівалентом для синхронних записів є SLOG (спеціальні пристрої ZIL).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.