Linux 逻辑卷管理器(LVM)

LVM:

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

VG:

多个磁盘或分区的组合(大逻辑硬盘)

[En]

A combination of multiple disks or partitions (a large logical hard disk)

LV:

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

PE:

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

Linux 逻辑卷管理器(LVM)

LVM的实现过程:

  • 1.将设备设为物理卷 — 贴个标签,表示这个硬盘要作为物理卷使用了
  • 2.指定卷组(一个或多个物理卷加入卷组形成一个大硬盘)
  • 3.创建逻辑卷(相当于分区)
  • 4.创建文件系统并挂载
    Linux 逻辑卷管理器(LVM)

逻辑卷的名字:

逻辑卷有三个可以使用的名称,一个实名和两个软连接。

[En]

Logical volumes have three names you can use, one real name and two soft connections.

第一个逻辑卷对应设备名:/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 指定的设备

删除逻辑卷

应从逻辑卷、卷组和物理卷中颠倒删除

[En]

Should be deleted upside down, from logical volumes, volume groups, and physical volumes

  • 1.取消挂载
  • 2.删除逻辑卷: lvremove 逻辑卷
  • 3.删除卷组: vgremove 卷组
  • 4.删除物理卷:pbremove 物理卷

逻辑卷快照

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

[En]

Logical volume snapshot: make a backup of the logical volume in an instant

工作逻辑:

  • 首先,有一个卷组,其中有一个逻辑卷,假设逻辑卷中有一些文件。
    [En]

    first of all, there is a volume group in which there is a logical volume, assuming that there are some files in the logical volume.*

  • 做快照就是在同属于同一卷组的空间中创建一个逻辑卷(快照逻辑卷–snapshot,具有特殊属性)。
  • 创建快照时,不会将原始逻辑卷中的数据备份到快照中,但会在硬盘上分配空间。
    [En]

    when creating a snapshot, the data from the original logical volume is not backed up to the snapshot, but a space is allocated on the hard disk.*

  • 备份效果是因为当原始文件发生更改时,修改后的文件的旧版本会自动推送到快照(只存储原始版本)。未修改的文件将不会放置在创建快照的空间中。
    [En]

    the backup effect is because when the original file is changed, the old version of the modified file is automatically pushed to the snapshot (only the original version is stored). The unmodified file will not be placed in the space where the snapshot is made.*

总结:

快照备份逻辑:在创建快照时分配一块空间。仅当原始文件被修改时,原始文件的原始版本才会被放置在快照中(只有更改的数据才被放置在快照中)。

[En]

Snapshot backup logic: a piece of space is allocated when the snapshot is created. Only when the original file is modified will the original version of the original file be placed in the snapshot (only the changed data is placed in the 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 -- 合并,融入

#还原以后,快照会自动删除

Original: https://www.cnblogs.com/heyongshen/p/16439477.html
Author: 背对背依靠
Title: Linux 逻辑卷管理器(LVM)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523207/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球