Linux手动创建和恢复逻辑卷快照

逻辑卷快照

最后,我们可以对上一节中创建的逻辑卷进行快照。
为此,我们还需要逻辑卷“volume1”上的一些示例数据,
因此,一旦从快照恢复,我们可以通过将原始数据与从快照恢复的数据进行比较来确认整个过程。

了解快照

为了了解快照是如何工作的,我们首先需要了解逻辑卷由什么组成以及数据是如何存储的。这个概念类似于众所周知的符号链接。创建指向文件的符号链接时,不是创建实际文件的副本,而是只创建对该文件的引用。逻辑卷以类似的方式存储数据,它由两个基本部分组成:

  • 元数据指针
  • 数据块

创建快照时,逻辑卷管理器只需创建指向单独逻辑卷的所有元数据指针的副本。元数据不会占用太多空间,因此您可以创建2GB逻辑卷到5MB快照卷的快照。只有在您开始更改原始逻辑卷的数据时,快照卷才会开始增长。这意味着,每次删除或者编辑原始逻辑卷上的文件时,都会在快照卷上创建该文件(数据)的副本。对于简单的更改,您可能需要创建约为逻辑卷原始大小5-10%的快照卷。如果您准备对原始逻辑卷进行许多更改,那么您将需要10%以上的更改。让我们开始:

示例数据

首先,为“volume1”创建一个新的挂载点目录并安装它:

# mkdir /mnt/volume1
# mount /dev/volume_group/volume1 /mnt/volume1

转到“volume1”安装目录并复制一些示例数据:

# cd /mnt/volume1
# cp -r /sbin/.
# du -s sbin/
8264    sbin/

创建一个快照

现在我们将创建一个逻辑卷“volume1”的快照。
在此过程中,逻辑卷管理器将创建一个新的单独逻辑卷。
这个新的逻辑卷将具有20MB的大小,名称为“volume1_snapshot”:

# lvcreate -s -L 20M -n volume1_snapshot /dev/volume_group/volume1
  Logical volume "volume1_snapshot" created

执行lvs命令以确认已创建新的卷快照:

# lvs
  LV               VG           Attr     LSize   Pool Oroirn  Data%  Move Log Copy%  Convert
  volume1          volume_group owi-aos- 200.00m                                            
  volume1_snapshot volume_group swi-a-s-  20.00m      volume1   0.06

既然已经创建了快照,我们可以开始更改“volume1”的数据,例如删除整个内容:

# cd /mnt/volume1
# rm -fr 
# rm -fr sbin/

完成此操作后,您可以再次查阅lvs命令,并查看 volume1_snap 上的Data%现在是否已增加。如果需要,现在可以装载快照卷,以确认“volume1”中的原始数据仍然存在。

还原逻辑卷快照

在我们恢复逻辑卷快照之前,让我们首先确认/mnt/volume1/sbin的数据已经没有了:

