On Fri, Apr 28, 2017 at 11:46 AM, Peter Grandi <p...@btrfs.list.sabi.co.uk> wrote:
> So there are three layers of silliness here: > > * Writing large files slowly to a COW filesystem and > snapshotting it frequently. > * A filesystem that does delayed allocation instead of > allocate-ahead, and does not have psychic code. > * Working around that by using no-COW and preallocation > with a fixed size regardless of snapshot frequency. > > The primary problem here is that there is no way to have slow > small writes and frequent snapshots without generating small > extents: if a file is written at a rate of 1MiB/hour and gets > snapshot every hour the extent size will not be larger than 1MiB > *obviously*. Sure. But in my example, no snapshotting, and +C is inhibited (i.e. I set /etc/tmpfiles.d/journal-nocow.conf which stops systemd from the new behavior of setting +C on journals). That's resulting in a 19000+ fragment journal file. In fact snapshotting does not make it worse though. If it's nocow, then yes snapshotting makes it worse than nocow, but no worse than cow. What I'm trying to get at is default Btrfs behavior and (previous) default journald behavior, have a misalignment resulting in a lot of fragmentation, is there a better way around this than merely setting journals to nocow *and* making sure they stay nocow by preventing snapshotting. If there's nothing better to be done, then I'll just re-recommend to systemd folks that the directory containing journals should be made a subvolume to isolate it from inadvertent snapshotting. If people want to snapshot it anyway there's nothing we can do about that. > Filesystem-level snapshots are not designed to snapshot slowly > growing files, but to snapshots changing collections of > files. There are harsh tradeoffs involved. Application-level > shapshots (also known as log rotations :->) are needed for > special cases and finer grained policies. > > The secondary problem is that a fixed preallocate of 8MiB is > good only if in betweeen snapshots the file grows by a little > less than 8MiB or by substantially more. Just to be clear, none of my own examples involve journals being snapshot. There are no shared extents for any of those files. -- Chris Murphy -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html