LVM是Logical Volume Manager(逻辑卷管理)的简写,它是LINUX环境下对磁盘分区进行管理的一种机制,LVM利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。LVM重点在于可以弹性的调整文件系统的容量,而并非在于性能与数据安全上面(这些是RAID的功能).通过LVM,可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,在增删分区时无需担心某个硬盘上没有足够的连续空间,可以整合多个物理分区在一起,让这些分区看起来就像是一个磁盘一样,而且,还可以将其他物理分区加入或者从这个LVM管理的磁盘中删除,如此一来,在整个磁盘空间使用上,相当的有弹性。

LVM的基本组成块(building blocks)如下:

  • 物理卷Physical volume (PV):

    可以在上面建立卷组的块设备,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file ) 。实际的分区需要调整系统标识符(System ID)成为8e(LVM的标识符),然后再经过pvcreate的命令将它转换成LVM最底层的物理卷(PV),之后才能将这些PV加以利用,而调整SystemID的方法就是通过fdisk,物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)。

  • 物理扩展Physical extent (PE):硬盘可供指派给逻辑卷的最小单位(通常为4MB)

    LVM默认使用4MB大小的PE块,而LVM的VG最多仅能含有65534个PE,因此默认最大256G。PE是整个LVM最小的存储块,这个有点类似与文件系统的block,所有文件的写入都由PE来完成.

  • 卷组Volume group (VG):将一组物理卷组合成为一个管理单元

    所谓的LVM大磁盘就是将许多PV整合成这个VG,所以VG就是LVM组合PV形成的大磁盘。那么这个大磁盘最大可以达到多少容量呢?这与PE有关,因为每个VG最多仅能包含65534个PE。如果使用LVM默认的参数,则一个VG最大可以达到256GB的容量.

  • 逻辑卷Logical volume (LV):虚拟分区,由物理区域(physical extents)组成

    最终的VG还会被切成LV,这个LV就是最后可以被格式化使用,类似于分区。LV的设备文件提供了对lv的的访问,LV的设备文件名通常是:

    /dev/VG_NAME/LV_NAME

    /dev/mapper/VG_NAME-LV_NAME

  • 逻辑扩展—LE(Logical Extent)

    逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。在同一个卷组中,LE的大小和PE是相同的,并且--对应。

LVM可以弹性更改文件系统的容量,这个怎么办到的呢,其实就是通过交换PE来进行的,将原本LV内的PE转移到其他设备中以降低LV容量,或将其他设备的PE加到此LV中加大容量.通过PV,VG,LV的规划后,再利用mkfs就可以将你的LV格式化成可利用的文件系统。

优点

  • 比起正常的硬盘分区管理,LVM更富于弹性:

  • 使用卷组(VG),使众多硬盘空间看起来像一个大硬盘。

  • 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。

  • 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。

  • 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。

  • 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。LVM上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。

  • 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。

  • 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。

缺点

  • 在系统设置时需要更复杂的额外步骤。

-------------LVM实作流程-------------------

  1. 先分2个分区,每个分区容量均为10G,调整Sytem ID为8e

  2. 全部分区整合为一个VG,VG名称为testVG,且PE大小为16MB

  3. 全部的VG容量都丢给LV,LV的名称为testLV

  4. 将这个LV格式化为ext4的文件系统,且挂载在/mnt/lvm中

准备分区------------------:

查看系统中可用的硬盘:

