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
Stunnel Setup
Viewed 17177 times since Fri, Sep 28, 2018
Prosty skaner portów TCP w bash
Viewed 2961 times since Thu, May 24, 2018
RHEL: iSCSI target/initiator configuration on RHEL7
Viewed 10473 times since Sat, Jun 2, 2018
Understanding logrotate utility part 1
Viewed 1478 times since Fri, Nov 30, 2018
INSTALACJA MIB SNMP W SYSTEMIE CENTOS/RHEL 6
Viewed 12632 times since Fri, Nov 30, 2018
YUM CRON RHEL7: Configure automatic updates.
Viewed 1697 times since Fri, Oct 26, 2018
Exclude multiple files and directories with rsync
Viewed 2030 times since Wed, Oct 31, 2018
Set Up SSH Tunneling on a Linux / Unix / BSD Server To Bypass NAT
Viewed 10994 times since Fri, May 15, 2020
Find All Large Files On A Linux System
Viewed 1860 times since Mon, Oct 29, 2018
Install Security Patches or Updates Automatically on CentOS and RHEL
Viewed 1506 times since Fri, Oct 26, 2018