On 2016-04-05 23:58, Nicholas D Steeves wrote:
On 11 March 2016 at 20:20, Chris Murphy <li...@colorremedies.com> wrote:
On Fri, Mar 11, 2016 at 5:10 PM, Nicholas D Steeves <nstee...@gmail.com> wrote:
P.S. Rather than parity, I mean instead of distributing into stripes, do a copy!
raid56 by definition are parity based, so I'd say no that's confusing
to turn it into something it's not.
I just found the Multiple Device Support diagram. I'm trying to
figure out how hard it's going for me to get up to speed, because I've
only ever casually and informally read about filesystems. I worry
that because I didn't study filesystem design in school, and because
everything I worked on was in C++...well, the level of sophistication
and design might be beyond what I can learn. What do you think? Can
you recommend any books on file system design that will provide what
is necessary to understand btrfs?
While I can't personally recommend any books on filesystem design, I can
give some more general advice:
1. Make sure you have at least a basic understanding of how things work
at a high level from the user perspective. It's a lot easier to
understand the low-level stuff if you know how it all ends up fitting
together. Back when I started looking at the internals of BTRFS I was
pretty lost myself. I still am to a certain extent when it comes to the
kernel code (most of my background is in Python, Lua, or Bourne Shell,
not C, and I don't normally deal with data structures at such a low
level), but as I've used it more on my systems, a lot of stuff that
seemed cryptic at first is making a lot more sense.
2. Keep in mind that there are a number of things in BTRFS that have no
equivalent in other filesystems, or are not typical filesystem design
topics. The multi-device support for example is pretty much
non-existent as a filesystem design topic because it's traditionally
handled by lower levels like LVM.
3. The Linux VFS layer is worth taking a look at, as it handles the
translation between the low-level ABI provided by each filesystem and
the user-level API. Most of the stuff that BTRFS provides through it is
rather consistent with the user level API, but understanding what
translation goes on there can be helpful to understanding some of the
higher-level internals in BTRFS.
--
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