Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Докладно аргументуємо, що робить OceanStor Dorado 18000 V6 по-справжньому хай-ендовою системою зберігання даних з порядним доробком на найближчі роки. Заодно розвіюємо поширені побоювання щодо All-Flash-сховищ і показуємо, рахунок чого Huawei вичавлює з них максимум: end-to-end NVMe, додаткове кешування на SCM і ціла пачка інших рішень.
Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Новий ландшафт даних - нове зберігання даних

Інтенсивність роботи з даними підвищується у всіх галузях. І банківська сфера тому найнаочніша ілюстрація. За останні кілька років кількість банківських транзакцій збільшилася вдесятеро. Як показує дослідження BCG, тільки в Росії на відрізку з 2010 по 2018 рік кількість безготівкових транзакцій за допомогою пластикових карток показала більш ніж тридцятикратне зростання - з 5,8 до 172 на одну особу на рік. Справа насамперед у тріумфі мікроплатежів: більшість із нас родилася з онлайн-банкінгом, і банк у нас тепер під рукою — у телефоні.

ІТ-інфраструктура кредитної організації має бути готова до такого виклику. А це справді виклик. Окрім іншого, якщо раніше банку потрібно забезпечити доступність даних лише у свій робочий годинник, то тепер — 24/7. Ще недавно 5 мс вважалися прийнятною нормою затримкою, і що? Зараз навіть 1 мс – перебір. Для сучасної системи зберігання даних цільове значення – 0,5 мс.

Те саме з надійністю: у 2010-ті сформувалося емпіричне розуміння того, що достатньо довести її рівень до п'яти десяток — 99,999%. Щоправда, розуміння це встигло застаріти. У 2020 році для бізнесу абсолютно нормально вимагати 99,9999% стосовно сховища і 99,99999% стосовно архітектурного рішення в цілому. І це зовсім не дурощі, а нагальна потреба: або тимчасового вікна на обслуговування інфраструктури немає, або воно крихітне.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Для наочності зручно спроектувати ці показники на площину грошей. Найпростіше — на прикладі фінансових організацій. На діаграмі вище зазначено, яку суму протягом години заробляє кожен із топ-10 світових банків. В одного тільки Промислового та комерційного банку Китаю це не мало не багато $5 млн. Рівно стільки обійдеться годинний простий IT-інфраструктури найбільшої кредитної організації КНР (причому в розрахунку врахована лише втрачена вигода!). За такого ракурсу видно, що скорочення даунтайму та підвищення надійності не те що на одиниці відсотків — навіть на частки відсотка цілком раціонально обґрунтовані. Не лише з міркувань підвищення конкурентоспроможності, а й просто заради збереження ринкових позицій.

Порівнянні зміни відбуваються у інших індустріях. Наприклад, у повітряних перевезеннях: до пандемії авіасполучення рік у рік тільки набирало обертів, і багато хто став користуватися ним майже як таксі. Що стосується споживчих патернів, у суспільстві вкоренилася звичка до тотальної доступності сервісів: після прибуття в аеропорт нам потрібне підключення до Wi-Fi, доступ до платіжних сервісів, до карти місцевості тощо. Як наслідок, навантаження на інфраструктуру та сервіси у публічних просторах зросла багаторазово. І ті підходи до її, інфраструктури, побудови, які ми вважали прийнятними навіть рік тому, стрімко старіють.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Чи не рано переходити на All-Flash?

Для вирішення завдань, про які було сказано вище, з точки зору продуктивності AFA - all-flash arrays, тобто повністю побудовані на флеші масиви, - підходять якнайкраще. Хіба що до останнього часу зберігалися сумніви в тому, чи вони порівняні по надійності із зібраними на основі HDD і з гібридними. Зрештою, у твердотільній флеш-пам'яті є такий показник, як середнє напрацювання на відмову, або MTBF (mean time between failures). Деградація осередків внаслідок операцій введення-виведення, на жаль, даність.

Так що перспективи All-Flash затьмарювало питання, як запобігти загибелі даних у тому випадку, якщо SSD накаже довго жити. Резервне копіювання - варіант звичний, ось тільки час відновлення було б неприйнятно більшим виходячи з сучасних вимог. Інший вихід — налагодити другий рівень зберігання на шпиндельних накопичувачах, однак за такої схеми втрачається частина переваг «строго флешової» системи.

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

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Ще один традиційний аргумент на користь шпиндельних накопичувачів – їхня цінова доступність. Безперечно, вартість зберігання терабайта на жорсткому диску досі порівняно невелика. І якщо брати до уваги лише витрати на обладнання, тримати терабайт на шпиндельному накопичувачі дешевше, ніж на твердотільному. Однак у розрізі фінансового планування має значення, не тільки чому було куплено конкретний пристрій, а й яка сукупна вартість володіння ним довго — від трьох до семи років.

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

