How to Add a New LVM disk into existing Oracle Linux Server
Posted by Mir Sayeed Hassan on May 6th, 2020
How to add a new LVM disk into existing Oracle Linux Server
LVM (Logical Volume Management) – It provides a flexible and high-level approach to managing disk space into the Linux Server.
Volume Group (VG) – It consists of the raw disk which holds one or more logical volumes & physical volumes.
Physical Volume (PV) – It represents a storage device.
Logical Volume (LV) – It’s equivalent to a disk partition & contain a file system.
Check the current disk status
[root@DB ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_db-root 22G 12G 9.1G 56% /
tmpfs 1.8G 76K 1.8G 1% /dev/shm
/dev/sda1 477M 79M 370M 18% /boot
Find the current number of disk allocated to server
[root@DB ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004b858
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
Disk /dev/mapper/vg_db-root: 23.3 GB, 23295164416 bytes
255 heads, 63 sectors/track, 2832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_db-swap: 8388 MB, 8388608000 bytes
255 heads, 63 sectors/track, 1019 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
The storage team has added new disk into the this server, Scan & detect the new disk
[root@DB ~]# echo “- – -” > /sys/class/scsi_host/host
host0/ host1/ host2/
[root@DB ~]# echo “- – -” > /sys/class/scsi_host/host0/scan
[root@DB ~]# echo “- – -” > /sys/class/scsi_host/host1/scan
[root@DB ~]# echo “- – -” > /sys/class/scsi_host/host2/scan
Check the status of the disk allocation
[root@DB ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004b858
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
Disk /dev/mapper/vg_db-root: 23.3 GB, 23295164416 bytes
255 heads, 63 sectors/track, 2832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_db-swap: 8388 MB, 8388608000 bytes
255 heads, 63 sectors/track, 1019 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb: 75.2 GB, 75161927680 bytes
255 heads, 63 sectors/track, 9137 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Note:
We have allocated 75G into this server to add into it
Create the partition of the new disk as LVM with fdisk command on “/dev/sdb”
[root@DB ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x0128a32f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-9137, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-9137, default 9137):
Using default value 9137
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 75.2 GB, 75161927680 bytes
255 heads, 63 sectors/track, 9137 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0128a32f
Device Boot Start End Blocks Id System
/dev/sdb1 1 9137 73392921 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Now verify the disk that has been partition
[root@DB ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004b858
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
Disk /dev/mapper/vg_db-root: 23.3 GB, 23295164416 bytes
255 heads, 63 sectors/track, 2832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_db-swap: 8388 MB, 8388608000 bytes
255 heads, 63 sectors/track, 1019 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb: 75.2 GB, 75161927680 bytes
255 heads, 63 sectors/track, 9137 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0128a32f
Device Boot Start End Blocks Id System
/dev/sdb1 1 9137 73392921 8e Linux LVM
Note: As per the above verification, The /dev/sdb is partition with LVM.
Create a physical volume using PVCREATE command.
[root@DB ~]# pvcreate /dev/sdb1
Physical volume “/dev/sdb1” successfully created
Display the size of the physical volume (PV)
[root@DB ~]# pvdisplay /dev/sdb1
“/dev/sdb1” is a new physical volume of “69.99 GiB”
— NEW Physical volume —
PV Name /dev/sdb1
VG Name
PV Size 69.99 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID qLmiO1-kd1E-H3k6-xVJG-txZi-XlI2-cioSLw
Create volume group (VG)
Note:
Here we have name vg name as “u02”
[root@DB ~]# vgcreate u02 /dev/sdb1
Volume group “u02” successfully created
Display the details of volume group created
[root@DB ~]# vgdisplay u02
— Volume group —
VG Name u02
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 69.99 GiB
PE Size 4.00 MiB
Total PE 17917
Alloc PE / Size 0 / 0
Free PE / Size 17917 / 69.99 GiB
VG UUID 27KxKv-FAbF-uRdO-ioBY-OW2F-ZdXe-DMXCRU
Create logical volume with “u02” name
[root@DB ~]# lvcreate -n u02 -l 100%FREE u02
Logical volume “u02” created.
Verify the logical volume (LV)
[root@DB ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
u02 u02 -wi-a—– 69.99g
root vg_db -wi-ao—- 21.70g
swap vg_db -wi-ao—- 7.81g
[root@DB ~]# lvdisplay
— Logical volume —
LV Path /dev/u02/u02
LV Name u02
VG Name u02
LV UUID 3DkAqO-FD7J-cbdI-hawM-5Cuu-LYxF-OpxGGt
LV Write Access read/write
LV Creation host, time DB, 2020-05-04 13:53:52 +0430
LV Status available
# open 0
LV Size 69.99 GiB
Current LE 17917
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 252:2
Format the Logical Volums (LV’s) to ext4 format
[root@DB ~]# mkfs.ext4 /dev/u02/u02
mke2fs 1.43-WIP (20-Jun-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4587520 inodes, 18347008 blocks
917350 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
560 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, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Finally create a /u02 directory in “/“ with root login & mount the logical volume on boot.
Create a “/u02” directory with root login
[root@testdb /]# mkdir /u02
Mount the “/u02” directory
[root@DB ~]# mount /dev/u02/u02 /u02/
Verify the New disk allocated to existing server with LVM.
[root@DB ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_db-root
22G 12G 9.1G 56% /
tmpfs 1.8G 76K 1.8G 1% /dev/shm
/dev/sda1 477M 79M 370M 18% /boot
/dev/mapper/u02-u02 69G 52M 66G 1% /u02