服务器地图大小限制
运营一个 PaperMC 服务器时,地图会随玩家跑图持续增长,磁盘占用也会直接影响备份成本。本文先解释存储模型,再给出理论极值和实际估算方法,最后介绍备份和清理策略。
1. 地图存储模型🔗
Minecraft 地图按区块存储。一个区块是 16x16 方块的水平区域,存档文件按维度分布在 region/ 目录中。高度影响单个区块文件的大小,但不会增加区块数量。
Paper 26.1+ 使用与 Vanilla 一致的单目录嵌套结构:
world/
└── dimensions/minecraft/
├── overworld/region/
├── the_nether/region/
└── the_end/region/实际占用主要看 region/ 中的 .mca 文件,entities/ 和 poi/ 也会随玩家长时间运行增长。
2. 先算理论极值🔗
server.properties 中的 max-world-size 控制世界边界半径,默认值:
max-world-size=29999984 # 单位为方块,表示世界半径如果整个边界内全部生成,区块数量按面积计算:
区块数 = (max-world-size / 8) ^ 2因为直径 2 * max-world-size 除以区块边长 16 就是每边区块数,所以边长除以 8 后平方即可。默认值下的理论极值:
(29999984 / 8) ^ 2 = 14,062,485,000,004 个区块按每个满区块 4MB 的保守上限估算,理论总占用约为 53,644,124 TB。这个数字不是实际需求,而是说明“默认世界边界不设限时,理论上可生成的空间远超过任何单机磁盘”。
实际区块平均大小远低于 4MB,所以理论极值只能用于理解上限,不能用于规划容量。规划时应以实际磁盘占用为准。
3. 用实际占用做决策🔗
测量当前地图🔗
du -sh world/dimensions/minecraft/*/region
find world/dimensions/minecraft/overworld/region -name '*.mca' | wc -l用 du 查看各维度实际大小,用 find | wc -l 查看区块文件数量。下一步把“理论极限”换成“当前占用 / 可接受备份体积”来决策:
可用地图空间 = 磁盘容量 - 系统/程序/备份预留
可增长区块数 = 可用地图空间 / 平均区块大小设置世界边界🔗
限制未来增长比事后清理更稳妥。给玩家预留公告后逐步缩小边界:
/worldborder center 0 0
/worldborder set 8000worldborder set 缩小边界时,边界外玩家会被推出地图,生产服应分几步缩小并提前公告。
4. 备份与清理策略🔗
备份时不应直接复制整个 world/ 下所有已生成区块。可以使用
mcaselector
按“玩家真实待过”的条件导出或删除区块,显著减小备份体积。
导出精简备份🔗
# 仅导出玩家待了5分钟以上的方块
java -jar \
mcaselector-2.5.3.jar \
--mode export \
--query "InhabitedTime > 5min" \
--world <directory_of_world> \
--output-world <directory_for_backup>export 会生成一个新世界,不会修改原世界,适合作为定期精简备份。
清理原始地图🔗
# 在原始地图上直接操作,删除所有玩家没待满5分钟以上的方块
java -jar \
mcaselector-2.5.3.jar \
--mode delete \
--query "InhabitedTime <= 5min" \
--world <directory_of_world>delete 会直接修改原世界,风险较高。生产环境必须先在副本上测试,并保留至少一份完整备份。
托管平台的自动清理功能只能作为辅助,不应代替自己的备份和恢复演练。
CLI 命令参数速查图:

小结🔗
- 区块数量由世界面积决定,
max-world-size是半径而不是边长。 - 理论极值主要用于理解上限,容量规划必须结合
du实际测量。 - 控制世界边界 + 按
InhabitedTime精简备份,是长期可维护的组合方案。