逻辑卷管理器(lvm)

author author     2022-08-02     256

关键词:

1、逻辑卷管理器(LVM)

(1)逻辑卷管理器(LVM,logical volume manager)可以整合多个物理分区在一起,让这些分区看起来就像一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个LVM管理的磁盘中删除。这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性,同时LVM还有快照功能。

(2)逻辑卷管理器的基本术语 物理卷(PV):简单说,物理卷就是磁盘或者是磁盘分区,由pvcreate命令创建。 物理扩展块(PE):LVM默认使用4MB的PE块,在LVM的卷组总最多只能含有65534个PE,因此默认的PE大小是256G。PE是整个LVM最小的存储块。 卷组(VG):将多个物理卷,使用vgcreate命令整合成一个大的磁盘,即为卷组,卷组的大小有物理卷的数量和大小决定。 逻辑卷(LG):逻辑卷是在卷组的基础上可以被格式化为文件系统的分区,大小有PE的块数决定。使用lvcreate命令创建。

技术分享

技术分享

2、创建物理卷(physical volume)

pvcreate:将物理分区新建成PV
    -f:强制创建物理卷,不需要用户确认;
    -u:指定设备的UUID;
    -y:所有的问题都回答“yes”;
    -Z:是否利用前4个扇区。
pvdisplay:显示当前系统上的PV状态
    pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID    
pvscan:查询磁盘上所有具有PV的磁盘
    -d:调试模式
    -e:仅显示属于输出卷组的物理卷
    -n:仅显示不属于任何卷组的物理卷
    -s:短格式输出
    -u:显示UUID
pvremove:将PV删除,让该分区不具有PV属性
pvmove:用来将一块盘上的数据移到另一块盘,可以移动整块盘的数据,也可以移动指定 extent 范围的数据
    eg:pvmove /dev/sdb /dev/sdc

3、创建卷组(volume group)

vgcreate:创建一个VG
    -l:卷组上允许创建的最大逻辑卷数;
    -p:卷组中允许添加的最大物理卷数;
    -s:卷组上的物理卷的PE大小(单位 M G T大小都可)。  
vgscan:查找系统上是否有VG
vgdisplay:显示目前系统的VG状态
    -A:仅显示活动卷组的属性;
    -s:使用短格式输出的信息。
vgextend:增加VG的额外PV
    -t:仅测试。
vgreduce:减少(删除)VG的PV
    -a:如果命令行中没有指定要删除的物理卷,则删除所有的空物理卷;
    --removemissing:删除卷组中丢失的物理卷,使卷组恢复正常状态。
vgchange:设置卷组是处于活动状态还是非活动状态
    -a:设置卷组的活动状态
vgremove:删除一个VG(先做pvmove ,再做vgremove)
    -f:强制删除

4、创建逻辑卷(logical volume)

lvcreate:新建一个LV
    -L:指定逻辑卷的大小,后接容量,此容量需是PE的整数倍,单位为“kKmMgGtT”
    -l:指定逻辑卷的大小,后接PE个数
    -n:后接LV的名称
    -s:创建快照
lvscan:查询系统上的LV
    -b:显示逻辑卷的主设备和次设备号
lvdisplay:显示系统上的LV状态
lvextend:在LV里面增加容量
lvreduce:在LV里面减少容量
lvremove:删除一个LV
lvresize:调整LV的大小
resize2fs:调整ext系列系统LV大小
xfs_growfs:调整xfs格式LV大小

5、示例 (虚拟机环境)

