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

в 19:56, , рубрики: block device, BlueStore, Ceph Kraken, Ceph Luminous, crush, Erasure Coding, OSD, proxmox 5, RADOS, rbd, высокая производительность, параллельное программирование, Промышленное программирование, Разработка под Linux, системное программирование, метки: , , , , , ,

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

Et voilà!

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

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

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

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

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

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

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

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

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

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

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

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

Материалы:

Автор: OlegBou

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js