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
Enabling automatic updates in Centos 7 and RHEL 7
Viewed 2393 times since Wed, Oct 17, 2018
chrt command: Set / Manipulate Real Time Attributes of a Linux Process
Viewed 10897 times since Mon, Feb 17, 2020
Secure Secure Shell
Viewed 10605 times since Fri, Aug 21, 2020
Linux - Cannot login from remote console but can access via ssh
Viewed 4982 times since Fri, Jun 8, 2018
Create a Linux Swap File
Viewed 2927 times since Fri, Jun 8, 2018
Terminal based "The Matrix" like implementation
Viewed 2120 times since Thu, Apr 18, 2019
How to run command or code in parallel in bash shell under Linux or Unix
Viewed 3104 times since Tue, Aug 6, 2019
How to encrypt a partition with DM-Crypt LUKS on Linux
Viewed 8122 times since Fri, Jul 13, 2018
Top 25 Best Linux Performance Monitoring and Debugging Tools
Viewed 6860 times since Sun, Sep 30, 2018
How to deal with dmesg timestamps
Viewed 3314 times since Wed, Oct 3, 2018