LVM: Create a new Logical Volume / Filesystem

LVM: Create a new Logical Volume / Filesystem

# Tested on RHEL 5, 6 & 7


# Concatenated volume
# ------------------------------------------------------------------------------------------

MNTPT=/testmntpt
OWNER=testusr.testgrp
VG=testvg
LV=testlv
SIZE=512                         # Final size in MBytes
FSTYPE=ext3                      # ext4 can be created from RHEL 5 on


# LV creation. Size given in Mbytes. To specify size in Logical Extents use '-l'

lvcreate -L ${SIZE}M -n $LV $VG
   Logical volume "testlv" created.


# Show new LV (note volume group is formed by three physical volumes but only one of them
# has been used for the logical volume)

pvs | egrep "PFree|$VG"
   PV         VG     Fmt  Attr PSize    PFree
   /dev/sde1  testvg lvm2 a--  1020.00m  508.00m
   /dev/sde2  testvg lvm2 a--  1020.00m 1020.00m
   /dev/sde3  testvg lvm2 a--  1020.00m 1020.00m

lvdisplay -m /dev/$VG/$LV
   --- Logical volume ---
   LV Path                /dev/testvg/testlv
   LV Name                testlv
   VG Name                testvg
   LV UUID                nBmMJZ-VlHJ-8JYS-WEQ7-bHxi-kock-31aGZS
   LV Write Access        read/write
   LV Creation host, time myserver.localdomain, 2016-02-23 16:25:41 +0100
   LV Status              available
   # open                 0
   LV Size                512.00 MiB
   Current LE             128
   Segments               1
   Allocation             inherit
   Read ahead sectors     auto
   - currently set to     8192
   Block device           253:8

   --- Segments ---
   Logical extents 0 to 127:
     Type                linear
     Physical volume     /dev/sde1
     Physical extents    0 to 127


# Filesystem creation

mkfs -V -t $FSTYPE /dev/$VG/$LV

mkdir -p $MNTPT

mount /dev/$VG/$LV  $MNTPT
chown $OWNER $MNTPT


# Check

df -h $MNTPT
ls -ld $MNTPT


# Add output of following command to /etc/fstab
echo "/dev/$VG/$LV        $MNTPT               $FSTYPE       defaults         1 2"



# Stripped over several physical volumes
# ------------------------------------------------------------------------------------------

MNTPT=/testmntpt
OWNER=testusr.testgrp
VG=testvg
LV=testlv
SIZE=512                         # Final size in MBytes
FSTYPE=ext3                      # ext4 can be created from RHEL 5 on
STRIPES=2                        # Number of stripes/PV
DISKS="/dev/sde1 /dev/sde3"


# LV creation. Size given in Mbytes. To specify size in Logical Extents use '-l'

lvcreate -L ${SIZE}M -n $LV -i $STRIPES $VG $DISKS
   Logical volume "testlv" created.


# Show new LV (note volume group is formed by three physical volumes but only two of them
# have been used for the logical volume)

pvs | egrep "PFree|$VG"
  PV         VG     Fmt  Attr PSize    PFree
  /dev/sde1  testvg lvm2 a--  1020.00m  764.00m
  /dev/sde2  testvg lvm2 a--  1020.00m 1020.00m
  /dev/sde3  testvg lvm2 a--  1020.00m  764.00m

lvdisplay -m /dev/$VG/$LV
  --- Logical volume ---
  LV Path                /dev/testvg/testlv
  LV Name                testlv
  VG Name                testvg
  LV UUID                Imu7dH-vBai-Nrxu-q2LZ-HKaH-ELja-xAS33r
  LV Write Access        read/write
  LV Creation host, time
myserver.localdomain, 2016-02-23 16:34:19 +0100
  LV Status              available
  # open                 0
  LV Size                512.00 MiB
  Current LE             128
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     512
  Block device           253:8

  --- Segments ---
  Logical extents 0 to 127:
    Type                striped
    Stripes             2
    Stripe size         64.00 KiB
    Stripe 0:
      Physical volume   /dev/sde1       <---
      Physical extents  0 to 63
    Stripe 1:
      Physical volume   /dev/sde3       <---
      Physical extents  0 to 63


# Filesystem creation

mkfs -V -t $FSTYPE /dev/$VG/$LV

mkdir -p $MNTPT

mount /dev/$VG/$LV  $MNTPT
chown $OWNER $MNTPT


# Check

df -h $MNTPT
ls -ld $MNTPT


# Add output of following command to /etc/fstab
echo "/dev/$VG/$LV        $MNTPT               $FSTYPE       defaults         1 2"



# Mirrored
# ------------------------------------------------------------------------------------------

# Every day it is less common to build mirrored logical volumes because of the use of HW
# raids on local disks for OS, and SAN LUNs for data disks so we usually build concat
# logical volumes on already mirrored physical volumes. Anyway here is how to build a
# mirrored logical volume

MNTPT=/testmntpt
OWNER=testusr.testgrp
VG=testvg
LV=testlv
SIZE=512                      # Final size in MBytes
FSTYPE=ext3                   # ext4 can be created from RHEL 5 on
MIRRORS=1                     # Number of mirror copies, in this case a 2-way mirror.
DISKS="/dev/sde1 /dev/sde2"


# This is a simplified procedure for creating a mirrored logical volume as many options are
# available for this type of volumes.

