当前位置 : 主页 > 编程语言 > 其它开发 >

Linux 逻辑卷管理器(LVM)

来源:互联网 收集:自由互联 发布时间:2022-07-04
LVM: LVM: Logical Volume Manager,可以实现动态的扩容和缩容。逻辑卷是一种逻辑上的管理方式,把一块或多块硬盘或分区逻辑的组合在一起,命令成一个卷组(VG),卷组的空间来自所有硬盘
LVM:

LVM: Logical Volume Manager,可以实现动态的扩容和缩容。逻辑卷是一种逻辑上的管理方式,把一块或多块硬盘或分区逻辑的组合在一起,命令成一个卷组(VG),卷组的空间来自所有硬盘空间的总和。(组成逻辑卷的硬盘或分区大小可以不一样)

VG:

多个磁盘或者分区组合在一起的(逻辑上的大硬盘)

LV:

是从VG中取出一块空间而来的(相当于VG这个逻辑上大硬盘的一个分区)

PE:

PE:物理盘区,作用是负责分配空间的最小单位(逻辑卷中),扩容和缩容都是以PE为单位来操作的。PE大小默认为4M
image

LVM的实现过程:
  • 1.将设备设为物理卷 -- 贴个标签,表示这个硬盘要作为物理卷使用了

  • 2.指定卷组(一个或多个物理卷加入卷组形成一个大硬盘)

  • 3.创建逻辑卷(相当于分区)

  • 4.创建文件系统并挂载
    image

逻辑卷的名字:

逻辑卷有三个名称你可以用,一个真名,两个软连接。

第一个逻辑卷对应设备名:/dev/dm-# (逻辑卷的真名)

dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

逻辑卷的软链接:
  • /dev/mapper/VG_NAME-LV_NAME

  • /dev/VG_NAME/LV_NAME

逻辑卷的实现范例:
#创建swap空间,分区的id要改为82,创建逻辑卷,物理设备分区的id要改成8e fdisk的t选项。
#如果是使用硬盘的话,就不存在改ID的问题了。

#这些命令依赖lvm2这个工具包

#创建物理卷
pvcreate /dev/sda3

#为卷组分配物理卷
vgcreate vg0(卷组名) /dev/sda3(把创建的pv加进来) #-s可以指定PE的大小

#从卷组创建逻辑卷
lvcreate  -L 256M  -n data vg0 # -n:指定设备名称  -l:PE的个数 -L:指定LV的大小
mkfs.xfs   /dev/vg0/data #创建文件系统

#挂载
mount /dev/vg0/data /mnt/data
逻辑卷的扩展和缩减 扩展逻辑卷:
#两步实现 -- 空间扩展和文件系统扩展 (缺点在于文件系统扩容的时候不同系列的文件系统命令不一样)

#第一步实现逻辑卷的空间扩展
lvextend -L [+]#[mMgGtT](大小) /dev/VG_NAME/LV_NAME #-l:扩容多少个pe -L:扩容的大小 不写+号表示扩容到xx,写了+号表示增加xxx

#第二步实现文件系统的扩展
#使用df命令看到的是文件系统的情况,扩容了的部分但是上面没有文件系统,所以就看不见
#针对ext
resize2fs /dev/VG_NAME/LV_NAME #resize2fs:对ext系列的文件系统进行扩容,把文件系统同步到空间里面去
#针对xfs 
xfs_growfs MOUNTPOINT 


#一步实现容间和文件系统的扩展(不用关注文件系统的类型,直接扩容)
lvextend -r -l +100%FREE /dev/VG_NAME/LV_NAME #-l:pe的个数  -r:表示不管是什么文件系统都立即同步文件系统  +100%FREE:表示剩下的所有剩余空间
扩展卷组的空间:
##添加物理卷到卷组中(分区需要改id号)
pvcreate 物理卷

##将添加的设备添加到卷组中
vgextend 卷组名 物理卷
缩减逻辑卷(有丢失数据的风险)
#建议先备份再缩减,xfs文件系统不支持缩减

#五个步骤:1.卸载 -- 2.检查文件系统完整性(不管是否完整必须) -- 3.缩减文件系统 --  4.缩减逻辑卷大小 -- 5.重新挂载

