- PVSM.RU - https://www.pvsm.ru -

Proxmox 5 и частичная запись в блочных устройствах эффективного хранения Ceph

Официальный выпуск Ceph Luminous от производителя мы ждём в ноябре 2017, однако Proxmox 5 [1] уже позволяет использовать в промышленных решениях некую редакцию Ceph Luminous, которая, как и полагается, в качестве основного файлового хранилища по умолчанию предлагает BlueStore. Последнее полноценно поддерживает транзакции с операциями хранения объектов, что делает возможными большое число вкусностей. Одной из них является способность осуществления частичной перезаписи данных в блочных устройствах на основе пулов с удаляющим кодированием (Erasure Coding). Такие пулы, в частности, способны (при наличии достаточного числа физических дисков и серверов) приближать использование имеющегося сырого дискового пространства сколь угодно близко к 100%.

Et voilà!

Методы хранения данных и блочные устройства

Ceph предлагает два вида пулов хранения:

  1. с репликациями
  2. с удаляющим кодированием [2]

При стандарте допустимости двух отказавших устройств хранения, первый метод предполагает необходимость утроения сырого объема хранилища, в то время как второй допускает впечатляющее повышение эффективности использования пространства, например, до 90% при наличии возможности использовании 20 osd для расщепления данных (18 частей исходных данных + 2 части с избыточным кодом).

Поверх обоих видов пулов хранения можно строить объекты хранения, допускающие блочные операции (например, моментальные снимки). Разница начинает проявляться при операциях записи в такого рода объекты, поскольку одна операция записи в блочное устройство с применением удаляющего кодирования подразумевает в своём составе некоторую неделимую последовательность считывания хранимых данных, их частичного изменения и окончательной записи полученного результата. Атомарно. То есть, если какая- либо часть последовательности остаётся незавершённой, отвергается вся операция. Данная атомарность также именуется транзакцией.

До сих пор предлагалось два способа решения проблемы применимости пулов с удаляющим кодированием под блочные объекты:

  1. использование объекта для записи только целиком
  2. применение многоуровневости с пулом удаляющего кодирования в основе и пула репликаций поверх него

Оба метода имеют ограничения [3] вариантов использования.

BlueStore как новое решение основы хранения

В основе хранения объектов Ceph в конечном итоге лежит некая файловая система на физическом диске (или разделе диска), которым управляет некий демон. Для решения множества возникающих по ходу дела проблем может применяться журнал в который и записываются данные, прежде чем клиент получит подтверждение о совершении своей операции. Помимо этого демон выполняет необходимые действия в одноранговой сети пула хранения по поддержанию необходимого числа копий данных (стандартно — трёх), причём с подразделением ролей хозяин — подчинённый. Всё это, собственно, и составляет osd (object storage device). Но в конечном итоге сами данные объекта хранятся в «обычном» файле на диске. Несколько осложняет задачу тот факт, что теоретически, сам объект может сопровождаться практически неограниченным числом метаданных. Как то: имя объекта, дата его создания, дата последнего изменения, контрольная сумма, сила вашей привязанности к этим данным и всё что вы можете придумать в добавление к тем метаданным, которыми снабжает этот объект ваш инструмент хранения — файловая система, система управления блочными устройствами или объектами и т.п. Причём изменение метаданных и самого объекта хранения тоже атомарно (всё или ничего).
Долгое время сообщество Ceph пребывало в уверенности, что решить проблемы с транзакциями его объектов на нижнем уровне позволит решить btrfs, которая должна была заменить xfs и ext4, применявшиеся в основной массе случаев для оконечного хранения на физических дисках.
Время шло, проблема оставалась.

Ceph Kraken предлагает вам поэкспериментировать с BlueStore, а Ceph Luminous ставит его по умолчанию. На мой личный вкус это второе существенное новшество помимо ставшей основной в Kraken асинхронной системы обмена сообщениями, которая делает возможной, например, Распределённые вычисления поверх Ceph RADOS и AsyncMessenger [4] и применение RDMA.

Что и как подробнее... [5]

Материалы:

Автор: OlegBou

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/vy-sokaya-proizvoditel-nost/259756

Ссылки в тексте:

[1] Proxmox 5: https://www.proxmox.com/en/

[2] с удаляющим кодированием: http://onreader.mdl.ru/MasteringCeph/content/Ch04.html#01

[3] ограничения: http://onreader.mdl.ru/MasteringCeph/content/Ch04.html#04

[4] Распределённые вычисления поверх Ceph RADOS и AsyncMessenger: https://habrahabr.ru/post/330908/

[5] подробнее...: http://onreader.mdl.ru/MasteringCeph/content/Ch04.html#0501

[6] Полное руководство работы с сетями на Python: http://onreader.mdl.ru/MasteringPythonNetworking/content/Ch04.html

[7] Полное руководство Ceph: http://onreader.mdl.ru/MasteringCeph/content/index.html

[8] Книга рецептов Ceph: http://http://onreader.mdl.ru/CephCookbook/content/index.html

[9] Proxmox. Полное руководство. 2е изд: http://onreader.mdl.ru/MasteringProxmox.2ed/content/index.html

[10] Книга рецептов Proxmox: http://onreader.mdl.ru/ProxmoxCookbook/content/index.html

[11] Zabbix. Полное руководство. 2е изд.: http://onreader.mdl.ru/MasteringZabbix.2ed/content/Ch04.html

[12] Пример системы виртуализации: http://onreader.mdl.ru/CephCookbook/content/VirtualizationExample.html

[13] Обзор рекомендуемых аппаратных средств: http://onreader.mdl.ru/SDDC/content/Ch01.html#01

[14] sddc.mdl.ru: http://sddc.mdl.ru

[15] Источник: https://habrahabr.ru/post/332514/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best