4

I've installed new system (Linux Mint 17.3, laptop) using LVM partitioning because I currently don't need a swap (there is enough RAM - 12GB) and I want to use my SSD (Samsung 850 evo 250GB) more effectively (to have more space and to extend SSD life) but with a mind that sometime in future I'll need to create a partition for swap.

Now I wonder:

  1. Will LVM decrease life of SSD? How significantly?
  2. Will it affect performance? How significantly?
  3. Does it introduce more risks to lost data?

(in my situation, in comparison with physical partitioning)

I'm using the laptop for development.

humkins
  • 1,187
  • It should be fine, make sure to enable TRIM support in the LVM configuration though. Additionally alignment of partitions is also important. (Both read and erase blocks.) I would be very suprised if LVM was more susceptible to small disk corruptions than a direct use of MBR or GPT would be. – WorBlux Feb 19 '16 at 02:35

2 Answers2

3

1) Due to my experience - no difference at all. Using on my notebook for 2+ years. 2) Does LVM impact performance? 3) LVM (and Veritas) became standard de facto for any serious company. Not only because diskspace management, but also for data management (when you need to move/copy online database from near 100% full diskspace server and so on). In my experience the only danger with LVM are users/administrators actions - such as wrong commands with space resizing and deleting.

3

LVM do impact SSD performance here.

Centos-7.4.1708 kernel-3.10.0-693.el7.x86_64 lvm2-2.02.171-8.el7.x86_64 fio-3.1-1.el7.x86_64

INTEL SSDPE2ME016T4

] pvcreate /dev/nvme0n1
] vgcreate -n vgext /dev/nvme0n1
] lvcreate -n lvtest -L 50G vgext
] dd if=/dev/sda of=/dev/vgext-lvtest bs=1G count=10

# DO 128k/10thr random read on nvme0n1
] fio --readonly -filename=/dev/nvme0n1 -direct=1 -rw=randread -ioengine=psync -name=job1 -size=10G -bs=128k -blockalign=4k -thread -numjobs=10
# get about 2000MB/s

# DO 128k/10thr random read through LVM
] fio --readonly -filename=/dev/vgext/lvtest -direct=1 -rw=randread -ioengine=psync -name=job1 -size=10G -bs=128k -blockalign=4k -thread -numjobs=10
# get about 400MB/s