#1.卸载:
umount /dev/VG_NAME/LV_NAME #首先卸载

#2.检查文件系统完整性
e2fsck -f /dev/VG_NAME/LV_NAME

#3.缩减文件系统
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT](缩减后的大小,例如2G表示缩减到2G)

#4.缩减逻辑卷大小
lvreduce -L  [-]#[mMgGtT](这个大小要和上面的大小相匹配) /dev/VG_NAME/LV_NAME(对谁进行缩减)

#5.重新挂载
mount /dev/VG_NAME/LV_NAME mountpoint
清除缓存的方法:
使用 free -h 可以看到缓存
查看缓存对应的目录: find /proc -name 'drop*' --- /proc/sys/vm/drop_caches
清理缓存:echo 3 > /proc/sys/vm/drop_caches --- 3就是清理缓存
#缓存的目的就是为了提高性能(一般做测试的时候才清理缓存)
拆除指定的PV存储设备

要想移除指定的pv存储设备,首先要将它上面的数据移到别的pv上面去。(要确保上面的数据在别的pv上面能存得下)

#实现方法:

#移动指定pv设备上的所有被占用的pe移动到同一卷组的其他成员上面
pvmove 指定的pv设备 

#把pv设备从vg里面移走
vgreduce 指定的设备 

#不让这个设备作为pv了
pvremove 指定的设备 

删除逻辑卷

应该倒过来删除,从逻辑卷、卷组再到物理卷

  • 1.取消挂载

  • 2.删除逻辑卷: lvremove 逻辑卷

  • 3.删除卷组: vgremove 卷组

  • 4.删除物理卷:pbremove 物理卷

逻辑卷快照

快照:把当前的状态快速做一个备份,快照类似备份的效果,但是特别快
逻辑卷快照:瞬间把逻辑卷做个备份

工作逻辑:
  • 首先有一个卷组,卷组里面存在一个逻辑卷,假设逻辑卷里面有一些文件。
  • 做快照就是在同属于同一卷组的空间中创建一个逻辑卷(快照逻辑卷--snapshot,具有特殊属性)。
  • 创建快照的时候并没有把原逻辑卷中的数据备份到快照中,只是在硬盘上分配了一个空间。
  • 起到备份效果是因为在更改原文件的时候,会自动把被修改文件的旧版本推送到快照里面去了(只存放最初的原始版本)没有修改的文件就不会被放到做快照的这个空间里面去。
总结:

快照备份逻辑:创建快照的时候会分配一块空间,只有原文件发生了修改,才会把这个原文件的最初版本放到快照里面去(快照里面只放发生了改变的数据)。

快照的实现:(快照也是一种逻辑卷,所以使用的命令和创建逻辑卷的命令一样)
#为现有逻辑卷创建快照,注意ext4必须使用-p r 实现只读

#创建快照:
lvcreate -l 64 -s -n data-snapshot /dev/vg0/data
#-l: 指定这个快照的大小(多少个pe)
# -s:表示创建的是快照,不加s表示创建的是普通逻辑卷
# -n: 快照的名字
# /dev/vg0/data -- 表示指定的是谁的快照(原始逻辑卷的名称)
创建完成后可以使用 lvs或lvdisplay来进行查看(因为快照也是一个逻辑卷)

#创建快照以后进行挂载
#挂载快照,xfs注意要使用-o ro实现只读,访止快照被修改
mkdir  -p /mnt/snap
mount -o ro,nouuid /dev/vg0/data-snapshot   /mnt/snap   #nouuid--不检查uuid xfs这类文件系统不允许相同的uuid设备挂载, ext系列文件系统不用加nouuid都行的
#挂载以后,进入这个目录进行查看能看的数据的原因是(这里面的数据是来源于原逻辑卷的,并非已经将这些数据备份了,因为之后原逻辑卷的数据修改以后,才会备份被修改数据的初始数据)

#恢复快照(使用快照数据还原修改过的数据)
umount /dev/vg0/data-snapshot  #先取消挂载
umount /dev/vg0/data  #先取消挂载
lvconvert --merge /dev/vg0/data-snapshot #利用快照还原原来的逻辑卷数据
#merge -- 合并,融入

#还原以后,快照会自动删除
上一篇:八大排序
下一篇:没有了
网友评论