LVM技术原理详解与逻辑卷的应用

Posted 抛物线.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVM技术原理详解与逻辑卷的应用相关的知识,希望对你有一定的参考价值。

本篇博客内容将介绍LVM逻辑卷技术下一篇介绍RAID技术以及RAID性能测试

这是我很久之前录的在优酷上面的lvm技术
https://v.youku.com/v_show/id_XMzgxNjI0NTk0OA==.html?spm=a2h0k.11417342.soresults.dtitle

1.1LVM逻辑概述问题

试想有一大随看业务的增加, 你的文件系统负载会越来越大,终于到了空间不足的情况,而如果我们还在使用传统的分区方式进行磁盘管理,就不得不将现有的所有分区全部删除,并重新规划新的存储解决方案。其实从一开始我们就需要-种管理机制,她能帮助我们动态地管理存储,而LVM就提供了这种功能。

  LVM (Logical Volume Manager) 是基于内核的一种逻辑卷管理器,LVM 适合于管理大存储设备,
  并允许用户动态调整文件系统的大小。
  此外,LVM的快照功能可以帮助我们快速备份数据。
  LVM为我们提供了逻辑概念上的磁盘,使得文件系统不再关心底层物理磁盘的概念。

使用LVM创建逻辑卷需要我们提前了解以下几个概念。

      ◎物理卷(Physical Volume, PV):物理卷是LVM的最底层概念,是LVM的逻辑存储
      块,物理卷与磁盘分区是逻辑的对应关系。
      生活中的圆形的积木在没有附加工具时,是不能相互堆叠且稳定的(上面的积木很快会掉下来),
      但方形却有很强的组合功能(多个方向堆叠在一起不会倒塌),
      我们可以假设普通的分区是一个圆形,多个分区是不能合并组合的,
      而LVM中的物理卷可以假设为方形,多个LVM物理卷可以合并或拆分,从而实现容量的扩容和缩减。
      LVM提供了命令工具可以将分区转换为物理卷,通过组合物理卷可以生成卷组。


     ◎ 卷组(Volume Group, VG): 卷组是LVM逻辑概念上的磁盘设备,
      通过将单个或多个物理卷组合后生成卷组。
      卷组的大小取决于物理卷的容量以及个数。在CentOS 7系统中,对容量与个数没有限制。

	  ◎物理长度 (Physical Extent, PE): 物理长度是将物理卷组合为卷组后,
	  所划分的最小存储单位,即逻辑意义上磁盘的最小存储单元。
	  LVM默认PE大小为4MB。
	  这里等下我们使用lvdisplay可以看到
	  
     ◎逻辑卷(Logical Volume, LV): 逻辑卷就是LVM逻辑意义上的分区,
     我们可以指定从卷组中提取多少容量来创建逻卷,最后对逻辑卷格式化并挂载使用。
     
    下图 LVM整体概念的示意图,图中可以看出,我们将物理磁盘分区可用转换为LVM的物理卷(PV), 
     多个物理卷组合为卷组(VG),逻辑卷(LV) 是从卷组中提取出来的存储空间,
     最后我们可以将逻辑卷挂载到某个挂载点目录上。


通过对以上概念的了解,接下来要说明具体使用到的命令。将普通分区转换为物理卷的命令是pvcreate,将物理卷组合为卷组的命令是vgcreate,从卷组中提取容量创建逻辑卷的命令是Ivcreate创建完成后可以分别使用pvdisplay、vgdisplay、 Ivdisplay 查看效果。

  1. pvcreate
描述:使用LVM对磁盘或分区进行初始化。
用法: pvcreate [选项]物理卷[物理卷..]
例子:
[root@centos7 ~]# pvcreate /dev/sdc4 /dev/sde
[root@centos7 ~]# pvcreate /dev/sdb1,2,3
  1. vgcreate
      描述:创建卷组。

      用法: vgcreate [选项]卷组名称物理设备路径[物理设备路径..]
      例子:

      [root@centos7 ~] # vgcreate test vg1 /dev/sdb5 /dev/sdb6

      [ root@centos7 ~]# vgcreate test vg2 -s 16M /dev/sdc5 /dev/ sdc6

      #-s参数用来指定PE大小为16MB 
  1. Ivcreate
      描述:从卷组中提取存储空间,创建逻辑卷。

      用法:  Ivcreate [选项]卷组名称或路径[物理卷路径]

      选项: -1指定使用多少个卷组中的PE创建逻辑卷,PE的容量在创建卷组时已经指定。

      -L直接指定逻辑卷的容量大小,单位可以是b(B)、s(S)、k(K)、m(M)、g (G)、

      t (T)、p (P)或e (E)-n指定逻辑卷名称。
