Введення

Кластерні рішення на серверах Linux стали важливою технологією забезпечення масштабованості і високої доступності для ІТ-служб. Ці служби часто висувають вимоги доступності даних для декількох серверів. На додаток до цього, навіть невеликі компанії часто мають багато комп’ютерів, включаючи робочі станції і сервери, яким необхідний доступ до даних. Отже, організація спільного доступу до даних необхідна як малим, так і великим компаніям.

Деякі служби використовують статичні дані, які можуть бути легко розділені між серверами. Використовуючи дублювання, кожен сервер в кластері зберігає повну копію даних. Однак інші служби використовують динамічні дані, які швидко змінюються, і в цьому випадку досить важко організувати дублювання даних. Для прикладу, бази даних і файл-сервера (використовують такі протоколи як SQL, NFS або CIFS) повинні поширити нову інформацію на всі сервери після кожної операції запису. Це призведе до дуже великого часу відгуку і високої завантаженні мережі. Ще одна незручність полягає у високій вартості обслуговування дублюючих копій і, як наслідок, складність управління системою. Такі програми дійсно потребують організації доступу до одного сховища даних з можливістю читати і записувати одночасно безліччю серверів. Використання файлового сервера (підключений до мережі сервер з даними), підтримує протоколи NFS і CIFS, є традиційним рішенням для організації спільного доступу до файлів. Linux, звичайно, пропонує таке популярне рішення, і це рішення підходить для деяких додатків, але виділений файл-сервер є вузьким місцем у продуктивності і єдиною точкою збою (SPoF) для цілої системи. Для вирішення труднощів використання традиційних підходів для організації масштабується і нескладного загального доступу до даних кожний сервер кластера повинен мати прямий доступ до сховища, і кожний сервер повинен мати можливість одночасно читати і записувати дані. Red Hat Global File System (GFS) представляє основу цього рішення. Це рішення поєднує в собі Linux сервера і мережі зберігання даних (SAN), для організації кластера спільного зберігання допомогою поділюваної файлової системи.

Внутрішнє пристрій GFS

Global File System була створена як 64-бітна кластерна файлова система. Вона дозволяє кільком серверам здійснювати підключення до мережного сховища даних (SAN) для доступу до спільних, спільно використовуваних файлів одночасно з допомогою стандартної UNIX/POSIX семантики файлової системи.

Розробка GFS почалася в 1995 році в університеті Міннесоти. У цей час В університеті використовувався великомасштабний обчислювальний кластер, де породжувалася величезну кількість даних, які ефективно записувалися в центральне сховище даних. Для вирішення цієї проблеми Matthew o’keefe, в той час професор університету Міннесоти, почав з групою студентів розробку GFS. Надалі Matthew став керівником напряму Storage Strategy у Red Hat. Результатом цих зусиль стала поява Red Hat GFS кластерної файлової системи, яка випущена під ліцензією GPL. У даний момент GFS доступна тільки для Linux.

Файлова система GFS є журналируемой файловою системою. Для кожного вузла кластера заводиться свій власний журнал. Зміни метаданих у файловій системі спочатку записуються в журнал, а потім у файлову систему, як і в інших журналируемых файлових системах. У разі збою сайту, узгодженість файлової системи може бути відновлена шляхом повторення операцій з метаданими. Існує можливість визначити будуть журналироваться тільки метадані або в журнал будуть потрапляти також дані вмісту файлів.

GFS зберігає дискриптори файлової системи в індексних дескрипторах (inodes), які виділяються динамічно по мірі необхідності (далі іменовані dynamic nodes або dinodes). Вони займають повний блок файлової системи (4096 байт — це стандартне значення розміру блоку файлової системи у ядро Linux). В кластерному файловій системі, кілька серверів звертаються до файлової системи в одне і теж час; звідси випливає, що, об’єднання декількох dinodes в одному блоці призведе до доступу до конкуруючих блоків і помилковому суперництва. Для ефективного розподілу місця та зменшення доступу до диска, дані файлів зберігаються (впроваджуються) безпосередньо всередині dinode, якщо файл достатньо малий для розміщення у dinode. У цьому випадку, необхідний лише доступ до одного блоку для доступу до маленьких файлів. Якщо файл великий, то GFS використовує проскую структуру файлу («flat file»). Всі покажчики в dinode мають однакову глибину. Існує тільки три види покажчиків: прямі (direct), непрямий (indirect), або двічі непрямі (double indirect) покажчики. Висота дерева збільшується по мірі необхідності, на скільки це потрібно для зберігання файлу з даними, як показано на Малюнку 1.

