CommuniGate Pro
Версия 5.2
Кластеры
 
 
Хранилище

Кластерное Хранилище

Динамические Кластера CommuniGate Pro требуют наличия Общей Файловой Системы, что бы Backend члены Кластера могли работать с одними и теми же данными одновременно.

Наиболее популярной и хорошо известной реализацией Общей Файловой Системы является файловый сервер, также называемый NAS (network attached storage, сетевое хранилище).

В этом разделе коротко описываются технологии, используемые в Общих Файловых Системах, объясняется, почему SAN (storage area network, сеть хранения данных) не является Общей Файловой Системой, а также содержится краткое введение в Кластерные Файловые Системы, которые могут использоваться для построения Общей Файловой Системы с использованием SAN.

Системы Хранения и Файловые Системы

Используемые сегодня Системы Хранения (такие как дисковые устройства) являются довольно "тупыми" устройствами с точки зрения пользователя и приложений. Каждая система или устройство имеет некоторое количество блоков - сегментов данных фиксированного размера, например, размером 1К (1024 байт). При соединении дискового устройства с компьютером оно может обрабатывать только очень простые запросы, такие как:

Диски могут соединяться с компьютерами при помощи интерфейсов IDE, SCSI или FDDI. Эти интерфейсы используются для отправки дискам команд и данных и для получения от диска данных и кодов выполнения команд.

Сами по себе Системы Хранения не создают никакие другие структуры, что означает что дисковое устройство не может создавать "файлы" или "файловые директории". Эти системы работают только с блоками и всё, что они могут делать - это читать и записывать эти блоки.


Файловые Системы в Одиночной ОС

В каждой современной Операционной Системе (ОС) есть компонент, называемый Файловая Система. Этот компонент является частью ядра ОС и в нём реализованы такие вещи, как "файлы" и "файловые директории".

Существует много разных Файловых Систем, в них используются различные методы и алгоритмы, но некоторые основные функции имеются в большинстве Файловых Систем: Следующий рисунок иллюстрирует работу Файловой Системы:
Файловая Система в Одиночной ОС
В этом примере Файловая Система обслуживает запросы от двух приложений.
Приложение 1 просит Файловую Систему прочитать блок номер 5 из File1.
Файловая Система находит информацию о File1 в Таблице Размещения Файлов и определяет, что для этого файла размещено 5 блоков, и блок файла номер 5 хранится на диске в блоке номер 123456.

Файловая Система через интерфейс диска (IDE, SCSI или любой другой) отправляет диску команду READBLOCK(123456).

Дисковое устройство отправляет информацию из указанного блока в компьютер.

Файловая Система помещает прочитанную информацию в кэш-буфер и отправляет её приложению.

Приложение 2 просит Файловую Систему записать блок номер 7 в File2.
Файловая Система находит информацию о File2 в Таблице Размещения Файлов и определяет, что для этого файла размещено 6 блоков. Она проверяет список неиспользуемых блоков диска и находит неиспользуемый блок номер 13477.

Она удаляет номер блока из списка неиспользуемых блоков и добавляет его блоком номер 7 в информацию о File2 в Таблице Размещения Файлов, так что теперь File2 имеет размер 7 блоков.

Файловая Система через интерфейс диска (IDE, SCSI или любой другой) отправляет диску команду WRITEBLOCK(13477) и отправляет данные блока, которые были сгенерированны приложением.

Дисковое устройство записывает данные блока в указанной блок диска и подтверждает выполнение операции.

Файловая Система копирует данные блока в кэш-буфер.

Если любое приложение попытается прочитать блок 5 из File1 или блок 7 из File2 то Файловая Система получит информацию из кэш-буфера и не будет выполнять операцию на диске.

Все приложения, работающие в этой Операционной системе, используют единую Файловую Систему. Файловая Система гарантирует целостность данных. Если блок диска 13477 размещён для File2, то он не будет размещаться ни для какого-либо другого файла - до тех пор, пока File2 не будет удалён или не уменьшит свой размер до размера менее, чем 7 блоков.


Сетевая Файловая Система (NAS)

