My view on it is that there are no layers. There are just different combinations, abstractions,
attachments, slices and mirrors of block devices. Upon which you can either build other block devices,
or store raw data which could include filesystems.
The root of it is that the Linux block device is the base unit and since the other entities present
block devices as their product, it gets confusing since the system is making block devices from other
block devices and parts of block devices.
The first two items in #3 [Veracrypt containers; eCryptfs] are special types of filesystems,
but the 3rd thing [Windows' Encrypting File System (EFS)] is referring to
something that becomes a block device. Once it is a block device, then it can be used wherever a block device is used.
#4 is talking about filesystems and "partitions". But it's only a partition if it is referred to in
a partition table (GPT, MBR, Sun, SGI, BSD). And even then, the OS only sees that data through the
lens of a block device. See "man fdisk".
Trying to represent this as layers breaks pretty fast. For example with LVM, the LV is in a VG.
And a VG encompasses one more more PVs. An LV can be spread across multiple PVs.
As I say, in the end actual data is on storage that shows up in Linux as a block device.
> [me trying to defend layers:]
> For example, can a Veracrypt container be below (contain) a LVM
> volume ? I don't think so, but maybe I'm wrong.
In Linux, Veracrypt can encrypt a file. That file can contain general data, a filesystem, or a partition table
that divides up the file into partitions.
Also as a file, you can attach it to a loop device and then you can use that as an LVM PV
(physical Volume) -- the first bullet here: https://www.veracrypt.fr/en/Home.html