В этой статье я отклонюсь от традиционной для меня темы систем хранения FAS и подниму тему объектного хранения данных в системах NetApp StorageGrid WebScale. Если кратко, то объектное хранение — это третий тип хранения наряду с NAS и SAN. Представьте себе, что каждый файл состоит из данных и метаинформации (владелец, права, время модификации и т.д.), так вот объектное хранение позволяет разъединить эти части и хранить их в виде «ключ/значение». Такой подход хранения информации открывает возможности децентрализованного, распределённого хранения данных огромных масштабов с прозрачной миграцией данных, репликацией и прозрачным переключением конечных потребителей между нодами объектного кластера. В широком смысле объектное хранилище может быть реализовано как на уровне устройства (жесткого диска), при помощи специализированных SCSI команд (Object-based Storage Device Commands), так и на уровне протокола доступа к системе хранения, которая состоит из нескольких дисков (которые, в свою очередь, вовсе не обязаны быть объектными). В обоих случаях используется Ethernet для подключения и IP протокол для передачи данных. Примером реализации объектного хранилища на уровне устройства являются жесткие диски линейки Seagate Kinetic Open Storage platform. Примером систем хранения данных в облаке может быть Microsoft Azure BLOB, Amazon S3. В этой статье я остановлюсь на объектных СХД, которые можно развернуть у себя на сайте и при необходимости подключить к облаку.
История
Изначально продукт StorageGRID развивался для здравохранения, так как хранение миллионов крупных и мелких объектов требовало специализированного решения. Крупные производители оборудования для здравохранения такие к Siemens, AGFA и другие поддерживают возможность отсылки объектов напрямую в StorageGRID. Этот подход позволил осуществить сценарий ранее не возможный для файловых хранилищ, к примеру когда врачу нужно получить данные о пациенте за последние 10 лет, хотя больной переехал из Миннесоты в Лос-Анджелес. StorageGRID и сейчас по-прежнему крайне востребован в отрасли здравохранения, но смог также найти применение и в облачных решениях для хранения разнообразных данных.
Семейство NetApp StorageGrid состоит из двух представителей:
- ПО в чистом виде, NetApp StorageGrid WebScale
- Программно-аппаратный комплекс NetApp StorageGrid appliance на базе E-Series — SG5660.
Первый вариант (ПО) может поставляться в виде ESXi апплаенса или в виде Docker образа на основе Debian Linux.
Второй вариант состоит из двухконтроллерной системы, где один контроллер — это Storage нода, а второй — Compute нода. Т.е. в шасси есть два контроллера, но это не HIgh-Avalability система сама по себе — рекомендуется минимум 2 такие SG5660 системы (т.е. 4 контроллера), для отказоустойчивости. С другой стороны, можно использовать одну обычную E-Series с двумя контроллерами и High-Availability со стандартной OS SANtricity и поверх всего этого минимум два сервера со Storage и Admin нодами. Оба этих варианта могут сосуществовать в одном кластере.
Рост неструктурированных данных неуклонно набирает обороты, примерами генераторов таких данных являются развивающийся рынок IoT, появившиеся на рынке фито и видео камеры с невиданным доселе разрешением и качеством кадра, медицинское оборудование и другие устройства. Для закрытия всех этих задач, с нуля был разработан продукт StorageGrid:
Web data repositories
- Для малых объектов, с экстремально высокими транзакционными нагрузками
- Для хранения миллиардов объектов
Data archives
- Большие объекты, низкая транзакционная нагрузка
- Долговременное хранение, не требовательное к скорости отклика
- Глобально распределённые, крупные объекты
- Потоковый доступ к данным, большая пропускная способность
Основные функции StorageGrid
Позволяет управлять геораспределёнными неструктурированными данными. С единой панелью управления, политиками управления по всем сайтам, где располагается StorageGrid ноды кластера, таким образом данные подтягивая туда, где они нужны. Поддерживаются ленточные библиотеки и RESTful HTTP подобные протоколы, такие CDMI, S3 и Swift, при помощи которых система может быть интегрирована с облачными провайдерами. Данные могут бесшовно перемещаться между всеми уровнями: локальным хранилищем, облаком и ленточными библиотеками.
К преимуществам платформы StorageGrid стоит отнести:
- Поддержку всех наиболее популярных объектных протоколов
- Расширяемость до 100 миллиардов объектов (375 миллионов на одну ноду), 70PiB информации (soft limit)
- Распределенность: до 16 сайтов
- Возможность использования ленточных библиотек как уровня для хранения архивов данных
- При изменении политик, жизненный цикл данных будет автоматически подстроен для соответствия изменениям
- Одну из самых развитых настроек политик жизненного цикла данных (ILM): Автоматическое распределение данных по локальным уровням (SSD, SATA, SAS, Лента, Geo-EC), публичным облакам (таким как AWS S3) и между сайтами заказчика. Распределение данных может быть осуществлено на основе информации о стоимости данных, необходимости в уровне их защенности, производительности, доступности, стоимости сети и долговечности хранимых данных.
Erasure Coding
Почти все объектные СХД умеют хранить несколько копий одного объекта (репликация), дублируя данные на разные ноды и сайты, обеспечивая таким образом отказоустойчивость. А Erasure Coding (EC) — это механизм, похожий на RAID, но выполняющийся на уровне объекта, который разбивается на несколько частей, а не на уровне целых жестких дисков. EC позволяет существенно меньше потреблять пространства на хранилище, обеспечивая механизм отказоустойчивости.
Geo-EC
Geo Distributed Erasure Coding — это EC, где части объекта, составляющие такую «RAID-группу», могут быть на системах, расположенных в разных частях мира, хранить две или три копии данных, и позволяют достигать невероятных показателей доступности, но это порождает соответствующее количнество трафика и занимаемого пространства. Здесь на помощь приходит функция геораспределённого Erasure Coding позволяющая не ухудшить отказоустойчивость и доступность, существенно уменьшив количество занимаемого пространства. Доступны следующие схемы EC:
- 2 + 1 для трех сайтов
- 4 + 2 для трех сайтов
- 6 + 3 для трех сайтов
- 9 + 3 для четырех сайтов
- 8 + 2 для пяти сайтов.
Erasure Coding с одной стороны позволяет экономить дисковое пространство, с другой стороны добавляет накладные расходы при высчете контрольной суммы и востановлению объекта. В случае с Geo-EC при чтении объекта ещё увеличивается скорость ответа так как чтение выполняется из двух сайтов. Т.е. EC необходимо использовать с умом, и далее я раскажу как.
Hierarchical EC
StorageGrid позволяет распределять данные на основе политик их долговечности и отказоустойчивости. Hierarchical Erasure Coding позволяет на основе этих политик автоматически выполнять локальный EC и Geo-EC. Hierarchical EC хорошо подходит для инсталяций с минимум 3 сайтами для защиты от выхода из строя целого сайта.
DDP — локальный EC
Dynamic Disk Pools (используется StorageGrid WebScale как локальный EC) это, функционал оборудования NetApp E-Series, своего рода RAID, как и обычные RAID группы, он создаётся на одной локальной системе. DDP позволяет не терять в производительности в случае локального сбоя одного или нескольких дисков (ведь иначе объекты будут подтягиваться с других нод или сайтов), плюс экономится электроенергия и сетевой (WAN/LAN) трафика: доступ к данным и восстановление будет выполнено локально. Этот функционал отлично дополняет Geo-EC.
Information Lifecycle Management
ILM позволит гибко и намного более рационально использовать дисковое пространство благодаря политикам жизненного цикла данных. Так, к примеру, можно настроить политику, чтобы в случае, если объект был записан или к нему в течении 30 дней было хоть одно обращение, хранить Х его копий на нескольких разных сайтах. Если же к нему не было обращений больше чем 30 дней, то удалять копии и прогнать его через EC, в этом случае увеличенное время чтения объекта уже не будет такой проблемой. А если к объекту не было обращений в течении 1 года, то отправить его в облако или на ленту. Важно отметить, что приведенный пример гранулярно работает на уровне каждого отдельного объекта а не на уровне большого набора данных, такого как LUN или файловая шара (в SAN или NAS соответственно). Если цена на ресурсы изменится, политика подтянет и переразмажет данные в соответствии с новыми изменениями.
Долговечность
Можно разделить на две части: целостность и доступность данных.
Целостность данных обеспечивается благодаря: использованию цифровых хэш-сумм, когда данные записываются, считываются, мигрируют, и периодической проверке. Повреждённые объекты прозрачно пересоздаются из копий. Геораспределённый механизм Erasure Coding позволяет экономно использовать пространство для хранения копий данных.
Доступность данных обеспечивается за счёт Fault-tolerent архитектуры, поддержки беспрерывности операций, обновлений ПО и оборудования платформы. Распределение нагрузки, как при нормальной работе, так и при сбое. NetApp AutoSupport может автоматически уведомлять поддержку для преактивного решения проблем. Erasure coding на уровне ноды улучшает доступность каждой ноды, время восстановления, влияние на производительность и сетевую активность (доступно только на платформе E-Series с Dynamic Disk Pools).
NAS
Функционал NAS с протоколами CIFS/NFS может быть реализован при помощи файловых шлюзов (File Getaway Node). Это позволит не модифицировать существующую инфраструктуру и предоставлять конечным пользователям стандартный файловый доступ. StorageGrid, в свою очередь, благодаря политикам жизненного цикла сможет на основе метаинформации (к примеру, последнему времени модификации или создания файла) прозрачно перемещать эти данные по уровням хранения. Лицензии на файловые шлюзы входят в поставку StorageGrid, их докупать не нужно. Поддерживается интеграция с Active Directory и LDAP.
Безопасность
Поддержка End-to-End шифрования каждого объекта и Secure Multi-Tenancy. Поддержка аутентификации и механизмов безопасности для S3 и CDMI. Поддерживается интеграция с LDAP/AD для аутентификации пользователей в рамках одного Tenant.
Production-Ready
Это очень важный момент, когда у заказчика нет армии программистов и администраторов, важно, чтобы комплекс был надёжным. Технологии StorageGrid уже больше 14 лет (в 2001 первая инсталяция), и она успела обрости большим количеством интеграций с другими известными продуктами для резервного копирования, архивирования, файловой синхронизации, колаборейшн и т.д.
- NTP Hierarchical storage management service: Software Object Storage & Cloud Connector (File Vacuum)
- Ctera File sync and share, collaboration
- Stealth Microsoft SQL/Exchange/SharePoint integration
- PoINT Hierarchical storage management service
- Commvault Backup and archive
- Citrix Sharefile File sync and share, collaboration
- Egnyte File sync and share, collaboration
- SoftNAS General purpose NFS and CIFS gateway
- NetApp AltaVault (SteelStore). Ссылка будет доступна после публикации следующей статьи
- Symantec Enterprise Vault with NetApp StorageGRID Adapter
- Amazon S3
- Amazon CloudFront
- Open Stack Swift with white box
- Inktank Ceph with Calamari
- Swift API
- OpenStack Glance Integration: Leverage StorageGRID Webscale as Glance image repository via S3 and Swift
- NetApp OpenStack Cinder driver
- OpenStack Kilo
- OpenStack Heat orchestration
- И другие.
Лицензионная политика StorageGrid
Продукт лицензируется по терабайтно, вне зависимости от количества и типа нод. Аппаратная и софтовая реализация StorageGRID могут сосуществовать в одном кластере. Весь возможный функционал включён в базовую поставку:
- В случае с аппаратной реализацией, продукт лицензируется по количеству «сырых» (RAW) терабайт
- В случае покупки лицензии на софт (без использования аппаратного StorageGRID) лицензируется продукт по количеству полезного пространства, при этом используется коэффициэнт х1,25.
Выводы
StorageGRID это продукт для приложений поддерживающие RESTful HTTP, который подходит для больших и мелких объектов, высокой пропускной способностью, транзакционностью и автоматическим, прозрачным перемещением данных по уровням хранения. Geo-кластеризация позволяет достичь невероятно высокой отказоустойчивости и доступности данных, скрывая выход из строя целых сайтов. Технология EC позволяет существенно экономить пространство за счёт применения RAID-подобной архитектуры. StorageGRID имеет поддержку множества уровней хранения и один из самых развитых механизмов управления жизненным циклом данных. ILM автоматически переместит данные при изменении цены на том или ином уровне хранения, что позволит более рационально использовать ресурсы и гибко реагировать на изменения стоимости хранения данных (к примеру в Облаке или в Ленточных библиотеках). StorageGRID это устоявшийся, зрелый продукт с широким списком интеграции трете-стороннего ПО, что упрощает поддержку и интеграцию в существующую инфраструктуру. Шифрование объектов и поддержка аутентификации LDAP/AD позволяет обеспечивать защиту от кражи данных. StorageGRID может выступать полной заменой Amazon S3, позволяя сдавать в аренду нескольким компаниям хранилище и выступая в роли частного облака, для тех кто не может размещать данные в публичном облаке. А может выступать дополнением к AWS S3, используя его как уровень хранения данных и имеет механизм подсчёта стоимости их хранения для арендаторов хранилища StorageGRID.
Здесь могут содержаться ссылки на Habra-статьи, которые будут опубликованы позже.
Сообщения по ошибкам в тексте прошу направлять в ЛС.
Замечания, дополнения и вопросы по статье напротив, прошу в комментарии.
Автор: bbk