Заметки о Windows и других программных продуктах Microsoft...

Cluster Shared Volumes в Windows Server 2012 R2 (часть 1)

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, на этом диске расположенных.

Работу 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 помощью которого перенаправляют метаданные по сети на узел-координатор.

 потоки данных в CSV: метаданные

 

Операции прямого чтения\записи (Direct IO). Так как эти операции производятся на блочном уровне, для них не требуется доступ к файловой системе NTFS, необходим только физический доступ к диску. Хотя в Direct IO участвуют CSVFS и CSV Volume Manager, по сути приложения напрямую обращаются к физическому диску, минуя файловую систему. В нашем примере операции Direct IO возможны только для двух узлов кластера, так как у третьего нет физического подключения к диску.

потоки данных в CSV: блочные данные

 

Перенаправление файловой системы (File System Redirected IO). Это специальный режим работы CSV, в котором весь поток данных (как метаданные, так и блочные данные) для всех узлов кластера идет исключительно через NTFS, т.е. через узел-координатор. Этот режим может быть активирован только по запросу пользователя.

Поскольку при использовании File System Redirected IO все данные передаются на диск по локальной сети общего назначения, производительность кластера сильно ограничена. Однако его можно использовать в определенных ситуациях, например, при проведении регламентных работ в сети SAN.

режим File System Redirected IO

 

Перенаправление блочного доступа (Block Level Redirected IO) — еще один режим работы CSV. В этом режиме все обращения конкретного узла кластера к диску производятся через узел-координатор. При использовании Block Level Redirected IO обращение к диску производится напрямую. За передачу данных отвечает фильтр СsvNsFlt, который перенаправляет запросы к диску, минуя NTFS.

Block Level Redirected IO включается автоматически, при отсутствии у узла прямого доступа к диску. К примеру, Node 3 не имеет физического подключения к общему диску, поэтому для него все операции производятся по сети, через узел-координатор. Также этот режим может использоваться и в случае временной недоступности диска. Например, если попытка прямого обращения к диску оказалось неудачной из за сбоя на коммутаторе системы хранения, то будет задействован Block Level Redirected IO и данные будут перенаправлены на узел-координатор.

режим  Block Level Redirected IO

 

Пожалуй на сегодня все, остальное в следующий раз. Если же что то осталось непонятным, то вы можете обратиться к первоисточнику.

 
 
Комментарии
Денис

Пока ознакомился только с введением к статье, но оно уже содержит то, что хрен найдёшь даже в книгах по 1600 страниц. Отлично!

Leave a Reply to Илья