CommuniGate Pro
Версия 6.4
 

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

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

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

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




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

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

  • READBLOCK(12345) - прочитать блок номер 12345 и отправить данные в компьютер.
  • WRITEBLOCK(765645) - получить данные от компьютера и сохранить их в блоке номер 765645.

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

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


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

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

Существует много разных Файловых Систем, в них используются различные методы и алгоритмы, но некоторые основные функции имеются в большинстве Файловых Систем:
  • Файловая Система ведёт в том или ином виде Таблицу Размещения Файлов (FAT) - информацию, которая связывает логические файлы с номерами блоков в устройстве хранения.
    Например, в FAT может быть задано, что "File1" хранится в 5 блоках диска с номерами 123400, 123405, 123401, 177777, 123456, а "File2" хранится в 6 блоках диска с номерами 323400, 323405, 323401, 377777, 323456, 893456.
  • Файловая Система ведёт список всех неиспользуемых блоков хранения и автоматически размещает новые блоки, когда файл увеличивается в размере и возвращает блоки в список неиспользованных блоков, когда файл уменьшает свой размер или удаляется.
  • Файловая Система обрабатывает запросы приложений, которым необходимо прочитать данные из логических файлов или записать данные в них. Файловая Система преобразовывает эти запросы в одну или несколько операций чтения/записи блоков, используя информацию из Таблицы Размещения Файлов.
  • Файловая Система ведёт специальные файлы, называемые "файловыми директориями" и сохраняет в них информацию о других файлах, "находящихся" в этих директориях.
  • Файловая система также обеспечивает работу "файлового кэша" При записи информации в файл она сохраняется на Устройстве Хранения (на дисках) и одновременно копируется в "кэш-буфер" Файловой Системы.
    При чтении информации из хранилища, она передаётся в приложение и одновременно копируется в "кэш-буфер""
    Когда этому (или другому) приложению необходимо прочитать эту же порцию информации из файла, находящегося в кэше, Файловая Система просто возвращает эту информацию из своего кэш-буфера вместо того, чтобы прочитывать её повторно из Системы Хранения.
Следующий рисунок иллюстрирует работу Файловой Системы:
Файловая Система в Одиночной ОС
В этом примере Файловая Система обслуживает запросы от двух приложений.
Приложение 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) на Общий Диск и отправляет данные блока, сгенерированные в приложении.

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

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

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

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

Руководство CommuniGate Pro. Copyright © 2020-2023, АО СталкерСофт