Розширюване хешування («Extendible hashing», ExHash) використовується для збереження індексного структури для каталогів. Для кожного імені файлу multi-bit хеш зберігається як індекс у хеш-таблиці. Відповідний покажчик у таблиці вказує на листовий вузол («leaf node»). На кожен листовий вузол можуть посилатися кілька покажчиків. Якщо хеш-таблиця для листових вузлів стає недостатньою для зберігання структури каталогів, то розмір всій хеш-таблиці подвоюється. Якщо одного розміру листового вузла недостатньо, то він розділяється на два вузла того ж розміру. Якщо є невелика кількість записів в каталозі, то інформація про нього зберігається всередині dinode блоку, як файл з даними. Така структура даних дозволяє виконати пошук у каталогах при кількості дискових операцій пропорційно глибині структури дерева «extendible» хешування, яка досить плоска. Для великих каталогів з тисячами і мільйонами файлів, потрібно лише невелику кількість дискових операцій для пошуку запису в каталозі.

Остання версія GFS 6.0 пропонує нові можливості, включаючи списки управління доступом до файлів (ACL), підтримку квотування, прямий ввід/вивід (для підвищення продуктивності баз даних), і динамічне збільшення файлової системи без відключення.

Файлова система GFS будується над пулом, який збирається з одного або декількох незалежних сховищ. Сервер підключається до мережевого сховища (SAN) за одним або кількома шляхами до пулу зберігання. Окремі сервера в кластері також підключаються до мережі з використанням одного або декількох каналів. Таким чином, кожен сервер може безпосередньо звертатися до дискових масивів, з яких зібраний пул зберігання, що значно підвищує продуктивність введення/виводу системи і дозволяє проводити масштабування, перевершуючи результат при використанні одного NAS сервера.

Сервера в кластерному сховище GFS використовують Linux в якості операційної системи. Менеджер томів кластера GFS виртуализует дискові пристрої (/dev/sda) і об’єднує їх в один логічний пул (dev/pool/foo). Безліч пристроїв може бути об’єднано з допомогою чергування (striping) або злиття (concatenation). Зміни в конфігурації пулу видно на всіх вузлах кластера. Менеджер управління пулом дозволяє змінювати розмір пулу в реальному часі і надає кілька каналів вводу/виводу, що дозволяє витримати одиночний збій SAN шляху. Однак менеджер пулів не дозволяє реалізувати віддзеркалення і створення знімків (snapshots). Ці функції скоро з’являться в CLVM, the Cluster Logical Volume Manager, менеджері кластерних томів, на основі LVM2, який дозволяє кільком серверам організувати загальний доступ до зберігання на SAN.

Сервер блокувань координує різні сервери, які звертаються до одним і тим же фізичним блоків файлової системи в GFS кластері. Він гарантує цілісність системних даних. На початку, GFS постачалась рівнем модульних блокувань. У ранніх версіях GFS інформація про блокування передавалася через SCSI протокол (DLOCK, DMEP). Починаючи з 5-ої версії GFS використовується служба блокувань з використанням IP і можливістю дублювання, яка запускається на всіх вузлах. Red Hat працює над інтеграцією розподіленого менеджера блокувань (DLM) в GFS версії 6.1, яка вийде влітку 2005 року. Кожен сервер в GFS кластері повинен постійно взаємодіяти з менеджером блокувань. Якщо сервер не повідомляє свій стан, то менеджер блокувань позначає даний сервер для видалення з кластера, ця операція називається ізоляцією (fencing). GFS підтримує кілька способів ізоляції, включаючи різні мережеві вимикачі живлення і інтерфейс HP’s ILO.

Масштабованість

Класична IT система складається з служб і додатків, які працюють на окремих серверах і звичайно їх робота обмежена конкретним сервером. Якщо обладнання, до якого прив’язано індивідуальне додаток, більше не задовольняє вимогам, то програма може зіткнутися з проблемою нестачі пам’яті, процесорної потужності або дискового об’єму, які доступні в решті частини кластера. На противагу цьому, додатки, які можуть виконуватися паралельно на кластері зберігання, значно простіше масштабуються. У разі нестачі ресурсів, нові компоненти (сервер, дисковий масив) можуть бути легко інтегровані в систему до досягнення потрібної продуктивності. Спільне використання дискового пулу дозволяє не тільки відмовитися від трудомісткого дублювання даних на кілька серверів, але також надає зручні можливості масштабування. З зростаючими вимогами до об’єму дискового сховища, загальний дисковий масив може бути розширений і відразу стане доступний для всіх серверів.

Доступність (відмовостійкість)

Доступність системи в цілому є важливим аспектом у наданні IT послуг. Для отримання 3-го класу доступності (від 99% до 99.9%) необхідно усунути єдину точку збою (SPOF). Для 4-го класу доступності (від 99.9% до 99.99%) необхідно мати кластер високої доступності, дзеркалювання даних і другий центр обробки даних на випадок стихійного лиха. Служби повинні мати можливість працювати на декількох територіально розподілених серверах. Вихід з ладу одного сервера або цілого обчислювального центру не повинен вплинути на їх доступність, допускається тільки втрата доступності на короткий час. Кластер GFS може бути підключений до центрального сховища через SAN допомогою резервних каналів вводу/виводу для подолання виходу з ладу одного з компонентів системи, таких як комутатори, адаптери HBA або кабелі. Резервування каналів вводу/виводу може бути досягнуто з використанням драйвера fibre channel для адаптера HBA або використовуючи GFS пул. На жаль, GFS кластер не має можливості дублювати інформацію між дисковими масивами з вузлового сервера, зате можна скористатися апаратним дублюванням, яке присутнє в хороших дискових масивах RAID. Дзеркалювання з вузлового сервера в GFS кластері з’явиться трохи пізніше, в 2005 році з появою Cluster Logical Volume Manager (CLVM).

Менеджер блокувань, який є основою GFS, доступний у двох видах. Це спрощена версія — Єдиний менеджер блокувань (Single Lock Manager, або SLM), який є єдиною точкою збою (SPOF) для цілої системи і версія з дублюванням — Дубльований менеджер блокувань (Redundant Lock Manager, або RLM). Це варіант дозволяє визначати кілька серверів з RLM, які можуть прозоро перехоплювати роль активного сервера блокувань у разі збою. До того ж, Red Hat Cluster Suite може бути використаний для забезпечення відмовостійкості додатків в GFS кластері.

Резервне копіювання без використання мережі

Резервування даних зазвичай відбувається з клієнтських машин (які часто є серверами додатків), через локальну мережу (LAN) на виділений сервер резервного копіювання (з допомогою такого, як Legato Networker або Veritas Protection) або без використання мережі (LAN-free) через сервер додатків відразу на пристрій резервного копіювання. З-за того, що кожен підключений сервер, який використовує кластерну файлову систему, що має доступ до всіх даних з’являється можливість перетворити будь-сервер сервер резервного копіювання. Сервер резервного копіювання дозволяє проводити резервування інформації під час роботи, не надаючи впливу на сервера додатків. Зручно використовувати можливість формування знімка або клону тома GFS, використовуючи апаратні можливості дискового масиву. Такі знімки томів можуть бути підключені до сервера резервного копіювання для подальшого резервування. Щоб задіяти цю можливість, GFS містить можливість «заморожування» файлової системи для забезпечення узгодженого стану даних. «Заморожування» означає, що всі спроби доступу до файлової системи перериваються, після операції скидання (sync) файлової системи, яка гарантує, що всі метадані і дані узгоджено записані на сховищі до формування знімка.

Бездисковий кластер з поділяється кореневим розділом

Всі сервера в GFS кластері отримують доступ до даних через мережу зберігання даних (SAN), і для збільшення продуктивності можуть бути легко додані додаткові сервера. Отже, кожен сервер може розглядатися як черговий ресурс в пулі вільних серверів. Системні дані і образ операційної системи зберігається в загальнодоступному сховище, тому сервера і сховище можуть розглядатися як незалежні один від одного. В результаті — це бездисковий кластер з поділяється кореневим розділом, в якому не один сервер не має локальних дисків, і завантаження операційної системи відбувається через SAN. Образи з програмами й операційною системою доступні, це означає що розділ root (/) для всіх вузлів кластера однаковий. Внаслідок чого отримуємо просте управління системою. Зміни вносяться один раз і відразу стають доступні для всіх серверів. Побудова бездискових кластерів з поділяється кореневим розділом з використанням GFS є специфічним завданням і залежить від обладнання і версії ядра, і цю можливість можна реалізувати тільки за допомогою фахівців компанії Red Hat або партнерів Red Hat, таких як ATIX GmbH.

Приклад впровадження: IP Tech AG

Впровадження GFS IP Tech, однією з найбільших компаній, що пропонують послуги Інтернет-хостингу в Швейцарії, демонструє наскільки ефективно кластерні технології Red Hat використовуються на підприємствах. На початку 2002 року Red Hat GFS кластер, що складається з 14 вузлів, був введений в експлуатацію в IP Tech. Цей кластер підтримує базу даних (MySQL), електронну пошту (Qmail) і веб-додатки (Apache) у спеціальних конфігураціях. В IP Tech розміщено понад 1500 баз даних MySQL, 10000 поштових доменів і 28000 доменів Інтернету, які обслуговують більшу частину Швейцарських компаній. Щоденне навантаження в IP Tech становить 5-7 мільйонів веб-звернень, 3-3,5 мільйона pop3 сполук (до поштових серверів), 1-1,5 мільйона SMTP сполук (пересилання пошти) і 3,5-4 мільйони MySQL сполук на реалізовану GFS інфраструктуру. Підтримується більше 100000 індивідуальних користувачів електронної пошти.

