Удаление файлов в Ceph не освобождает место

#ceph

#ceph

Вопрос:

Я использую Ceph, загружая много файлов через radosgw. После я хочу удалить файлы. Я пытаюсь сделать это на Python, вот так:

 bucket = conn.get_bucket(BUCKET)
for key in bucket.list():
    bucket.delete_key(key)
 

После этого я использую bucket.list() для перечисления файлов в корзине, и это говорит о том, что корзина теперь пуста, как я и предполагал.

Однако, когда я запускаю ceph df mon, это показывает, что OSD по-прежнему имеют высокую загрузку (например %RAW USED 90.91 ). Если я продолжу писать (думая, что данные о состоянии просто еще не догнали состояние), Ceph по существу блокируется (100% использование).

Что происходит?

Примечание: у меня есть эти выделяющиеся в ceph status :

    health HEALTH_WARN
            3 near full osd(s)
            too many PGs per OSD (2168 > max 300)
            pool default.rgw.buckets.data has many more objects per pg than average (too few pgs?)
 

Из того, что я собираю в Интернете, это не вызвало бы моей конкретной проблемы. Но я новичок в Ceph и могу ошибаться.

У меня есть один mon и 3 OSDs. Это только для тестирования.

Комментарии:

1. Файл все еще открыт процессом?

2. @hek2mgl — Процесс загружает 1000 копий файла в Ceph, затем удаляет их, как указано выше. Тогда процесс существует. Является ли файл, о котором вы спрашиваете, файлом, который я загружаю в Ceph? Он не используется.

3. @hek2mgl — Я добавил еще немного, возможно, актуальной информации

4. Только что обнаружил ту же проблему и с CephFS. Удаление файлов в CephFS также не освобождает пространство. Я пытаюсь выяснить причину и может ли помочь перемонтирование всех разделов CephFS.

5. Упс понял, что у меня включен снимок. Отключение моментального снимка немедленно освобождает дополнительное пространство.

Ответ №1:

Вы можете проверить, действительно ли объект удален rados -p $ pool list, я знал для cephfs, когда вы удаляете файл, он возвращает ok, когда mds помечает его как удаленный в локальной памяти, а затем выполняет реальное удаление, отправляя сообщения об удалении в соответствующее экранное меню. Возможно, radosgw использует тот же дизайн для ускорения удаления