At the fundamental level, a block device represents a set of N blocks of data, with some fixed block size. The blocks are numbered consecutively 0 .. (N-1).
This could be a physical disk, a partition, a RAID array consisting of multiple physical disks, a LVM logical volume consisting of parts of one or more disks, or a virtual view of any of the above through an encryption layer.
A filesystem driver does not generally care about the physical details: it only deals with representing that range of blocks as a functional filesystem. The underlying driver(s) may translate the block numbers any way they deem necessary, as long as each block is uniquely addressable by its number.
- A partition driver just applies an offset to the block number and refers to the underlying whole-disk device.
- A LVM logical volume driver has a table of ranges of logical block numbers and corresponding (underlying device + offset) pairs.
- A RAID driver can have many underlying devices, and a request for a single block can map to several underlying blocks on different devices, for redundancy. A single read request can be split between multiple underlying devices that have identical content for performance, or recovered from other underlying devices if one of them has failed; a write request may need to be repeated on each underlying device (for RAID1) and/or have checksums calculated for it (for RAID5/6).
- A multipath driver has several underlying (path) devices all connecting to the same storage device at the far end of the paths. It does not change the block number, but may retry the same operation on multiple paths if necessary.
- A disk encryption driver may or may not map the block numbers (to obfuscate the real disk access patterns), but it will certainly modify the data passing through it: any blocks to be written are encrypted before passing the request on to the underlying device, and any data read from the underlying device is decrypted.
Since a block device has basically the same interface whether it's a physical disk, a partition, a LVM LV, a RAID device, or something else, all these mapping drivers are stackable: you can freely place these mapping layers on top of each other. Of course, not all combinations are guaranteed to be sensible, or even useful.