This question arose at work — is LVM a performance penalty compared to using straight partitions? To save you the trouble, the answer is “not really”. There is a very small penalty, but as with all benchmarks it does depend on what the benchmark measures versus what your real workload does. In any case, here is a small guestfish script you can use to compare the performance of various filesystems with or without LVM, with various operations. Whether you trust the results is up to you, but I would advise caution.
#!/bin/bash -
tmpfile=/tmp/test.img
for fs in ext2 ext3 ext4; do
for lvm in off on; do
rm -f $tmpfile
if [ $lvm = "on" ]; then
guestfish <<EOF
sparse $tmpfile 1G
run
part-disk /dev/sda efi
pvcreate /dev/sda1
vgcreate VG /dev/sda1
lvcreate LV VG 800
mkfs $fs /dev/VG/LV
EOF
dev=/dev/VG/LV
else # no LVM
guestfish <<EOF
sparse $tmpfile 1G
run
part-disk /dev/sda efi
mkfs $fs /dev/sda1
EOF
dev=/dev/sda1
fi
echo "fs=$fs lvm=$lvm"
sync
guestfish -a $tmpfile -m $dev <<EOF
time fallocate /file1 200000000
time cp /file1 /file2
EOF
done
done
fs=ext2 lvm=off elapsed time: 2.74 seconds elapsed time: 4.52 seconds fs=ext2 lvm=on elapsed time: 2.60 seconds elapsed time: 4.24 seconds fs=ext3 lvm=off elapsed time: 2.62 seconds elapsed time: 4.31 seconds fs=ext3 lvm=on elapsed time: 3.07 seconds elapsed time: 4.79 seconds # notice how ext4 is much faster at fallocate, because it # uses extents fs=ext4 lvm=off elapsed time: 0.05 seconds elapsed time: 3.54 seconds fs=ext4 lvm=on elapsed time: 0.05 seconds elapsed time: 4.16 seconds

It’s not a performance penalty, but you do lose filesystem integrity. LVM doesn’t support barriers.
LVM passes through write barriers if you have a recent enough kernel:
http://bugzilla.kernel.org/show_bug.cgi?id=9554#c12
How does guestfish align the partitions for the underlying device? And, how does it align the LVM metadata when it creates the partitions?
On raid and modern disks or SSD’s, this has a _high_ penalty if misaligned.
Also, I’ve been recently told that LVM over mdraid is unsupported and evil, but I can’t find proper documentation in either way :-/
I’d be surprised if alignment made much difference here. The storage in this case is a sparse file on the host. The fact that it is sparse means that blocks are being allocated on the host during the test, which probably dominates all other considerations.
Also the host file is small enough that it likely fits entirely in memory during the test.
Ah, in that case, of course. Alignments matter not at all, and it’s a valid test for LVM. I found this while researching “bare metal” version of partitioning wrt. overhead on LVM/efi-partioning on md-raid.