CEPH - использование свободного пространства

Я не могу понять, как использовать сырое пространство Ceph.

У меня 14 жестких дисков (14 OSD) на 7 серверах, по 3 ТБ каждый жесткий диск ~ 42 ТБ общего пространства.

ceph -s 
     osdmap e4055: 14 osds: 14 up, 14 in
      pgmap v8073416: 1920 pgs, 6 pools, 16777 GB data, 4196 kobjects
            33702 GB used, 5371 GB / 39074 GB avail

Я создал 4 блочных устройства по 5 ТБ каждый:

df -h
 /dev/rbd1       5.0T  2.7T  2.4T  54% /mnt/part1
/dev/rbd2       5.0T  2.7T  2.4T  53% /mnt/part2
/dev/rbd3       5.0T  2.6T  2.5T  52% /mnt/part3
/dev/rbd4       5.0T  2.9T  2.2T  57% /mnt/part4

df показывает, что всего используется 10,9 ТБ, ceph показывает, что используется 33702 ГБ. Если у меня есть 2 копии, это должно быть ~ 22 ТБ, но сейчас у меня 33,7 ТБ - пропущено 11 ТБ.

ceph osd pool get archyvas size
size: 2


ceph df
GLOBAL:
    SIZE       AVAIL     RAW USED     %RAW USED
    39074G     5326G       33747G         86.37
POOLS:
    NAME          ID     USED      %USED     MAX AVAIL     OBJECTS
    data          0          0         0         1840G           0
    metadata      1          0         0         1840G           0
    archyvas      3      4158G     10.64         1840G     1065104
    archyvas2     4      4205G     10.76         1840G     1077119
    archyvas3     5      3931G     10.06         1840G     1006920
    archyvas4     6      4483G     11.47         1840G     1148291

Блочные устройства и OSD FS - XFS

2 ответа

Решение

Одним из возможных источников путаницы является ГБ против ГиБ / ТБ против ТиБ (база 10/ база 2), но это не может объяснить все различия здесь.

Ceph / RBD попытается "лениво" выделить место для ваших томов. Вот почему, хотя вы создали четыре тома по 5 ТБ, он сообщает об используемых 16 ТБ, а не 20. Но 16 ТБ - это больше, чем сумма "активного" содержимого ваших файловых систем с поддержкой RBD, которое, как вы говорите, составляет всего около 11 ТБ. Несколько вещей на заметку:

Когда вы удаляете файлы в файловых системах, поддерживаемых RBD, файловые системы внутренне помечают блоки как свободные, но обычно не пытаются "вернуть" их на базовое блочное устройство (RBD). Если у вас достаточно свежая версия RBD ядра (3.18 или новее), вы можете использовать fstrim вернуть освобожденные блоки в RBD. Я подозреваю, что вы создали и удалили другие файлы в этих файловых системах, верно?

Кроме использования данных в сети, есть некоторые издержки файловой системы, которые показаны df, Помимо "суперблоков" и других внутренних структур данных файловой системы, следует ожидать некоторой дополнительной нагрузки от степени детализации, при которой RBD выделяет данные. Я думаю, что RBD всегда будет выделять порции по 4 МБ, даже если используется только часть из них.

Я не эксперт по ceph, но позвольте мне немного угадать.

Блочные устройства не монтируются без discard вариант. Поэтому любые данные, которые вы пишете и удаляете, не отображаются в файловой системе (/mnt/part1), но поскольку он был когда-то записан и не урезан, он остается в базовой файловой системе.

Если вы посмотрите на USED для ваших пулов и сложите их вместе, вы получите 16777 ГБ, что равно ceph -s показывает. И если вы умножите это на два (две копии), вы получите 33554 ГБ, что в значительной степени используется пространство.

Другие вопросы по тегам