Using LVM for adding two LUNS/Disks as one mount point

    Aug 8, 2017 8:18:04 AM by zaheer appsdba

    There may be situation where required capacity cannot be allocated from single volume group from storage, in such situation storage teams will provide multiple luns with different capacities. In this post we will see how we can create single mountpoint with multiple devices using LVM.

    Newly presented disks/lun to server:

    /dev/sdb, /dev/sdc with 360 GB each.

    – check newly connected devices are visible from OS:

    root@racnode1 ~]# fdisk -l
    Disk /dev/sda: 53.6 GB, 53687091200 bytes
    255 heads, 63 sectors/track, 6527 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 2550 20482843+ 83 Linux
    /dev/sda2 2551 3825 10241437+ 82 Linux swap / Solaris
    /dev/sda3 3826 6527 21703815 83 Linux

    Disk /dev/sdb: 386.5 GB, 386547056640 bytes
    255 heads, 63 sectors/track, 46995 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Disk /dev/sdb doesn't contain a valid partition table

    Disk /dev/sdc: 386.5 GB, 386547056640 bytes
    255 heads, 63 sectors/track, 46995 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Disk /dev/sdc doesn't contain a valid partition table
    [root@racnode1 ~]#

    – Format the newly added devices:

    root@racnode1 ~]# fdisk /dev/sdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel. Changes will remain in memory only,
    until you decide to write them. After that, of course, the previous
    content won't be recoverable.

    The number of cylinders for this disk is set to 46995.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-46995, default 1):
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-46995, default 46995):
    Using default value 46995

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.
    [root@racnode1 ~]# fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel. Changes will remain in memory only,
    until you decide to write them. After that, of course, the previous
    content won't be recoverable.

    The number of cylinders for this disk is set to 46995.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-46995, default 1):
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-46995, default 46995):
    Using default value 46995

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.
    [root@racnode1 ~]# fdisk -l

    Disk /dev/sda: 53.6 GB, 53687091200 bytes
    255 heads, 63 sectors/track, 6527 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 2550 20482843+ 83 Linux
    /dev/sda2 2551 3825 10241437+ 82 Linux swap / Solaris
    /dev/sda3 3826 6527 21703815 83 Linux

    Disk /dev/sdb: 386.5 GB, 386547056640 bytes
    255 heads, 63 sectors/track, 46995 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/sdb1 1 46995 377487306 83 Linux

    Disk /dev/sdc: 386.5 GB, 386547056640 bytes
    255 heads, 63 sectors/track, 46995 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/sdc1 1 46995 377487306 83 Linux
    [root@racnode1 ~]#

    Now we will use LVM to create volume on these two devices:

    – Create volume group on /dev/sdb1 and /dev/sdc1

    [root@racnode1 ~]# vgcreate vol_group_db /dev/sdb1 /dev/sdc1
    No physical volume label read from /dev/sdb1
    No physical volume label read from /dev/sdc1
    Metadata inconsistency: Not all flags successfully exported.
    Metadata inconsistency: Not all flags successfully exported.
    Metadata inconsistency: Not all flags successfully exported.
    Metadata inconsistency: Not all flags successfully exported.
    Writing physical volume data to disk "/dev/sdb1"
    Physical volume "/dev/sdb1" successfully created
    Writing physical volume data to disk "/dev/sdc1"
    Physical volume "/dev/sdc1" successfully created
    Volume group "vol_group_db" successfully created
    [root@racnode1 ~]#

    – Check the newly created volume size:

    [root@racnode1 ~]# vgdisplay
    --- Volume group ---
    VG Name vol_group_db
    System ID
    Format lvm2
    Metadata Areas 2
    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 719.99 GB
    PE Size 4.00 MB
    Total PE 184318
    Alloc PE / Size 0 / 0
    Free PE / Size 184318 / 719.99 GB
    VG UUID g0QbuB-jDU0-swL5-X0z9-26rf-V0a9-wF6PnT

    [root@racnode1 ~]#

    In above step we have created the physical volume, now we will create the logical volume.

    – Creation of logical volume:

    [root@racnode1 ~]# lvcreate -l 512000 -n logical_vol2_db vol_group_db
    Volume group "vol_group_db" has insufficient free space (183818 extents): 512000 required.
    [root@racnode1 ~]# lvcreate -l 150000 -n logical_vol2_db vol_group_db
    Logical volume "logical_vol2_db" created
    [root@racnode1 ~]#

    – Check the newly created logical volume:

    [root@racnode1 ~]# lvdisplay
    --- Logical volume ---
    LV Name /dev/vol_group_db/logical_vol2_db
    VG Name vol_group_db
    LV UUID 5HfKeE-Q2Ge-RRgZ-P59d-PHph-44Cc-PI9pDg
    LV Write Access read/write
    LV Status available
    # open 0
    LV Size 585.94 GB
    Current LE 150000
    Segments 2
    Allocation inherit
    Read ahead sectors auto
    - currently set to 256
    Block device 252:1
    [root@racnode1 ~]#

    – Now create file system on logical volume:

    root@racnode1 ~]# mke4fs /dev/vol_group_db/logical_vol2_db
    mke4fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    38404096 inodes, 153600000 blocks
    7680000 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    4688 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, 20480000, 23887872, 71663616, 78675968,
    102400000

    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 37 mounts or
    180 days, whichever comes first. Use tune4fs -c or -i to override.
    [root@racnode1 ~]#

    – mount the logical volume and check size:

    [root@racnode1 ~]# mkdir /data2
    [root@racnode1 ~]# mount /dev/vol_group_db/logical_vol2_db /data2
    [root@racnode1 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 19G 5.0G 13G 28% /
    /dev/sda3 21G 173M 19G 1% /u01
    tmpfs 2.0G 0 2.0G 0% /dev/shm
    /dev/sr0 57M 57M 0 100% /media/VBOXADDITIONS_5.1.22_115126
    /dev/mapper/vol_group_db-logical_vol2_db
    577G 198M 548G 1% /data2
    [root@racnode1 ~]#

    Once its done add these entries in /etc/fstab file for mountpoint to be persistent across reboots.

    Thanks for reading :)

     

    Tags: Oracle

    zaheer appsdba

    Written by zaheer appsdba

    Syed Zaheer is a computer science engineering graduate and enthusiastic database professional with over a decade of experience in implementation and management of complex environments. He has extensive experience in managing multi-vendor UNIX operating systems, storage, databases and applications. He is regular contributor to OTN forums (http://community.oracle.com) honored with the status of “Guru” by the Oracle Community. He is a technical writer for Oracle Technology Network and has authored a book on Oracle E-Business suite R12.2 with Apress: Practical Oracle E-Business Suite: An Implementation and Management Guide A B.tech Engineering graduate in CSIT with more than 8+ Years of IT experience in Administering Multi-vendor UNIX Servers, Oracle Applications and databases. Certifications: - Oracle Database 12c certified Professional - Oracle Enterprise Manager 12c Certified Implementation Specialist -Oracle Solaris 11 Installation and Configuration Certified Implementation Specialist - Oracle Linux 6 Certified Implementation Specialist - Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid Infrastructure Administrator - Oracle Database 11g Administrator Certified Professional - Oracle E-Business Suite R12 Applications Database Administrator Certified Professional - Oracle Database 10g Administrator Certified Professional - Oracle Database 10g Administrator Certified Associate - Sun Certified System Administrator for Solaris 10 OS