备份Xen域

Modified on: Sat, 17 Aug 2019 23:40:02 +0800

我目前正在开发Xen备份系统,但是我遇到了以下问题:

我有两种备份方法:

  • 从LVM快照执行ddtar响铃它,远程rsync
  • 将LVM快照和rsync安装到远程位置

现在第二个选项允许我使用rdiff-backup,这样我就可以节省增量备份并节省大量空间,而第一个选项实际上是存储量很大。

现在,我有两个问题:

  • 使用dd时,有没有办法没有'空格'?假设我有一个50GB的LVM卷,只使用了3 GB,当使用dd时,它将创建一个50 GB的图像(因此浪费了47 GB)。 tar可以解决这个问题,但需要花费很多额外的时间(基本上我没有)
  • img创建的dd文件能以某种方式逐步保存吗?

最佳答案

空格压缩

让我们从快照中回归基础知识。首先,我将要求您查看为什么要使用一个文件。停下来想想焦油的作用以及你为什么这么做。

$ dd if=/dev/zero of=zero bs=$((1024*1024)) count=2048
2048+0 records in
2048+0 records out
2147483648 bytes transferred in 46.748718 secs (45936739 bytes/sec)
$ time gzip zero

real    1m0.333s
user    0m37.838s
sys     0m1.778s
$ ls -l zero.gz
-rw-r--r--  1 user  group  2084110 Mar 11 16:18 zero.gz

鉴于此,我们可以看到压缩为我们提供了大约1000:1的空间优势。无论系统支持稀疏文件,压缩都有效。还有其他算法可以将其收紧,但对于原始整体性能,gzip会获胜。

Unix实用程序和稀疏文件

鉴于系统支持稀疏文件,dd有时可以选择保存空间。奇怪的是,我的mac包含一个dd版本,它有一个conv=sparse标志,但是HFS +文件系统不支持它。相反,我用于测试的新的Debian安装支持ext4中的稀疏文件,但dd的安装没有标志。去图。

因此,另一项练习:

我将/ dev / zero复制到与上面相同的文件中。它在文件系统上占用了2G空间,如dudfls所确认。然后我在其上使用cp,发现自己有2个文件,使用4GB的空间。所以,是时候尝试另一面旗帜了:

`cp --sparse=always sparse sparse2`

使用它强制cp获取常规文件,并在看到长串零时使用稀疏分配。现在我有2个文件根据ls报告占用4GB,但根据dudf只有2GB。

既然我有一个稀疏文件,cp会表现吗?是。 cp sparse2 sparse导致ls显示每个文件消耗2GB的空间,但du显示它们占用文件系统上的零块。结论:一些实用程序会尊重已经稀疏的文件,但大多数都会将整个文件写回来。即使cp也不知道将写入的文件转回稀疏,除非你强行尝试。

接下来,我创建了1MB文件并将其作为稀疏条目,然后尝试在vim中编辑它。尽管只输入了几个字符,但我们又回到了使用整个事物。快速搜索发现类似的演示:https://unix.stackexchange.com/questions/17572/what-is-the-interaction-of-the-rsync-size-only-and-sparse-options

稀疏结论

所以我的想法是这样的:

  • 使用LVM快照
  • 针对快照运行zerofree
  • 使用rsync -S复制稀疏文件
  • 如果您无法使用rsync,请在您通过网络传输时快照gzip快照,然后针对未展开的图像运行cp --sparse=always以创建稀疏副本。

差异备份

块设备上的差异备份存在的问题是,事物可能会移动一点并产生大量难以处理的差异。有关StackOverflow的一些讨论:https:// stackoverflow .com / questions / 4731035 / binary-diff-and-patch-utility-for-a-virtual-machine-image得出最佳用途的是xdelta。如果您打算这样做,请再次尝试将空白空间清空。


相关问答

添加新评论