LVM (Logical Volume Manager)
Define LVM & How its Work
Management of LVM
Create partition storage in LVM and change the id
Getting ready
$ vagrant up
$ vagrant ssh
How to do it
From the man pages LVM, it LVM2 tools.
Make physical device
check the device for prepare
$ sudo fdisk -l
Part the device
$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Using default response p
Partition number (1-4, default 1): 1
First sector (2048-23316719, default 2048): 2048
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-23316719, default 23316719): +2G
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Using default response p
Partition number (2-4, default 2): 2
First sector (4196352-23316719, default 4196352): 4196352
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-23316719, default 23316719): +2G
Partition 2 of type Linux and of size 2 GiB is set
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Disk /dev/sdb: 11.9 GB, 11938160640 bytes, 23316720 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa65b2d5f
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   8e  Linux LVM
/dev/sdb2         4196352     8390655     2097152   8e  Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
$ sudo cat /proc/partitions
$ sudo partprobe
Make Physical Volume
$ sudo pvcreate /dev/sdb1 /dev/sdb2
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
For check the Physical Volume
$ sudo pvdisplay /dev/sdb1 /dev/sdb2
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg0
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               511
  Allocated PE          0
  PV UUID               TtBqPu-WGl4-1jEP-4iGj-BdMJ-ETqv-GSIpBb
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               vg0
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               511
  Allocated PE          0
  PV UUID               afc7sR-NfsC-v9Pk-PLpn-QxyI-juf6-0Xyjmx
also use for display the physical volume
$ sudo pvs
Make Volume group
$ sudo vgcreate vg0 /dev/sdb1 /dev/sdb2
  Volume group "vg0" successfully created
For check the volume group
$ sudo vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm1
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1022 / 3.99 GiB
  VG UUID               oRO5rK-mR2r-n9cJ-BXNj-jGmJ-3KKX-gpCZqR
also use
$ sudo vgs
Make Logical Volume
$ sudo lvcreate -L 3G vg0 -n lv1
  Logical volume "lv1" created
For check the Logical Volume
$ sudo lvdisplay /dev/vg0/lv1
  --- Logical volume ---
  LV Path                /dev/vg0/lv1
  LV Name                lv1
  VG Name                vg0
  LV UUID                UwDqVy-FEW5-cs5R-nI0a-08Rk-fkcG-WZzLrN
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-05-24 02:22:20 -0400
  LV Status              available
  # open                 0
  LV Size                3.00 GiB
  Current LE             768
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
also use
$ sudo lvs
Now create File system
$ sudo mkfs.xfs /dev/vg0/lv1 
meta-data=/dev/vg0/lv1           isize=256    agcount=4, agsize=196608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=786432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Create mounting Directory
$ sudo mkdir /mnt/lvstorage
Entry in fstab for auto or permanent mount
$ sudo vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Aug  1 12:31:59 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        1 1
UUID=4fe961ff-8508-4d2e-8997-947b6f2a57c4 /boot                   xfs     defaults        1 2
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/vg0/lv1    /mnt/lvstorage  xfs     defaults        0 0
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"/etc/fstab" 12L, 510C                                        12,1          All
$ sudo mount -a
Check the mount device
$ df -TH
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       7.2G  1.5G  5.8G  21% /
devtmpfs                devtmpfs  251M     0  251M   0% /dev
tmpfs                   tmpfs     258M     0  258M   0% /dev/shm
tmpfs                   tmpfs     258M  4.5M  253M   2% /run
tmpfs                   tmpfs     258M     0  258M   0% /sys/fs/cgroup
/dev/sda1               xfs       521M  130M  391M  25% /boot
/dev/mapper/vg0-lv1     xfs       3.3G   34M  3.2G   2% /mnt/lvstorage
Delete or Remove LVM
- unmount the filesystem
$ sudo umount /dev/vg0/lv1 - Remove the entry from the fstab
$ sudo vim /etc/fstab - Then remove logical volume
$ sudo lvremove /dev/vg0/lv1 Do you really want to remove active logical volume lv1? [y/n]: y Logical volume "lv1" successfully removed - Remove the volume group
$ sudo vgremove /dev/vg0 Volume group "vg0" successfully removed - Remove the physical volume
$ sudo pvremove /dev/sdb1 /dev/sdb2 Labels on physical volume "/dev/sdb1" successfully wiped Labels on physical volume "/dev/sdb2" successfully wiped 
Making Extend lvm partition.
Its For XFS file system
$ sudo lvextend -L 3500M /dev/vg0/lv1
  Extending logical volume lv1 to 3.42 GiB
  Logical volume lv1 successfully resized
