我想以这种dd
方式在 LVM2 逻辑卷的外部驱动器上进行备份。
我考虑的方法是
- 在外部驱动器上制作具有相同大小的 lv
- 复制与
dd
(如果您发现这种方法确实有问题,请告诉我。我需要可靠且快速的东西。)
我想使整个过程自动化;这就是我所拥有的:
# Sanity check that lv is not used
lvuses="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 6 )"
if [ $lvuses -gt 0 ]; then exit 1 ; fi
#obtain lv size (in sectors)
lvsize="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 7 )"
#create destination
lvcreate -L "${lvsize}s" vgB -n BB || exit 1
# copy
dd if=/dev/mapper/vgA-AA of=/dev/mapper/vgB-BB
没关系?我错过了什么吗?
(在我的例子中,vgA-AA是LVM快照,我想将其备份到外部驱动器并将该驱动器带到其他地理位置)
答案1
您的脚本看起来不错,但我会使用不同的方法:创建一个镜像,然后破坏它。据我所知,您可以在线完成此操作。未经测试:
lvconvert -m /dev/mapper/vgA-AA /dev/sdz98 /dev/sdz99
lvconvert --splitmirrors 1 --name BB /dev/mapper/vgA-AA
如果您想将新的逻辑卷移动到不同的卷组,我认为您必须确保要发送的 LV 位于其自己的物理卷上,并将 PV 从一个 VG 转移到另一个与vgsplit
.
答案2
不要使用dd
.它是一种愚蠢的动物,会复制卷中的所有内容,包括可用空间,并产生与原始文件系统具有相同 UUID 的文件系统,这可能会混淆系统。相反,请使用像partclone
Ghost4linux 这样的工具,或者fsarchiver
可以将系统复制到压缩映像文件并跳过空闲块的工具。
答案3
- 挂载外部磁盘
- 停止应用程序
- 检查文件系统是否未使用($ sudo fusion -M /path/to/filesystem/mountpoint)
- 创建快照($ sudo lvcreate -s ......)
- 开始申请
- 使用 rsync 进行备份(检查 man rsync 的 --update 和 --link-dest)
- 或检查http://dirvish.org或者http://backuppc.sourceforge.net/用于实施
- 卸载外部磁盘
- 删除快照 LV 此过程会在每个备份的外部磁盘上创建一个目录。它仅从源磁盘复制已更改/新文件,并通过在备份之间硬链接重复文件来节省空间。
答案4
可靠且快速。我会推荐 LVM 快照。
它的速度非常快,您可以保证备份在备份过程中不会发生任何文件更改。另外,如果您的卷上有数据库,则无需将其脱机。
这也是测试音量变化的好方法。对其进行快照,进行更改,但您无法将快照合并回来。如果成功,您将删除快照。
编辑:代码
lvcreate -L 10G -s -n snapshot /dev/VG/LV
然后将快照卷备份到您想要的任何位置。
对于文件系统测试,您可以快照并合并回来。
lvconvert --merge /dev/VG/snapshot
此合并将自动删除快照卷。
笔记:快照需要kernel version 2.6.33 or newer
和LVM tools 2.02.58 or newer
编辑。链接: