Create LVM using Striping I/O for more IOPS performance

 LVM(Logical Volume Manager) is a handy tool for handling storage at various levels. LVM functions by layering abstractions on top of physical storage devices, as mentioned below in the illustration.


Below is a simple diagrammatic expression of LVM

 sda1  sdb1   (PV:s on partitions or whole disks)
           \    /
            \  /
          Vgmysql      (VG)
           / | \
         /   |   \
      data  log  tmp  (LV:s)
       |     |    |
      xfs  ext4  xfs  (filesystems)


LVM Striping is one feature that will write the data over multiple disks instead of constant writing on a single Physical volume.


Features of Striping

  1. Increase the performance of the disk.
  2. Saves hard write over and over to a single disk.
  3. Disk fill-up can be reduced using striping over multiple disks.



Check disks attached to the system using the command lsblk.

#> lsblk


Create the Physical Volume (PV) using the command pvcreate /dev/sd[b-g].

#> pvcreate /dev/sd[b-g]


Confirm PV status using the command pvs.

#> pvs


Create the Volume Group (VG) using the command vgcreate -s 1M vgbz /dev/sd[b-g] -v.

#> vgcreate -s 1M vgbz /dev/sd[b-g] -v


Confirm Volume Group (VG) status using the command vgdisplay -v.

#> vgdisplay -v  


Volume Group (VG) is now ready, it's time to create Logical Volume (VG) using the command lvcreate -L 11.46T -I 16k -i 6 -n storage vgbz.

#> lvcreate -L 11.46T -I 128k -i 6 -n storage vgbz


Check Logical Volume complete view using lvdisplay -m where you will see Stripes as 6, which is a total of 6 disks attached to Strip LVM along with a Strip size of 128 KB.

#> lvdisplay -m 


Now, we can format the Logical Volume using the command mkfs.ext4for the ext4 partition.

#> mkfs.ext4 /dev/mapper/vgdisk-storage


Following mount point options can be used in /etc/fstab.

/dev/mapper/vgdisk-storage /storage ext4 defaults 1 2


We can check IO Benchmarks using the command fio.

#> fio --randrepeat=1 --name=randrw --rw=randrw --direct=1 --ioengine=libaio --bs=16k --numjobs=10 --size=512M --runtime=60 --time_based --iodepth=64 --group_reporting




Was this answer helpful? 0 Users Found This Useful (0 Votes)