例子:
[root@centos7 ~]# lvcreate -L 2G -n test 1v1 test vg1
#从test vg1卷组中提取2GB容量,创建名称为test_ 1v1 的逻辑卷
[root@centos7 ~]# lvcreate -1 200 -n test 1v2 test vg2
#使用200个PE创建逻辑卷,前面案例中定义了PE大小为16MB
[root@centos7 ~]# lvcreate -L 2G -n test 1v1 test vg1 /dev/ sdb6
#指定使用test_ vg1卷组中的/dev/sdb6这个物理卷的存储空间,创建名称为test_ lv1 的逻辑卷

1.2 创建LVM分区实例

这里我们使用sdb这块500GB的硬盘创建四个100GB 的分区,并使用这四个分区创建一个名称为test vg的卷组,最后从该卷组中创建出两个大小为 120GB的逻辑卷,名称分别为
test web、test data。

1.使用fdisk创建分区

[rootacentos7 ~]# fdisk /dev/sdb
Command (m for help) : n
Command action
e extendedo
p primary partition (1-4)
irst sector (2048-1048575999, default 2048):
Using default value 2048
Last sector, +sectors or +sizeK,M,G(2048-1048575999, default.1048575999) : +100G
Command (m for help): n
Command action
e  extended
p  primary partition (1-4)
p
Partition number  (1-4) : 2
First sector (20971 72481048575999, default20971 7248):
Using default value 20971 7248
Last sector, +sectors or +size(K,M,G) (20971 7248-1048575999, default 1048575999):+100G

p
Command (m for help) : nCommand action .
extended
primary partition (1-4)

