利用LinuxLVM进行快照备份

编程

1. LVM概述

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

结果如下:

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

  • 为新磁盘创建分区

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

这里选择p主分区:

最后,需要选择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 创建快照逻辑卷

同样使用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 1%

data data_group owi-aos--- 152.00m

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

3.2 修改data逻辑卷

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

[root@localhost ~]# ls

lost+found python2.7

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

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 5.39%

data data_group owi-aos--- 152.00m

3.3 利用backup逻辑卷恢复数据

4. 其它有用的命令

4.1 重命名卷组

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

4.2 删除卷组

vgremove <卷组名>

4.3 删除逻辑卷

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

4.4 删除物理卷

pvremove <物理卷名>

以上是 利用LinuxLVM进行快照备份 的全部内容, 来源链接: utcz.com/z/512389.html

回到顶部