Sean Greenslade wrote:
On August 28, 2019 5:51:02 PM PDT, Marc Oggier <marc.ogg...@megavolts.ch> wrote:
Hi All,
I am currently buidling a small data server for an experiment.
I was wondering if the features of the spare volume introduced a couple
of years ago (ttps://patchwork.kernel.org/patch/8687721/) would be
release soon. I think this would be awesome to have a drive installed,
that can be used as a spare if one drive of an array died to avoid
downtime.
Does anyone have news about it, and when it will be officially in the
kernel/btrfs-progs ?
Marc
P.S. It took me a long time to switch to btrfs. I did it less than a
year ago, and I love it. Keep the great job going, y'all
I've been thinking about this issue myself, and I have an (untested) idea for
how to accomplish something similar. My file server has three disks in a btrfs
raid1. I added a fourth disk to the array as just a normal, participating disk.
I keep an eye on the usage to make sure that I never exceed 3 disk's worth of
usage. That way, if one disk dies, there are still enough disks to mount RW
(though I may still need to do an explicit degraded mount, not sure). In that
scenario, I can just trigger an online full balance to rebuild the missing raid
copies on the remaining disks. In theory, minimal to no downtime.
I'm curious if anyone can see any problems with this idea. I've never tested
it, and my offsite backups are thorough enough to survive downtime anyway.
--Sean
I'm just a regular btrfs user, but I see tons of problems with this.
When BTRFS introduce per-subvolume (or even per file) "RAID" or
redundancy levels a spare device an quickly become a headache. While you
can argue that a spare device of equal or large size than the largest
device in the pool would suffice in most cases I don't think it is very
practical.
What BTRFS needs to do (IMHO) is to reserve spare-space instead. This
means that many smaller devices can be used in case a large device keels
over.
The spare space also of course needs to be as large or larger than the
largest device in the pool, but you would have more flexibility.
For example spare space COULD be pre-populated with the most important
data (hot data tracking) and serve as a speed-up for read operations.
What is the point of having idle space just waiting to be used when you
in fact can just use it for useful things such as obvious ideas like
increased read speed, extra redundancy for stuff like single, dup or
even raid0 chunks. Using the spare space for SOME potential for recovery
is better than not using the spare space for anything.
When the spare space is needed you can either simply discard the data on
the device that is broken if the spare space already holds the data
(which makes for superfast recovery) or drop any caches it is used for
and repopulate by restoring non-redundant data to it as soon as you hit
a certain error count on another device etc...
Just like Linux uses memory I think that BTRFS is better off using the
spare space for something rather than nothing. This should of course be
configurable just for the record.
Anyway - that is how I, a humble user without the detailed know-how
think it should be implemented... :)