Ограничения использования
1. Ограничения S3 API
Следующие спецификации строго соответствуют стандарту протокола S3.
Проект | Спецификация |
---|---|
Максимальный размер объекта | 5 TiB |
Минимальный размер объекта | 0 B |
Максимальный размер объекта для одной операции PUT | Без мультичасти: 500 GiB; мультичасть: 5 TiB |
Максимальное число частей в одном мультизагрузке | 10,000 |
Диапазон размера части | 5 MiB до 5 GiB; последняя часть может быть 0 B до 5 GiB |
Максимум частей в ответе на LIST PARTS | 10,000 |
Максимум объектов в ответе на LIST OBJECTS | 1,000 |
Максимум незавершенных мультизагрузок в ответе | 1,000 |
Максимальная длина имени корзины | 63 символа |
Максимальная длина ключа объекта | 1024 символа |
Максимальная длина сегмента ключа между / | 255 символов |
Максимум версий одного объекта | 10,000 (конфигурируемо) |
2. Ограничения стирающего кодирования (Erasure Coding)
Параметры EC конфигурируются на основе матрицы Рида—Соломона. См. фактическую конфигурацию EC.
Проект | Спецификация |
---|---|
Макс. число серверов в кластере | Без ограничений |
Мин. число серверов | 1 |
Мин. число дисков на сервер при 1 сервере | 1 (для одиночного узла/одного диска; без доп. надежности/доступности) |
Мин. число дисков на сервер при ≥2 серверах | 1 |
Макс. число дисков на сервер | Без ограничений |
Кворум чтения | N/2 |
Кворум записи | (N/2) + 1 |
3. Ограничения именования объектов
Ограничения ФС и ОС
Имена объектов в RustFS в основном ограничены базовой ОС и файловой системой. Например, Windows и некоторые другие ОС ограничивают использование специальных символов: ^
, *
, |
, \
, /
, &
, "
или ;
.
См. документацию вашей ОС/ФС для полного списка ограничений.
Для продакшена RustFS рекомендует Linux с файловой системой XFS для лучшей производительности и совместимости.
Разрешение конфликтов имен
В RustFS приложение должно присваивать уникальные, не конфликтующие ключи всем объектам. Это включает недопущение создания объектов, имена которых конфликтуют с префиксами родительских или соседних объектов. При конфликте LIST на конфликтующем пути вернет пустое множество.
Пример конфликтов:
PUT data/hello/2025/first/a.csv
PUT data/hello/2025/first # конфликт с существующим префиксом
PUT data/hello/2025/first/
PUT data/hello/2025/first/vendors.csv # конфликт с существующим объектом
Хотя к таким объектам можно выполнять GET или HEAD, конфликт имен приведет к пустому результату LIST по пути hello/2025/first/
.