I have a PCIe SSD card that uses 8kb block cells. It supports "Virtual Controllers" that can split this drive in half and create LVM RAID0 with 8kb stripe size. On top of that I install a file system that uses 8kb block sizes. My application writes data in 8kb blocks.
Is there space overhead with each added layer that causes this 8kb block 'alignment' to shift and ultimately raw data that is being written to SSD to be (significantly?) larger?
If my application writes 8kb worth of data, does FS then writes 8kb+its metadata, which then translates into 8kb+fs metadata+lvm metadata, which ultimately comes out to 8.5kb and screws up all that alignment?
No, blocks don't get made bigger to fit metadata in. Metadata is either stored in dedicated blocks (in the case of filesystems), or in a special area (in the case of LVM and mdraid). You just need to make sure that the start of data areas are correctly lined up.
mdraid places its metadata at the end of the partition and stores data right at the beginning, so it's always aligned. LVM stores metadata at the beginning of PVs, controlled by
pvcreate --dataalignment
which should be set appropriately. The filesystem should have an appropriate block size and/or stride and stripe-width set.