Згідно з звітами агентства ESG, на All-Flash системах зберігання даних Dorado V6 реально досягти зниження вартості володіння до 78% на інтервалі в п'ять років — у тому числі за рахунок ефективної дедуплікації та компресії та завдяки невисокому енергоспоживання та тепловиділення. Німецька аналітична компанія DCIG також рекомендує їх використовувати як оптимальні з точки зору TCO з доступних на сьогоднішній день.

Використання твердотільних накопичувачів дає змогу економити корисний простір, знижує кількість відмов, скорочує час на обслуговування рішення, зменшує енергоспоживання та тепловиділення СГД. І виявляється, що AFA в економічному відношенні як мінімум можна порівняти з традиційними масивами на шпиндельних накопичувачах, часто ж перевершує їх.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Роял-флеш від Huawei

Серед наших All-Flash сховищ топове місце належить hi-end-системі OceanStor Dorado 18000 V6. Та й не лише серед наших: загалом у індустрії вона тримає рекорд швидкості — до 20 млн. IPOS у максимальній конфігурації. Крім того, вона надзвичайно надійна: нехай навіть полетять разом два контролери, або до семи контролерів один за одним, або відразу цілий двигун - дані вціліють. Неабиякі переваги «вісімнадцятитисячної» дає зашитий у неї ІІ, у тому числі - гнучкість в управління внутрішніми процесами. Подивимося, рахунок чого це досягається.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

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

Контролер у системах OceanStor Dorado побудований на процесорі власної розробки та виробництва Huawei - Kunpeng 920. У ньому задіяний модуль управління Intelligent Baseboard Management Controller (iBMC), також наш. Чіпи ІІ, а саме Ascend 310, які оптимізують передбачення щодо відмов і дають рекомендації з налаштувань, також хуавеївські, так само як і плати введення-виведення - модуль Smart I/O. Зрештою, і контролери у твердотільних накопичувачах спроектовані та виготовлені нашими силами. Все це дало базу для того, щоб зробити інтегрально збалансоване та високопродуктивне рішення.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

За останній рік ми реалізували проект із впровадження цієї, найтопової своєї СГД в одному з великих російських банків. У результаті більше 40 одиниць OceanStor Dorado 18000 V6 у metro-кластері показують стабільну продуктивність: з кожної системи вдається зняти більше мільйона IOPS, і це з урахуванням затримок через відстань.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Наскрізний NVMe

Нові системи зберігання даних Huawei підтримують end-to-end NVMe, на чому ми недарма робимо акцент. Традиційно використовувані протоколи доступу до накопичувачів були розроблені в сивій стародавності: у фундаменті у них — SCSI-команди (привіт, 1980-ті!), які тягнуть за собою безліч функцій для забезпечення зворотної сумісності. Який спосіб доступу не візьми, протокольний overhead у разі колосальний. У результаті сховищ, які використовують зав'язані на SCSI протоколи, затримка введення-виведення не може бути нижче 0,4-0,5 мс. У свою чергу, будучи протоколом, створеним для роботи з флеш-пам'яттю і позбавленим милиць заради горезвісної зворотної сумісності, NVMe - Non-Volatile Memory Express - збиває latency до 0,1 мс, притому не на СГД, а на всьому стеку, від хоста до накопичувачів. Не дивно, що NVMe лежить у руслі трендів розвитку data storages на найближче майбутнє. Зробили ставку на NVMe і ми – і поступово відходимо від SCSI. Всі системи зберігання даних Huawei, включаючи лінійку Dorado, NVMe підтримують (правда, як end-to-end він реалізований тільки на передових моделях серії Dorado V6).

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

FlashLink: жменя технологій

Наріжна для всієї лінійки OceanStor Dorado технологія FlashLink. Точніше, це термін, що поєднує інтегральний набір технологій, які є для забезпечення високих продуктивності та надійності. Сюди входять технології дедуплікації та компресії, функціонування системи розподілу даних RAID 2.0+, поділу «холодних» і «гарячих» даних, цільнострайпового послідовного запису даних (випадкові записи, з новими та зміненими даними, агрегуються у великий стек і пишуться послідовно, що підвищує швидкість читання-записи).