[[email protected] ~]# fdisk /dev/sdb (使用fdisk命令创建了四个分区)
[[email protected] ~]# lsblk /dev/sdb 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  200G  0 disk 
├─sdb1   8:17   0    5G  0 part 
├─sdb2   8:18   0    5G  0 part 
├─sdb3   8:19   0   20G  0 part 
├─sdb4   8:20   0    1K  0 part (扩展分区)
└─sdb5   8:21   0   10G  0 part (逻辑分区)
[[email protected] ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[[email protected] ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created
[[email protected] ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created
[[email protected] ~]# pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created
[[email protected] ~]# pvs (建立了4个PV,可以用pvdisplay命令查看更详细信息)
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1       lvm2 ----  5.01g  5.01g
  /dev/sdb2       lvm2 ----  5.01g  5.01g
  /dev/sdb3       lvm2 ---- 20.01g 20.01g
  /dev/sdb5       lvm2 ---- 10.00g 10.00g
[[email protected] ~]# vgcreate vgtest /dev/sdb{1,2,3,5} (创建名为vgtest的卷组)
  Volume group "vgtest" successfully created
[[email protected] ~]# vgdisplay (vgtest卷组的详细信息)
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size               40.02 GiB
  PE Size               4.00 MiB (此例子用默认的PE大小)
  Total PE              10246
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10246 / 40.02 GiB
  VG UUID               Xe9pMF-tyCN-Bk5z-ZPub-TVHA-DCVm-hRVyqd
[[email protected] ~]# lvcreate -n lvtest -L 15G vgtest 
  Logical volume "lvtest" created. (在vgtest卷组创建了一个15G的逻辑卷lvtestS)
[[email protected] ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                qZcbaO-EX0V-QUhw-oDig-Ldoc-5Amp-X8jyUB
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-08-29 22:15:31 +0800
  LV Status              available
  # open                 0
  LV Size                15.00 GiB
  Current LE             3840
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
[[email protected] ~]# mkfs.ext4 /dev/vgtest/lvtest (将lvtest格式化为ext4系统)
[[email protected] ~]# mount /dev/vgtest/lvtest /mnt/lvtest(挂载,若/mnt/lvtest目录需事先存在)
[[email protected] ~]# df -h /mnt/lvtest (已经创建好一个15G的LV)
  Filesystem                Size  Used Avail Use% Mounted on
  /dev/mapper/vgtest-lvtest  15G   38M   14G  1%  /mnt/lvtest
如果要每次启动系统时自动挂载,需将以下字符写到/etc/fstab文件中
  /dev/vgtest/lvtest(建议用UUID)  /mnt/lvtest  ext4  defaults  0  0

至此一个完整的LVM已经创建好了,接下来补充一下逻辑卷的扩展和压缩

[[email protected] ~]# lvextend -L +5G /dev/vgtest/lvtest (增加5G空间,“+n”表示增加n空间;直接给定一个数字n,则表示增加到n空间,单位 M G T )
  Size of logical volume vgtest/lvtest changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
  Logical volume lvtest successfully resized. (成功在lvtest中增加了5G)
[[email protected] ~]# df -h /dev/vgtest/lvtest
  Filesystem                 Size  Used Avail Use% Mounted on
  /dev/mapper/vgtest-lvtest   15G   38M   14G   1% /mnt/lvtest (但是没显示,为什么?因为在线增加容量存在同步问题)
[[email protected] ~]# resize2fs /dev/vgtest/lvtest  (使增加的5G容量生效)
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vgtest/lvtest is mounted on /mnt/lvtest; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vgtest/lvtest to 5242880 (4k) blocks.
The filesystem on /dev/vgtest/lvtest is now 5242880 blocks long.
[[email protected] ~]# df -h /mnt/lvtest/   (可以看到已经扩展为20G了)
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vgtest-lvtest   20G   42M   19G   1% /mnt/lvtest

注意:LVM的扩展可以不用卸载而在线进行,但是压缩却不能支持的。一般情况下文件系统都会存有数据,如果直接压缩空间的话,很容易造成数据的丢失、损坏。因此压缩空间前需要将已经挂载的系统卸载。现在我们继续接着上面的例子来进行压缩操作吧(压缩操作很危险,要注意做好备份)。

[[email protected] ~]# umount /mnt/lvtest (卸载)
[[email protected] ~]# e2fsck -f /dev/vgtest/lvtest (强制检测lvtest,此步必须有)
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vgtest/lvtest: 11/1310720 files (0.0% non-contiguous), 122065/5242880 blocks
[[email protected] ~]# resize2fs /dev/vgtest/lvtest 10G (降低文件系统的10G容量)
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vgtest/lvtest to 2621440 (4k) blocks.
The filesystem on /dev/vgtest/lvtest is now 2621440 blocks long.
[[email protected] ~]# lvreduce -L -10G /dev/vgtest/lvtest (压缩逻辑卷的10G空间)
  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgtest/lvtest? [y/n]: y
  Size of logical volume vgtest/lvtest changed from 20.00 GiB (5120 extents) to 10.00 GiB (2560 extents).
  Logical volume lvtest successfully resized.
[[email protected] ~]# mount /dev/vgtest/lvtest /mnt/lvtest (挂载压缩后的lvtest) 
[[email protected] ~]# lvscan (可以看到lvtest已经被压缩了10G空间了)
  ACTIVE            ‘/dev/vgtest/lvtest‘ [10.00 GiB] inherit

至此,逻辑卷的压缩也已经完成,以上压缩步骤顺序千万不能乱,否则很容易造成文件损坏。既然说到这了,那么就顺便也来聊聊卷组(VG)压缩吧,压缩卷组前需要确认你要移出卷组的磁盘(或分区)是不包含数据的(避免数据丢失),可以用pvdisplay命令查看。

[[email protected] ~]# pvdisplay (查看那个分区是没有数据的,此例要移除/dev/sdb1,以每个人的实际情况确定删除的PV)
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vgtest
  PV Size               5.01 GiB / not usable 2.10 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              1282
  Free PE               1282
  Allocated PE          0
  PV UUID               9ccUO2-yK1I-zYPP-FQJi-yP2e-t1gQ-FZXLkL
[[email protected] ~]# vgreduce vgtest /dev/sdb1 (将/dev/sdb1移出vgtest卷组)
  Removed "/dev/sdb1" from volume group "vgtest"
[[email protected] ~]# vgs (查看VG大小,可以看到已经少了5G)
  VG     #PV #LV #SN Attr   VSize  VFree 
  vgtest   3   1   0 wz--n- 35.02g 25.02g
[[email protected] ~]# pvs (可以看到/dev/sdb1已经移出了)
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sdb1         lvm2 ----  5.01g  5.01g
  /dev/sdb2  vgtest lvm2 a--u  5.01g  5.01g
  /dev/sdb3  vgtest lvm2 a--u 20.01g 10.01g
  /dev/sdb5  vgtest lvm2 a--u 10.00g 10.00g
现在我们再把/dev/sdb1添加回vgtest吧,看下面:
[[email protected] ~]# vgextend vgtest /dev/sdb1 
Volume group "vgtest" successfully extended
[[email protected] ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  vgtest   4   1   0 wz--n- 40.02g 30.02g
[[email protected] ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sdb1  vgtest lvm2 a--u  5.01g  5.01g
  /dev/sdb2  vgtest lvm2 a--u  5.01g  5.01g
  /dev/sdb3  vgtest lvm2 a--u 20.01g 10.01g
  /dev/sdb5  vgtest lvm2 a--u 10.00g 10.00g
如果添加新的设备到VG中,需要先用pvcreate命令创建PV,再用vgextend命令将创建好的PV加入VG中。

6、快照功能

(1)快照相关介绍

1)快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
2)对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择。
3)快照只有在它们和原来的逻辑卷不同时才会消耗空间。
    在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间。
    当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
    快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据。
    建立快照的卷大小只需要原始逻辑卷的15% ~20% 就够了。也可以使用lvextend 放大快照。

技术分享

由于快照区与原本的LV 共用很多PE 的区块,因此快照区与 被快照的LV 必须要要在同一个VG 上!系统恢复的时候的文 件数量不能高于快照区的实际容量。

7、快照示例

[[email protected] ~]# vgdisplay (确认可用PE的数量)
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  16
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               40.02 GiB
  PE Size               4.00 MiB
  Total PE              10246
  Alloc PE / Size       2560 / 10.00 GiB
  Free  PE / Size       7686 / 30.02 GiB (如果不够的话需要添加额外的PV哦)
  VG UUID               Xe9pMF-tyCN-Bk5z-ZPub-TVHA-DCVm-hRVyqd
[[email protected] ~]# lvcreate -l 524 -s -n testss /dev/vgtest/lvtest (创建一个PE数量为524个名字为testss的快照,详细属性可用lvdisplay查看。其中–s表示要创建快照,-n表示快照的名称,-L 表示快照的大小。)
 Logical volume "testss" created.
[[email protected] ~]# mkdir /mnt/snapshot
[[email protected] ~]# mount /dev/vgtest/testss /mnt/snapshot (挂载快照)
[[email protected] ~]# df (可以看到快照和原文件属性一样)
Filesystem                 1K-blocks    Used Available Use% Mounted o
/dev/mapper/vgtest-lvtest  10190136   23028   9642884   1%  /mnt/lvtest
/dev/mapper/vgtest-testss  10190136   23028   9642884   1%  /mnt/snapshot
[[email protected] ~]# umount /mnt/snapshot/ (卸载快照)
[[email protected] ~]# cp -r /boot /root /mnt/lvtest
[[email protected] ~]# df /mnt/lvtest (可以看到原系统已经有所改变)
Filesystem                 1K-blocks   Used Available Use% Mounted on
/dev/mapper/vgtest-lvtest  10190136 197800   9468112   3%  /mnt/lvtest
[[email protected] ~]# rm -rf /mnt/lvtest/. (将/lvtest里的问都删,也可重新格式化成原格式)
[[email protected] ~]# cp -a /mnt/snapshot/. /mnt/lvtest/ (用快照恢复原文件系统)
[[email protected] ~]# df /mnt/lvtest/ (可以看到已经恢复了)
Filesystem                 1K-blocks  Used Available Use% Mounted on
/dev/mapper/vgtest-lvtest  10190136 23012   9642900   1%  /mnt/lvtest

建议:最好将快照卷也备份一下。


本文出自 “新手学Linux” 博客,请务必保留此出处http://kop309.blog.51cto.com/9034739/1844912

逻辑卷管理器(lvm)以及快照(特殊逻辑卷)的用法

1.LVM基本介绍2.PV、VG、LV关系详解(PV/VG/LV的创建、扩展逻辑卷大小、减小(减小操作很少用,仅作学习))3.快照的概念以及基本用法(特殊的逻辑卷)4.总结 LVM基本介绍       LVM:LogicalVolumeManager,... 查看详情

逻辑卷管理器(lvm)

逻辑卷管理器(LVM)    逻辑卷在生产环境中有些企业里会用到,但有些企业呢觉得逻辑卷,他是一个逻辑上的软件的东西。他是建立在硬件分区,或者硬盘之上的软件的管理方式,所以觉得他,要是数据放在上面... 查看详情

逻辑卷管理器lvm(代码片段)

逻辑卷管理器LVM一.简介:LVM技术是为了实现在操作系统不重新启动的情况下,在线对磁盘进行扩容的技术而产生的。LVM技术的实现与这几个层次有关:1)PV(物理卷)由底层的块设备组成,即将设备指定为物理卷2)物理卷是由固... 查看详情

lvm(逻辑卷管理器)原理

...LVM:PV、PE、VG、LV的意义  LVM的全名是LogicalVolumeManager(逻辑卷管理器),LVM的做法是将几个物理 查看详情

lvm逻辑卷管理器基础

一、LVM简介    逻辑卷管理器LVM(LogcalVolumeManager),LVM可以弹性的调整文件系统的容量,不必要再去烦恼文件系统空间不够的问题。LVM的实现是将几个物理分区(或磁盘)通过软件组合成为一块看起来是独立的大... 查看详情

lvm逻辑卷管理器

LogicalVolumeManager    LVM(逻辑卷管理)是Linux环境下对磁盘分区进行管理的一种机制。    普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,    某个分区空间耗尽时,... 查看详情

逻辑卷管理器(lvm)(代码片段)

一、什么是LVM?LVM(LogicalVolumeManager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及win... 查看详情

磁盘空间的扩展与减少------逻辑卷管理器lvm

一、基本理论知识   LVM是LogicalVolumeManager(逻辑卷管理)的简写,是Linux环境下对磁盘分区进行管理的一种机制。逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调... 查看详情

逻辑卷管理器(lvm)(代码片段)

LVM 逻辑卷允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,其实是对磁盘空间、可以是硬盘、也可以是分区,而且可以有多个分区和磁盘,并且不要求大小一样,跟raid不一样,然后我们把普通的磁盘或者分... 查看详情

lvm(逻辑卷管理器)

图片来自:https://www.cnblogs.com/linuxprobe/p/5381538.html参考博客:https://www.cnblogs.com/linuxprobe/p/5381538.htmlhttps://www.cnblogs.com/magicpig666/p/9816478.htmlLVM架构创建VG、PV、LV 查看详情

ii第五单元使用逻辑卷管理器管理灵活存储

1.lvm名词lvm逻辑卷,可以让设备自由伸缩的一个设备管理软件LVM 属于ibm公司逻辑运算管理物理分区---->>pv---->>vg----->>lvmpv 物理卷vg 物理卷组pe 物理拓展,lvm最小的存储单元lvm逻辑卷,时最终我们使用... 查看详情

逻辑卷管理器(logicalvolumemanager)

...缩小LV的容量(5)lvm的系统快照LVM的定义:中文翻译就是逻辑卷管理器,可以整合多个物理分区在一起,让这些分区看起来像是一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个lvm管理的磁盘当中删除,可以弹性... 查看详情

lvm逻辑卷创建管理

LVM逻辑卷创建管理LVM(LogicalVolumeManager)是基于内核的一种逻辑卷管理器,允许用户动态调整文件系统大小,可以利用快照功能备份数据。 LVM分为:物理卷卷组 逻辑卷    物理卷:(PV)是LVM最底层概念,和磁... 查看详情

lvm逻辑卷管理

LVM逻辑卷管理LVM(LogicalVolumeManager)是基于内核的一种逻辑卷管理器,适合大存储设备,并允许动态的调整文件系统的大小。LVM的概念示意图: 650)this.width=650;"src="http://118.89.243.118/wp-content/uploads/2017/04/LVM.png"alt="LVM"style="margin-top:0... 查看详情

linux磁盘管理:lvm逻辑卷

Linux磁盘管理:LVM逻辑卷LVM简介  LVM(LogicalVolumeManager逻辑卷管理),是Linux操作系统的逻辑卷管理器。  LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继... 查看详情

谁都能学的linux-详解lvm存储技术逻辑卷管理器

理论LVM(LogicalVolumeManager)是逻辑卷管理器,LVM将存储虚拟化,使用逻辑卷,不会受限于物理磁盘的大小,另外,不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能不影响业务,操作相对方便.适合管理大存储设备,... 查看详情

lvm逻辑卷创建管理(代码片段)

在虚拟机里面添加三个新的硬盘LVM是LogicalVolumeManager(逻辑卷管理器)的简写,它为主机提供了更高层次的磁盘存储管理能力。LVM可以帮助系统管理员为应用与用户方便地分配存储空间。在LVM管理下的逻辑卷可以按需改变大小或添... 查看详情

逻辑卷管理器(lvm)

 一、什么是LVM?LVM(LogicalVolumeManager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以... 查看详情