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