Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 35 |
Nodes: | 6 (0 / 6) |
Uptime: | 29:37:15 |
Calls: | 322 |
Calls today: | 1 |
Files: | 959 |
Messages: | 81,834 |
Posted today: | 3 |
Still, given the large
file systems in use, where should I draw the line and remain safe data
wise? Can I go to 90% if needed? 95%? Is that to much despite the
large amount of space remaining? Does the percentage really matter? Is
it more about having enough space for the file system to handle its
internal needs? Is for example 1 or 2TBs of free space enough for the
file system to work just fine?
My thinking, even if I went to 95%, it should be OK given my usage. It
might even be OK at 99%. Thing is, I know at some point, something is
going to happen. I just been wondering what that point is and what it
will do. Oh, I do use ext4.
Rich Freeman wrote:
Now, if you were running btrfs or cephfs or some other exotic
filesystems, then it would be a whole different matter,
I could see
some RAID systems having issues but not some of the more advanced file systems that are designed to handle large amounts of data.
On Sat, Feb 1, 2025 at 8:40 PM Dale <rdalek1967@gmail.com> wrote:
Rich Freeman wrote:
Now, if you were running btrfs or cephfs or some other exotic filesystems, then it would be a whole different matter,
I could see
some RAID systems having issues but not some of the more advanced file systems that are designed to handle large amounts of data.
Those are "RAID-like" systems, which is part of why they struggle when
full. Unlike traditional RAID they also don't require identical
drives for replication, which can also make it tricky when they start
to get full and finding blocks that meet the replication requirements
is difficult.
With a COW approach like btrfs you also have the issue that altering
the metadata requires free space. To delete a file you first write
new metadata that deallocates the space for the file, then you update
the pointers to make it part of the disk metadata. Since the metadata
is stored in a tree, updating a leaf node requires modifying all of
its parents up to the root, which requires making new copies of them.
It isn't until the entire branch of the tree is copied that you can
delete the old version of it. The advantage of this approach is that
it is very safe, and accomplishes the equivalent of full data
journaling without actually having to make more than one write of
things. If that operation is aborted the tree just points at the old metadata and the in-progress copies are inside of free space, ignored
by the filesystem, and thus they just get overwritten the next time
the operation is attempted.
For something like ceph it isn't really much of a downside since this
it is intended to be professionally managed. For something like btrfs
it seems like more of an issue as it was intended to be a
general-purpose filesystem for desktops/etc, and so it would be
desirable to make it less likely to break when it runs low on space.
However, that's just one of many ways to break btrfs, so... :)
In any case, running out of space is one of those things that becomes
more of an issue the more complicated the metadata gets. For
something simple like ext4 that just overwrites stuff in place by
default it isn't a big deal at all.