[libvirt] [PATCHv2] Do not keep empty log files for deleted domains

Jim Fehlig JFEHLIG at suse.com
Mon Jul 8 21:28:08 UTC 2019


On 7/8/19 12:28 PM, Jan Zerebecki wrote:
> With logrotates copytruncate when e.g. domain1 doesn't exist anymore
> /var/log/libvirt/qemu/domain1.log will still exist after rotation even
> though it will never be written to. When new domain names keep getting
> used this leads to a lot of empty logfiles. This may lead to slowdown or
> lack of free disk space / inodes.
> 
> Fix this by replacing copytruncate with the apropriate postrotate
> command to reopen log files. Thus after the apropriate time log files
> for deleted domains will be gone. This also has the advantage that the
> chance for loss of a few lines during copytruncate is gone.
> 
> This only fixes the issue for qemu domains, others still have the same
> problem unfixed.
> 
> Signed-off-by: Jan Zerebecki <jan.suse at zerebecki.de>
> ---
> v2: drop changes to other logrotate confis
> 
>   src/remote/libvirtd.qemu.logrotate.in | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/src/remote/libvirtd.qemu.logrotate.in b/src/remote/libvirtd.qemu.logrotate.in
> index cdb399ef23..95407cec1a 100644
> --- a/src/remote/libvirtd.qemu.logrotate.in
> +++ b/src/remote/libvirtd.qemu.logrotate.in
> @@ -4,5 +4,7 @@
>           rotate 4
>           compress
>           delaycompress
> -        copytruncate
> +        postrotate
> +                /usr/bin/killall -USR1 virtlogd
> +        endscript
>   }

In V1 Daniel said "logrotate should not be in effect when virtlogd is running". 
Perhaps we can accomplish this with firstaction/endscript? E.g. something like

diff --git a/src/remote/libvirtd.qemu.logrotate.in 
b/src/remote/libvirtd.qemu.logrotate.in
index cdb399ef23..e14adb10e8 100644
--- a/src/remote/libvirtd.qemu.logrotate.in
+++ b/src/remote/libvirtd.qemu.logrotate.in
@@ -1,4 +1,10 @@
  @localstatedir@/log/libvirt/qemu/*.log {
+        firstaction
+               pgrep virtlogd > /dev/null 2>&1
+               if [ $? -ne 0 ]; then
+                       exit 1
+               fi
+        endscript
          weekly
          missingok
          rotate 4

Regards,
Jim




More information about the libvir-list mailing list