逻辑卷快照
最后,我们可以对上一节中创建的逻辑卷进行快照。
为此,我们还需要逻辑卷“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