На додаток до класичного веб-сервісу, баз даних і поштового сервісу, IP Tech недавно представила хостинг на віртуальних машинах і виділене розміщення серверів в кластерному сховище GFS. Клієнти зараз можуть динамічно виділяти GFS сервера «на льоту» і запускати безліч віртуальних серверів на одному GFS сайті. Це чудовий шлях для поліпшення використання системи і вміщення більшої частини інфраструктури всередину кластера спільного доступу до даних GFS.

Нещодавно, IP Tech перевела свої сервіси на інфраструктуру, засновану на blade рішеннях з двома терабайтами дубльованого дискового масиву і близько 22 бездискових серверів лез (blade). Всі додатки, за винятком віртуальних машин, що працюють на GFS. Така конфігурація дозволяє мінімізувати час на ремонт обладнання, шляхом простої заміни вийшли з ладу серверів лез (blades) і завантаження їх з завантажувального образу з поділяється кореневим розділом. Масштабування серверів і дискового сховища може бути виконано без зупину комплексу. На додаток до цього, кожну ніч дані з файлової системи реплікуються на другий дисковий масив без використання мережі (Lan-free), використовуючи GFS і SAN.

IP Tech на початку використовувала NFS для організації загального доступу до файлів, необхідного для IP хостингу, але це викликало великі проблеми при обслуговуванні, т. к. система працювала нестабільно при високому навантаженні. Файлові служби та точки підключення з’являлися і изчезали без попереджень, зупиняючи роботу в критичний час, і досить часто в моменти високого навантаження, коли недоступність ресурсу мала максимальний негативний ефект. Два роки тому IP Tech перейшла на Red Hat GFS і, в протилежність їх інфраструктури з сховищем, побудованим на NFS, кластер працює на Red Hat GFS «працював сам збій»

Використовуючи Red Hat Enterprise Linux кластер з Red Hat GFS, IP Tech досягла високої доступності і продуктивності. Якщо один із серверів вийде з ладу або додаток (наприклад, http або qmail) зависне, то цей сервер може бути швидко перезапущений і включений назад у кластер без порушення працездатності сервісів на інших серверах. На додаток IP Tech використовує технологію GFS з поділяється кореневим розділом, яка спрощує процес оновлення програмних продуктів і надає можливість розподіляти навантаження в кластері для статичних служб. Наприклад, коли на IP Tech починається спам атака, то вони швидко переводять частину веб серверів на обслуговування поштових серверів і тим самим підтримує роботу пошти в робочому режимі, виявляють і протистоять спам-атаки, в той час як всі сервера в кластері продовжують працювати. Вони можуть масштабувати інфраструктуру протягом декількох хвилин, використовуючи нові сервера і дискові масиви. На закінчення, IP Tech виробляє регулярне резервне копіювання знімків томів GFS на певний момент часу, використовуючи окремий сервер в кластері. Цей підхід дозволяє робити резервування файловій системі GFS, не заважаючи роботі інших серверів.

Наведемо переваги, які IP Tech отримала, використовуючи Red Hat GFS:

Дуже висока продуктивність і масштабованість, яка була недоступна при використанні NFS.
Зниження складності допомогою організації загального доступу до даних і розділяється способу кореневого розділу.
Балансування «на льоту» навантаженості служб всередині кластера в реальному часі для забезпечення «обчислень за запитом» і продуктивності, яка потрібна для роботи додатків.
IP Tech використовує можливість Red Hat GFS формувати знімки існуючих томів файлових систем і баз даних. Тому зі знімком монтується в режимі «тільки для читання» і резервується паралельно з роботою файлової системи.

Резюме

Використовуючи Red Hat Enterprise Linux і GFS, IP Tech досягла чудовою продуктивності і масштабованості, зменшеної складності управління, масштибируемости і доступності, які були недоступні з використанням NFS. Організація загального доступу через GFS дозволила IP Tech знизити складність управління і збільшувати продуктивність, відповідаючи запитам клієнтів з мінімальними витратами, використовуючи орієнтоване на Linux обладнання і програмне забезпечення. Red Hat GFS дозволяє також збільшити продуктивність додатків з інтенсивним використанням дискового простору, таких як СУБД Oracle на кластері, розробка програмного забезпечення (складання і компіляція) і високопродуктивні обчислювальні завдання. Дізнайтеся більше про Red Hat GFS на сайті redhat.com.