Skip to content

Commit

Permalink
tmpfiles: Add +C attrib to the journal files directories
Browse files Browse the repository at this point in the history
Add the +C file attribute (NOCOW) to the journal directories, so that
the flag is inherited automatically for new journal files created in
them. The journal write pattern is problematic on btrfs file systems as
it results in badly fragmented files when copy-on-write (COW) is used:
the performances decreases substantially over time.

To avoid this issue, this tmpfile.d snippet sets the NOCOW attribute to
the journal files directories, so newly created journal files inherit
the NCOOW attribute that disables copy-on-write.

Be aware that the NOCOW file attribute also disables btrfs checksumming
for these files, and thus prevents btrfs from rebuilding corrupted files
on a RAID filesystem.

In a single disk filesystems (or filesystems without redundancy) it is
safe to use the NOCOW flags without drawbacks, since the journal files
contain their own checksumming.
  • Loading branch information
kreijack authored and poettering committed Apr 13, 2015
1 parent 48e6d6a commit 3a92e4b
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions tmpfiles.d/journal-nocow.conf
@@ -0,0 +1,27 @@
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.

# See tmpfiles.d(5) for details

# Set the NOCOW attribute for directories of journal files. This flag
# is inheredited by their new files and sub-directories. Matters only
# for btrfs filesystems.
#
# WARNING: Enabling the NOCOW attribute improves journal performance
# substantially, but also disables the btrfs checksum logic. In
# btrfs RAID filesystems the checksums are needed for rebuilding
# corrupted files. Without checksums such rebuilds are not
# possible.
#
# In a single-disk filesystem (or a filesystem without redundancy)
# enabling the NOCOW attribute for journal files is safe, because
# they have their own checksums and a rebuilding wouldn't be possible
# in any case.

h /var/log/journal - - - - +C
h /var/log/journal/%m - - - - +C
h /var/log/journal/remote - - - - +C

1 comment on commit 3a92e4b

@wuxb45
Copy link

@wuxb45 wuxb45 commented on 3a92e4b Jul 20, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+C on non-btrfs fails the tmpfile service. On some forums people even suggest others to delete the whole /var/lib/journal directory to "solve" this problem. Obviously the service should ignore the case where the attributes cannot be set.

Please sign in to comment.