From: Jussi Kansanen <jussi.kansanen@gmail.com>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>,
Jeff Siddall <news@siddall.name>,
linux-btrfs@vger.kernel.org
Subject: Re: Converting RAID1 to single fails if RAID1 is missing device
Date: Mon, 3 Feb 2025 04:19:13 +0200 [thread overview]
Message-ID: <92dbe939-46a6-4142-b6be-3ef69fffce1b@gmail.com> (raw)
In-Reply-To: <d300d923-ed8c-4671-9694-6850d8c9b572@gmx.com>
On 2/3/25 02:44, Qu Wenruo wrote:
>
>
> 在 2025/2/3 09:13, Jeff Siddall 写道:
>> After a device failed on RAID1 filesystem, an attempt to convert the
>> online filesystem from RAID1 to single failed. This isn't an uncommon
>> use case if the failed device isn't readily replaceable.
>>
>> The command ran was:
>>
>> btrfs balance start -f -sconvert=single -mconvert=single -
>> dconvert=single /mountpoint
>>
>> and the kernel logs were:
>>
>> kernel: BTRFS info (device nvme0n1p3): balance: start -dconvert=single -
>> mconvert=dup -sconvert=dup
>> kernel: BTRFS info (device nvme0n1p3): relocating block group
>> 1222049267712 flags data|raid1
>> kernel: BTRFS warning (device nvme0n1p3): chunk 1223123009536 missing 1
>> devices, max tolerance is 0 for writable mount
>
> This is not the chunk to be relocated. Considering the tolerance is only
> 0, meaning it's the newly created single chunk.
>
> I tried locally, but failed to reproduce the same problem.
>
> Mind to provide the following info:
>
> - Kernel version
> - Btrfs fi usage output
> - Mount option of the fs
>
> My major concern is, the failing devices is still considered online, but
> will fail all read/write/flush commands.
> (Btrfs only has read time repair, not failing device detection)
>
> In that case, converting to single is the worst thing you can do, as it
> will write metadata chunks into that failing devices, and lost everything.
>
> The proper solution is to unmount the fs (if possible), remove the
> failing device, then mount the fs in degraded mode, add replace the
> missing device with a newer one.
>
> Thanks,
> Qu
>
>> kernel: BTRFS: error (device nvme0n1p3) in write_all_supers:4370:
>> errno=-5 IO failure (errors while submitting device barriers.)
>> kernel: BTRFS info (device nvme0n1p3: state E): forced readonly
>> kernel: BTRFS warning (device nvme0n1p3: state E): Skipping commit of
>> aborted transaction.
>> kernel: BTRFS: error (device nvme0n1p3: state EA) in
>> cleanup_transaction:1992: errno=-5 IO failure
>> kernel: BTRFS info (device nvme0n1p3: state EA): balance: ended with
>> status: -5
>>
>> Either it should be made possible to convert a RAID1 device with a
>> missing device to a single device filesystem without errors, or the
>> command should return a message stating that it is not supported to
>> convert RAID1 array with missing devices to a single. Having the
>> process fail and then going forced readonly is a significant failure on
>> an otherwise working system.
>>
>>
>>
>
>
Hi, here's a reproducer for similar issue that Jeff had:
debian:/mnt# uname -a
Linux debian 6.12.11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.11-1 (2025-01-25)
x86_64 GNU/Linux
debian:/mnt# findmnt .
TARGET SOURCE FSTYPE OPTIONS
/mnt /dev/sdd btrfs rw,relatime,space_cache=v2,subvolid=5,subvol=/
debian:/mnt# btrfs fi usage .
Overall:
Device size: 16.00GiB
Device allocated: 4.52GiB
Device unallocated: 11.48GiB
Device missing: 0.00B
Device slack: 0.00B
Used: 2.00GiB
Free (estimated): 6.74GiB (min: 6.74GiB)
Free (statfs, df): 6.74GiB
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 5.50MiB (used: 0.00B)
Multiple profiles: no
Data,RAID1: Size:2.00GiB, Used:1.00GiB (50.05%)
/dev/sdd 2.00GiB
/dev/sde 2.00GiB
Metadata,RAID1: Size:256.00MiB, Used:1.14MiB (0.45%)
/dev/sdd 256.00MiB
/dev/sde 256.00MiB
System,RAID1: Size:8.00MiB, Used:16.00KiB (0.20%)
/dev/sdd 8.00MiB
/dev/sde 8.00MiB
Unallocated:
/dev/sdd 5.74GiB
/dev/sde 5.74GiB
debian:/mnt# echo 1 > /sys/block/sde/device/delete
debian:/mnt# btrfs balance start -mconvert=dup -dconvert=single .
ERROR: error during balancing '.': Input/output error
There may be more info in syslog - try dmesg | tail
debian:/mnt# dmesg | tail -35
[ 582.117314] BTRFS info (device sdd): first mount of filesystem
d4b36ef9-3518-43a6-bc68-a2b4df751896
[ 582.117329] BTRFS info (device sdd): using crc32c (crc32c-intel) checksum
algorithm
[ 582.117333] BTRFS info (device sdd): using free-space-tree
[ 582.119952] BTRFS info (device sdd): checking UUID tree
[ 979.011795] sd 6:0:0:0: [sde] Synchronizing SCSI cache
[ 979.013096] ata7.00: Entering standby power mode
[ 1002.726249] btrfs: attempt to access beyond end of device
sde: rw=6145, sector=21696, nr_sectors = 32 limit=0
[ 1002.726274] btrfs: attempt to access beyond end of device
sde: rw=6145, sector=21728, nr_sectors = 32 limit=0
[ 1002.726281] btrfs: attempt to access beyond end of device
sde: rw=6145, sector=21760, nr_sectors = 32 limit=0
[ 1002.726442] BTRFS error (device sdd): bdev /dev/sde errs: wr 1, rd 0, flush
0, corrupt 0, gen 0
[ 1002.726501] BTRFS error (device sdd): bdev /dev/sde errs: wr 2, rd 0, flush
0, corrupt 0, gen 0
[ 1002.726534] BTRFS error (device sdd): bdev /dev/sde errs: wr 3, rd 0, flush
0, corrupt 0, gen 0
[ 1002.726659] BTRFS error (device sdd): bdev /dev/sde errs: wr 3, rd 0, flush
1, corrupt 0, gen 0
[ 1002.726692] btrfs: attempt to access beyond end of device
sde: rw=145409, sector=128, nr_sectors = 8 limit=0
[ 1002.726702] BTRFS warning (device sdd): lost super block write due to IO
error on /dev/sde (-5)
[ 1002.726704] BTRFS error (device sdd): bdev /dev/sde errs: wr 4, rd 0, flush
1, corrupt 0, gen 0
[ 1002.726728] btrfs: attempt to access beyond end of device
sde: rw=14337, sector=131072, nr_sectors = 8 limit=0
[ 1002.726733] BTRFS warning (device sdd): lost super block write due to IO
error on /dev/sde (-5)
[ 1002.726737] BTRFS error (device sdd): bdev /dev/sde errs: wr 5, rd 0, flush
1, corrupt 0, gen 0
[ 1002.726835] BTRFS error (device sdd): error writing primary super block to
device 2
[ 1002.726844] BTRFS info (device sdd): balance: start -dconvert=single
-mconvert=dup -sconvert=dup
[ 1002.726990] BTRFS info (device sdd): relocating block group 1372585984 flags
data|raid1
[ 1002.727811] BTRFS error (device sdd): bdev /dev/sde errs: wr 5, rd 0, flush
2, corrupt 0, gen 0
[ 1002.727816] BTRFS warning (device sdd): chunk 2446327808 missing 1 devices,
max tolerance is 0 for writable mount
[ 1002.727818] BTRFS: error (device sdd) in write_all_supers:4044: errno=-5 IO
failure (errors while submitting device barriers.)
[ 1002.727821] BTRFS info (device sdd state E): forced readonly
[ 1002.727823] BTRFS warning (device sdd state E): Skipping commit of aborted
transaction.
[ 1002.727824] BTRFS error (device sdd state EA): Transaction aborted (error -5)
[ 1002.727826] BTRFS: error (device sdd state EA) in cleanup_transaction:2017:
errno=-5 IO failure
[ 1002.727838] BTRFS info (device sdd state EA): balance: ended with status: -5
debian:~# umount /mnt
debian:~# btrfs fi show
warning, device 2 is missing
Label: none uuid: d4b36ef9-3518-43a6-bc68-a2b4df751896
Total devices 2 FS bytes used 1.00GiB
devid 1 size 8.00GiB used 2.26GiB path /dev/sdd
*** Some devices missing
mount -odegraded /dev/sdd /mnt
debian:~# dmesg | tail -15
[ 1332.628959] BTRFS info (device sdd): first mount of filesystem
d4b36ef9-3518-43a6-bc68-a2b4df751896
[ 1332.628974] BTRFS info (device sdd): using crc32c (crc32c-intel) checksum
algorithm
[ 1332.628978] BTRFS info (device sdd): using free-space-tree
[ 1332.630281] BTRFS warning (device sdd): devid 2 uuid
0afd8d45-96d6-4393-b7ce-e55abd4b668e is missing
[ 1332.632964] BTRFS info (device sdd): balance: resume -dconvert=single,soft
-mconvert=dup,soft -sconvert=dup,soft
[ 1332.633041] BTRFS info (device sdd): relocating block group 1372585984 flags
data|raid1
[ 1332.638220] BTRFS info (device sdd): found 1 extents, stage: move data extents
[ 1332.640073] BTRFS info (device sdd): found 1 extents, stage: update data pointers
[ 1332.641350] BTRFS info (device sdd): relocating block group 298844160 flags
data|raid1
[ 1333.991088] BTRFS info (device sdd): found 8 extents, stage: move data extents
[ 1333.994336] BTRFS info (device sdd): found 8 extents, stage: update data pointers
[ 1333.997220] BTRFS info (device sdd): relocating block group 30408704 flags
metadata|raid1
[ 1333.998489] BTRFS info (device sdd): found 1 extents, stage: move data extents
[ 1333.999617] BTRFS info (device sdd): relocating block group 22020096 flags
system|raid1
[ 1334.000838] BTRFS info (device sdd): balance: ended with status: 0
debian:/mnt# btrfs fi usage .
Overall:
Device size: 16.00GiB
Device allocated: 3.00GiB
Device unallocated: 13.00GiB
Device missing: 8.00GiB
Device slack: 0.00B
Used: 1.00GiB
Free (estimated): 14.44GiB (min: 7.94GiB)
Free (statfs, df): 6.44GiB
Data ratio: 1.00
Metadata ratio: 2.00
Global reserve: 5.50MiB (used: 0.00B)
Multiple profiles: no
Data,single: Size:2.44GiB, Used:1.00GiB (41.07%)
/dev/sdd 2.44GiB
Metadata,DUP: Size:256.00MiB, Used:1.17MiB (0.46%)
/dev/sdd 512.00MiB
System,DUP: Size:32.00MiB, Used:16.00KiB (0.05%)
/dev/sdd 64.00MiB
Unallocated:
/dev/sdd 5.00GiB
<missing disk> 8.00GiB
debian:/mnt# btrfs device remove missing .
debian:/mnt# dmesg | tail -1
[ 1714.116147] BTRFS info (device sdd): device deleted: missing
next prev parent reply other threads:[~2025-02-03 2:19 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-02 22:43 Converting RAID1 to single fails if RAID1 is missing device Jeff Siddall
2025-02-03 0:44 ` Qu Wenruo
2025-02-03 1:11 ` Jeff Siddall
2025-02-03 2:19 ` Jussi Kansanen [this message]
2025-02-03 2:32 ` Qu Wenruo
2025-02-03 5:22 ` Colin S
2025-02-03 6:13 ` Qu Wenruo
2025-02-04 7:04 ` Colin S
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=92dbe939-46a6-4142-b6be-3ef69fffce1b@gmail.com \
--to=jussi.kansanen@gmail.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=news@siddall.name \
--cc=quwenruo.btrfs@gmx.com \
/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