Reference no: EM133853302
Data Structures
Before beginning this assignment, if this is the first time you're learning about Btrfs I would recommend doing a little casual reading about it up front. Familiarize yourself with the features and design goals.
The required reading (see below) will be easier to digest if you're already somewhat aware of the core concepts. Just search "Btrfs" and read a few of the top results.
Next, a paper titled BTRFS: The Linux B-Tree Filesystem is attached to this dropbox. Please read Section 3: Fundamentals, pages 12-26. Feel free to read more if you like, but section 3 is the important bit.
Using your knowledge from the lecture, and from this reading, please answer the following questions as best you can. Doesn't need to be essay-length, a few paragraphs for each would be great. Show me that you've put thought into it, and I need to fully understand what you are trying to communicate, but no need to reach some arbitrary page count.
Most modern file systems (Ext4, NTFS, HFS+, etc) implement a feature called journaling, meaning that any changes made to the disk are first recorded in a journal before being committed to the disk. This way, if power is cut during a disk write operation, the incorrect partial changes can be rolled back or re-applied based on the journal entry. Book assignment help service now!
Btrfs does not implement "journaling" in the traditional sense but does still provide the ability to cleanly recover after a failed write. How and why does this work?
Early versions of Ext (2 and 3) kept track of the location of file-data on disk via a series of direct and indirect pointers in the file's inode, which reference many data blocks, all of identical size. Btrfs (and in fact Ext4 also) replace this model with "extents", which store only the pointer to, and size of, data blocks which may be arbitrarily large.
What advantage do extents have over traditional direct/indirect block pointers? What are the disadvantages?
Btrfs makes some assumptions about how the disk will be used which allow it to perform well during "normal" use, in terms of both speed and space efficiency. However, in some cases these design choices may result in Btrfs performing significantly worse than older file systems like Ext4. What kinds of disk usage patterns do you suppose Btrfs is designed to work best with, and in what scenarios might speed or space efficiency suffer? Why?
Suppose you are hired to work for a super-secret three-letter intelligence agency and are tasked with setting up personal computers for clandestine agents working in the field. In the event their cover is blown, the agents need the ability to selectively delete sensitive files from their computer at a moment's notice (i.e., securely wipe the data itself, not just delete the file reference).
Why might Btrfs NOT be a good choice in this particular scenario?