Если компьютерам сервера необходимо использовать одни и те же данные, то может использоваться Сетевая Файловая Система (также называемая Network Attached Storage, NAS).

Сетевая Файловая Система реализуется с использованием Файлового Сервера и сети. Файловый Сервер - это обычный компьютер или специальная ОС с обычной Файловой Системой и обычными дисковыми устройствами, управляемыми этой Файловой Системой.

Сетевая Файловая Система "встраивает" часть себя внутрь ядра ОС на "клиентских" компьютерах как "подставную" Файловую Систему, ретранслирующую запросы приложения к файлам на Файловый Сервер через сеть:

Общая Файловая Система с NAS

В этом примере Файловая Система на Файловом Сервере обслуживает запросы нескольких приложений, запущенных на "клиентских" компьютерах сервера.

Единственная разница с одиночной ОС заключается в доставке запросов; вместо нескольких внутренних операций между приложением и Файловой Системой, работающей в составе ядра ОС, встроенная "заглушка" отправляет запросы через сеть, получает ответы и передаёт их приложению. Вся "реальная работа" (обслуживание Таблицы Размещения Файлов и кэша) выполняется на компьютере Файлового Сервера.

Так как только компьютер Файлового Сервера имеет прямой доступ к физическому диску, то все приложения, запущенные на сервере, используют одну и ту же Файловую Систему - Файловую Систему, работающую на Файловом Сервере. Эта Файловая Система гарантирует целостность данных. Если блок диска 13477 размещён для File2, то он не будет размещаться ни для какого-либо другого файла - до тех пор, пока File2 не будет удалён или не уменьшит свой размер до размера менее, чем 7 блоков.


Сеть Хранения Данных (SAN)

Сеть Хранения Данных является сетью специального типа, соединяющей компьютеры и дисковые устройства, подобно тому, как SCSI кабеля соединяют дисковые устройства с компьютером.

Любой компьютер, соединённый с SAN, может отправлять дисковые команды на любое дисковое устройство, подсоединённое к SAN. На физическом уровне, SAN может быть реализован через FDDI, Ethernet или любой другой тип интерфейса.

Некоторые диски или массивы имеют "двухканальные" контроллеры SCSI и могут быть соединены с двумя компьютерами через обычные кабеля SCSI. Так как оба компьютера могут отправлять дисковые команды чтения/записи на такой общий диск, то такая конфигурация имеет такую же функциональность, как и однодисковый SAN.

SAN обеспечивает реализацию Общих Дисков, но сам по себе SAN не является Общей Файловой Системой. Если у вас есть несколько компьютеров, имеющих доступ к Общему Диску (через SAN или двухканальный SCSI) и вы попытаетесь использовать такой диск с обычной Файловой Системой, то очень быстро логическая структура диска будет нарушена.

С Общими Дисками и обычными Файловыми Системами возникают две основные проблемы:

Отсутствие целостности при размещение свободного пространства Диска
Если компьютер X и компьютер Y оба соединены с общим диском ("смонтировали его"), то их Файловые Системы загрузили в память каждого компьютера Таблицы Размещения Файлов. Теперь, если некоторая программа, запущенная на компьютере X, попытается записать новые блоки в какой-нибудь файл, то Файловая Система, работающая на этом компьютере сначала проверит Таблицу Размещения Файлов и разместит блок номер 13477 для этого файла.

Затем Файловая Система, работающая на этом компьютере, изменит свою Таблицу Размещения Файлов, но эти изменения не окажут никакого эффекта на Таблицы Размещения Файлов, загруженные в память других компьютеров. Если приложению, запущенному на каком-либо другом компьютере Y, потребуется увеличить размер файла, то Файловая Система, работающая на этом компьютере Y, может разместить тот же самый блок 13477 для другого файла, так как она понятия не имела о том, что этот блок уже был размещён компьютером X.

Отсутствие целостности Данных Файла
Если программа, запущенная на компьютере X, прочитала блок 5 из какого-нибудь файла File1, то это блок копируется в кэш Файловой Системы. Если эта же или другая программа, запущенная на компьютере X попытается прочитать тот же самый блок 5 из этого же файла, то Файловая Система компьютера X просто скопирует данные из своего кэша.

