Сервисы хранения объектов и блочные сервисы хранения: краткий обзор
Cloud Server | Комментировать запись
Наличие гибкого и масштабируемого хранилища данных – базовое требование большинства приложений, разрабатываемых с помощью современных технологий и инструментов. Независимо от количества изображений, видео или текста разработчикам приложений необходимо решение для хранения и поиска пользовательского контента, логов, резервных копий и т. п.
Современные технологии – сложные развертывания, контейнеры и эфемерная инфраструктура – сделали невозможным простое сохранение файлов на диск одного сервера. Облачные провайдеры разработали специальные сервисы для удовлетворения потребностей хранения современных приложений. Условно их можно разделить на две категории: хранилища объектов и блочные хранилища.
Что такое блочное хранилище?
Блочные хранилища – относительно простой и знакомый тип. Такие сервисы предлагают традиционные блочные устройства хранения (например, жесткие диски) по сети. Облачные провайдеры часто предоставляют инструменты и продукты для оркестровки блочных устройств хранения любого размера и подключения их к вашей виртуальной машине.
После этого ы можете работать с устройством как с обычным диском. Вы можете отформатировать его файловую систему и хранить на нем файлы, объединить несколько устройств в RAID-массив или настроить базу данных для записи непосредственно на блок-устройство. Кроме того, сетевые блочные устройства хранения данных имеют преимущества по сравнению с обычными жесткими дисками:
- Они позволяют создавать снапшоты и быстрые резервные копии всех данных.
- Вы можете изменять размер хранилища в соответствии с растущими потребностями приложения.
- Вы можете легко отсоединить такое устройство и переместить его на другую машину.
Такое гибкое решение подходит почти всем типам приложений.
Преимущества блочных хранилищ данных:
- Блочное хранилище – привычная и понятная технология. Пользователи и программы легко работают с файлами и файловыми системами.
- Блочные устройства легко поддерживать. Читать и изменять файлы умеет любой язык программирования.
- Права доступа к файлам и файловым системам можно быстро изменить, эта процедура известна всем пользователям.
- Блочные устройства хранения обеспечивают низкую задержку ввода-вывода, поэтому они подходят для использования базами данных.
Недостатки блочных хранилищ данных:
- Устройство можно привязать только к одному серверу.
- Файловые системы имеют ограниченные метаданные о блоках информации, которую они хранят (дата создания, владелец, размер). Любая дополнительная информация должна обрабатываться на уровне приложений и баз данных, что является дополнительной задачей для разработчика.
- За пространство блочного устройства нужно платить, даже если вы им не пользуетесь.
- Доступ к блочному устройству можно получить только с запущенного сервера.
- Блочные хранилища требуют больше ручной работы и настройки по сравнению с сервисами хранения объектов (настройка файловой системы, права доступа, управление версиями, резервное копирование и т. п.).
Благодаря хорошим показателям ввода-вывода блочные устройства хорошо подходят для хранения информации в традиционных базах данных. Кроме того, они могут поддерживать работу многих устаревших приложений, которым требуется обычное хранилище и файловая система.
Если ваш облачный провайдер не предоставляет сервиса блочных хранилищ, вы можете обратиться к OpenStack Cinder, Ceph или использовать встроенный сервис iSCSI, доступный на многих устройствах NAS.
Что такое хранилище объектов?
В современном мире облачных вычислений хранилище объектов – это средство для хранения и извлечения неструктурированных объектов данных и метаданных с помощью HTTP API. Вместо того чтобы разбивать файлы на блоки и хранить их на диске с помощью файловой системы, такой сервис работает с целыми объектами, хранящимися по сети. Эти объекты могут быть файлами изображений, логами, HTML-файлами или любыми автономными блоками байтов. Они неструктурированы, потому что конкретной схемы или формата, которым они должны отвечать, не существует.
Поскольку API состоит из стандартных HTTP-запросов, быстро появилось много библиотек для большинства языков программирования. Чтобы сохранить объект данных, нужно просто отправить HTTP PUT запрос в хранилище объектов. Извлечь файлы и метаданные можно с помощью обычного запроса GET. Большинство сервисов хранения объектов также могут публиковать файлы для ваших пользователей, устраняя необходимость поддерживать веб-сервер для размещения статических активов.
Более того, сервисы хранения объектов взимают плату только за используемое пространство (у некоторых также платными являются HTTP-запросы и пропускная способность). Это отличный вариант для небольших приложений, которые могут получить высококачественное хранилище, размещать активы, не переплачивая, и масштабировать хранилище по мере необходимости.
Преимущества хранилищ объектов:
- Простой HTTP API с клиентами для всех основных операционных систем и языков программирования.
- Вы платите только за то, что используете.
- Встроенная поддержка публикации статических активов позволяет использовать меньше серверов.
- Некоторые хранилища объектов предлагают встроенную интеграцию CDN, которая кэширует активы, чтобы ускорить загрузку страниц.
- Опциональное управление версиями позволяет извлекать старые версии объектов для восстановления после случайных перезаписей данных.
- Сервисы хранения объектов можно легко масштабировать без необходимости запуска дополнительных ресурсов или изменения архитектуры.
- Вам не нужно поддерживать жесткие диски и RAID-массивы, так как все это обрабатывается провайдером хранилища.
- Возможность хранить фрагменты метаданных вместе с объектами данных упростит архитектуру приложения.
Недостатки хранилищ объектов:
- Такие хранилища не смогут обслуживать традиционную базу данных.
- Хранилище объектов не позволяет изменять данные по фрагментам. Изменять можно только весь объект, а это влияет на производительность. Например, в файловой системе можно легко добавить одну строку в конец лога. В системе хранения объектов для этого нужно будет восстановить объект, добавить новую строку и записать весь объект обратно. Поэтому такое хранилище не подойдет приложениям, чьи данные часто меняются.
- Операционные системы не могут монтировать хранилище объектов как обычный диск. Для этого есть несколько клиентов и адаптеров, но в целом использовать и просматривать хранилища объектов не так просто, как работать с каталогами в файловом браузере.
Хранилища объектов отлично подходят для размещения статических ресурсов, например, для сохранения пользовательского контента: изображений и фильмов, хранения файлов резервных копий и логов.
Существуют управляемые хранилища объектов, где у вас будет доступ к параметрам жестких дисков и масштабирования. Но если вы не хотите заниматься настройкой и поддержкой хранилища, всю поддержку может осуществлять провайдер. Попробуйте Minio (популярное хранилище объектов, написанное на Go), Ceph или OpenStack Swift.
Заключение
Поиск хранилища данных – непростая задача для разработчиков. Теперь вы знакомы с особенностями базовых типов хранилищ. Принимая это сложное решение, учитывайте требования вашего приложения.