p
Partition number (1-4) : 3
First sector 1419432448-1048575999,loin~ dofalt wa11e 41 9432448
default 419432448):
First sector (4194324481048575999, default  41 94324481 :

      Using default value 419432448  
      defaultLast  sector, +sectors or +size(K,M,GJ  1419432448-1I 048575999,1048575999) : +100G

      Command (m for help) : n
      Command action

      e  extended

      p  primary partition (1-4)
      e

      Selected partition 4

      First sector (629147648-1048575999, default 629147648) :Using default value  629147648

      Last sector,  +sectors or +size(K,M,G] (629147648-1048575999,  default1048575999) :

      Using default value 1048575999

      Command (m for help) : n

      First sector (629149696-1048575999, default 629149696) :Using default value 629149696

Last  sector ,  tsectors or +size(K,M,GJ1048575999) : +100G

      Command (m for help) : tPartition number  (1-5):1.

      Hex code (type L to list codes) : 8e(5t4↑%x MtHJAJr..)Command (m for help) : Pt['ïJ ïßG h m/>.Device Boot ./dev/sdb1/dev/sdb2/dev/sdb3/dev/sdb4/dev/ sdb5

      start

      204 820971 724841 943244 862914 7648629149696.

      End .

      20971 72 474194324476291 476471048575999838864895

(629149696-1048575999, default

    

      Blocks  Id Sys tem

      104857600  8e Linux LVM10485 7600  8e  Linux LVM104857600  8e  Linux LVM20971 417 6  5  Extended10485 7600  8e  Linux LVM

      Command (m for help) : w

      The partition table has been altered!

      Calling ioctl () to re-read partition table.Syncing disks.



      [root@centos7 ~]# partprobe /dev/sdb

2 使用pvcreate 创建物理卷并使用display查看结果
[root@centos7 ~]# pvcreate /dev/sdb[1,2,3,5]
[root@centos7 ~]# pvdisplay

      "/dev/sdb1" is a new physical  volume of "100.00 GiB"--  NEW Physical volume ---

      PV Name  /dev/sdb1  

      PV Size  100.00 GiB  

Free  PE  OAl located PE  O

PV UUID  MEO4oH-He1C-QGeX-JR3W- PnO0- iaKo- inQmw


3.使用vgcreate创建卷组并使用vgdisplay查看结果
[rootacentos7 ~] # vgcreate test vg /dev/sdb1,2,3,5-”一一  Volume group
VG Name   test_ vg  System ID
…………………………
4 . 使用lvcreate创建逻辑卷,并使用display查看结果
[root@centos7 ~]# lvcreate -n test web -L 120G test_ vg
[root@centos7 ~]# lvcreate -n test data -l 30720 test_ _vg
[root@centos7 ~]# lvdisplay

      ---  Logical vol ume  ---

5. 格式化并挂载
[root@centos7 ~]# mkfs.xfs /dev/test_vg/test_web
[root@centos7 ~]# mkfs.xfs /dev/test_vg/test_data
[ root@centos7 ~]# mkdir -p /test/ web, data
[ root@centos7 ~]# cat >> /etc/fstab << EOF

> /dev/test vg/test data /test/data  xfs  defaults 0 0
>/dev/test vg/test web /test/web  xfs defaults  00
>EOF

[ root@centos7 ~]# mount -a

[root@centos7 ~]# df -h  #查看文件系统挂载状态

5 修改LVM分区容量

随着时间的推移,逻辑卷test data 现有的存储空间已经不能满足企业大业务量的需要,我们需要将存储容量增大至240GB时,LVM随时可以帮助我们动态调整文件系统的大小。
由于test vg这个卷组还有足够的剩余空间可以划分给逻辑卷,所以我们可以直接使用lvextend命令调整逻辑卷大小。
但lvextend仅调整逻辑卷大小,使用该命令调整完逻辑卷大小后,还需要使用xfs_ growfs 命令更新文件系统的大小,具体方法如下:

[root@centos7 ~]# lvextend -L +120G /dev/test_ vg/test data #扩 容逻辑卷
[ root@centos7 ~]# lvs  #查看逻辑卷已经扩容完成
[root@centos7 ~]# df -h  #文件系统没有变化
[root@centos7 ~]# xfs_ growfs /dev/test vg/test data  #调整文件系统大小
[root@centos7 ~]# df -h  #调整后查看文件系统大小,有变化

此外,当我们的卷组没有足够的空间划分给逻辑卷时,LVM的卷组也是可以动态调整容量大小的,这时需要使用fdisk创建一个新的分区, 并使用pvcreate命令转换为物理卷格式,接着通过vgextend将新的物理卷追加至现有的卷组空间中,最后使用Iextend调整逻辑卷的容量。
下面我们再次扩展逻辑卷test data的存储空间至360GB。

root@centos7 ~]# fdisk /dev/sdb

      Command (m for help) : n

      First sector (8388669441048575999,default 838866944) :Using default value 838866944

      Last  sector ,  +sectors or+size(K,M,GJ (8388669441048575999,1048575999) :

      Using default value 1048575999

      Command (m for help) : t

      Partition number (1-6) : 6

      Hex code (type L to list codes) : 8e

      Changed system type of partition 6 to 8e (Linux LVM)Command (m for help) : w



[root@centos7 Desktop]# pvcreate /dev/ sdb6

[root@centos7 Desktop]# vgextend test vg /dev/ sdb6
[root@centos7 Desktop]# vgdisplay test_ _vg

      一一 一  Volume group ---

      VG Name  test vg

      VG Size  499.98 GiB  #息容量499GBA1loc PE / Size  92160 / 360. 00 GiB  
      #已錏使用360GB
      Free  PE / Size  35835 / 1 39.98 GiB  
      #剩余139GB〈以上輸出信息部分内容省略)

      lrootecentos7 ~]+ 1vextend -L 360G /dev/test_ _vg/test. data

      #將還緝巻折展至360GB 
      [rootecentos7 ~# xfs. gxowts /dev/test _vg/test_data
      [root@centos7 ~# df -h

      提示

      在企止生戸坏境中y要提前好数据的各备份エ作。

6 删除LVM

当我们不再需要逻辑份分区时,可以使用LVM命令轻松地删除之前创建的物理卷、卷组、逻辑卷。删除的顺序应该与创建时的顺序相反,也就是卸载文件系统、删除逻辑卷、删除卷组、删除物理卷这样的顺序。卸载文件系统时需要注意,如果有必要,应该更新(et/fstab文件。

 [ root@centos7 ~]# umount /dev/test_vg/test_ data
 [ root@centos7 ~]# umount /dev/test_vg/test_web
 [root@centos7 ~# lvremove /dev/test_vg/test_data

      Do you really want to remove active logical volume test_ data? [y/n]: Y
      Logical volume "test_ data" successfully removed
      [ root@centos7 ~]# lvremove /dev/test_vg/test_ web

      Logical volume test_vg/test_web contains a fi lesystem in use.
      [ root@centos7 Desktop]# lvremove /dev/test_vg/test_web

      Do you really want to remove active logical volume test_ web? [y/n] : y
      Logical volume "test_web" successfully removed
      [root@centos7 Desktop]# vgremove test_vg

      Volume group "test_vg" successfully removed

好了以上便是整个实例操作,下面一篇介绍raid技术
附上几张之前做的PPT
更好的了解LVM




以上是关于LVM技术原理详解与逻辑卷的应用的主要内容,如果未能解决你的问题,请参考以下文章

LVM的拉伸与缩小 Linux命令详解

Linux LVM逻辑卷详解

lvm逻辑卷的管理

Linux LVM逻辑卷配置过程详解

Linux LVM逻辑卷简述

LVM原理与实现过程