From: Leszek Dubiel <leszek@dubiel.pl>
To: linux-btrfs@vger.kernel.org
Subject: Re: enospc errors during balance — how to prevent out of space
Date: Sat, 27 Apr 2024 14:03:07 +0200 [thread overview]
Message-ID: <79263790-8ced-4b01-a4f2-4c9fd3f3ab97@dubiel.pl> (raw)
In-Reply-To: <909ed27.f7893fdf.18f020ff6fc@tnonline.net>
My system was making backups for about one week.
It was doing automatic "btrfs balance".
Yesterday it went through:
btrfs balance -dusage=0
btrfs balance -dusage=10
btrfs balance -dusage=20
btrfs balance -dusage=30
...
btrfs balance -dusage=100
...
btrfs balance -musage=0
btrfs balance -dusage=10
btrfs balance -dusage=20
...
Something went wrong when balancing musage (m, as metadata).
System got "read only".
While this happened btrfs was in a process of deleting four snapshots
(btrfs sub list / -d — not empty).
It had 450 GB of free space (shown for df -h).
It had almost no Unallocated space (btrfs dev usa /).
After reboot system is mounted read-only.
Kernel shows (Ctrl+D or give root password for maintenance).
Tried to run btrfs balance -dusage / on read only system failed.
Tried to mount -oremount,rw hanged.
Reboot.
Started from USB key Finnix to repair.
Started to mount system.
Dmesg shows:
bdev /dev/sdc3 errs: wr 0, rd 0, flush 0, corrupt 35967, gen 0
It mounts for a long time now.
Nothing more in dmesg.
Mount command seems stalled, but on iotop I see "btrfs-transaction"
running — write about 10 M/s
I will leave the system over night and check tommorow or on monday if
mount was successful.
PS. script that was balancing:
findmnt --types btrfs --output SOURCE --nofsroot --noheadings |
sort | uniq |
while read dev; do
mnt=$(findmnt --source "$dev" --output TARGET
--first-only --noheadings)
test -d "$mnt" || continue
# no balance if plenty of unallocated space
btrfs dev usage "$mnt" -g |
perl -ne '/Unallocated: +([0-9]+\.[0-9]{2})GiB/ and $1
< 21 and print $1' |
grep -q . || continue
for typ in dusage musage; do
for usa in $(seq 0 10 100); do
# if relocated, then get out of two
loops for next "$dev"
btrfs balance start -$typ=$usa,limit=3
"$mnt" 2>&1 |
grep -Eq "Done, had to relocate
[1-9][0-9]* out of [0-9]+ chunks" &&
break 2
done
done
done
next prev parent reply other threads:[~2024-04-27 12:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-16 6:09 enospc errors during balance — how to prevent out of space Leszek Dubiel
2024-04-16 7:54 ` HAN Yuwei
2024-04-16 15:17 ` Leszek Dubiel
2024-04-16 17:00 ` Forza
2024-04-16 20:07 ` Leszek Dubiel
2024-04-21 19:09 ` Forza
2024-04-21 19:52 ` Leszek Dubiel
2024-04-27 12:03 ` Leszek Dubiel [this message]
2024-04-29 21:05 ` Leszek Dubiel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=79263790-8ced-4b01-a4f2-4c9fd3f3ab97@dubiel.pl \
--to=leszek@dubiel.pl \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).