Крім іншого, FlashLink включає дві важливі складові - Wear Leveling і Global Garbage Collection. На них варто зупинитись окремо.

Фактично будь-який твердотільний накопичувач – це СГД у мініатюрі, з великою кількістю блоків та контролером, який забезпечує доступність даних. А забезпечується вона навіть за рахунок того, що дані з «убитих» осередків перекидаються в «не вбиті». Тим самим гарантується, що їх вдасться прочитати. Існують різні алгоритми такого перенесення. У випадку контролер намагається відбалансувати знос всіх осередків накопичувача. Такий підхід має мінус. Коли всередині SSD відбувається переміщення даних, кількість здійснюваних ним операцій введення-виведення разюче скорочується. На даний момент це неминуче зло.

Отже, якщо у системі багато твердотільних накопичувачів, на графіку її продуктивності вимальовується «пила», з різкими підйомами і спадами. Біда в тому, що один накопичувач з пулу може запустити міграцію даних у будь-який момент, а загальний performance знімається одночасно з усіх SSD в масиві. Але інженери Huawei вигадали, як уникнути виникнення «пили».

Благо і контролери в накопичувачах, і контролер сховища, і мікрокод Huawei «рідні», ці процеси в OceanStor Dorado 18000 V6 запускаються централізовано, синхронно на всіх накопичувачах масиву. Причому за командою контролера СГД і тоді, коли немає великого навантаження по вводу-виводу.

Чіп штучного інтелекту також бере участь у виборі правильного моменту для перенесення даних: на базі статистики звернень за попередні кілька місяців він з високою ймовірністю здатний спрогнозувати, чи очікувати найближчим часом активного введення-виводу, і якщо відповідь негативна, а навантаження на систему на даний момент невелика, то контролер командує всім накопичувачам: кому потрібно Wear Leveling, зробити його разом і одночасно.

Плюс до всього контролер системи бачить, що діється в кожному осередку накопичувача, на відміну від СГД конкуруючих виробників: ті змушені закуповувати твердотільні носії у сторонніх вендорів, через те, що cell-level деталізація контролерам таких сховищ недоступна.

Як наслідок, у OceanStor Dorado 18000 V6 дуже короткий період втрати продуктивності на операції Wear Leveling, а виконується вона, в основному, коли ніяким іншим процесам не заважає. Це дає високу стабільну продуктивність постійно.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

З чого складається надійність OceanStor Dorado 18000 V6

У сучасних системах зберігання даних виділяється чотири рівні надійності:

  • апаратна, на рівні накопичувача;
  • архітектурна, лише на рівні устаткування;
  • архітектурна разом із програмною частиною;
  • сукупна, що відноситься до рішення загалом.

Оскільки, нагадаємо, всі складові СГД наша компанія проектує та випускає сама, ми забезпечуємо надійність на кожному з чотирьох рівнів, з можливістю досконало відстежувати, що на якому з них відбувається в моменті.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Надійність накопичувачів гарантується насамперед раніше описаними Wear Leveling та Global Garbage Collection. Коли SSD виглядає для системи як чорний ящик, їй невтямки, як саме в ньому зношуються осередки. Для OceanStor Dorado 18000 V6 накопичувачі прозорі, завдяки чому можливе рівномірне балансування по всіх накопичувачах масиву рівномірно. Таким чином, виходить значно продовжити термін життя SSD і заручитися високим рівнем надійності їх функціонування.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Також на надійність накопичувача впливають додаткові надмірні осередки у ньому. І поряд із простим резервом у СГД використовуються так звані DIF-комірки, де містяться контрольні суми, а також додаткові коди, що дозволяють уберегти кожен блок від одиничної помилки, на додаток до захисту на рівні RAID-масиву.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Запорукою архітектурної надійності служить рішення SmartMatrix. Коротко це чотири контролери, які сидять на пасивному бекплейні у складі одного двигуна (engine). Два таких движка - відповідно, з вісьмома контролерами - підключаються до загальних полиць з накопичувачами. Завдяки SmartMatrix, навіть якщо перестануть функціонувати сім контролерів із восьми, збережеться доступ до всіх даних як на читання, так і на запис. А при втраті шести контролерів із восьми можна буде навіть продовжувати операції кешування.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Плати введення-виведення на тому самому пасивному бекплейні доступні всім контролерам, як по фронтенду, так і по бекенду. За такої схеми підключення full-mesh, що б не виходило з ладу, доступ до накопичувачів завжди зберігається.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Про надійність архітектури доречніше говорити в контексті варіантів відмов, захист від яких система зберігання даних може забезпечити.

