Storage technology plays a important role in improving the availability, performance, and ability to manage Linux servers.
One of the most useful and helpful technology to linux system administrator is Linux Logical Volume Manager(LVM), version 2 (or LVM 2).
LVM is a widely-used technique and extremely flexible disk management scheme for deploying logical rather than physical storage. With LVM, system administrator can easily resize and extend the logical drive when it is required.
The following steps will describe how to create LVM in Linux CentOS 7 or RHEL 7 or Oracle Linux 7.
How to Create Lvm in Linux Step by Step
1. Add the new 20GB vdisk from the ESXi or vCenter :
2. create a new Partiton using fdisk tool and select partition type LVM :
[root@centos7 ~]# 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. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xfd3bf27d. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039 Partition 1 of type Linux and of size 20 GiB is set Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xfd3bf27d Device Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 83 Linux Command (m for help): t Selected partition 1 Hex code (type L to list all codes): L 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary 16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT 1e Hidden W95 FAT1 80 Old Minix 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: 21.5 GB, 21474836480 bytes, 41943040 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: 0xfd3bf27d Device Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 8e Linux LVM
3. Initializes the partition /dev/sdb1 as an LVM physical volume :
[root@centos7 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created
4. Scanning for Block Devices
[root@centos7 ~]# lvmdiskscan /dev/centos/swap [ 2.00 GiB] /dev/sda1 [ 500.00 MiB] /dev/centos/root [ 27.51 GiB] /dev/sda2 [ 29.51 GiB] LVM physical volume /dev/sdb1 [ 20.00 GiB] LVM physical volume 2 disks 1 partition 0 LVM physical volume whole disks 2 LVM physical volumes
5. Displaying Physical Volumes :
There are three commands you can use to display properties of LVM physical volumes: pvs,
pvdisplay, and pvscan.
The pvdisplay command provides a verbose multi-line output for each physical volume. It displays
physical properties (size, extents, volume group, etc.) in a fixed format.
[root@centos7 ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name centos PV Size 29.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 7554 Free PE 0 Allocated PE 7554 PV UUID JvDOto-KDiF-gtca-TveX-ne9M-frsB-qsP1aJ "/dev/sdb1" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID rJ8wl7-xzIN-2qqV-ov7Z-lHKe-ELge-aAV29V
The pvscan command scans all supported LVM block devices in the system for physical volumes
[root@centos7 ~]# pvscan PV /dev/sda2 VG centos lvm2 [29.51 GiB / 0 free] PV /dev/sdb1 lvm2 [20.00 GiB] Total: 2 [49.51 GiB] / in use: 1 [29.51 GiB] / in no VG: 1 [20.00 GiB]
6. Create volume group name vg_newlvm and add /dev/sdb1 partition into the group.
[root@centos7 ~]# vgcreate vg_newlvm /dev/sdb1 Volume group "vg_newlvm" successfully created
If you have more than one partition, you can add multiple partition in single command. This command creates a local volume named vg_newlvm that contains physical volumes /dev/sdb1 and /dev/sdc1 :
[root@centos7 ~]# vgcreate vg_newlvm /dev/sdb1 /dev/sdc1
7. Creates a logical volume called centos7_newvol that uses all of the unallocated space in the volume group vg_newlvm :
[root@centos7 ~]# lvcreate --name centos7_newvol -l 100%FREE vg_newlvm Logical volume "centos7_newvol" created
You can see more example of lvcreate command in article “4 lvcreate Command Examples on Linux”
8. Display the created logical volumes :
[root@centos7 ~]# lvdisplay
.. .. --- Logical volume --- LV Path /dev/vg_newlvm/centos7_newvol LV Name centos7_newvol VG Name vg_newlvm LV UUID szlkNP-0lwe-f59Z-PJVU-X7pG-unBL-qN10D4 LV Write Access read/write LV Creation host, time centos7.ehowstuff.local, 2015-01-25 15:15:48 +0800 LV Status available # open 0 LV Size 20.00 GiB Current LE 5119 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
9. Use the mkfs command to format a newly created LVM :
[root@centos7 ~]# mkfs.ext4 /dev/vg_newlvm/centos7_newvol mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5241856 blocks 262092 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
10. Create the mount point and mount the new LVM :
[root@centos7 ~]# mkdir -p /data [root@centos7 ~]# mount /dev/vg_newlvm/centos7_newvol /data
11. Verify thew new disk layout :
[root@centos7 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 28260132 9191032 17610516 35% / devtmpfs 1935888 0 1935888 0% /dev tmpfs 1941892 0 1941892 0% /dev/shm tmpfs 1941892 8728 1933164 1% /run tmpfs 1941892 0 1941892 0% /sys/fs/cgroup /dev/sda1 487634 73191 384747 16% /boot tmpfs 1941892 8728 1933164 1% /var/named/chroot/run/named /dev/mapper/vg_newlvm-centos7_newvol 20507216 45080 19397384 1% /data
2 Comments
Good write up I would just add to the end of step 2 – `w – write table to disk and exit`.
You’re missing a ‘w’ at the end of step 2 to write the changes to disk.