Сравнение структур данных в функциональном и императивном программировании

Проектировать структуры данных для функциональных языков более сложно, чем для императивных, как минимум по двум причинам[1]:

1. Почти все структуры данных интенсивно используют присваивание, которое в чисто функциональном стиле не используется;

2. Функциональные структуры данных являются более гибкими, и поэтому там, где в императивном программировании старая версия теряется, просто заменяясь новой, в функциональном она автоматически продолжает существовать. Другими словами, в императивном программировании (если не принять особых мер, могущих серьёзно усложнить программу) структуры данных являются эфемерными (англ. ephemeral), а в функциональных программах они как правило постоянные (англ. persistent).

 

Сеть хранения данных, СХД (англ. Storage Area Network, SAN) — представляет собой архитектурное решение для подключения внешних устройств хранения данных, таких как дисковые массивы, ленточные библиотеки, оптические приводы к серверам таким образом, чтобы операционная система распознала подключённые ресурсы как локальные. Несмотря на то, что стоимость и сложность таких систем постоянно падают, по состоянию на 2007 год сети хранения данных остаются редкостью за пределами больших предприятий.

SAN характеризуются предоставлением так называемых сетевых блочных устройств (обычно посредством протоколов Fibre Channel, iSCSI или AoE), в то время каксетевые хранилища данных (англ. Network Attached Storage, NAS) нацелены на предоставление доступа к хранящимся на их файловой системе данным при помощисетевой файловой системы (такой как NFS, SMB/CIFS, или Apple Filing Protocol).

Следует обратить внимание, что категорическое разделение вида «SAN — это только сетевые диски, NAS — это только сетевая файловая система» является искусственным: с появлением iSCSI началось взаимное проникновение технологий с целью повышения гибкости и удобства их применения. Например, в 2003 годуNetApp уже предоставляли iSCSI на своих NAS, а EMC и HDS — наоборот, предлагали NAS-шлюзы для своих SAN-массивов[1].

 

Типы сетей

Большинство сетей хранения данных использует протокол SCSI для связи между серверами и устройствами хранения данных на уровне шинной топологии. Так как протокол SCSI не предназначен для формирования сетевых пакетов, в сетях хранения данных используются низкоуровневые протоколы:

§ Fibre Channel Protocol (FCP), транспорт SCSI через Fibre Channel. Наиболее часто используемый на данный момент протокол. Существует в вариантах 1 Gbit/s, 2 Gbit/s, 4 Gbit/s, 8 Gbit/s, 10 Gbit/s, 16 Gbit/s, 20 Gbit/s.

§ iSCSI, транспорт SCSI через TCP/IP.

§ iSER, транспорт iSCSI через InfiniBand / RDMA.

§ SRP, транспорт SCSI через InfiniBand / RDMA

§ FCoE, транспортировка FCP/SCSI поверх «чистого» Ethernet.

§ FCIP и iFCP, инкапсуляция и передача FCP/SCSI в пакетах IP.

§ HyperSCSI, транспорт SCSI через Ethernet.

§ FICON транспорт через Fibre Channel (используется только мейнфреймами).

§ ATA over Ethernet, транспорт ATA через Ethernet.

Совместное использование устройств хранения

Движущей силой для развития сетей хранения данных стал взрывной рост объема деловой информации (такой как электронная почта, базы данных и высоконагруженныефайловые серверы), требующей высокоскоростного доступа к дисковым устройствам на блочном уровне. Ранее на предприятии возникали «острова» высокопроизводительных дисковых массивов SCSI. Каждый такой массив был выделен для конкретного приложения и виден ему как некоторое количество «виртуальныхжестких дисков» (LUN'ов).

Сеть хранения данных позволяет объединить эти «острова» средствами высокоскоростной сети. Также без использования технологий SCSI транспорта невозможно организовать отказоустойчивые кластеры, в которых один сервер подключается к двум и более дисковым массивам, находящимся на большом расстоянии друг от друга на случай стихийных бедствий.

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

Не стоит забывать и об устройствах резервного копирования, которые также подключаются к СХД. В данный момент существуют как промышленные ленточные библиотеки (на несколько тысяч лент) от ведущих брендов, так и low-end решения для малого бизнеса. Сети хранения данных позволяют подключить к одному хосту несколько приводов таких библиотек, обеспечив таким образом хранилище данных для резервного копирования от сотен терабайт до нескольких петабайт.

Преимущества

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

Другим преимуществом является возможность загружать сервера прямо из сети хранения. При такой конфигурации можно быстро и легко заменить сбойный сервер, переконфигурировав SAN таким образом, что сервер-замена, будет загружаться с LUN'а сбойного сервера. Эта процедура может занять, например, полчаса[2]. Идея относительно новая, но уже используется в новейших датацентрах.

Дополнительным преимуществом является возможность на хосте собрать RAID-зеркало с LUNов, которые презентованы хосту с двух разных дисковых массивов. В таком случае полный отказ одного из массивов не навредит хосту.

Также сети хранения помогают более эффективно восстанавливать работоспособность после сбоя. В SAN может входить удаленный участок со вторичным устройством хранения. В таком случае можно использовать репликацию — реализованную на уровне контроллеров массивов, либо при помощи специальных аппаратных устройств. Поскольку каналы WAN на основе протокола IP встречаются часто, были разработаны протоколы Fibre Channel over IP (FCIP) и iSCSI с целью расширить единую SANсредствами сетей на основе протокола IP. Спрос на такие решения значительно возрос после событий 11 сентября 2001 года в США.

Сравнение технологий обмена данными

Порой сравнивают SAN и NAS, говоря на самом деле о разнице между сетевым диском и сетевой ФС — которая состоит в том, кто обслуживает файловую систему, хранящую данные.

В случае сетевого диска (также «блочного устройства», англ. block device):

§ обмен данными с ним по сети осуществляется блоками подобно тому, как и с локальным SCSI- или SATA-диском;

§ файловая система, если нужна, создаётся и управляется клиентом и как правило — используется им одним.

В случае сетевой файловой системы («ресурс с совместным/разделяемым доступом» — не хранит, а только передаёт данные):

§ обмен данными по сети происходит с применением более высокоуровневых понятий «файл» и «каталог», соответствующих объектам подлежащей «настоящей» ФС нафизических дисках (либо логических поверх них в случае применения RAID, LVM);

§ эта файловая система создаётся и обслуживается в рамках удалённой системы, при этом может одновременно использоваться на чтение и запись множеством клиентов.

Топология сети