Какова роль контейнера _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 .

Другие вопросы по тегам