Cluster Shared Volume – это, по сути, надстройка над NTFS, позволяющая двум и более узлам кластера одновременно осуществлять запись в один и тот же физический LUN. Дело в том, что у каждого общего ресурса кластера всегда имеется узел-владелец (Owner). Для дисковых ресурсов, право на запись есть только у узла-владельца, и поэтому для того, чтобы запускать виртуальные машины одновременно на нескольких узлах кластера, и безболезненно мигрировать их с одного узла на другой – приходилось создавать отдельный LUN для каждой виртуальной машины. Это сильно усложняло администрирование, особенно когда виртуальными машинами и системами хранения данных управляли разные администраторы. CSV же позволяет нескольким узлам осуществлять запись в один физический LUN одновременно, так что можно хранить все VHD на одном и том же LUN’е, а виртуальные машины запускать на разных узлах. О том, как использовать CSV, я уже расказывал в своих более ранних статьях. Здесь я расскажу об особенностях работы CSV, а именно – о режиме прямого и перенаправленного ввода-вывода (Direct/Redirected IO).
Посмотреть, в каком режиме работает CSV, можно в консоли управления кластерами:
Direct IO
Для упрощения рассмотрим кластер из двух узлов и с одним Cluster Shared Volume. Первый узел (Node 1) является владельцем ресурса Cluster Shared Volume, или узлом-координатором (Coordinator Node).
На первом узле запущены две виртуальные машины – VM1 и VM2. Их виртуальные жесткие диски хранятся на CSV (VM1.VHD и VM2.VHD). Обращения к дисковому ресурсу идет через два потока: данные (на схеме обозначены красными стрелками) и метаданные – имена файлов, атрибуты и т.п. (обозначены синими стрелками). Поскольку сейчас обе виртуальные машины запущены на узле-координаторе, оба потока проходят внутри локальной системы через драйвер фильтра CSV.
Теперь, допустим, мы переместили через Live Migration виртуальную машину VM2 на второй узел:
Тут уже все немного сложнее. Поток данных идет так же напрямую через драйвер фильтра CSV, затем драйвер NTFS, драйвер устройств хранения и по SAN к самой СХД. А вот метаданные от фильтра CSV уходят через SMB Redirector по обычной сети (LAN) на узел-координатор. Поэтому обращение с узла-координатора может проходить заметно быстрее.
Redirected IO
Помимо прямого ввода-вывода, есть так же режим перенаправленного ввода-вывода (Redirected IO). В таком режиме все обращения – как и данные, так и метаданные, идут по локальной сети через узел-координатор:
Разумеется, из-за низкой (по сравнению с SAN) пропускной способностью сети, скорость доступа в таком режиме очень сильно упадет. Тем не менее, в некоторых случаях такой режим может понадобиться – например, при выходе из строя сегмента SAN, или при необходимости замены SAN-коммутаторов.
Это пока все, что я хотел бы рассказать. Спасибо.
Александр Косивченко
“О том, как использовать CSV, я уже расказывал в своих более ранних статьях” – ссылки в студию 🙂
@1
Да хотя бы тут:
http://itband.ru/2010/03/hyper-v-server-cluster/
http://itband.ru/2009/11/live-migration-how-it-works/
Александр, у microsoft нет идеи обзавестись(купить, разработать) настоящей кластерной файловой системой, не в курсе?
Александр,
а режимами CSV как то можно управлять? Т.е. передавать роль координатора с одного узла на другой скриптом или командой powershell?
Здравствуйте!
В каких случаях CSV переходит в режим Redirected IO?
@4
Можно переназначить владельца ресурса. Для CSV coordinator node – это и есть владелец ресурса.
@5
Когда СХД с узла недоступна по FC/SAS/iSCSI, или когда необходим монопольный доступ к блочному устройству – в частности, при бэкапировании посредством VSS.
@3 Мне самому бы хотелось это знать. Готов предположить, что разработки у них ведутся. В Windows 8 обещают новую версию гипервизора, так что если что-то такое и появится – то уже в Win8.
@3 Андрей, а подскажите плз, что значит “настоящая кластерная система” и по каким параметрам не удовлетовряет ей использование CSV?
@8 Подозреваю что имеется в виду кластерная файловая система общего назначения, не являющася узко заточенной под HV. Но могу и ошибаться.
@8 Подозреваю что имеется в виду кластерная файловая система общего назначения, не являющася узко заточенной под HV. Но могу и ошибаться.
да, это и имелось в виду. Что то типа meliofs или ocfs-будет?
Достоверной информации у меня нет. Если что-то и будет – то явно не раньше выхода Windows 8. Там обещают новую версию гипервизора, так что может и CSV допилят до чего-то более интересного.
Вообще, MS очень “заботится” о своих ISV-партнерах, и очень медленно их догоняет. Пример – Citrix. Вспомните их Metaframe, потом Presentation Server и наконец XenApp: стандартные службы терминалов Windows всегда были “на шаг позади” от актуальной на тот момент версии Citrix, догоняли ее в следующей версии Windows Server, но Citrix к тому времени был опять на шаг впереди. Другой пример – ISA Server: категоризацию URL и антивирусный движок к ней прикрутили только сейчас – через 10 лет существования продукта.
Интересно, полезно и хорошо преподнесено. Есть только один вопрос, на схеме “Redirected IO” показано направление синей стрелочки только в одну сторону, в сторону координирующей ноды, я так понимаю еще нужно указать направление обратно, в сторону второй ноды. Нода два перед записью в LUN делает запрос к координирующей ноде, посылает метаданые и в ответ получает тоже какой то ответ с разрешением писать в определенные файлы(а может быть даже и блоки файловой системы.)