Какова роль контейнера _segments в OpenStack SWIFT?
Несколько месяцев назад я создал контейнер с именем, а сегодня вижу другой контейнер с именемjobs_segments
хранящий несколько гигабайт данных.
Я читал, что он создан для хранения отдельных частей при сегментированной загрузке SWIFT.
Вопросы:
- можно или нужно ли удалить этот контейнер или файлы внутри него после завершения сегментированной загрузки?
- есть ли возможность избежать этого второго контейнера
_segments
и работать только на основном,jobs
?
2 ответа
Названные контейнеры, вероятно, являются результатом загрузки большого объекта . Термин «большой объект» немного вводит в заблуждение; «Сегментированные объекты» были бы более описательными, но эта функция в основном используется для хранения больших объектов, в частности, размер объекта превышает предельный размер объекта в 5 ГБ.
Поскольку ваш контейнер называется , я обычно предполагаю, что он содержит данные объекта с именем , а не контейнера с этим именем. Однако ничто не мешает вам создать контейнер, имеющий то же имя, что и объект.
Чтобы ответить на первый вопрос: если вы удалите , вы потеряете данные объекта. Лучше удалите объект, а не только его сегменты.
Второй вопрос:jobs
контейнер не имеет прямого отношения к .
Сказав все это, вы можете создать контейнерSOMETHING_segments
и используйте его для чего-то другого, кроме больших объектов. В конце концов,jobs_segments
может быть обычный контейнер.
Из документации Openstack Swift:
Команда Swift использует строгое соглашение для поддержки сегментированных объектов. В приведенном выше примере все сегменты будут загружены во второй контейнер с именем test_container_segments. Эти сегменты будут иметь имена типа big_file/1290206778.25/21474836480/00000000, big_file/1290206778.25/21474836480/00000001 и т. д.
Основное преимущество использования отдельного контейнера заключается в том, что списки основного контейнера не будут засорены именами всех сегментов. Причина использования формата имени сегмента /// заключается в том, что загрузка нового файла с тем же именем не перезапишет содержимое первого до последнего момента, когда файл манифеста будет обновлен.
Swift будет управлять этими файлами сегментов за вас, удаляя старые сегменты при удалении и перезаписи и т. д. При желании вы можете переопределить это поведение с помощью опции --leave-segments; это полезно, если вы хотите иметь несколько версий одного и того же большого объекта.
см. https://docs.openstack.org/swift/latest/overview_large_objects.html .