使用LVM快照备份(还原)LVM分区
版本1.1
作者:Falko Timme
本教程将介绍如何使用称为LVM快照的LVM功能来创建LVM分区的备份。 LVM快照是LVM分区的精确副本,具有创建快照时LVM卷的所有数据。 LVM快照的最大优点在于,它们可以用于大大减少备份期间服务/数据库关闭的时间,因为快照通常会在几分之一秒内创建。 创建快照后,您可以在服务和数据库正常运行时备份快照。
我还将介绍如何在本教程末尾的额外章节中从备份恢复LVM分区。
本文档不附带任何形式的保证! 我不会保证这将为您工作!
1初步说明
我已经在Debian Etch服务器上测试了这个IP地址为192.168.0.100
和主机名server1.example.com
。 它有两个硬盘:
-
/ dev / sda
(10GB),包含一个小/启动
分区(非LVM),一个/
分区(LVM,一个小于10GB)和一个交换分区(LVM) -
/ dev / sdb
(60GB),目前未使用; 将用于创建一个30GB/备份
分区(LVM)和/
partition的快照(10GB - 这是足够的,因为/
分区有点小于10GB)。
我创建了一个可以在VMware Server或VMware Player中下载并运行的Debian Etch VMware映像 (请参阅https://www.youcl.com/info/7256了解如何执行此操作)。 它具有与上述测试系统相同的规格。 root密码是youcl
。 使用该VMware映像,您可以执行与本教程中完全相同的步骤,以便习惯使用LVM快照。
要从备份中恢复/分区(在本教程最后一章中介绍),您需要一个支持LVM的Linux Live-CD,如Knoppix或Debian Etch Netinstall CD,如果您指定救援,则可以将其用作救援CD在引导提示符下。 在这个例子中我将使用Debian Etch Netinstall CD(镜像列表可以在这里找到: http : //www.debian.org/CD/http-ftp/ - 我下载了这个: http : //ftp.de。 debian.org/debian-cd/4.0_r0/i386/iso-cd/debian-40r0-i386-netinst.iso )。
要创建/
分区的备份,我将按照以下步骤进行操作:我将创建一个/
partition的快照,之后我将在/
backups分区上创建快照的备份(而不是实际的/
分区!)当然,您可以随时随地存储该备份 - 而不是创建一个额外的/备份的
LVM分区,您还可以使用外部USB驱动器)。 备份可以使用您首选的备份解决方案,例如tar
或dd
。 之后,我将摧毁快照,因为它不再需要,并且会使用系统资源。
您不一定需要快照的第二个硬盘 - 您可以使用第一个HDD,只要您有足够的空闲(未分区)空间即可在其上创建快照(您应该使用与您使用的快照相同的空间您要备份的分区)。 如前所述,您可以使用USB驱动器备份快照。
要了解有关LVM的更多信息,您应该阅读本教程: http : //www.youcl.com/linux_lvm
2创建/备份LVM分区
(如果您想将备份存储在别的地方,例如在外部USB驱动器上,则无需执行此操作。)
我们目前的情况如下:
pvdisplay
server1:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name server1
PV Size 9.76 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM
vgdisplay
server1:~# vgdisplay
--- Volume group ---
VG Name server1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 9.76 GB
PE Size 4.00 MB
Total PE 2498
Alloc PE / Size 2498 / 9.76 GB
Free PE / Size 0 / 0
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC
lvdisplay
server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/server1/root
VG Name server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Write Access read/write
LV Status available
# open 1
LV Size 9.30 GB
Current LE 2382
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
--- Logical volume ---
LV Name /dev/server1/swap_1
VG Name server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Write Access read/write
LV Status available
# open 2
LV Size 464.00 MB
Current LE 116
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1
fdisk -l
server1:~# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 31 248976 83 Linux
/dev/sda2 32 1305 10233405 5 Extended
/dev/sda5 32 1305 10233373+ 8e Linux LVM
Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/dm-0: 9990 MB, 9990832128 bytes
255 heads, 63 sectors/track, 1214 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 486 MB, 486539264 bytes
255 heads, 63 sectors/track, 59 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-1 doesn't contain a valid partition table
所以/ dev / sda
包含逻辑卷/ dev / server1 / root
( /
partition)和/ dev / server1 / swap_1
(交换分区)加上一个小/启动
分区(非LVM)。
(BTW, / dev / server1 / root
与Debian Etch上的/ dev / mapper / server1-root
相同,第一个是第二个符号链接,本教程中将使用两个符号,同样适用于/ dev / server1 / swap_1
和/ dev / mapper / server1-swap_1
。)
我现在将创建分区/ dev / sdb1
并将其添加到server1
卷组,之后我将创建卷/ dev / server1 / backups
(这将是30GB,而不是完整的60GB / dev / sdb
,以便我们有足够的空间留给快照)我将挂载/备份
:
fdisk /dev/sdb
server1:〜#fdisk / dev / sdb
设备既不包含有效的DOS分区表,也不包含Sun,SGI或OSF disklabel
构建新的DOS磁盘标签。
更改只会保留在内存中,
直到你决定写它们。
之后,当然是以前的
内容将无法恢复。
此磁盘的柱面数设置为7832。
没有什么问题,但是这大于1024,
并且在某些设置中可能会导致以下问题:
1)在引导时运行的软件(例如,LILO的旧版本)
2)从其他操作系统启动和分区软件
(例如DOS FDISK,OS / 2 FDISK)
警告:分区表4的无效标志0x0000将被w(rite)修正
命令(m帮助):
< - n
命令行动
e扩展
p主分区(1-4)
< - p
分区号(1-4):
< - 1
第一个气缸(1-7832,默认为1):
< - [ENTER]
使用默认值1
最后一个圆柱体或+大小或+ sizeM或+ sizeK(1-7832,默认值为7832):
< - [ENTER]
使用默认值7832
命令(m为帮助):
< - t
所选分区1
十六进制代码(类型L列出代码):
< - 8e
更改系统类型的分区1到8e(Linux LVM)
命令(m为帮助):
< - w
分区表已被更改!
调用ioctl()重新读取分区表。
同步磁盘
pvcreate /dev/sdb1
vgextend server1 /dev/sdb1
lvcreate --name backups --size 30G server1
mkfs.ext3 /dev/mapper/server1-backups
mkdir /backups
现在我们将/ dev / server1 / backups
卷挂载到/ backups上
:
mount /dev/mapper/server1-backups /backups
要在启动系统时自动安装该卷,您必须编辑/ etc / fstab
并添加如下所示的行:
vi /etc/fstab
[...] /dev/mapper/server1-backups /backups ext3 defaults,errors=remount-ro 0 1 |
现在我们的新情况看起来像这样:
pvdisplay
server1:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name server1
PV Size 9.76 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM
--- Physical volume ---
PV Name /dev/sdb1
VG Name server1
PV Size 59.99 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 15358
Free PE 7678
Allocated PE 7680
PV UUID cvl1H5-cxRe-iyNg-m2mM-tjxM-AvER-rjqycO
vgdisplay
server1:~# vgdisplay
--- Volume group ---
VG Name server1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 69.75 GB
PE Size 4.00 MB
Total PE 17856
Alloc PE / Size 10178 / 39.76 GB
Free PE / Size 7678 / 29.99 GB
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC
lvdisplay
server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/server1/root
VG Name server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Write Access read/write
LV Status available
# open 1
LV Size 9.30 GB
Current LE 2382
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
--- Logical volume ---
LV Name /dev/server1/swap_1
VG Name server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Write Access read/write
LV Status available
# open 2
LV Size 464.00 MB
Current LE 116
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1
--- Logical volume ---
LV Name /dev/server1/backups
VG Name server1
LV UUID sXq2Xe-y2CE-Ycko-rCoE-M5kl-E1vH-KQRoP6
LV Write Access read/write
LV Status available
# open 1
LV Size 30.00 GB
Current LE 7680
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:2