Поиск по сайту:

Объектное хранилище и сервисы блочного хранилища


Введение

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

С современными сложными развертываниями, контейнерами и эфемерной инфраструктурой дни простого сохранения файлов на диск на одном сервере прошли. Облачные провайдеры разработали услуги для удовлетворения потребностей в хранении современных развертываний приложений, и они в основном делятся на две категории: объектное хранилище и блочное хранилище.

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

Что такое блочное хранилище

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

Оттуда вы будете относиться к нему как к обычному диску. Вы можете отформатировать его с файловой системой и хранить на нем файлы, объединить несколько устройств в массив RAID или настроить базу данных для записи непосредственно на блочное устройство, полностью избегая накладных расходов файловой системы. Кроме того, сетевые блочные запоминающие устройства часто имеют некоторые уникальные преимущества по сравнению с обычными жесткими дисками:

  • Вы можете легко делать живые снимки всего устройства для целей резервного копирования.
  • Размер блочных хранилищ можно изменить в соответствии с растущими потребностями.
  • Блочные устройства хранения можно легко отсоединять и перемещать между машинами.

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

Некоторые преимущества блочного хранения:

  • Блочное хранилище – знакомая парадигма. Люди и программное обеспечение понимают и поддерживают файлы и файловые системы почти повсеместно
  • Блочные устройства хорошо поддерживаются. Любой язык программирования может легко читать и записывать файлы
  • Разрешения файловой системы и элементы управления доступом знакомы и понятны
  • Блочные устройства хранения обеспечивают ввод-вывод с малой задержкой, поэтому они подходят для использования базами данных.

Недостатки блочного хранения:

  • Хранилище привязано к одному серверу за раз.
  • Блоки и файловые системы имеют ограниченные метаданные о блоках информации, которые они хранят (дата создания, владелец, размер). Любая дополнительная информация о том, что вы храните, должна обрабатываться на уровне приложения и базы данных, что создает дополнительную сложность для разработчика.
  • Вы должны заплатить за все выделенное пространство блочного хранилища, даже если вы его не используете.
  • Вы можете получить доступ к блочному хранилищу только через работающий сервер
  • Блочное хранилище требует больше практической работы и настройки по сравнению с объектным хранилищем (выбор файловой системы, разрешения, управление версиями, резервное копирование и т. д.)

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

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

Что такое объектное хранилище

В современном мире облачных вычислений объектное хранилище — это хранилище и извлечение неструктурированных блоков данных и метаданных с использованием HTTP API. Вместо того, чтобы разбивать файлы на блоки для хранения их на диске с помощью файловой системы, мы имеем дело с целыми объектами, хранящимися в сети. Этими объектами могут быть файл изображения, журналы, HTML-файлы или любой автономный блок байтов. Они неструктурированы, потому что нет определенной схемы или формата, которым они должны следовать.

Хранилище объектов стало популярным, потому что оно значительно упростило работу разработчиков. Поскольку API состоит из стандартных HTTP-запросов, для большинства языков программирования были быстро разработаны библиотеки. Сохранение большого двоичного объекта данных стало таким же простым, как HTTP-запрос PUT к хранилищу объектов. Получение файла и метаданных — это обычный запрос GET. Кроме того, большинство служб хранения объектов также могут публично предоставлять файлы вашим пользователям, устраняя необходимость поддерживать веб-сервер для размещения статических ресурсов.

Кроме того, службы хранения объектов взимают плату только за используемое вами пространство хранения (некоторые также взимают плату за HTTP-запрос и пропускную способность передачи). Это благо для небольших разработчиков, которые могут получить хранилище и хостинг ресурсов мирового класса по ценам, которые масштабируются по мере использования.

Однако объектное хранилище не является правильным решением для каждой ситуации. Давайте рассмотрим краткое изложение преимуществ и недостатков.

Некоторые преимущества объектного хранилища:

  • Простой HTTP API с клиентами, доступными для всех основных операционных систем и языков программирования.
  • Структура расходов, при которой вы платите только за то, что используете.
  • Встроенная общедоступная демонстрация статических ресурсов означает, что вы можете самостоятельно запускать на один сервер меньше
  • Некоторые хранилища объектов предлагают встроенную интеграцию с CDN, которая кэширует ваши ресурсы по всему миру, чтобы ускорить загрузку и загрузку страниц для ваших пользователей.
  • Дополнительное управление версиями означает, что вы можете получить старые версии объектов для восстановления после случайной перезаписи данных.
  • Службы объектного хранилища можно легко масштабировать от скромных потребностей до действительно интенсивных сценариев использования, при этом разработчику не нужно запускать дополнительные ресурсы или изменять архитектуру для обработки нагрузки.
  • Использование службы хранения объектов означает, что вам не нужно обслуживать жесткие диски и массивы RAID, так как этим занимается поставщик услуг.
  • Возможность хранить фрагменты метаданных вместе с большим двоичным объектом данных может еще больше упростить архитектуру вашего приложения.

Некоторые недостатки объектного хранилища:

  • Вы не можете использовать службы хранения объектов для поддержки традиционной базы данных из-за высокой задержки таких служб.
  • Хранилище объектов не позволяет изменять только часть большого двоичного объекта данных, вы должны одновременно читать и записывать весь объект. Это имеет некоторые последствия для производительности. Например, в файловой системе вы можете легко добавить одну строку в конец файла журнала. В системе хранения объектов вам нужно будет получить объект, добавить новую строку и записать весь объект обратно. Это делает объектное хранилище менее подходящим для данных, которые меняются очень часто
  • Операционные системы не могут легко монтировать хранилище объектов, как обычный диск. В этом помогут некоторые клиенты и адаптеры, но в целом использование и просмотр хранилища объектов не так просты, как пролистывание каталогов в файловом браузере

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

Есть несколько решений для хранения объектов на собственном хостинге, но вы лишаетесь некоторых преимуществ хостингового решения (например, не нужно беспокоиться о жестких дисках и проблемах масштабирования). Вы можете попробовать OpenStack Swift.

Заключение

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