Что такое ceph proxmox
Code44free’s Blog
Виртуализация Proxmox + Ceph
Вариант решения отказоустойчивой инфрастурктуры виртуализации, с возможностью географического разнесения между 2 или более датацентрами.
Виртуализация на основе KVM с использованием пакета Proxmox, разделяемое хранилище для хранения образов виртуальных машин на базе Ceph. Сетевая доступность с помощью OSPF.
Что получаем:
– Простое управление через Web-интерфейс Proxmox;
– Мониторинг нагрузки в реальном времени;
– Подключение к консоли гостевых систем из интерфейса управления;
– Возможность «живой миграции» (Live Migration) виртуальных машин, без перерыва в предоставлении сервиса;
– Объединение серверов в кластер и обеспечение высокой доступности за счет автоматической миграции виртуальных машин с вышедшей из строя ноды на работающие;
– Встроенное автоматическое резервное копирование виртуальных машин;
Схема решения:
Варианты решений:
Инсталляция в одном датацентре.
В кластер объединяются от 3-х до 16-ти серверов. Их жесткие диски объединяются в единое распределенное хранилище Ceph. Поверх настраивается HA-кластер Proxmox. Решение позволяет обеспечить работу сервисов в виртуальных машинах в случае отказа одного или нескольких серверов.
Инсталляция в 2-х или более датацентрах.
В кластер объединяются от 3-х до 16-ти серверов. Для больших инсталляций возможно создание нескольких 16-ти нодовых кластеров. Сервера распределены по 2-м или более датацентрам. Между датацентрами обеспечена видимость узлов по IP протоколу.
Жесткие диски объединяются в единое распределенное хранилище Ceph. Настраиваются правила репликации Ceph для гарантированного хранения образов виртуальных машин в 2-х или более датацентрах. Поверх настраивается HA-кластер Proxmox.
Для обеспечения сетевой видимости виртуальной машины, при миграции из одного датацентра в другой, настраивается «размазывание» VLAN виртуальных машин между датацентрами. Либо настраивается анонсирование сети виртуальных машин через протокол динамической маршрутизации.
При использовании динамической маршрутизации, в каждой виртуальной машине настраивается виртуальный IP-интерфейс с адресом с маской /32 и демон маршрутизации анонсирующий этот адрес через сетевое соединение и IP-адресацию датацентра в котором в данный момент работает виртуальная машина.
Данное решение позволяет обеспечить доступность сервисов работающих в виртуальных машинах, при отказе как отдельных нод, так и целого датацентра.
Инструкция по настройке proxmox_ceph_v0.1
Производительность системы хранения для Proxmox: сервер CIFS против Ceph SSD и Ceph HDD, а также разница между использованием LXC и QEMU
Проверена скорость работы дисковой системы при хранении образов в общей хранилке с подключением по CIFS. Также она сравнивается с ранее измеренной скоростью работы Ceph.
Содержание
Конфигурация [ править ]
Две конфигурации. Одна для FIO с тестированием NAS/HCI и вторая для SYSBENCH, где и кластер Ceph расширен с 3 до 5.
Сервер хранилища [ править ]
Хост [ править ]
5 серверов с одинаковой конфигурацией, на которых есть как локальный HDD, так и Ceph с двумя пулами, один на HDD и второй на SSD. Для тестов FIO использовались только 3 сервера в кластере с фактором репликации в 3.
Виртуальная машина [ править ]
Oracle Linux 8 QEMU4/KVM 10 ГБ ОЗУ 100 ГБ диск qcow2 с включенным сжатием
Образ виртуальной машины находится на общей хранилке, поключенной по CIFS/Samba.
Методика тестирования [ править ]
С помощью fio запускаются тесты на случайные чтение и записи по 4k и последовательные чтение-запись на 1М с большой очередью в 64 операции.
Тесты запускаются на самой хранилке (local native), с хоста на удаленной хранилке (remove native) и из виртуальной машины (remote qcow2). Нас интересует средняя латентность, пропускная способность и IOPS.
Для проведения тестирования надо задать папку, в которой будут тестовые файлы. Примеры ниже.
Кроме пропускной способности (bandwith) и IOPS измеряем латентность.
Также данные нормируем. local native по факту пишет со скоростью локального SSD, поэтому на эту скорость нормируем IOPS и приводим их относительно local native(но это плохо при чтении из ОЗУ). Также раз у нас пропускная способность канала 128 МБ/c, на неё нормируем пропускную способность
Результаты FIO [ править ]
Для учета влияния задержек в сети, латентность с хоста на хранилку пингками по 4к составила 0.3 мс.
Последовательная запись 1M [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 700 | 732 | 694 | 1 | 5,47 |
CIFS, remote QEMU | 275 | 2740 | 274 | 0,39 | 2,15 |
CIFS, remote native | 111 | 4144 | 111 | 0,16 | 0,87 |
Ceph SSD, LXC | 181 | 6624 | 177 | 0,26 | 1,41 |
Ceph HDD, LXC | 133 | 6947 | 129 | 0,19 | 1,04 |
Local HDD, LXC | 167 | 2632 | 166 | 0,24 | 1,30 |
Ceph SSD, QEMU | 125 | 7074 | 118 | 0,17 | 0,98 |
Ceph HDD, QEMU | 120 | 10690 | 114 | 0,16 | 0,94 |
Local HDD, QEMU | 300 | 3464 | 296 | 0,43 | 2,34 |
Ceph SSD LXC/QEMU | 1,50 | QEMU в полтора раза медленнее на SSD |
Ceph HDD LXC/QEMU | 1,13 | на HDD разница не существенна |
Ceph LXC SSD/HDD | 1,36 | В Ceph SSD только на треть быстрее HDD |
QEMU (CIFS remote) / (Ceph SSD) | 2,32 | Ceph SSD оказался медленнее удалённого CIFS в 2 раза |
При последовательной записи QEMU сжала диск и поэтому пропускная способность больше пропускной способности сети (в 128 МБ/c) и видимо по этой же причине ниже латентность.
Т.е. использование сжатия на уровне образа ускоряет последовательную запись сжимаемых данных.
В целом SSD значительного преимущества не даёт, а от нативной производительности хранилки остаётся от 16 до 39%.
Случайная запись 4k [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 26 | 10 | 6586 | 1 | 0,20 |
CIFS, remote QEMU | 9 | 213 | 2410 | 0,37 | 0,07 |
CIFS, remote native | 0,7 | 332 | 193 | 0,03 | 0,01 |
Ceph SSD, LXC | 20 | 12 | 5169 | 0,78 | 0,16 |
Ceph HDD, LXC | 21 | 11 | 5400 | 0,82 | 0,16 |
Local HDD, LXC | 3,2 | 77 | 829 | 0,13 | 0,03 |
Ceph SSD, QEMU | 25 | 80 | 6412 | 0,97 | 0,20 |
Ceph HDD, QEMU | 3,2 | 621 | 829 | 0,13 | 0,03 |
Local HDD, QEMU | 5 | 378 | 1291 | 0,20 | 0,04 |
Ceph SSD LXC/QEMU | 0,81 | видимо за счёт сжатия QEMU оказался на 20% быстрее LXC |
Ceph HDD LXC/QEMU | 6,51 | для HDD LXC существенно быстрее QEMU |
Ceph LXC SSD/HDD | 0,95 | в Ceph на случайное записи разницы между HDD и SSD существенной нет |
QEMU (CIFS remote) / (Ceph SSD) | 0,38 | Ceph оказался быстрее CIFS |
Случайная удалённая запись в QEMU раза в три медленнее по IOPS/MB и в 20 по латентности по сравнению с нативной скоростью общей хранилки.
Удивительно, но при случайной записи в Ceph разницы между SSD и HDD не наблюдается. Можно предположить, что это из-за записи через журнал и так как при линейной записи разница SSD/HDD не слишком велика, SSD особого прироста не даёт.
Последовательное чтение 1M [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 9149 | 56 | 9149 | 1 | 72 |
CIFS, remote QEMU | 11143 | 47 | 11137 | 1,22 | 87 |
CIFS, remote native | 119 | 4661 | 116 | 0,01 | 0,93 |
Ceph SSD, LXC | 18551 | 28 | 18648 | 2,04 | 145 |
Ceph HDD, LXC | 18247 | 28 | 18242 | 1,99 | 145 |
Local HDD, LXC | 156 | 2512 | 155 | 0,02 | 1,22 |
Ceph SSD, QEMU | 10439 | 49 | 10435 | 1,14 | 81,55 |
Ceph HDD, QEMU | 170 | 18480 | 164 | 0,02 | 1,33 |
Local HDD, QEMU | 118 | 5111 | 115 | 0,01 | 0,92 |
Ceph SSD LXC/QEMU | 1,79 | Чтение из ОЗУ смысла сравнивать нет |
Ceph HDD LXC/QEMU | 111,23 | Чтение из памяти сравнивать смысла нет |
Ceph LXC SSD/HDD | 1,02 | Чтение из памяти сравнивать смысла нет |
QEMU (CIFS remote) / (Ceph SSD) | 1,07 | Данные нет смысла сравнивать, а отсутствие разницы объясняется, что чтение и в том и в другом случае шло из ОЗУ |
Видно, что и QEMU и нативное чтение на хранилке идут из ОЗУ. ZFS видимо игнорирует direct-чтение. Причем QEMU читает не из ОЗУ сетевой хранилки, а из собственной памяти.
А вот удаленное чтение из хоста оказывается медленным.
Случайное чтение 4k [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 580 | 0,006 | 149427 | 1 | 4,53 |
CIFS, remote QEMU | 117 | 11 | 30183 | 0,20 | 0,91 |
CIFS, remote native | 1,2 | 202 | 318 | 0,0021 | 0,01 |
Ceph SSD, LXC | 1216 | 205 | 311347 | 2,08 | 9,50 |
Ceph HDD, LXC | 660 | 0,3 | 168969 | 1,13 | 5,16 |
Local HDD, LXC | 3 | 85 | 760 | 0,01 | 0,02 |
Ceph SSD, QEMU | 61 | 33 | 15735 | 0,11 | 0,48 |
Ceph HDD, QEMU | 2,3 | 587 | 900 | 0,01 | 0,02 |
Local HDD, QEMU | 1,6 | 1097 | 473 | 0,0032 | 0,01 |
Ceph SSD LXC/QEMU | 19,79 | Чтение из ОЗУ сравнивать смысла нет |
Ceph HDD LXC/QEMU | 187,74 | Чтение из ОЗУ сравнивать смысла нет |
Ceph LXC SSD/HDD | 1,84 | Чтение из ОЗУ сравнивать смысла нет |
QEMU (CIFS remote) / (Ceph SSD) | 1,92 | Сравнивать смысла нет так как чтение из ОЗУ |
Результаты опять неадекватные.
Выводы по FIO [ править ]
Тестам на чтение доверять нельзя, так как в действительности оно может идти из ОЗУ.
По записи удивительно то, что на сжимаемых данных QEMU может оказаться быстрее аналогичной записи из хоста. Это можно связать с особенностями архитекторы qcow2.
При последовательной записи Ceph в 2 раза медленнее удалённого хранения CIFS, но только если в QEMU используется сжатие. Локальный жесткий диск даёт производительность сравнимую с Ceph SSD и может превосходить запись по сети на SSD.
При случайной записи по 4k Ceph оказался быстрее удалённого хранилища по CIFS. Можно предположить, что это в результате того, что один из OSD Ceph оказывается локальным диском и оверхед Ceph при записи на локальный диск оказывается меньше оверхеда на запись по сети на CIFS. Но при случайных операциях на Ceph существенной разницы между SSD и HDD нет при использовании LXC, но есть разница в 6 раз при использовании QEMU. Можно предположить, что это из-за большого оверхеда QEMU на случайных записях.
Методика по SYSBENCH [ править ]
Методика вместе с результатами по Ceph взята из https://elibsystem.ru/node/546, но дополнена результатами по NAS через CIFS.
Результаты по SYSBENCH [ править ]
Последовательная запись 1 поток [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 355 | 0,05 | 21488 | 1 | 2,77 |
CIFS, remote QEMU | 326 | 0,05 | 20880 | 0,97 | 2,55 |
CIFS, remote native | 89 | 0,17 | 5722 | 0,27 | 0,70 |
Ceph SSD | 28 | 0,55 | 1803 | 0,08 | 0,22 |
Ceph HDD | 25 | 0,62 | 1596 | 0,07 | 0,20 |
local HDD | 174 | 0,09 | 11129 | 0,52 | 1,36 |
Видимо SYSBENCH пишет хорошо сжимаемые данные и они настолько хорошо жмутся, что QEMU их пишет почти на скорости локального хранилища и запись упирается в возможности хранилки, при этом формально превышая скорость подключения к хранилке по Ethernet в 120 МБ/c.
Ceph SSD и Ceph HDD оказались малоразличимы между собой, при этом их задержка примерно в три раза больше задержки записи хоста по CIFS и во столько же раз ниже IOPS/bandwith.
Интересно, что локальный диск обогнал сетевые хранилища даже с SSD.
Последовательное чтение 1 поток [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 3503 | 0 | 224219 | 1 | 27,37 |
CIFS, remote QEMU | 154 | 0,1 | 9874 | 0,04 | 1,20 |
CIFS, remote native | 29 | 0,53 | 1886 | 0,01 | 0,23 |
Ceph SSD | 18 | 0,85 | 1180 | 0,01 | 0,14 |
Ceph HDD | 16 | 1 | 1003 | 0,0045 | 0,13 |
local HDD | 151 | 0,1 | 9633 | 0,04 | 1,18 |
Нативная скорость чтения хранилки показала скорость обмена с ОЗУ (3.5 ГБ/c) и 224 тыс. IOPS на чтение.
QEMU опять хорошо сжался и превысил скорость канала и опять опередил в 6 раз несжатую скорость хоста.
Ceph SSD/HDD опять аутсайдеры и опять мало отличаются между собой.
Локальный диск по случайному совпадению оказался близок к работе QEMU.
Последовательная запись 10 потоков [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 337 | 0,42 | 21589 | 1 | 2,63 |
CIFS, remote QEMU | 16 | 8,93 | 1018 | 0,05 | 0,13 |
CIFS, remote native | 95 | 1,49 | 6110 | 0,28 | 0,74 |
Ceph SSD | 5,52 | 25,7 | 353 | 0,02 | 0,04 |
Ceph HDD | 5,37 | 26,3 | 344 | 0,02 | 0,04 |
local HDD | 135 | 1,0 | 8647 | 0,40 | 1,05 |
Локальная запись на хранилке опять уперлась в 21 тыс. IOPS.
QEMU сильно просел и оказался в 6 раз медленнее скорости записи хоста по сети.
Ceph SSD/HDD опять показал самый низкий результат со смешными 350 IOPS и латентностью как у HDD.
Локальный диск опередил сетевую запись.
Последовательное чтение 10 потоков [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 4179 | 0,04 | 267511 | 1 | 32 |
CIFS, remote QEMU | 118 | 1,32 | 7591 | 0,03 | 0,92 |
CIFS, remote native | 110 | 1,41 | 7065 | 0,03 | 0,86 |
Ceph SSD | 170 | 0,9 | 10930 | 0,04 | 1,33 |
Ceph HDD | 58 | 2,7 | 3714 | 0,01 | 0,45 |
local HDD | 154 | 1,0 | 9854 | 0,04 | 1,20 |
Чтение на хранилище идет из ОЗУ на скорости 4 ГБ.
QEMU и чтение хоста по сети показывают близкие результаты примерно на скорости интерфейса.
Ceph SSD впервые в тесте значительно отличается от Ceph HDD (в 3 раза), но при этом Ceph SSD лишь немного опережает локальный HDD.
То, что Ceph SSD больше 120 МБ/c можно объяснить тем, что часть данных считалось с локального OSD.
Случайная запись 10 потоков [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 76 | 1,87 | 4838 | 1 | 0,59 |
CIFS, remote QEMU | 56 | 2,54 | 3574 | 0,74 | 0,44 |
CIFS, remote native | 61 | 2,32 | 3905 | 0,81 | 0,48 |
Ceph SSD | 52 | 2,7 | 3337 | 0,69 | 0,41 |
Ceph HDD | 47 | 3,0 | 3002 | 0,62 | 0,37 |
local HDD | 24 | 5,9 | 1534 | 0,32 | 0,19 |
Максимальная скорость здесь у хранилища при локальном чтении дисков, но только лишь 76 МБ/c при 4838 IOPS. Т.е. уперлись в систему хранения даже не смотря на использование SSD-кеша на запись.
Производительность QEMU и хоста при работе с сетью несколько меньше и сравнимы с Ceph SSD.
Явным аутсайдером является только локальный HDD, но и он смог выдать 1.5 тыс. IOPS, что неплохо для одиночного жесткого диска.
Случайное чтение 10 потоков [ править ]
system | bandwith avg, (MB/s) | latency avg, (msec) | IOPS avg | iops normalized | bw / (128 MB/s) |
---|---|---|---|---|---|
CIFS, local native | 1958 | 0,08 | 125358 | 1 | 15 |
CIFS, remote QEMU | 118 | 1,3 | 7590 | 0,06 | 0,92 |
CIFS, remote native | 109 | 1,41 | 7000 | 0,06 | 0,85 |
Ceph SSD | 114 | 1,35 | 8100 | 0,06 | 0,89 |
Ceph HDD | 15 | 10,3 | 948 | 0,01 | 0,12 |
local HDD | 6,1 | 23,2 | 391 | 0,0031 | 0,05 |
Для чтения с хранилки опять читаем из ОЗУ.
QEMU, чтение хоста по сети и Ceph SSD опять оказались близки друг к другу и работают примерно на скорости сети.
Чтение с HDD хоть с Ceph HDD, хоть с локального HDD оказалось очень медленным, всего 6015 МБ/c, что типично для HDD при случайных операциях.
Выводы по SYSBENCH [ править ]
Поведение при случайных операциях и последовательных принципиально отличается.
При случайных операциях QEMU, Ceph SSD, обращение с хоста по сети выдают близкие результаты. Локальный HDD оказывается аутсайдером, а Ceph HDD оказывается быстрее локального HDD, видимо за счет распараллеливания запросов.
При последовательном чтении такого единства нет и QEMU может читать из ОЗУ даже при флаге DIRECT, а локальный жесткий диск может превосходить сетевые по скорости и даже подключенные по сети SSD.
Для ряда задач уперлись в скорость сети, также следует обращать внимание на латентность и переход на 10G может не только снять ограничение там где скорости близки к 120 МБ/c, но и снизить латентность и повысить IOPS для случайных операций.
Глава 6. Настройка системы хранения
В данной главе мы собираемся рассмотреть как в Proxmox VE настраиваются системы хранения. Мы охватим следующие разделы в данной главе:
Настройку основного хранилища
Установку хранилища FreeNAS
Соединение с хранилищем iSCSI
Соединение с хранилищем LVM
Соединение с хранилищем NFS
Соединение с хранилищем Ceph RBD
Соединение с хранилищем ZFS
Соединение с хранилищем GlusterFS
Содержание
Введение
Хранилище является местом, где размещаются образы виртуальных дисков виртуальных машин. Существует множество различных типов систем хранения со многими различными свойствами, производительностью и способами применения. Вне зависимости от того является ли хранилище локальным с непосредственно подключенными к нему дисками или совместно используемым хранилищем с сотнями дисков, основным предназначением хранилища является размещения образов виртуальных дисков, шаблонов, резервных копий и тому подобного. Proxmox поддерживает различные типы хранилищ,такие как NFS, Ceph, GlusterFS и ZFS. Различные типы хранилищ могут хранить различные типы данных.
Системы хранения могут быть настроены в двух основных категориях:
Совместно используемые хранилища
< Прим. пер.: Это может показаться забавным, однако с некоторых пор стало возможным построение бесплатной среды виртуализации на основе гипервизора Hyper-V с бесплатной же системой хранения Storage Spaces, обладающей современными функциональностью и мощностью сопоставимыми, например, с Ceph. Хотя она и ограничена в масштабировании применением аппаратных технологий SAS/ FC. Остаётся дождаться смещения Storage Spaces Direct (S2D) в сферу халявного применения, чтобы имеющаяся в Непосредственно подключаемых пространствах хранения Программно определяемая шина хранения (Software Storage Bus), заменяющая собой SAS/FC, смогла составить конкуренцию системам хранения уровня Ceph!>
Локальные хранилища
Любое хранилище которое размещается в самом узле с применением напрямую подключаемых дисков называется локальным хранилищем. Этот тип хранилища не имеет избыточности помимо предоставляемой RAID контроллером который управляет массивом. Если узел отказывает сам по себе, хранилище становится полностью недоступным. Миграция виртуальных машин в живую невозможна когда виртуальные машины сохраняются на локальных хранилищах поскольку в процессе миграции виртуальный диск данной виртуальной машины должен целиком копироваться на другой узел.
Виртуальные машины могут осуществлять миграцию в реальном времени когда существует несколько узлов Proxmox в кластере и виртуальные диски сохраняются на совместно используемом хранилище доступном для всех узлов в кластере.
Совместно используемые хранилища
Совместно используемое хранилище является системой хранения, доступной всем узлам в кластере поверх сетевой среды в неком виде. В виртуальной среде с общим хранилищем реальный виртуальный диск виртуальной машины может храниться в общем хранилище, в то время как виртуальная машина на самом деле работает на другом узле хоста Proxmox. С применением совместно используемого хранилища становится возможной миграция виртуальных машин в реальном времени без выключения машин. Множество узлов Proxmox может совместно использовать одно общее хранилище, а виртуальные машины могут перемещаться повсеместно, поскольку виртуальный диск хранится на различных совместно используемых хранилищах. Как правило, несколько выделенных узлов применяются для настройки совместно используемого хранилища со своими собственными ресурсами отдельно от совместного хранения источников узлов Proxmox, которые могут быть использованы для размещения виртуальных машин.
В последних выпусках Proxmox добавил некоторые новые подключаемые хранилища, которые позволяют пользователям получать преимущества некоторых больших систем хранения и интегрировать их со средой Proxmox. Большинство настроек систем хранения может быть выполнено с применением графического интерфейса Proxmox.
Хранилище Ceph
Встроенные средства самовосстановления Ceph обеспечивают беспрецедентную устойчивость при отсутствии единой точки отказа. В кластере Ceph со многими узлами хранилище может переносить не только отказ жесткого диска, но и выход из строя всего узла без потери данных. В настоящее время Proxmox поддерживает только блочные устройства RBD.
Ceph включает ряд компонентов имеющих решающее значение для вашего понимания того, как настраивать и эксплуатировать хранилище. Следующие компоненты это то, и чего состоит Ceph:
Демон монитора (MON)
Демон хранения объектов (OSD)
Сервер метаданных (MSD)
Карта Управляемых масштабируемым хешированием репликаций (CRUSH map, Controlled Replication Under Scalable Hashing map)
Группы размещения (PG, Placement Group)
Демоны монитора формируют кворум распределенного кластера Ceph. Должно присутствовать как минимум три настроенных демона монитора на различных узлах для каждого кластера. Демоны монитора также могут быть настроены как виртуальные машины вместо применения физических узлов. Мониторы требуют очень мало ресурсов для функционирования, следовательно выделяемые ресурсы могут быть очень незначительными. Монитор может быть установлен через графический интерфейс Proxmox после начального создания кластера.
Демоны хранения объектов OSD, Object Storage Daemons отвечают за хранение и извлечение действительных данных кластера. Обычно одно физическое устройство подобное жесткому диску, или твердотельному диску настраивается как отдельный OSD. Хотя несколько различных OSD может быть настроено на одном физическом диске, это не рекомендуется делать совсем ни для каких промышленных применений. Каждый OSD требует устройство журнала, где вначале записываются данные, которые позже переносятся на реальный OSD. Сохраняя данные в журналах на высокопроизводительных SSD мы можем значительно увеличивать производительность ввода/ вывода Ceph.
Благодаря архитектуре Ceph, чем больше и больше OSD добавляется в кластер, тем больше возрастает производительность ввода/ вывода. Журнал OSD работает очень хорош на малых кластерах при примерно восьми OSD на узел. OSD могут быть установлены с помощью графического интерфейса Proxmox после начального создания MON.
OSD Journal
Каждый фрагмент данных предназначенный для OSD Ceph вначале записывается в журнал. Журнал позволяет демонам OSD записывать меньшие фрагменты, позволяя реальным дискам фиксировать запись, которая требует больше времени. Проще говоря, все данные будут записаны в журналы, а затем журнальная файловая система отправляет данные на фактический диск для постоянной записи. Так, если журнал хранится на диске с высокой производительностью, например SSD, входящие данные будут записаны с гораздо более высокой скоростью, в то время как за сценой более медленные диски SATA могут фиксировать запись с более медленной скоростью. Журналы на SSD могут на самом деле улучшать производительность кластера Ceph, особенно, если кластер небольшой, всего с несколькими терабайтами данных.
Следует также отметить, что если происходит отказ журнала, это приведёт к выходу из строя всех OSD, которые обслуживает данное устройство журнала. В некоторых средах может быть необходимо помещать два устройства SSD для зеркального RAID и уже его применять для журнала В больших средах с более чем 12 OSD на узел производительность может быть на самом деле получена путём размещения журнала на том же диске OSD вместо применения SSD для ведения журнала.
CRUSH map
Карта Управляемых масштабируемым хешированием репликаций (CRUSH map) является сердцем распределенной системы хранения Ceph. Алгоритм для сохранения и извлечения пользовательских данных в кластерах Ceph планируется в карте CRUSH. CRUSH делает возможным прямой доступ клиента к OSD. Это устраняет единую точку отказа и любые физические ограничения масштабирования, поскольку не существует централизованных серверов или контроллеров для управления операциями чтения и записи хранимых данных. Во всех кластерах Ceph CRUSH поддерживает карту всех MON и OSD. CRUSH определяет как данные должны быть разбиты и реплицированы среди OSD распределяя их среди локальных узлов или даже среди удаленно расположенных узлов.
Карта CRUSH по умолчанию создается на только что установленный кластер Ceph. Она может дополнительно настраиваться дальше на основе потребностей пользователей. Для небольших кластеров Ceph эта карта должна работать просто прекрасно. Однако, когда Ceph развертывается для очень больших данных, эту карту необходимо настраивать дополнительно. Настроенная карта позволит лучше управлять массивными кластерами Ceph.
Для успешной работы с кластерами Ceph любых размеров обязательно ясное понимание карты CRUSH.
В Proxmox VE 3.4 мы не можем настраивать под требования пользователя карту CRUSH с применением графического интерфейса Proxmox. Она может только просматриваться в GUI, а ее изменение осуществляется через CLI.
< Прим. пер.: чтобы полностью использовать полосу пропускания SSD, они должны расщепляться примерно между 5 OSD (по опыту Mirantis), для включения такой возможности вам необходимо удалить OSD, созданные на этих SSD при установке, разделить каждый SSD на пять разделов и создать на них OSD. см., например, раздел 6.1 Эталонной архитектуры для компактного облачного решения с применением Mirantis OpenStack 9.1 и оборудования Dell EMC. >
В хранилище Ceph объекты данных собираются в группы определяемые с помощью алгоритмов CRUSH. Они называются группами размещения (PG, Placement Group), поскольку CRUSH помещает эти группы в различные OSD в зависимости от установленного в карте CRUSH уровня репликации и количества OSD и узлов. Отслеживая группы объектов вместо самих объектов можно сохранять огромное количество аппаратных ресурсов. Было бы невозможно отслеживать миллионы отдельных объектов в кластере. Следующая диаграмма показывает как объекты объединяются в группы и, как PG связаны к OSD:
Для балансировки доступных аппаратных ресурсов необходимо назначать правильное число групп размещения. Число групп размещения должно меняться в зависимости от число OSD в кластере. Следующая таблица предлагаемых групп размещений выполнена разработчиками Ceph:
Число OSD | Число PG | ||||||
---|---|---|---|---|---|---|---|
Система хранения | Ссылка | ||||
---|---|---|---|---|---|
Элемент | Вид информации | Вводимое значение |
---|---|---|
Элемент | Вид информации | Пример значения |
---|---|---|