Переход с Anvil на Linear Region Format + Zstd Level 3: экономия 48% NVMe и ускорение I/O
1. Почему формат `.mca` неэффективен на больших картах
Стандартный формат регионов Minecraft Anvil (`r.x.z.mca`) сжимает каждый из 1 024 чанков по отдельности устаревшим алгоритмом zlib и выравнивает записи по секторам в 4 КБ. На карте Анархии 30 000×30 000 блоков это создаёт десятки гигабайт фрагментированных метаданных и высокую нагрузку на диск при `/rtp`.
2. Потоковое сжатие Zstandard в Linear Region (`.linear`)
В 9-м сезоне мы перевели хранение миров на формат Linear Region v2 с алгоритмом Zstd Level 3. Все активные чанки региона сжимаются единым словарём, а фоновые потоки I/O асинхронно сбрасывают изменения каждые 15 минут.
Конфигурация хранения региона (purpur-region.yml)
region-format:
type: "LINEAR"
linear-compression-level: 3
linear-io-flush-delay-seconds: 5
linear-io-threads: 6
use-virtual-threads: true
3. Итоги миграции
Общий объём карты Анархии уменьшился с 148 ГБ до 76 ГБ (-48.6%), а время создания инкрементальной резервной копии на S3 сократилось с 14 минут до 2 минут 40 секунд без малейших просадок TPS во время сохранения.