LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分LVM区管理的灵活性。LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。


LVM简单解释:多个物理分区(PV)组合成一个大硬盘(VG),然后从这个硬盘(VG)中划分分区(LV),再在划分的分区创建文件系统,挂载此分区。这样的分区可以扩大或缩小。


LVM使用:

1、安装LVM

2、fdisk创建lvm分区

3、pvcreate把lvm分区创建PV

4、vgcreate把pv创建vg

5、lvcreate从vg中划分lv

6、挂载lv


1、安装lvm

[root@kvm /]# rpm -q lvm2
lvm2-2.02.100-8.el6.x86_64

2、fdisk创建lvm分区

[root@kvm /]# fdisk -l | grep dev
Disk /dev/sda: 128.8 GB, 128849018880 bytes
/dev/sda1               1         256     2048000   82  Linux swap / Solaris
/dev/sda2   *         256       15666   123780096   83  Linux
Disk /dev/sdb: 85.9 GB, 85899345920 bytes


把sdb硬盘分三个逻辑分区,大小分别 2GB 3GB 5GB


[root@kvm /]# fdisk /dev/sdb
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)
e 扩展分区
Partition number (1-4): 1   sdb1
First cylinder (1-10443, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-10443, default 10443):
Using default value 10443    把整个硬盘空间划分成扩展分区
Command (m for help): p
Disk /dev/sdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x92966975
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10443    83883366    5  Extended
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l  新建逻辑分区
First cylinder (1-10443, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-10443, default 10443): +2GB  从第一个扇区开始,到空间2GB大小 所在的扇区中结束。
Command (m for help): p
Disk /dev/sdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x92966975
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10443    83883366    5  Extended
/dev/sdb5               1         244     1959867   83  Linux
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (245-10443, default 245):
Using default value 245
Last cylinder, +cylinders or +size{K,M,G} (245-10443, default 10443): +3GB
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (611-10443, default 611):
Using default value 611
Last cylinder, +cylinders or +size{K,M,G} (611-10443, default 10443): +5GB
Command (m for help): p
Disk /dev/sdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x92966975
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10443    83883366    5  Extended
/dev/sdb5               1         244     1959867   83  Linux
/dev/sdb6             245         610     2939863+  83  Linux
/dev/sdb7             611        1219     4891761   83  Linux
Command (m for help): w  保存刚才所做的修改
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@kvm /]# partprobe  不重启系统使分区生效
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.

使用t命令把分区更改为lvm分区,lvm分区的标志是8e

[root@kvm /]# fdisk /dev/sdb
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): p
Disk /dev/sdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x92966975
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10443    83883366    5  Extended
/dev/sdb5               1         244     1959867   83  Linux
/dev/sdb6             245         610     2939863+  83  Linux
/dev/sdb7             611        1219     4891761   83  Linux
Command (m for help): t  修改分区格式
Partition number (1-7): 5
Hex code (type L to list codes): 8e   是lvm的标志
Changed system type of partition 5 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-7): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-7): 7
Hex code (type L to list codes): 8e
Changed system type of partition 7 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x92966975
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10443    83883366    5  Extended
/dev/sdb5               1         244     1959867   8e  Linux LVM
/dev/sdb6             245         610     2939863+  8e  Linux LVM
/dev/sdb7             611        1219     4891761   8e  Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@kvm /]# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@kvm /]# fdisk /dev/sdb
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): p
Disk /dev/sdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x92966975
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10443    83883366    5  Extended
/dev/sdb5               1         244     1959867   8e  Linux LVM
/dev/sdb6             245         610     2939863+  8e  Linux LVM
/dev/sdb7             611        1219     4891761   8e  Linux LVM
Command (m for help): q
[root@kvm /]#

3、pvcreate把lvm分区创建PV

[root@kvm /]# pvcreate --help
  pvcreate: Initialize physical volume(s) for use by LVM
pvcreate
        [--norestorefile]
        [--restorefile file]
        [-d|--debug]
        [-f[f]|--force [--force]]
        [-h|-?|--help]
        [--labelsector sector]
        [-M|--metadatatype 1|2]
        [--pvmetadatacopies #copies]
        [--bootloaderareasize BootLoaderAreaSize[bBsSkKmMgGtTpPeE]]
        [--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]]
        [--dataalignment Alignment[bBsSkKmMgGtTpPeE]]
        [--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]]
        [--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE]
        [-t|--test]
        [-u|--uuid uuid]
        [-v|--verbose]
        [-y|--yes]
        [-Z|--zero {y|n}]
        [--version]
        PhysicalVolume [PhysicalVolume...]
pvcreate指令:创建物理卷
【语    法】pvcreate [选项] [参数]
【功能介绍】pvcreate指令用于将物理硬盘分区初始化为物理卷,以便被LVM使用。
主要参数
-f 强制创建物理卷,不需要用户确认
-u 指定设备的UUID
-y 所有的问题都回答“yes”
-Z 是否利用前4个扇区