[root@localhost ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8,  0 Mar  5 03:30 /dev/sda
brw-rw----. 1 root disk 8,  1 Mar  5 03:30 /dev/sda1
brw-rw----. 1 root disk 8,  2 Mar  5 03:30 /dev/sda2
brw-rw----. 1 root disk 8, 16 Mar  5 03:30 /dev/sdb
brw-rw----. 1 root disk 8, 32 Mar  5 03:30 /dev/sdc

准备分区并调整分区System ID 为 8e,分区结果:

[root@localhost ~]# fdisk /dev/sdbDevice Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM
[root@localhost ~]# fdisk /dev/sdcDevice Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1306    10490413+  8e  Linux LVM

PV价段相关的命令-----------:

  • pvcreate:将物理分区新建成为PV

  • pvscan:查询当前系统里面任何具有pv的磁盘

  • pvdisplay:显示系统上的PV状态

  • pvs : 简略查看所有物理卷的状况

  • pvremove:将PV属性删除,让该分区不具有PV属性

  • lvmdiskscan: 扫描用可作物理卷的块设备

  • pvresize :重新设置物理卷的大小可以在LVM正在使用物理卷的时候使用这个命令

  • pvremove: 删除物理卷,当物理卷里的扩展没有被使用时可以删除

  • pvchange :改变LV的属性

    防止一个或者多个物理卷的剩余空间进行物理扩展分配pvchange -x {n|y}   pv分区

    -x, --allocatable {y|n} : 允许或不允许分配物理扩展

    -x y 允许在之前禁止进行分配的地方分配扩展

查看当前系统中具有pv的设备:

[root@localhost ~]# pvscanNo matching physical volumes found

使用刚创建的两个分区创建pv:

[root@localhost ~]# pvcreate /dev/sd{b,c}1Physical volume "/dev/sdb1" successfully createdPhysical volume "/dev/sdc1" successfully created

再次查看当前系统中具有pv的设备:

[root@localhost ~]# pvscanPV /dev/sdb1                      lvm2 [10.00 GiB]PV /dev/sdc1                      lvm2 [10.00 GiB]Total: 2 [20.01 GiB] / in use: 0 [0   ] / in no VG: 2 [20.01 GiB]

上面分别显示的是每个PV的信息与系统所有PV的信息,尤其最后一行,显示的是:

整体PV的量 / 已经被使用到VG的PV量 / 剩余的PV量

其实就是一个物理分区,将它变成了LVM的物理逻辑卷,供以后去用的。

显示PV的简略信息:

[root@localhost ~]# pvsPV         VG   Fmt  Attr PSize  PFree/dev/sdb1       lvm2 a--  10.00g 10.00g/dev/sdc1       lvm2 a--  10.00g 10.00g

PV    :实际的分区设备名

VG    :因为尚未分配出去,所以还是空白

Fmt   :物理卷的元数据格式(lvm2或者lvm1)和lvm的版本有关

Attr  :物理卷的状态:可分配(a)或者导出的(x)

PSize :物理卷的容量说明

PFree :物理卷空闲容量

更加详细的列出系统上面每个PV的信息:

[root@localhost ~]# pvdisplay"/dev/sdb1" is a new physical volume of "10.00 GiB"--- NEW Physical volume ---PV Name               /dev/sdb1     <--实际的分区设备名VG Name                             <--因为尚未分配出去,所以还是空白PV Size               10.00 GiB     <--容量说明Allocatable           NO            <--是否已经被分配给VGPE Size               0             <--在此PV内的PE大小,因为尚未创建VG,所以是0Total PE              0             <--共分出几个PEFree PE               0             <--剩余还有多少个PE,也就是没有被LV用掉的PE数量Allocated PE          0             <--可被分配出去的PE数量(实际能不能被分配看这个参数)PV UUID               x4Wak9-RB8t-9gbQ-f2M6-uSgA-I3A1-9Uw1Lb"/dev/sdc1" is a new physical volume of "10.00 GiB"--- NEW Physical volume ---PV Name               /dev/sdc1VG Name    PV Size               10.00 GiBAllocatable           NOPE Size               0Total PE              0Free PE               0Allocated PE          0PV UUID               zIs9mx-crfV-3ECe-HWMm-3w4j-sWwe-ZF6N4O

VG价段相关的命令-----------:

  • vgcreate:新建VG的命令,它的参数比较多

  • vgs: 查看vg的摘要信息

  • vgscan:查看系统上是否有VG存在

  • vgdisplay:显示目前系统上面的VG状态

  • vgextend:在VG内增加额外的PV  vgextend VGNAME PV的设备文件名

  • vgreduce:在VG内删除PV        vgreduce VGNAME PV的设备文件名

  • vgchange:vgchange –a {y|n} VGNAME 使卷组激活或使卷组失效

  • vgremove:删除一个VG(删除不包含逻辑卷的卷组)

  • vgmerge:合并卷组

  • vgsplit:分割卷组

  • vgrename重命名卷组vgrename vgrename /dev/vg0 /dev/my_vloume_group

  • vgexport 和vgimport :将卷组移动到其它系统中

  • vgmknodes :重新创建卷组目录和逻辑卷专用文件

  • vfcrestore:备份卷组元数据,还可为卷组中的所有物理卷从归档中恢复卷组的元数据

每次修改卷组和逻辑卷配置时都会自动进行元数据备份和归档

元数据备份保存在/etc/lvm/backup文件中

元数据归档保存在/etc/lvm/archives中

PV的名字就是设备文件名,而VG是可自己设置名字的。

vgcreate [-s N[mgt]] VG名称 PV名称

-s:后接PE大小,单位可以是m,g,t(大小写均可)

创建名为testVG的VG:

[root@localhost ~]# vgcreate -s 8M  testVG  /dev/sd{b,c}1Volume group "testVG" successfully created

查看当前系统上是否有VG:

[root@localhost ~]# vgscanReading all physical volumes.  This may take a while...Found volume group "testVG" using metadata type lvm2

可以看到Fmt元数据类型为lvm2

查看VG的摘要信息:

[root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize  VFreetestVG   2   0   0 wz--n- 20.00g 20.00g

Attr卷组的状态:

w:可写入

r:只读

z:可重新定义大小

x:导出的

p:不完整的

c:群集的

更加详细的列出系统上面每个VG的信息:

[root@localhost ~]# vgdisplay--- Volume group ---VG Name               testVG        <--卷组名称System ID                           <--lvm的系统IDFormat                lvm2          <--卷组的元数据格式Metadata Areas        2             <--元数据所在位置Metadata Sequence No  1  VG Access             read/writeVG Status             resizable     <--VG的状态 可以使用vgchange改变MAX LV                0Cur LV                0             <--当前卷中的LV数Open LV               0Max PV                0Cur PV                2             <--当前VG中包含多少个PVAct PV                2             <--活动的pvVG Size               20.00 GiB     <--vg的大小 等于所在pv相加PE Size               8.00 MiB      <--pe的尺寸Total PE              2560          <--当前卷中所包含的PEAlloc PE / Size       0 / 0         <--pv的使用比例Free  PE / Size       2560 / 20.00 GiB   <--卷组中可用物理扩展数目VG UUID               RgaF3G-LTrg-gXQZ-NMdq-MnhX-Wgho-ra0Mil

最后三行指的就是能够使用的PE情况,由于尚未切分出LV,所以是所有的PE均可自由使用

创建了VG以后再次使用pvdsiplay查看pv:

[root@localhost ~]# pvdisplay--- Physical volume ---PV Name               /dev/sdb1VG Name               testVGPV Size               10.00 GiB / not usable 4.54 MiBAllocatable           yesPE Size               8.00 MiBTotal PE              1280Free PE               1280Allocated PE          0PV UUID               x4Wak9-RB8t-9gbQ-f2M6-uSgA-I3A1-9Uw1Lb--- Physical volume ---PV Name               /dev/sdc1VG Name               testVGPV Size               10.00 GiB / not usable 4.54 MiBAllocatable           yesPE Size               8.00 MiBTotal PE              1280Free PE               1280Allocated PE          0PV UUID               zIs9mx-crfV-3ECe-HWMm-3w4j-sWwe-ZF6N4O

再创建了VG以后,就可以查看pe的大小了

LV阶段相关命令————–:

创造出VG这个大磁盘后,接下来为这个创建lv并对其进行分区,通过LV功能来处理。

  • lvcreate:新建LV

  • lvscan:查询系统上面的LV

  • lvremane:重新命名逻辑卷   lvrename vg0 lvold lvnew

  • lvs: 查看lv的摘要信息

  • lvdisplay:显示系统上面的LV状态

  • lvextend:在LV里面增加容量

  • lvreduce:在LV里面减少容量

  • lvremove:删除一个LV

  • lvchange :修改逻辑卷组的参数 lvchange -a {y|n}使lv生效或失效

  • lvresize:对LV进行容量大小的调整

lvcreate [-L N[mgt]] [-n LV名称] VG名称

lvcreate [-l N] [-n LV名称] VG名称

-L:后面接容量,单位是m,g,t(大小写均可),要注意的是这个数必须是PE大小

的整 数倍。

-l:后面接PE的个数,而不是容量

-n:后面接LV的名称

查看PV的大小:

[root@localhost ~]# vgdisplay  |  grep 'Total PE'Total PE              2560

创建一个大小为10G的LV:

[root@localhost ~]# lvcreate -L 10G  -n testLV testVGLogical volume "testLV" created

查看LV的摘要信息:

[root@localhost ~]# lvsLV     VG     Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync ConverttestLV testVG -wi-a---- 10.00g

Attr逻辑卷的状态:

字节1:卷类型 :镜像m ,不带初始同步的镜像M,源o ,pvmove p, 快照s ,不可用快照s,虚拟v

字节2:权限 可写入w 只读r

字节3:分配策略 持续c,正常n,任意a ,继承i,

字节4:固定的副号码m

字节5:激活a ,暂停s,不可用快照l,不可用暂停快照S,不带表格的映射d,还有i

字节6:设备开放o

更加详细的列出系统上面每个LV的信息:

[root@localhost ~]# lvdisplay--- Logical volume ---LV Path                /dev/testVG/testLV  <--LV的设备路径LV Name                testLV              <--LV的名字VG Name                testVG              <--卷组名LV UUID                raOisN-DzwI-bKRV-bu1a-fAJm-M53L-5y26DhLV Write Access        read/writeLV Creation host, time localhost.localdomain, 2014-03-05 04:20:45 +0800LV Status              available# open                 0LV Size                10.00 GiBCurrent LE             1280                <--LE的大小和PE一一对应Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     256Block device           253:0

VG的名称为testVG,但是LV要用全名,而不是lv的名称testLV:

/dev/testVG/yidaolv或/dev/mapper/testVG-testLV

[root@localhost ~]# ls -l /dev/{mapper/testVG-testLV,testVG/testLV}
lrwxrwxrwx. 1 root root 7 Mar  5 04:20 /dev/mapper/testVG-testLV -> ../dm-0
lrwxrwxrwx. 1 root root 7 Mar  5 04:20 /dev/testVG/testLV -> ../dm-0

可以看到她们都是链接文件,它们都指向/dev/下以dm开头的文件

查看系统识别的lvm设备其实是以dm开头的设备:

[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name8       16  125829120 sdb8       17   10490413 sdb18        0  125829120 sda8        1     204800 sda18        2   51200000 sda28       32  125829120 sdc8       33   10490413 sdc1253        0   10485760 dm-0

接下来,我对LV进行分区格式化并挂载:

[root@localhost ~]# mke2fs  -t ext4 /dev/testVG/testLV
[root@localhost ~]# mount -t ext4 /dev/testVG/testLV /backup/
[root@localhost ~]# df -lh /backup/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/testVG-testLV9.9G  151M  9.2G   2% /backup

转载于:https://blog.51cto.com/werewolftj/1367766

LVM---基本创建和使用相关推荐

  1. linux LVM的创建和管理

    LVM是Logical Volume Manager(逻辑卷管理器)的简写,它为主机提供了更高层次的磁盘存储管理能力.LVM可以帮助系统管理员为应用与用户方便地分配存储空间.在LVM管理下的逻辑卷可以 ...

  2. LVM的创建与快照和SSM存储管理器的使用

    LVM:Logical Volume Manager(逻辑卷管理) 概念(名词): PV:Physical Volume(物理卷) VG:Volume Group(卷组) LV:Logical Vol ...

  3. LVM的创建扩展缩减与删除

    LVM Logical Volume Manager 逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制. 下面就来实现逻辑卷的 增 删 减   测试环境 Red Hat Enterprise ...

  4. 用LVM快照创建虚拟机

    当我们需要批量的部署我们的XEN 或者KVM的时候,LVM的snap功能是个不错的选择.   #lvcreat -L 2G -s -n  lv-virt2 /dev/vg01/lv-virt1 为/d ...

  5. 【Linux】LVM的创建及使用

    文章目录 1. 创建LVM的基本步骤 2. LVM常用命令 3. 创建使用LVM逻辑卷 1) 创建PV a. 我们已经添加了一个sdb磁盘 b. 接下来我们创建4个分区: c. 查看分好的分区: d. ...

  6. linux系统怎么做快照,linux LVM快照创建步骤

    1.首先将硬盘sdb分4个区每个区大小200M,分别是sdb{5,6,7,8}.后将四个分区建立pv 2.之后把pv加入vg此处引入PE的概念. 由于vg是多个PE(块)组成的,而且每个vg块的PE最 ...

  7. Linux下的LVM创建以及Linux快照卷

    通过最的学习,我加深了对LVM的理解,在这里,我将它写成博客,一是方便自己记忆,二是让Linux的入门学习者一起学习一下. 首先我们引入LVM的概念,并展开详细的说明,主要是近期学习的看法,我们先看一 ...

  8. GNU/Linux下LVM配置管理以及快照卷、物理卷、卷组、逻辑卷的创建和删除

    LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性.最大的优点是在不损伤数据的前提下调整存储空间的大小. 本篇主要讲述L ...

  9. linux lvm添加磁盘,Linux下添加磁盘创建lvm分区

    shell> fdisk /dev/xvdb #### 选择磁盘 Command (m for help): m #### 帮助 Command action a toggle a bootab ...

  10. [收藏]实践参考:parted创建硬盘分区并创建LVM

    从RHEL5开始,RHEL有了新的分区工具,parted,最大的亮点就是可以分2TB以上的分区,而且操作简单,个人感觉比fdisk好使 现在用一块硬盘/dev/sdb 使用parted分区,并且创建L ...

最新文章

  1. 焦李成教授谈深度神经网络发展历程
  2. 用神经集认识手写数字
  3. [译]Effective Kotlin系列之探索高阶函数中inline修饰符(三)
  4. SpringSecurity OAuth2介绍
  5. idea断点_IDEA Debug 无法进入断点的解决方法
  6. 静物摄影用光技巧_摄影技巧:摄影如何用光?摄影大师总结的10点,非常受用!...
  7. 立根融资租赁:内部系统平台上云
  8. 网络KPI异常检测之时序分解算法
  9. gispython定义查询_Python与开源GIS:SpatiaLite 中的基本SQL数据库查询用法
  10. 【雷达通信】基于matlab SVM识别雷达数据【含Matlab源码 305期】
  11. Intellij IDEA 一些让人爱不释手的小技巧
  12. outlook左侧栏隐藏_Outlook 2007待办事项栏中没有全天活动
  13. ATTCK v10版本战术介绍执行(下篇)
  14. 基于BERT做中文文本分类(情感分析)
  15. 安卓神秘事件之点击事件不响应
  16. Qt控件边框颜色设定
  17. 7-8 输出上三角队形,数值从大到小
  18. HTC Android系统 自定义ROM定制图文教程
  19. 【WB32库开发】第12章(上)TIM1高级定时器——PWM输入捕获
  20. Ubuntu输入法将显示繁体更换为显示简体

热门文章

  1. DCMTK:读取DICOM数据集的测试程序
  2. VTK:PolyData之WarpSurface
  3. VTK:PolyData之OrientedBoundingCylinder
  4. OpenCV在图像中寻找轮廓
  5. C语言查找单链列表的第k个元素的算法(附完整源码)
  6. C++确定数字的奇偶校验的算法实现(附完整源码)
  7. OpenGL球体的Phong渲染
  8. C语言十进制数转换为八进制(附完整源码)
  9. QT的QDnsLookup类的使用
  10. 众唱点歌机会显示无法连接服务器,目前众多厂商唱多的服务器附加存储缺点分析...