编辑日志轮换脚本

我们可能知道,日志文件因占用系统中宝贵的磁盘空间而臭名昭著,XenServer 也不例外。
虽然我们可以从 /var/log 手动删除旧日志,但有更好的方法来解决这个问题。

在我通过 XenServer cron 文件的冒险中,我发现了一些有用的东西,但似乎没有很好的文档记录,不幸的是,根据我的经验,这也是通过 /var/log 中的日志文件快速减少磁盘空间使用的最佳方法。
事实证明,已经有脚本可以为我们执行大部分所需的日志轮换,我们可以通过根据需要修改它们来利用这些脚本。

我们的旅程从包含以下 cron 条目的 /etc/cron.d/logrotate.cron 文件开始。

*  * * * * root /opt/xensource/bin/logrotate-xenserver

本质上,这被配置为每分钟运行一次 /opt/xensource/bin/logrotate-xenserver 脚本。
在这个脚本中,另外两个脚本被调用如下。

# First delete as many old compressed logs as necessary.
/opt/xensource/bin/delete_old_logs_by_space
# Then rotate the live logs if needed, for example:the uncompressed files to which
# processes are logging data.
/opt/xensource/bin/rotate_logs_by_size

首先让我们看一下 /opt/xensource/bin/delete_old_logs_by_space,在顶部我们注意到以下信息。

# Starting with the oldest, delete enough compressed log files (if they exist)
# until /var/log occupies less than
BUDGET_MB=100 # MiBytes

太好了,所以我们可以根据需要将 BUDGET_MB 修改为更低的值,例如 50MB。
编辑文件并保存后,我们可以手动运行 bash 脚本或者等待 cron 处理它。

这是 /opt/xensource/bin/rotate_logs_by_size 文件中的类似故事,如下所示。

# Allow live logs to grow this big in total...
LIVE_TOTAL_MB_TRIGGER=36 # MiBytes
# ...then use logrotate on the biggest ones to end up under this size:
LIVE_TOTAL_MB_TARGET=12 # MiBytes

可以修改这些值以在磁盘上保持较小的日志占用空间,并且可以根据需要进行调整。

删除旧补丁文件

随着时间的推移,维护活动期间将上传各种修补程序和更新补丁文件,这些旧文件可以被删除。
此类文件存储在 /var/patch 目录中,但是暂时不要删除任何内容!首先是关于/var/patch 的一些重要信息,不要删除/var/patch/applied 中的任何内容。
重新启动 XenServer 并完全应用所有挂起的更新后,可以安全地删除 /var/patch 中的内容(不包括应用的目录)。

例如,如果池中的 XenServer 主机因修补程序而等待重新启动,则不应从 /var/patch 中删除内容。
为已应用的更新重新启动所有 XenServer 主机后,我们可以安全地从 /var/patch 中删除。
不幸的是,这目前是一个手动过程,因此我们必须在池中的每个 XenServer 主机上执行它。

启用日志压缩

这个实现起来又快又容易,而且还有一些来自 Citrix 的官方文档。
基本上,我们可以通过从 /etc/logrotate.conf 文件中取消注释“compress”来启用日志压缩以节省磁盘空间。

释放 Citrix XenServer 中的磁盘空间

删除临时文件

顾名思义,存储在 /tmp 中的文件是临时的,因此在寻找磁盘空间时,这是一个值得查看的目录。
在 XenServer 6.5 和更新版本中,这似乎不是什么大问题,但是在 XenServer 6.2 中,我发现有很多小的 xenguest 日志文件被写入 /tmp,虽然它们很小,但很快就会建立起来,很快就会有数百个存在。
话虽如此,我发现可以删除超过 100MB 的单个文件,因此在清理过程中值得检查一下。

我们可以运行以下命令来显示 /tmp 的总大小

[jack@onitroad ~]# du -h --max-depth=1 /tmp
142M    /tmp

要查看最大的文件,我们可以运行 'ls -lrSh',如下所示,其中 -S 按文件大小排序,-r 反转在输出底部显示最大文件的顺序,而 -h 将显示大小人类可读的格式。

[jack@onitroad ~]# ls -lrSh /tmp/

修改系统统计

Sysstat 日志位于 /var/log/sa 中,默认情况下通常不会占用太多磁盘空间。
根据我的经验,这个目录的总大小往往在 20MB-50MB 之间。
虽然不是很大,但当根文件系统大小只有 4GB 时,有时每个另外的位都会显着增加。

我不建议完全删除这里的文件,因为它们提供了有用的性能信息,在故障排除过程中很有用。
相反,我们应该考虑要保留多少天的信息。
默认情况下,sysstat 将存储 7 天的数据,增量为 10 分钟。

我们可以通过修改 /etc/sysconfig/sysstat 文件来更改 /var/log/sa 中存储的历史记录天数,如下所示。

# How long to keep log files (days), maximum is a month
HISTORY=7

我们还可以更改记录信息的频率,默认情况下 /etc/cron.d/sysstat 设置为每 10 分钟执行一次,因此我们可以将其更改为 30 分钟。

# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1

就我个人而言,我从来不需要参考存储在这些文件中的信息,因为首选外部监控解决方案,因此如果我们迫切需要另外的空间,也可以选择完全禁用它们。
然而,在大多数情况下,文件所需的几 MB 大小可能值得放弃以获得另外的性能信息,我们想要修改多少用于记录有用信息的磁盘空间取决于我们和特定环境。

日期:2020-07-07 20:56:07 来源:oir作者:oir