Назад | Перейти на главную страницу

Использование необработанного пространства 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

Одним из возможных источников путаницы является сравнение GB с GiB / TB с TiB (основание 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 ГБ, что в значительной степени занято.