初始化硬盘分区为物理卷

[root@kvm /]# pvcreate /dev/sdb5 /dev/sdb6 /dev/sdb7


[root@kvm /]# pvcreate /dev/sdb5 /dev/sdb6 /dev/sdb7
  Physical volume "/dev/sdb5" successfully created
  Physical volume "/dev/sdb6" successfully created
  Physical volume "/dev/sdb7" successfully created
[root@kvm /]# pvscan
  PV /dev/sdb5                      lvm2 [1.87 GiB]
  PV /dev/sdb6                      lvm2 [2.80 GiB]
  PV /dev/sdb7                      lvm2 [4.67 GiB]
  Total: 3 [9.34 GiB] / in use: 0 [0   ] / in no VG: 3 [9.34 GiB]
[root@kvm /]# pvdisplay
  "/dev/sdb5" is a new physical volume of "1.87 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb5
  VG Name              
  PV Size               1.87 GiB
  Allocatable           NO
  PE Size               0  
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               bCxnAU-piua-R2DC-fgEK-Ub2V-5E0x-jiTcTT
                                                                                                                                                                                     
  "/dev/sdb6" is a new physical volume of "2.80 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb6
  VG Name              
  PV Size               2.80 GiB
  Allocatable           NO
  PE Size               0  
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               VKXe9c-EpMR-tWXD-fOhK-vyKD-QiEC-QcoqZl
                                                                                                                                                                                     
  "/dev/sdb7" is a new physical volume of "4.67 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb7
  VG Name              
  PV Size               4.67 GiB
  Allocatable           NO
  PE Size               0  
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               A0hnCV-0Ksk-meLO-lUev-xzDf-grTU-TpBdyX
                                                                                                                                                                                     
[root@kvm /]#




4、vgcreate把pv创建vg

[root@kvm /]# vgcreate --help
  vgcreate: Create a volume group
vgcreate
        [-A|--autobackup {y|n}]
        [--addtag Tag]
        [--alloc AllocationPolicy]
        [-c|--clustered {y|n}]
        [-d|--debug]
        [-h|--help]
        [-l|--maxlogicalvolumes MaxLogicalVolumes]
        [-M|--metadatatype 1|2]
        [--[vg]metadatacopies #copies]
        [-p|--maxphysicalvolumes MaxPhysicalVolumes]
        [-s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]]
        [-t|--test]
        [-v|--verbose]
        [--version]
        [-y|--yes]
        [ PHYSICAL DEVICE OPTIONS ]
        VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgcreate指令:创建卷组
【语    法】vgcreate [选项] [参数]
【功能介绍】vgcreate指令用于创建LVM卷组。
主要参数
-l 卷组上允许创建的最大逻辑卷数
-p 卷组中允许添加的最大物理卷数
-s 卷组上的物理卷的PE大小


[root@kvm /]# vgcreate lvmvmhard /dev/sdb5 /dev/sdb6

创建vg,pe默认大小:4MB


[root@kvm /]# vgcreate lvmvmhard /dev/sdb5 /dev/sdb6
  Volume group "lvmvmhard" successfully created
[root@kvm /]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "lvmvmhard" using metadata type lvm2
[root@kvm /]# vgdisplay
  --- Volume group ---
  VG Name               lvmvmhard
  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               4.67 GiB
  PE Size               4.00 MiB
  Total PE              1195
  Alloc PE / Size       0 / 0  
  Free  PE / Size       1195 / 4.67 GiB
  VG UUID               yWRR2f-3SZx-MZnc-gCz1-zwYT-KH3D-FdOiHk
                                                                                                                                           
[root@kvm /]# pvscan
  PV /dev/sdb5   VG lvmvmhard       lvm2 [1.87 GiB / 1.87 GiB free]
  PV /dev/sdb6   VG lvmvmhard       lvm2 [2.80 GiB / 2.80 GiB free]
  PV /dev/sdb7                      lvm2 [4.67 GiB]
  Total: 3 [9.33 GiB] / in use: 2 [4.67 GiB] / in no VG: 1 [4.67 GiB]
[root@kvm /]#



5、lvcreate从vg中划分lv


[root@kvm /]# lvcreate --help
  lvcreate: Create a logical volume
