天天看点

Linux-逻辑卷管理器(LVM)

#头条创作挑战赛#

1 LVM介绍

LVM: Logical Volume Manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,允许在多个物理设备间重新组织文件系统

LVM可以弹性的更改LVM的容量

Linux-逻辑卷管理器(LVM)

通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量

实现过程

  • 将设备指定为物理卷
  • 用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
  • 在物理卷上创建的逻辑卷, 是由物理区域(PE)组成
  • 可以在逻辑卷上创建文件系统并挂载
Linux-逻辑卷管理器(LVM)

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

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

软链接:

  • /dev/mapper/VG_NAME-LV_NAME
  • /dev/VG_NAME/LV_NAME
/dev/mapper/vol0-root
/dev/vol0/root           

2 实现逻辑卷

相关工具来自于 lvm2 包

[root@centos7 ~]#yum -y install lvm2           

2.1 pv管理工具

显示pv信息

pvs:简要pv信息显示
pvdisplay           

创建pv

pvcreate /dev/DEVICE           

删除pv

pvremove /dev/DEVICE           

2.2 vg管理工具

Linux-逻辑卷管理器(LVM)

显示卷组

vgs
vgdisplay           

创建卷组

vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

#案例
vgcreate -s 16M vg0 /dev/sdb /dev/sdc  #指定PE的大小,默认4M           

管理卷组

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]           

删除卷组

  • 先做pvmove
  • 再做vgremove

2.3 lv管理工具

显示逻辑卷

lvs
Lvdisplay           

创建逻辑卷

lvcreate -L #[mMgGtT] -n NAME VolumeGroup           

案例:

lvcreate -l 60%VG -n mylv testvg
lvcreate -l 100%FREE -n yourlv testvg           

删除逻辑卷

lvremove /dev/VG_NAME/LV_NAME           

重设文件系统大小

fsadm [options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
xfs_growfs /mountpoint           

案例:

#创建物理卷
pvcreate /dev/sda3

#为卷组分配物理卷
vgcreate vg0 /dev/sda3

#从卷组创建逻辑卷
lvcreate  -L 256M  -n data vg0
#mkfs.xfs   /dev/vg0/data

#挂载
mount /dev/vg0/data /mnt/data           

2.4 扩展和缩减逻辑卷

Linux-逻辑卷管理器(LVM)

2.4.1 在线扩展逻辑卷

#两步实现
#第一步实现逻辑卷的空间扩展
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

#第二步实现文件系统的扩展
#针对ext
resize2fs /dev/VG_NAME/LV_NAME
#针对xfs 
xfs_growfs MOUNTPOINT 

#一步实现容间和文件系统的扩展
lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME           

2.4.2 缩减逻辑卷

Linux-逻辑卷管理器(LVM)

注意:缩减有数据损坏的风险,建议先备份再缩减,xfs文件系统不支持缩减

#先卸载逻辑卷
umount /dev/VG_NAME/LV_NAME  

#进行强制检测
e2fsck -f /dev/VG_NAME/LV_NAME 

#首先缩减文件体统的大小
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

#然后再缩减逻辑卷的大小
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

#操作完成后,重新挂载
mount /dev/VG_NAME/LV_NAME mountpoint           

2.5 跨主机迁移卷组

源计算机上

1 在旧系统中,umount 所有卷组上的逻辑卷

2 禁用卷组

vgchange –a n vg0 
lvdisplay           

3 导出卷组

vgexport vg0 
pvscan
vgdisplay           

4 拆下旧硬盘在目标计算机上,并导入卷组:

vgimport vg0           

5 启用

vgchange –ay vg0           

6 mount 所有卷组上的逻辑卷

2.6 拆除指定的PV存储设备

1#首先,查看当前的物理卷列表,确定要拆除的PV设备的名称。使用以下命令列出物理卷:
sudo pvdisplay

2#确保没有正在使用该PV设备的卷组(VG)和逻辑卷(LV);使用以下命令检查是否有卷组和逻辑卷使用了该物理卷:
sudo vgdisplay
sudo lvdisplay
解释:如果有任何卷组或逻辑卷使用了该物理卷,需要迁移或删除它们以释放对该设备的依赖。

3#如果没有任何卷组或逻辑卷使用了该物理卷,可以使用以下命令将其从卷组中移除:
sudo pvmove /dev/sdb1
解释:上述命令中的/dev/sdb1替换为您要拆除的物理卷设备的名称。

4#等待pvmove命令完成物理卷的迁移过程。这可能需要一些时间,具体取决于数据的大小和性能。

5#迁移完成后,可以使用以下命令从卷组中删除物理卷:
sudo vgreduce <卷组名称> /dev/sdb1
解释:将上述命令中的<卷组名称>替换为包含要拆除的物理卷的卷组的名称。

6#最后,可以使用以下命令将物理卷从系统中移除:
sudo pvremove /dev/sdb1
解释:命令中的/dev/sdb1替换为要拆除的物理卷设备的名称。
           
  • 指定的PV存储设备将被拆除并从系统中移除,请确保在执行这些操作之前备份重要数据,并谨慎操作以避免数据丢失。
Linux-逻辑卷管理器(LVM)

3 逻辑卷快照

3.1 逻辑卷快照原理

Linux-逻辑卷管理器(LVM)
Linux-逻辑卷管理器(LVM)

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝,对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择,快照只有在它们和原来的逻辑卷不同时才会消耗空间,建立快照的卷大小小于等于原始逻辑卷,也可以使用lvextend扩展快照

逻辑卷管理器快照:

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享

逻辑卷快照工作原理:

  • 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
  • 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
  • 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

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

Linux-逻辑卷管理器(LVM)

快照特点:

  • 备份速度快,瞬间完
  • 应用场景是测试环境,不能完成代替备份
  • 快照后,逻辑卷的修改速度会一定有影响

3.2 实现逻辑卷快照

mkfs.xfs /dev/vg0/data
mount /dev/vg0/data/ /mnt/data

#为现有逻辑卷创建快照
lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data

#挂载快照
mkdir  -p /mnt/snap
mount -o ro,nouuid /dev/vg0/data-snapshot   /mnt/snap

#恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot 

#删除快照
umount /mnt/snap
lvremove /dev/vg0/data-snapshot           
Linux-逻辑卷管理器(LVM)