Я не могу понять использование необработанного пространства 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 ГБ, что в значительной степени занято.