|
|
ecbff1 |
From 3740b7a6d246a5860c8f1d96504bbf00692447e0 Mon Sep 17 00:00:00 2001
|
|
|
ecbff1 |
From: Goffredo Baroncelli <kreijack@inwind.it>
|
|
|
ecbff1 |
Date: Sun, 12 Apr 2015 20:30:28 +0200
|
|
|
ecbff1 |
Subject: [PATCH] tmpfiles: Add +C attrib to the journal files directories
|
|
|
ecbff1 |
|
|
|
ecbff1 |
Add the +C file attribute (NOCOW) to the journal directories, so that
|
|
|
ecbff1 |
the flag is inherited automatically for new journal files created in
|
|
|
ecbff1 |
them. The journal write pattern is problematic on btrfs file systems as
|
|
|
ecbff1 |
it results in badly fragmented files when copy-on-write (COW) is used:
|
|
|
ecbff1 |
the performances decreases substantially over time.
|
|
|
ecbff1 |
|
|
|
ecbff1 |
To avoid this issue, this tmpfile.d snippet sets the NOCOW attribute to
|
|
|
ecbff1 |
the journal files directories, so newly created journal files inherit
|
|
|
ecbff1 |
the NCOOW attribute that disables copy-on-write.
|
|
|
ecbff1 |
|
|
|
ecbff1 |
Be aware that the NOCOW file attribute also disables btrfs checksumming
|
|
|
ecbff1 |
for these files, and thus prevents btrfs from rebuilding corrupted files
|
|
|
ecbff1 |
on a RAID filesystem.
|
|
|
ecbff1 |
|
|
|
ecbff1 |
In a single disk filesystems (or filesystems without redundancy) it is
|
|
|
ecbff1 |
safe to use the NOCOW flags without drawbacks, since the journal files
|
|
|
ecbff1 |
contain their own checksumming.
|
|
|
ecbff1 |
|
|
|
ecbff1 |
(cherry picked from commit 3a92e4ba470611ceec6693640b05eb248d62e32d)
|
|
|
ecbff1 |
|
|
|
ecbff1 |
Related: #1299714
|
|
|
ecbff1 |
---
|
|
|
ecbff1 |
tmpfiles.d/journal-nocow.conf | 27 +++++++++++++++++++++++++++
|
|
|
ecbff1 |
1 file changed, 27 insertions(+)
|
|
|
ecbff1 |
create mode 100644 tmpfiles.d/journal-nocow.conf
|
|
|
ecbff1 |
|
|
|
ecbff1 |
diff --git a/tmpfiles.d/journal-nocow.conf b/tmpfiles.d/journal-nocow.conf
|
|
|
ecbff1 |
new file mode 100644
|
|
|
ecbff1 |
index 000000000..e7938c891
|
|
|
ecbff1 |
--- /dev/null
|
|
|
ecbff1 |
+++ b/tmpfiles.d/journal-nocow.conf
|
|
|
ecbff1 |
@@ -0,0 +1,27 @@
|
|
|
ecbff1 |
+# This file is part of systemd.
|
|
|
ecbff1 |
+#
|
|
|
ecbff1 |
+# systemd is free software; you can redistribute it and/or modify it
|
|
|
ecbff1 |
+# under the terms of the GNU Lesser General Public License as published by
|
|
|
ecbff1 |
+# the Free Software Foundation; either version 2.1 of the License, or
|
|
|
ecbff1 |
+# (at your option) any later version.
|
|
|
ecbff1 |
+
|
|
|
ecbff1 |
+# See tmpfiles.d(5) for details
|
|
|
ecbff1 |
+
|
|
|
ecbff1 |
+# Set the NOCOW attribute for directories of journal files. This flag
|
|
|
ecbff1 |
+# is inheredited by their new files and sub-directories. Matters only
|
|
|
ecbff1 |
+# for btrfs filesystems.
|
|
|
ecbff1 |
+#
|
|
|
ecbff1 |
+# WARNING: Enabling the NOCOW attribute improves journal performance
|
|
|
ecbff1 |
+# substantially, but also disables the btrfs checksum logic. In
|
|
|
ecbff1 |
+# btrfs RAID filesystems the checksums are needed for rebuilding
|
|
|
ecbff1 |
+# corrupted files. Without checksums such rebuilds are not
|
|
|
ecbff1 |
+# possible.
|
|
|
ecbff1 |
+#
|
|
|
ecbff1 |
+# In a single-disk filesystem (or a filesystem without redundancy)
|
|
|
ecbff1 |
+# enabling the NOCOW attribute for journal files is safe, because
|
|
|
ecbff1 |
+# they have their own checksums and a rebuilding wouldn't be possible
|
|
|
ecbff1 |
+# in any case.
|
|
|
ecbff1 |
+
|
|
|
ecbff1 |
+h /var/log/journal - - - - +C
|
|
|
ecbff1 |
+h /var/log/journal/%m - - - - +C
|
|
|
ecbff1 |
+h /var/log/journal/remote - - - - +C
|