Но программа, запущенная на каком-либо другом компьютере Y, может изменить информацию в блоке 5 файла File1. Так как Файловая Система, запущенная на компьютере X, не будет знать об этом, то она продолжит использовать свой кэш, отправляя приложениям на компьютере X данные, потерявшие актуальность.

Эти проблемы делают невозможным использование Общих Дисков с обычными Файловыми Системами в качестве Общей Файловой Системы. Они могут использоваться для систем восстановления после сбоев или в других конфигурациях, где в любой момент времени диск фактически используется только одним из компьютеров. Файловая Система на компьютере Y начинает использовать Общий Диск только когда компьютер X выключен или прекратил использование Общего Диска.


Кластерная Файловая Система

Кластерные Файловые Системы - это программные продукты, предназначенные для решения проблем, упомянутых выше. Они позволяют вам строить многокомпьютерные системы с Общими Дисками, решая проблемы целостности данных.

Кластерные Файловые Системы обычно реализуются как "надстройки" на обычными Файловыми Системами. Кластерные Файловые Системы используют некое подобие межсерверной сети для передачи информации друг-другу и синхронизации своей деятельности. Межсерверные "взаимодействия" могут реализовываться как по обычным сетям Ethernet, используя тот же самый SAN, соединяющий компьютеры и диски, так и используя для "взаимодействий кластеров" специальные устройства с низкими задержками.

Кластерная Файловая Система

В этом примере Кластерная Файловая Система устанавливается на нескольких компьютерах и обслуживает запросы от приложений, запущенных на этих компьютерах.

Приложение 1, запущенное на первом компьютере, просит Кластерную Файловую Систему прочитать блок номер 5 из File1.
Кластерная Файловая Система передаёт запрос обычной Файловой Системе, обслуживающей Общий Диск и далее блок данных читается точно таким же образом, как он читается на одиночном сервере.
Приложение 2, запущенное на другой системе, просит Кластерную Файловую Систему записать блок номер 7 в File2.
Кластерная Файловая Система через межсерверную сеть уведомляет Кластерные Файловые Системы на других компьютерах об изменении этого блока. Кластерные Файловые Системы удаляют старую, устаревшую копию данных блока из своего кэша.

Кластерная Файловая Система передаёт запрос обычной Файловой Системе. Она находит информацию о File2 в Таблице Размещения Файлов и определяет, что для этого файла размещено 6 блоков. Она проверяет список неиспользуемых блоков диска и находит неиспользуемый блок номер 13477. Она удаляет номер блока из списка неиспользуемых блоков и добавляет его 7-м блоком в информацию о File2 в Таблице Размещения Файлов, так что теперь File2 имеет размер 7 блоков.

Кластерная Файловая Система через межсерверную сеть уведомляет Кластерные Файловые Системы на других компьютерах об изменении Таблицы Размещения Файлов. Кластерные Файловые Системы на этих компьютерах синхронизируются и изменяют свои копии Таблиц Размещения Файлов.

Файловая Система использует интерфейс диска для отправки команды WRITEBLOCK(13477) на Общий Диск и отправляет данные блока, сгенерированные в приложении.

Дисковое устройство записывает данные блока в указанной блок диска и подтверждает выполнение операции.

Кластерная Файловая Система решает проблему целостности и в качестве Общей Файловой Системы позволяет нескольким компьютерам использовать Общие Диски.

Кластерная Файловая Система доступна для нескольких Операционных Систем:

Кластерная Файловая СистемаОперационная система
Tru64 Cluster 5.x HP Tru64
VERITAS Cluster File SystemSun Solaris, HP/UX
Sun Cluster 3.0Sun Solaris
Generalized Parallel File System (GPFS)IBM AIX, Linux
DataPlow Linux, Solaris, Windows, IRIX
PolyServeLinux
GFSLinux
NonStop ClusterUnixware

Руководство CommuniGate® Pro. Copyright © 1998-2009, Stalker Software, Inc.