Сховище переживе без втрат ситуацію, якщо «відваляться» два контролери, зокрема одночасно. Досягається така стійкість за рахунок того, що будь-який блок кешу неодмінно має ще дві копії на різних контролерах, тобто він існує в трьох копіях. Причому принаймні одна знаходиться на іншому двигуні. Таким чином, навіть якщо перестане працювати двигун повністю - з усіма чотирма своїми контролерами, - гарантовано збереження всієї інформації, яка знаходилася в кеш-пам'яті, тому що як мінімум в одному контролері з двигуна, що залишився, кеш буде продубльований. Нарешті, при послідовному підключенні можна втратити до семи контролерів, і навіть при їх вибуванні блоками по два, причому знову-таки збережеться все введення-виведення і всі дані з кеш-пам'яті.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

При порівнянні зі сховищами класу hi-end інших виробників видно, що тільки Huawei забезпечує повний захист даних та повну їх доступність навіть після загибелі двох контролерів або двигуна повністю. Більшість вендорів використовує схему з так званими контролерними парами, до яких підключаються накопичувачі. На жаль, у такій конфігурації при виході з ладу двох контролерів виникає ризик втрати доступу до накопичувача з введення-виведення.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

На жаль, об'єктивно не виключено відмову одиночного компонента. У такому разі продуктивність на якийсь час просяде: необхідно, щоб перебудувалися шляхи та відновився доступ до операцій вводу-виводу щодо тих блоків, які або прийшли на запис, але ще не були записані, або були запрошені на читання. У OceanStor Dorado 18000 V6 середній таймінг перебудови становить приблизно одну секунду - значно менше, ніж у найближчого аналога в індустрії (4 с). Досягається це завдяки тому ж пасивному бекплейну: коли контролер виходить з ладу, інші відразу бачать його введення-виведення, і зокрема який блок даних не був дозаписаний; у результаті найближчий контролер підхоплює процес. Звідси й можливість відновити продуктивність за секунду. Потрібно додати, інтервал стабільний: секунда на один контролер, секунда на інший і т.д.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

У пасивному бекплейні OceanStor Dorado 18000 V6 всі плати доступні всім контролерам без додаткової адресації. Отже, будь-який контролер здатний підхопити введення-висновок по будь-якому порту. У який би фронтенд-порт не надійшло введення-виведення, контролер готовий буде його відпрацювати. Звідси – мінімальна кількість внутрішніх пересилок та помітне спрощення балансування.

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

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Традиційно всі масиви Huawei виконані таким чином, що немає єдиної точки відмови. Заміні «на гарячу», без перезавантаження системи, піддаються всі її компоненти: контролери, модулі живлення, модулі охолодження, плати введення-виводу та ін.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Підвищує надійність системи загалом і така технологія, як RAID-TP. Це назва RAID-групи, яка дозволяє підстрахуватися на випадок одночасного виходу з експлуатації до трьох накопичувачів. Причому ребілд на 1 Тбайт стабільно займає менше ніж 30 хвилин. Найкращий із зафіксованих результатів — у вісім разів швидше, ніж із тим самим обсягом даних на шпиндельному накопичувачі. Таким чином, є можливість використовувати надзвичайно ємні накопичувачі, допустимо на 7,68 або навіть 15 Тбайт, і не турбуватися про надійність системи.

Важливо, що ребілд здійснюється над spare drive, а spare space — резервну ємність. У кожному накопичувачі виділено місце, яке використовується для відновлення даних після відмови. Таким чином, відновлення проводиться не за схемою "багато в один", а за схемою "багато в багато", завдяки чому і вдається помітно прискорити процес. І доки є вільна ємність, відновлення можна продовжувати.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Окремо слід згадати про надійність рішення з кількох сховищ — у metro-кластері або, у термінології Huawei, HyperMetro. Такі схеми підтримуються по всьому модельному ряду наших систем зберігання даних і допускають роботу і з файловим, і з блоковим доступом. Причому на блочному функціонує як Fibre Channel, так і Ethernet (у тому числі по iSCSI).

