NitWikit/docs/优化/储存空间优化.md
2024-04-27 01:07:52 +08:00

4.5 KiB
Raw Blame History

sidebar_position
3

储存空间优化

存档空间优化

首先你要知道官方默认的区块格式是ANVIL,但是这个区块格式有很多弊端,比如存了很多无用信息,强制对齐等并且至今还使用着清朝的zlib,所以我们要进行优化

但是这是很底层的东西,其实不推荐在非必要情况下进行处理

删除过时区块

有一个插件可以做到,但是忘了名字

TODO

更高效的储存方式

:::danger

Linear不适合玩家基数非常大/服务器经常滞后/压缩比较大(推荐默认1-5)/CPU核心数目小/服务器硬盘空间足够大的服务器.换句话来说,只有玩家并不多但需要较大的地图且vps默认给的硬盘较小时才应该考虑此格式. 如果强行在以上不适合使用linear的服务器使用时可能会出现回档的情况,请注意.

:::

此格式是由著名的Xymb大佬开发,相比于ANVIL,可以节省巨大的空间(主世界可以节约50%的空间,末地为80%且使用现代的zstd,可以获得更快的加载速度和保存速度

转换区域格式

使用之前你需要将ANVIL 转换成LINEAR 区域格式,如果你使用的是Leaves,你可以在服务端内部自动转换,如何开启此选项请查看wiki

转换工具 ,转换非常简单你只需要看着教程做就行(记得做备份)

开启区域格式

目前支持线性区域格式的仅有LinearPurpur,LinearPaper,Leaves,Leaf,Kaiiju(还有一堆fork),开启教程不多说你只需要查看wiki就行

不兼容的插件

ServerBackup 一款备份插件,会由于找不到mca文件报错. 目前已知不兼容线性区域的格式的插件极少无比已知的有大部分在线网页地图浏览程序以及Residence部分不兼容(感谢z大神的优雅代码当传送到一个未加载区块的领地时会崩溃

测试结果

感谢HaHaWTH提供的测试结果,测试内容为使用Chunky加载半径1000格的方块并保存,测试核心为Leaf,实际结果可能与测试结果有出入

世界 ANVIL(原版格式) Linear(压缩比为一) Linear(压缩比为六,默认压缩比) Linear(压缩比为22)(最大压缩比)
主世界 192MB 142MB 117MB 92MB
地狱 118MB 70MB 60MB 46MB
末地 87MB 1.72MB 1.2MB 914KB
保存用时 3m18s 3m50s 4m44s 23m21s
内存占用 3GB左右 3.1GB 3.3GB 3.4 ~ 18GB(极不稳定)

:::note

不推荐压缩比开到最大推荐值为6

:::

插件数据优化

对于plugins文件夹储存是否需要进行优化这个问天,有个很简单的判断方法就是查看总占用,如果超过了200Mb那么很有可能有些插件使用了Sqlite(这并不是推荐的储存方式)/yml/zip储存了一些东西,在某些情况下可能对储存空间会有一定的占用.

使用数据库

MC服务器常见的数据库类型就是MySQL,Redis.其中MySQL有一个性能更好的开源分支mariaDB(推荐).

那么可能有人就会说了:"用数据库不是还要多占用几百MB的空间吗".但是,数据库的备份维护等所占用的时间远比将整个服务器停止后打包压缩备份快得多,占用也小得多.同时,对于数据库较大的插件MySQL将提供比Sqlite或者文件夹储存更高的压缩比(个人经验:30Gb的dynmap文件使用MySQL后整个数据库将压缩到15Gb).如果你使用了以下的插件,请使用MySQL.

世界记录类 - coreprotect/prism

地图渲染类 - dynmap/bluemap

其他 - 待补充(总之只要数据库大的都不适合Sqlite)

备份空间优化

使用备份插件替代整端备份

推荐两个备份插件(高效的备份,无需停服即可备份)

ebackup 可设置黑名单不备份某些文件,FTP远程备份支持

serverbackup 可支持动态备份(即只备份最近变更过的文件),占用空间更小

其他

  1. 使用软链接/快捷方式共享多个服务器的lib,mc本体等(除非空间非常少否则不要这样,后果自负)

  2. 使用清理软件

  3. 重装系统,并最小化安装(不安装非必要软件)

  4. 检查是否有多余的Java(一般来说开服一个版本的Java即可)

:::warning 除非你知道你在删什么否则请先请教大佬能不能删除,不要删了才发现服务器出问题. :::