$ df -TH
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       7.2G  1.5G  5.8G  21% /
devtmpfs                devtmpfs  251M     0  251M   0% /dev
tmpfs                   tmpfs     258M     0  258M   0% /dev/shm
tmpfs                   tmpfs     258M  4.5M  253M   2% /run
tmpfs                   tmpfs     258M     0  258M   0% /sys/fs/cgroup
/dev/sda1               xfs       521M  130M  391M  25% /boot
/dev/mapper/vg0-lv1     xfs       3.3G   34M  3.2G   2% /mnt/lvstorage
$ sudo xfs_growfs /dev/vg0/lv1 
meta-data=/dev/mapper/vg0-lv1    isize=256    agcount=4, agsize=196608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=786432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 786432 to 896000
$ df -TH
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       7.2G  1.5G  5.8G  21% /
devtmpfs                devtmpfs  251M     0  251M   0% /dev
tmpfs                   tmpfs     258M     0  258M   0% /dev/shm
tmpfs                   tmpfs     258M  4.5M  253M   2% /run
tmpfs                   tmpfs     258M     0  258M   0% /sys/fs/cgroup
/dev/sda1               xfs       521M  130M  391M  25% /boot
/dev/mapper/vg0-lv1     xfs       3.7G   34M  3.7G   1% /mnt/lvstorage
Now For ext4 file system
Extend ext4 file system
$ sudo lvextend -L 3500M /dev/vg0/lv1 
  Extending logical volume lv1 to 3.42 GiB
  Logical volume lv1 successfully resized
$ sudo resize2fs -f /dev/vg0/lv1 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/lv1 is mounted on /mnt/lvstorage; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/lv1 is now 896000 blocks long.
Reduce ext4 file system
$ sudo umount /dev/vg0/lv1
$ sudo fsck -f /dev/vg0/lv1
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg0-lv1: 11/229376 files (0.0% non-contiguous), 33862/896000 blocks
$ resize2fs /dev/vg0/lv1 3G
resize2fs 1.42.9 (28-Dec-2013)
open: Permission denied while opening /dev/vg0/lv1
[vagrant@localhost ~]$ sudo resize2fs /dev/vg0/lv1 3G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv1 to 786432 (4k) blocks.
The filesystem on /dev/vg0/lv1 is now 786432 blocks long.
$ sudo lvreduce -L 3G /dev/vg0/lv1 
  WARNING: Reducing active logical volume to 3.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv1? [y/n]: y
  Reducing logical volume lv1 to 3.00 GiB
  Logical volume lv1 successfully resized
$ sudo mount -a
$ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       6.7G  1.4G  5.4G  21% /
devtmpfs                devtmpfs  240M     0  240M   0% /dev
tmpfs                   tmpfs     246M     0  246M   0% /dev/shm
tmpfs                   tmpfs     246M  4.4M  241M   2% /run
tmpfs                   tmpfs     246M     0  246M   0% /sys/fs/cgroup
/dev/sda1               xfs       497M  124M  373M  25% /boot
/dev/mapper/vg0-lv1     ext4      2.9G  9.0M  2.8G   1% /mnt/lvstorage
Extent lvm partition
Create the LV of size 50 Physical Extent value by creating vg of size 16MB
- create lvm physical partition(/dev/sdb3)
 - create physical volume
$ sudo pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created - create vg extent 
$ sudo vgcreate -s 16M vg1 /dev/sdb3 Volume group "vg1" successfully created$ sudo vgdisplay vg1 --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 800.00 MiB PE Size 16.00 MiB Total PE 50 Alloc PE / Size 0 / 0 Free PE / Size 50 / 800.00 MiB VG UUID a8ZQzt-aHlA-i23x-4RCC-nsIT-4YaX-kFjzKC - create logical volume
$ sudo lvcreate -L 800M /dev/vg1 -n lv2 Logical volume "lv2" created$ sudo lvdisplay /dev/vg1/lv2 --- Logical volume --- LV Path /dev/vg1/lv2 LV Name lv2 VG Name vg1 LV UUID 5Nfkk2-cwRk-L3k1-eVp6-u5tp-WOOw-qQYV33 LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-05-24 03:31:34 -0400 LV Status available # open 0 LV Size 800.00 MiB Current LE 50 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:4