lvcreate
        [-A|--autobackup {y|n}]
        [-a|--activate [a|e|l]{y|n}]
        [--addtag Tag]
        [--alloc AllocationPolicy]
        [-C|--contiguous {y|n}]
        [-d|--debug]
        [-h|-?|--help]
        [--ignoremonitoring]
        [--monitor {y|n}]
        [-i|--stripes Stripes [-I|--stripesize StripeSize]]
        [-k|--setactivationskip {y|n}]
        [-K|--ignoreactivationskip]
        {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |
         -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}
        [-M|--persistent {y|n}] [--major major] [--minor minor]
        [-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]]
        [-n|--name LogicalVolumeName]
        [--noudevsync]
        [-p|--permission {r|rw}]
        [--[raid]minrecoveryrate Rate]
        [--[raid]maxrecoveryrate Rate]
        [-r|--readahead ReadAheadSectors|auto|none]
        [-R|--regionsize MirrorLogRegionSize]
        [-T|--thin  [-c|--chunksize  ChunkSize]
          [--discards {ignore|nopassdown|passdown}]
          [--poolmetadatasize MetadataSize[bBsSkKmMgG]]]
          [--poolmetadataspare {y|n}]
        [--thinpool ThinPoolLogicalVolume{Name|Path}]
        [-t|--test]
        [--type VolumeType]
        [-v|--verbose]
        [-Z|--zero {y|n}]
        [--version]
        VolumeGroupName [PhysicalVolumePath...]
lvcreate
        { {-s|--snapshot} OriginalLogicalVolume[Path] |
          [-s|--snapshot] VolumeGroupName[Path] -V|--virtualsize VirtualSize}
          {-T|--thin} VolumeGroupName[Path][/PoolLogicalVolume]
                      -V|--virtualsize VirtualSize}
        [-c|--chunksize]
        [-A|--autobackup {y|n}]
        [--addtag Tag]
        [--alloc AllocationPolicy]
        [-C|--contiguous {y|n}]
        [-d|--debug]
        [--discards {ignore|nopassdown|passdown}]
        [-h|-?|--help]
        [--ignoremonitoring]
        [--monitor {y|n}]
        [-i|--stripes Stripes [-I|--stripesize StripeSize]]
        [-k|--setactivationskip {y|n}]
        [-K|--ignoreactivationskip]
        {-l|--extents LogicalExtentsNumber[%{VG|FREE|ORIGIN}] |
         -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}
        [--poolmetadatasize MetadataVolumeSize[bBsSkKmMgG]]
        [-M|--persistent {y|n}] [--major major] [--minor minor]
        [-n|--name LogicalVolumeName]
        [--noudevsync]
        [-p|--permission {r|rw}]
        [-r|--readahead ReadAheadSectors|auto|none]
        [-t|--test]
        [--thinpool ThinPoolLogicalVolume[Path]]
        [-v|--verbose]
        [--version]
        [PhysicalVolumePath...]
lvcreate指令:创建逻辑卷
【语    法】lvcreate [选项] [参数]
【功能介绍】lvcreate指令用于创建LVM的逻辑卷。
主要参数
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE数)
-n 后面根逻辑卷名


lvcreate -L 4GB -n lvmlv1 lvmvmhard

-L 使用大小

-n 逻辑卷名

lvmvmhard vg名


[root@kvm /]# lvcreate -L 4GB -n lvmlv1 lvmvmhard
  Logical volume "lvmlv1" created
[root@kvm /]# lvscan
  ACTIVE            '/dev/lvmvmhard/lvmlv1' [4.00 GiB] inherit
[root@kvm /]# pvscan
  PV /dev/sdb5   VG lvmvmhard       lvm2 [1.87 GiB / 684.00 MiB free]
  PV /dev/sdb6   VG lvmvmhard       lvm2 [2.80 GiB / 0    free]
  PV /dev/sdb7                      lvm2 [4.67 GiB]
  Total: 3 [9.33 GiB] / in use: 2 [4.67 GiB] / in no VG: 1 [4.67 GiB]
[root@kvm /]# vgdisplay
  --- Volume group ---
  VG Name               lvmvmhard
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               4.67 GiB
  PE Size               4.00 MiB
  Total PE              1195
  Alloc PE / Size       1024 / 4.00 GiB
  Free  PE / Size       171 / 684.00 MiB
  VG UUID               yWRR2f-3SZx-MZnc-gCz1-zwYT-KH3D-FdOiHk
                                                                                    
[root@kvm /]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "lvmvmhard" using metadata type lvm2
[root@kvm /]#



6、挂载lv

先格式,然后挂到目录,要开机挂载需要修改fstab

[root@kvm /]# mkfs.ext4 /dev/lvmvmhard/lvmlv1
mke2fs 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
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 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
Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@kvm /]# mkdir lvlvm1
[root@kvm /]# mount /dev/lvmvmhard/lvmlv1 /lvlvm1/
[root@kvm /]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/sda2                     117G   11G  100G  10% /
tmpfs                         242M   76K  242M   1% /dev/shm
/dev/sr0                      602M  602M     0 100% /media/GRTMPVOL_CN
/dev/mapper/lvmvmhard-lvmlv1  4.0G  136M  3.7G   4% /lvlvm1
[root@kvm /]#




LVM相关术语

物理存储介质(The physical media)

这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。

物理卷(physical volume)

物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

卷组(Volume Group)

LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

逻辑卷(logical volume)

LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

PE(physical extent)

每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

LE(logical extent)

逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。



参考:

http://l.51yip.com/

百度