Cluster Shared Volumes в Windows Server 2012 R2 (частина 1).
Загальні кластерні томи (Cluster Shared Volumes, CSV) дозволяють декільком вузлам в кластері одночасно звертатися до файлової системи NTFS (або ReFS в Windows Server 2012 R2), без обмежень на використовуване обладнання. Вперше загальні кластерні томи вперше з'явилися в Windows Server 2008 R2 як загальне сховище для віртуальних машин Hyper-V.
Якщо пам'ятаєте, технологія Hyper-V в Windows Server 2008 мала безліч обмежень, одним з яких була неможливість перенесення віртуальних машин між вузлами кластера без простою (Live Migration). Однією з причин цього була відсутність на той момент у Microsoft нормальної кластерної файлової системи.Файлова система NTFS, незважаючи на всі свої достоїнства, такою не є: до хоча б тому NTFS одночасно може підключитися і використовувати його тільки один екземпляр операційної системи.
Тепер згадаємо принцип роботи відмов кластеру в Windows. Кластер складається з декількох (2 і більше) вузлів, на кожному з яких запущено екземпляр операційної системи.Кожен з вузлів кластера має доступ до спільного диска (як правило це виділений LUN), який є загальним кластерним ресурсом. Як у будь-якого кластерного ресурсу, у диска одночасно може бути тільки один вузол-власник, який може підключити диск до операційної системи і отримати доступ до зберігаються на ньому розділах (томів) NTFS.При перемиканні навантаження (Failover) на інший вузол кластера відбувається зміна власника ресурсу, тобто LUN відключається від одного вузла і підключається до іншого.
Виходить, що якщо до того NTFS одночасно може отримати доступ тільки один вузол кластера, то все віртуальні машини, розміщені на одному LUN-е, повинні працювати на цьому самому вузлі.При цьому незалежне переміщення на інший вузол окремої ВМ неможливо, всі машини, що знаходяться на LUN-e, переміщаються одночасно. Для незалежної міграції віртуальних машин з вузла на вузол кожної ВМ необхідно розміщуватися на окремому LUN-e, що не дуже зручно. До того ж перемикання LUN-а вимагає деякого часу, протягом якого віртуальні машини будуть недоступні.
Для усунення цих недоліків і була придумана технологія CSV, що дозволяє всім вузлам кластера звертатися до загального сховища одночасно. CSV вдає із себе прошарок для файлової системи, забезпечуючи така умова: один вузол кластера, який є поточним власником, має доступ до LUN на рівні файлової системи (NTFS або ReFS), все ж інші вузли мають доступ на блочному рівні.
Треба сказати, що спочатку томи CSV мали досить скромний функціонал і були обмежені в використанні. Однак тепер, в Windows Server 2012 R2, більшість обмежень CSV знято, а також з'явилося багато нових можливостей. Сьогодні ми розглянемо загальний принцип роботи томів CSV в Windows Server 2012 R2.
Основні компоненти
Як приклад (на малюнку нижче) візьмемо 3-х вузловий кластер із загальним диском, який підключений як те CSV. Перший і другий вузли підключені до сховища безпосередньо, третій вузол не має підключення до спільного сховища. Власником загального диска є другий вузол.CSV томи на кожному вузлі кластера підключені як папки до системного диску у вигляді C: \ ClusterStorage \ Volume1.
Примітка. Вузол, який є поточним власником диска, на якому розташований тому CSV, називається вузлом-координатором. У цьому контексті всі інші вузли кластера називаються серверами даних.Для кожного тому CSV в кожен момент часу може бути тільки один вузол-координатор. Можливий варіант, коли в кластері використовується кілька томів CSV, розташованих на різних дисках. У цьому випадку кожен вузол-власник диска є координатором для всіх томів CSV, на цьому диску розташованих.
Роботу CSV забезпечують кілька ключових компонентів, про які варто згадати докладніше.
CsvFlt
Драйвер фільтра CSV (csvflt.sys). Надає додаткам доступ до файлової системи NTFS, що знаходиться на томах CSV. Оскільки те створюється прихованим, операційна система не може призначити йому ідентифікатор (volume GUID) і призначити літеру.Через це програми, що працюють в режимі користувача, не можуть звертатися до нього безпосередньо. CsvFlt відловлює і перенаправляє запити додатків до NTFS, забезпечуючи для CSV функціональність звичайного локального диска.
Csv Namespace Filter
Драйвер управління іменами CSV (csvnsflt.sys). Захищає точку монтування CSV (C: \ ClusterStorage) від неавторизованих запитів (запитів, що виходять не з служби кластера) на зміну, видалення або зміну атрибутів для папок і файлів, що знаходяться в цій директорії. Якщо, наприклад, зайти на один з вузлів кластера і в провіднику змінити дефолтний назву папки C: \ ClusterStorage \ Volume1 на щось типу C: \ ClusterStorage \ IT, то зміни будуть зроблені відразу на всіх вузлах.Крім того, він відповідає за управління режимом Block level redirected IO, про який піде мова трохи пізніше.
CsvFS і CSV Volume Manager
Драйвер файлової системи CSV (csvfs.sys) і диспетчер томів CSV (csvvbus.sys). Ці компоненти забезпечує додаткам можливість прямого доступу до файлів на читання \ запис (Direct IO), а також перенаправлення для операцій з метаданими і в режимі Redirected IO.
Потоки даних
Після знайомства з окремими компонентами перейдемо до їх взаємодії, для чого розглянемо основні операції та потоки даних, що проходять через CSV.
Операції з метаданими ( Metadata). Під ними маються на увазі будь-які операції з файлами (крім операцій читання і запису) - створення, видалення, перейменування, переміщення, зміна розміру або атрибутів файлу і інші подібні операції.Також і деякі операції читання \ запису можуть бути причиною зміни метаданих. Наприклад, запис може викликати збільшення розміру файлу, що спричинить за собою зміну в метаданих.
Метадані завжди обробляються файлової системою. Нагадаю, що прямий доступ до файлової системи тільки у поточного власника дискового ресурсу (він же вузол -коордінатор).Відповідно всі операції з метаданими обробляє вузол-координатор, на якому фільтр CsvFlt відправляє всі запити безпосередньо до NTFS. Решта вузли кластера для операцій з метаданими використовують протокол SMB (Server Message Block), c допомогою якого перенаправляють метадані по мережі на вузол-координатор.
Операції прямого читання \ запису (Direct IO). Так як ці операції проводяться на блочному рівні, для них не потрібно доступ до файлової системи NTFS, необхідний тільки фізичний доступ до диску. Хоча в Direct IO беруть участь CSVFS і CSV Volume Manager, по суті додатки безпосередньо звертаються до фізичного диску, минаючи файлову систему.У нашому прикладі операції Direct IO можливі тільки для двох вузлів кластера, так як у третього немає фізичного підключення до диску.
Перенаправлення файлової системи (File System Redirected IO). Це спеціальний режим роботи CSV, в якому весь потік даних (як метадані, так і блокові дані) для всіх вузлів кластера йде виключно через NTFS, т.е. через вузол-координатор. Цей режим може бути активований тільки за запитом користувача.
Оскільки при використанні File System Redirected IO всі дані передаються на диск по локальній мережі загального призначення, продуктивність кластера сильно обмежена. Однак його можна використовувати в певних ситуаціях, наприклад, при проведенні регламентних робіт в мережі SAN.
Перенаправлення блочного доступу (Block Level Redirected IO) - ще один режим роботи CSV. У цьому режимі всі звернення конкретного вузла кластера до диска виробляються через вузол-координатор. При використанні Block Level Redirected IO звернення до диска проводиться безпосередньо. За передачу даних відповідає фільтр СsvNsFlt, який перенаправляє запити до диска, минаючи NTFS.
Block Level Redirected IO включається автоматично, при відсутності у вузла прямого доступу до диска. Наприклад, Node 3 не має фізичного підключення до спільного диска, тому для нього всі операції проводяться по мережі, через вузол-координатор. Також цей режим може використовуватися і в разі тимчасової недоступності диска.Наприклад, якщо спроба прямого звернення до диска виявилося невдалою через збій на комутаторі системи зберігання, то буде задіяний Block Level Redirected IO і дані будуть перенаправлені на вузол-координатор.
Мабуть на сьогодні все, решта в наступний раз. Якщо ж що то залишилося незрозумілим, то ви можете звернутися до першоджерела.П>.