logo logo
关于我们

技术分享

技术分享 利用Linux LVM进行快照备份

利用Linux LVM进行快照备份

2020-04-05

1. LVM概述

LVM的全称为Logical Volume Manager,是Linux所提供的一种对磁盘分区进行灵活管理的机制。要理解LVM,首先需要从一个Linux用户经常遇到的问题开始,那就是“应该如何正确评估不同分区的大小来合适地分配硬盘空间?”。通常情况下,逻辑分区划分好后空间大小将无法改变,此时如果需要存储的文件过大,则单个逻辑分区无法存储,但该文件也无法跨越多个分区来存储,这是由上层文件系统限制造成的,以致于单个文件不能同时存储在不同的磁盘上。当出现某个分区的空间不足时,通常只能使用符号链接或者调整分区大小的工具来暂时解决问题,然而,这些临时性的措施都并非有效的解决方法,而LVM的机制则能够很好地解决这个问题,用户可以在不停机的情况下调整各分区的空间大小。

如下图所示为LVM的总体架构,从图中可以看出,LVM自底向上主要由三部分组成,分别为物理卷、卷组和逻辑卷。物理卷与物理磁盘挂钩一一对应,而卷组则相当于一个大池子,将不同的物理卷空间汇聚在一起,逻辑卷在卷组的基础上重新分配空间大小。整个架构就好比一条条河流汇聚于一个湖中,然后再分流出去一样。

利用Linux LVM进行快照备份

接下来我们首先来看看如何创建逻辑卷,随后再利用LVM的快照功能来实现数据备份。

2.创建LV的步骤

  • 创建物理卷(Physical Volumes)

  • 创建卷组(Volume Group)

  • 创建逻辑卷(Logical Volumes)

2.1 物理卷

2.1.1 查看物理卷

使用pvs命令查看物理卷

[root@localhost ~]# pvs

结果如下:

PV         VG   Fmt     Attr    PSize   PFree
/dev/sda centos lvm2     a--    <7.00g    0

2.1.2 新增磁盘分区

  • 新增磁盘

为了创建新的物理卷,我们先增加一块新的磁盘,并且挂载到文件系统。先用fdisk命令看看目前系统的所有磁盘:

[root@localhost ~]# fdisk -l

结果如下:

利用Linux LVM进行快照备份

接下来我们增加一块新的磁盘,再使用fdisk命令,结果如下所示,我们能看到多了一个/dev/sdb,这正是我们新增的磁盘:

利用Linux LVM进行快照备份

  • 为新磁盘创建分区

使用fdisk /dev/sdb来对其创建分区:

利用Linux LVM进行快照备份

这里选择p主分区:

利用Linux LVM进行快照备份

最后,需要选择w保存设置,否则不会生效:

Command (m for help): w
Calling ioctl() to re-read partition table
Symcing disks

至此,分区就创建完毕了,再次使用fdisk -l命令可以看到现在已经存在/dev/sdb1分区

Device Boot    Start    End        Blocks     Id    System
/dev/sdb1      2048   20971519    10484736    83    Linux
  • 格式化分区

接下来要对分区进行格式化处理,使用mkfs命令实现格式化。下面的命令将/dev/sdb1格式化为ext4格式

[root@localhost ~]# mkfs -t ext4 /dev/sdb1
  • 挂载新分区

此时通过df -h命令查看分区分布,我们可以发现分区还没有被挂载,

[root@localhost ~]# df -h
Filesystem                 Size    Used    Avail    Use%    Mounted on
/dev/mapper/centos-root    6.2G    1007M   5.3G     16%     /
/devtmps                   908M    0       908M     0%      /dev
tmpfs                      920M    0       920M     0%      /dev/shm
tmpfs                      920M    8.6M    911M     1%      /run
tmpfs                      920M    0       920M     0%      /sys/fs/cgroup
/ddev/sda1                1014M    146M    869M     15%     /boot
tmpfs                      184M    0       184M     0%      /run/user/0

接下来我们将新分区/dev/sdb1挂载到/data上:

[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdb1 /data

此时再次执行df -h命令查看分区分布,可以看到/dev/sdb1已经挂载到/data上了:

Filesystem                 Size    Used    Avail    Use%    Mounted on
/dev/mapper/centos-root    6.2G    1007M   5.3G     16%     /
/devtmps                   908M    0       908M     0%      /dev
tmpfs                      920M    0       920M     0%      /dev/shm
tmpfs                      920M    8.6M    911M     1%      /run
tmpfs                      920M    0       920M     0%      /sys/fs/cgroup
/ddev/sda1                1014M    146M    869M     15%     /boot
tmpfs                      184M    0       184M     0%      /run/user/0
/dev/sdb1                  9.8G    37M     9.2G     1%      /data

另外,可以修改/etc/fstab文件,在最后一行加上下列的内容,使系统每次启动都自动挂载

/dev/sdb1 /data ext4 defaults 0 0

2.1.3 创建物理卷

使用pvcreate命令创建物理卷:

[root@localhost ~]# pvcreate /dev/sdb1

注意,如果如果/dev/sdb1已经挂载到文件系统上,需要先umount再执行pvcreate:

[root@localhost ~]# umount /dev/sdb1

创建后使用pvs命令查看物理卷

PV         VG   Fmt     Attr    PSize   PFree
/dev/sda centos lvm2     a--    <7.00g    0
/dev/sdb centos lvm2     ---     <10.00g  <10.00g

从结果中可以看到刚才新创建的物理卷/dev/sbd

2.2 卷组

2.2.1 查看卷组

使用vgs查看卷组

[root@localhost ~]# vgs

结果如下:

VG        #PV   #LV     #SN    Attr   VSize    VFree
centos     1     2       0    wz--n-  <7.00g     0

2.2.2 创建卷组

使用vgcreate命令创建卷组:

vgcreate <卷组名> <加入该卷组的空闲分区名>

例如,创建一个名为data_group的卷组:

vgcreate data_group /dev/sdb1

这时再次使用vgs命令,可以看到已经创建了一个名为data_group的卷组:

VG         #PV   #LV     #SN    Attr   VSize    VFree
centos      1     2       0    wz--n-  <7.00g     0
data_group  1     0       0    wz--n-  <10.00g   <10.00g

2.2.3 向卷组添加物理卷

向卷组中添加物理卷

vgextend <卷组名> <物理卷名>

例如,假设存在物理卷/dev/sdc1,则下面的命令可以向data_group这个卷组中添加物理卷/dev/sdc1:

[root@localhost ~]# vgextend data_group /dev/sdc1

结果如下:

VG         #PV   #LV     #SN    Attr   VSize    VFree
centos      2     2       0    wz--n-  <7.00g    0
data_group  2     0       0    wz--n-  <19.99g   <19.70g

2.3 逻辑卷

2.3.1 查看逻辑卷

使用lvs命令查看逻辑卷

[root@localhost ~]# lvs

结果如下:

LV    VG    Attr        LSize   Pool  Origin  Data%  Meta%  Move  Log  Cpy%Sync  Convert
root centos -wi-ao----   <6.20g
swap centos -wi-ao----   <820.00m

2.3.2 创建逻辑卷

使用lvcreate命令来创建逻辑卷:

lvcreate -L <逻辑卷空间大小> -n <逻辑卷名称>  <所属卷组>

例如,在centos卷组上创建一个名为data的逻辑卷:

[root@localhost ~]# lvcreate -L 150M -n data data_group

接着格式化逻辑卷:

[root@localhost ~]# mkfs -t ext4 /dev/data_group/data

操作的方式参考2.1.2,依次选择m、n、p随后的选项都选择默认回车即可。 最后挂载到指定目录:

[root@localhost ~]# mkdir /usr/local/data
[root@localhost ~]# mount /dev/data_group/data /usr/local/data

3. 利用LVM实现快照备份

3.1 修改data逻辑卷

现在向data逻辑卷挂载的目录中添加一个几MB的文件夹python2.7,让其占用一定的空间大小:

[root@localhost data]# ls
lost+found    python2.7

3.2 创建快照逻辑卷

使用lvcreate命令来创建用于快照备份的逻辑卷

lvcreate -L <逻辑卷空间大小> -s -n <快照逻辑卷的名称> /dev/<卷组名>/<目标逻辑卷的名称>

例如,下面为data_group卷组中的data逻辑卷创建了一个大小为150MB的,名为backup的快照备份逻辑卷:

[root@localhost ~]# lvcreate -L 150M -s -n backup /dev/data_group/data

由于是快照逻辑卷,所以我们不需要对其进行格式化,直接挂载即可:

[root@localhost ~]# mkdir /usr/local/backup
[root@localhost ~]# mount /dev/data_group/backup /usr/local/backup

通过lvs命令查看逻辑卷的情况,可以发现分别增加了data和backup两个逻辑卷:

LV         VG      Attr        LSize   Pool  Origin  Data%  Meta%  Move  Log  Cpy%Sync  Convert
root      centos   -wi-ao----  <6.20g
swap      centos   -wi-ao----  <820.00m
backup  data_group swi-aos---  152.00m        data    0.01
data    data_group owi-aos---  152.00m

另外,注意到backup逻辑卷的Origin属性指向了data,说明它作为了data的快照逻辑卷,Data%属性为0.01,表示快照所占的空间大小为0.01%。

3.3 利用backup逻辑卷恢复数据

删除data中的数据(例子中是python2.7这个文件夹)

[root@localhost data]# rm -rf /usr/local/data/python2.7

此时再使用lvs命令查看逻辑卷的情况,会发现backup逻辑卷的Data%从0.01%变为了0.15%:

LV         VG      Attr        LSize   Pool  Origin  Data%  Meta%  Move  Log  Cpy%Sync  Convert
root      centos   -wi-ao----  <6.20g
swap      centos   -wi-ao----  <820.00m
backup  data_group swi-aos---  152.00m        data    0.15
data    data_group owi-aos---  152.00m

另外我们已经在data目录下删除了python2.7,那么再来看看backup目录下是否还有python2.7这个目录:

[root@localhost backup]# ls /usr/local/backup
lost+found  python2.7

从结果上可以看出,backup中依然还有python2.7,因此起到了快照备份的功能

3.4 取消快照

取消快照的方法十分简单,只分别执行umount和lvremove操作,对应着取消挂载和删除快照卷的操作:

[root@localhost ~]# umount /dev/data_group/backup
[root@localhost ~]# lvremove /dev/data_group/backup

4. 其它有用的命令

4.1 重命名卷组

vgrename <卷组名> <新卷组名>

4.2 删除卷组

vgremove <卷组名>

4.3 删除逻辑卷

lvremove /dev/<卷组名>/<逻辑卷名>

4.4 删除物理卷

pvremove <物理卷名>
                   
云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆
  • 标签:
  • 容灾备份

您可能感兴趣的新闻 换一批

现在下载,可享30天免费试用

立即下载

请添加好友为您提供支持
jia7jia_7

请拨打电话
为您提供支持

400-9955-698