По суті, йдеться про двонаправлену реплікацію з однієї СХД на іншу, при якій реплікованому LUN надано той же LUN-ID, що й основному. Працює технологія насамперед завдяки консистентності кешів із двох різних систем. Таким чином, для хоста абсолютно все одно, з якого боку він знаходиться: і тут і там він бачить той самий логічний диск. Як наслідок, ніщо не заважає розгорнути кластер стійкості до відмов, розтягнутий на два майданчики.

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

Технологія допускає і розширення: два сховища – у metro-кластері, додатковий майданчик – з асинхронною реплікацією.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Історично у багатьох замовників формується зоопарк зберігання: купа СХД від різних виробників, різних моделей, різних поколінь, з різною функціональністю. Водночас число хостів буває значним, і часто вони віртуалізовані. У подібних умовах одне з пріоритетних завдань адміністрування — швидко, однаково і зручно надавати логічні диски для хостів, бажано так, щоб не вникати в те, де ці диски знаходяться фізично. Для цього і призначене наше програмне рішення OceanStor DJ, яке вміє уніфіковано керувати різними системами зберігання даних та надавати з них послуги без прив'язки до конкретної моделі сховища.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Ті ж та ІІ

Як було сказано, в OceanStor Dorado 18000 V6 вбудовані процесори з алгоритмами штучного інтелекту - Ascend. Задіяні вони, по-перше, для прогнозування відмов, а по-друге, для формування рекомендацій щодо налаштування, що також збільшує продуктивність та надійність сховища.

Горизонт передбачень — два місяці: ІІ-машинерія передбачає, що з високою ймовірністю відбудеться за цей час, чи не час робитиме розширення, змінюватиме політики доступу і т. д. Видаються рекомендації заздалегідь, що дозволяє заздалегідь намічати вікна з обслуговування системи.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Наступний етап розвитку ШІ від Huawei передбачає його виведення на глобальний рівень. У ході сервісного обслуговування – відпрацювання відмов чи рекомендацій – Huawei агрегує відомості із систем логування з усіх сховищ наших клієнтів. На підставі зібраного проводиться аналіз потенційних збоїв, що відбулися або потенційно, і виносяться глобальні рекомендації — виходячи не з функціонування однієї конкретної СГД або навіть десятка, а з того, що відбувається і відбувалося з тисячами таких пристроїв. Вибірка величезна, і з опорою на неї алгоритми ІІ починають навчатися дуже швидко, через що точність прогнозів відчутно зростає.

Сумісність

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

У 2019–2020 роках було багато інсинуацій щодо взаємодії нашого обладнання з продуктами VMware. Щоб остаточно припинити їх, відповідально заявляємо: VMware – партнер Huawei. Були проведені всі мислимі тести на сумісність нашого заліза з її ПЗ, і в результаті на сайті VMware в аркуші hardware compatibility вказані доступні на сьогоднішній день СГД нашого виробництва без застережень. Інакше кажучи, із програмним середовищем VMware можна використовувати сховища Huawei, включаючи Dorado V6, із повноцінною підтримкою.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Те саме стосується нашої співпраці з Brocade. Ми продовжуємо взаємодіяти та проводити тести на сумісність нашої продукції – і за їх результатами з упевненістю стверджуємо, що наші системи зберігання даних повністю сумісні з найновішими FC-комутаторами Brocade.

Huawei OceanStor Dorado 18000 V6: у чому її хай-ендовість

Що далі?

Ми продовжуємо розвивати вдосконалювати свої процесори: вони стають швидше, надійніше, зростає їхня продуктивність. Покращуємо і чіпи ІІ - на їх основі в тому числі випускаються модулі, які прискорюють дедуплікацію та компресію. Ті, хто має доступ до нашого конфігуратора могли помітити, що в моделях Dorado V6 ці карти вже доступні до замовлення.

Також ми рухаємося у бік додаткового кешування на Storage Class Memory - енергонезалежної пам'яті з особливо низькими затримками, близько десяти мікросекунд на читання. Крім іншого, SCM дає приріст продуктивності, перш за все при роботі з big data і при вирішенні OLTP-завдань. Після найближчого апдейта SCM-картки мають стати доступними для замовлення.

І звичайно, функціональність файлового доступу розширюватиметься на всьому модельному ряду сховищ даних Huawei - стежте за нашими оновленнями.

Джерело: habr.com