# du -s /mnt/volume1/sbin
du: cannot access `/mnt/volume1/sbin': No such file or directory

恢复逻辑卷快照包含两个步骤:

  • 下一个逻辑卷激活后计划快照恢复
  • 取消激活和激活逻辑卷

要安排快照回滚执行以下Linux命令:

# lvconvert --merge /dev/volume_group/volume1_snapshot
  Can't merge over open oroirn volume
  Merging of snapshot volume1_snapshot will start next activation.

执行上面的命令后,将逻辑卷“volume1”激活后回滚。
因此,接下来需要做的是重新激活“volume1”。首先,请确保卸载“volume1”

# umount /mnt/volume1

停用并激活卷volume1:

# lvchange -a n /dev/volume_group/volume1
# lvchange -a y /dev/volume_group/volume1

最后一步,挂载逻辑卷“volume1”并确认数据所有已恢复:

# mount /dev/volume_group/volume1 /mnt/volume1
# du -s /mnt/volume1/sbin
8264    /mnt/volume1/sbin

创建逻辑卷

逻辑卷管理器基础知识

逻辑卷管理器允许我们创建由多个物理卷组成的逻辑组。
物理卷可以是整个硬盘或者单独的分区。
物理卷可以驻留在单个或者多个硬盘驱动器,分区,USBS,SAN等上,以增加逻辑卷大小,我们可以添加另外的物理卷。
创建逻辑卷组后,我们可以创建多个逻辑卷,同时完全忽略物理卷层。
可以通过添加更多物理卷来随时调整逻辑卷组,因此可以创建或者调整新的逻辑卷。

创建分区

首先,我们需要创建一个分区并将其标记为物理卷。
这是我们将使用的物理磁盘:

# fdisk -l /dev/sdb
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk identifier: 0x335af99c
   Device Boot      Start         End      Blocks   Id  System

让我们创建两个主要分区。
这里我们使用fdisk来完成这项工作。您可以随意使用任何其他分区工具来完成这项工作,如cfdisk、parted等。

# fdisk /dev/sdb
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-2097151, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +400M
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (821248-2097151, default 821248): 
Using default value 821248
Last sector, +sectors or +size{K,M,G} (821248-2097151, default 2097151): +200M
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

磁盘/dev/sdb上的新分区表现在看起来像下面这样:

# fdisk -l /dev/sdb
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
Disk identifier: 0x335af99c
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      821247      409600   8e  Linux LVM
/dev/sdb2          821248     1230847      204800   8e  Linux LVM

创建物理卷

此时,我们将两个分区都标记为物理卷。请注意,您不必遵循与本教程相同的模式。例如,您可以简单地对整个磁盘进行分区,使用单个分区(而不是两个分区)。使用pvcreate创建物理卷:

# pvcreate /dev/sdb[1-2]
  Writing physical volume data to disk "/dev/sdb1"
  Physical volume "/dev/sdb1" successfully created
  Writing physical volume data to disk "/dev/sdb2"
  Physical volume "/dev/sdb2" successfully created

创建卷组

现在是时候创建一个卷组。
为此,我们使用工具vgcreate。
新卷组的名称为“volume_group”。

# vgcreate volume_group /dev/sdb1 /dev/sdb2
  Volume group "volume_group" successfully created

执行上面的命令后,我们将拥有创建名为“volume_group”的新卷组。
这个新的卷组将包括两个物理卷:

  • /dev/sdb1
  • /dev/sdb2

我们可以使用vgdisplay命令查看新卷组的统计数据:

# vgdisplay 
  --- Volume group --
  VG Name               volume_group
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               592.00 MiB
  PE Size               4.00 MiB
  Total PE              148
  Alloc PE/Size       0/0   
  Free  PE/Size       148/592.00 MiB
  VG UUID               37jef7-3q3E-FyZS-lMPG-5Jzi-djdO-BgPIPa

创建逻辑卷

如果全部顺利,我们现在最终可以创建逻辑卷。
逻辑卷的大小不能超过逻辑组的大小。
让我们创建一个名为“volume1”的新的逻辑卷,大小为200 MB,并使用ext4文件系统格式化它。

# lvcreate -L 200 -n volume1 volume_group
  Logical volume "volume1" created

我们可以使用lvdisplay命令查看新逻辑卷的定义。
在新的“volume1”逻辑卷上创建文件系统时,请注意LV路径值。

# lvdisplay
  --- Logical volume --
  LV Path                /dev/volume_group/volume1
  LV Name                volume1
  VG Name                volume_group
  LV UUID                YcPtZH-mZ1J-OQQu-B4nj-MWo0-yC18-m77Vuz
  LV Write Access        read/write
  LV Creation host, time debian, 2013-05-08 12:53:17 +1000
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

现在,我们可以在逻辑卷上创建ext4文件系统:

# mkfs.ext4 /dev/volume_group/volume1
日期:2020-07-07 20:56:04 来源:oir作者:oir