# For instance, we could consider using '--mirrorlog' option that provides the ability of
# specifying the type of log to be used. If this options is not used, it takes "disk" as
# default value that is persistent and it will require a small amount of storage space,
# usually on a separate device from the data being mirrored (as we took only two disks for
# the mirror, the log is created in the mirrored volume itself; if we wanted the log to be
# on a separate disk we should have set "DISKS" variable like this:
# DISKS="/dev/sde1 /dev/sde2"; consider using a small disk for log).
#
# The segment type for the new implementation of mirroring is "raid1". For the earlier
# implementation, the segment type is "mirror". On the new implementation, the default is
# "raid1". To use the legacy "mirror" segment type use "--type mirror" option.


# LV creation. Size given in Mbytes. To specify size in Logical Extents use '-l'

lvcreate -L ${SIZE}M -n $LV -m $MIRRORS $VG $DISKS
   Logical volume "testlv" created.


# Show LV

# Old implementation

lvdisplay -m /dev/$VG/$LV
  --- Logical volume ---
  LV Path                /dev/testvg/testlv
  LV Name                testlv
  VG Name                testvg
  LV UUID                FgqFKQ-kXEW-a9VF-PCX8-eqgL-lvi2-BBx3lb
  LV Write Access        read/write
  LV Creation host, time
myserver, 2016-02-23 17:20:12 +0100
  LV Status              available
  # open                 0
  LV Size                512.00 MiB
  Current LE             128
  Mirrored volumes       2
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:11

  --- Segments ---
  Logical extent 0 to 127:
    Type                mirror
    Mirrors             2
    Mirror size         128
    Mirror log volume   testlv_mlog
    Mirror region size  512.00 KiB
    Mirror original:
      Logical volume    testlv_mimage_0
      Logical extents   0 to 127
    Mirror destinations:
      Logical volume    testlv_mimage_1
      Logical extents   0 to 127

pvs | egrep "PFree|$VG"
   PV         VG     Fmt  Attr PSize  PFree
   /dev/sde1  testvg lvm2 a--   1.01g 520.00m
   /dev/sde2  testvg lvm2 a--   1.01g 516.00m
   /dev/sde3  testvg lvm2 a--   1.01g   1.01g

lvs
   LV       VG     Attr      LSize   Pool Origin Data%  Move Log         Cpy%Sync Convert
   testlv   testvg mwi-a-m-- 512.00m                         testlv_mlog   100.00



# New implementation

lvdisplay -m /dev/$VG/$LV
   --- Logical volume ---
   LV Path                /dev/testvg/testlv
   LV Name                testlv
   VG Name                testvg
   LV UUID                kLpej7-9Kpv-re5p-9rU2-vWbx-m4BE-GpTKOh
   LV Write Access        read/write
   LV Creation host, time
myserver.localdomain, 2016-02-23 17:20:10 +0100
   LV Status              available
   # open                 0
   LV Size                512.00 MiB
   Current LE             128
   Mirrored volumes       2
   Segments               1
   Allocation             inherit
   Read ahead sectors     auto
   - currently set to     8192
   Block device           253:12

   --- Segments ---
   Logical extents 0 to 127:
     Type                raid1
     Monitoring          monitored
     Raid Data LV 0
       Logical volume    testlv_rimage_0
       Logical extents   0 to 127
     Raid Data LV 1
       Logical volume    testlv_rimage_1
       Logical extents   0 to 127
     Raid Metadata LV 0  testlv_rmeta_0
     Raid Metadata LV 1  testlv_rmeta_1

pvs | egrep "PFree|$VG"
   PV         VG     Fmt  Attr PSize    PFree
   /dev/sde1  testvg lvm2 a--  1020.00m  504.00m
   /dev/sde2  testvg lvm2 a--  1020.00m  504.00m
   /dev/sde3  testvg lvm2 a--  1020.00m 1020.00m

lvs
   LV       VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   [...]
   testlv   testvg rwi-a-r--- 512.00m                                    100.00




# Filesystem creation

mkfs -V -t $FSTYPE /dev/$VG/$LV

mkdir -p $MNTPT

mount /dev/$VG/$LV  $MNTPT
chown $OWNER $MNTPT


# Check

df -h $MNTPT
ls -ld $MNTPT


# Add output of following command to /etc/fstab
echo "/dev/$VG/$LV        $MNTPT               $FSTYPE       defaults         1 2"

0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
Linux An introduction to swap space on Linux systems
Viewed 329 times since Thu, Jan 23, 2020
An easier way to manage disk decryption at boot with Red Hat Enterprise Linux 7.5 using NBDE
Viewed 1535 times since Mon, Aug 6, 2018
Tips to Solve Linux & Unix Systems Hard Disk Problems
Viewed 113 times since Fri, May 15, 2020
HOWTO: Use SSL/port 465 in smarthost stunnel
Viewed 531 times since Fri, Sep 28, 2018
RHEL: Change system’s hostname
Viewed 1008 times since Sun, May 27, 2018
Moving SSL Certificate from IIS to Apache
Viewed 460 times since Mon, Feb 18, 2019
LVM: Mount LVM Partition(s) in Rescue Mode
Viewed 881 times since Sat, Jun 2, 2018
How to encrypt a partition with DM-Crypt LUKS on Linux
Viewed 529 times since Fri, Jul 13, 2018
WatchDog watchdog.sh script for checking server running
Viewed 1781 times since Tue, Jul 31, 2018
RHEL: Rename a network interface on RHEL 7
Viewed 2023 times since Sat, Jun 2, 2018