为什么 .img 文件比实际磁盘大这么多?

为什么 .img 文件比实际磁盘大这么多?

我试图找出为什么我的磁盘映像如此之大。这是源服务器的磁盘:

root # df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           395M  7.1M  388M   2% /run
/dev/sda         79G   43G   32G  58% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           395M     0  395M   0% /run/user/0

我正在创建它:

ssh [email protected] "dd if=/dev/sda " | dd of=/backup/server-images/west.img

它仍在运行,到目前为止镜像大小为 72GB - 几乎是其备份磁盘实际大小的两倍。我缺少什么?如果我有一个 200GB 的磁盘,它会是 400GB+ 吗?

然而图像是

答案1

不带参数使用dd效率极低——每次读取都会使用 512 字节块。您可以调整dd块大小(bs=32M例如),但这里有一些更容易和更远的更快的替代方案

# Compressed image
ssh [email protected] "gzip --rsyncable </dev/sda" >/backup/server-images/west.img.gz

# Uncompressed image
ssh [email protected] "gzip  --rsyncable </dev/sda" | zcat >/backup/server-images/west.img

# Uncompressed image with seriously fast network
ssh [email protected] "cat /dev/sda" >/backup/server-images/west.img

请注意,他们都没有使用dd.--rsyncable如果您gzip不理解该标志,或者您绝对可以保证以后不会使用该标志rsync来传输压缩图像,请忽略该标志。

顺便说一句,如果/dev/sda安装了任何文件系统,或者任何分区正在使用,您的备份可能会损坏。这不是对实时系统执行基于块的备份的方法。

答案2

典型的——刚刚发现这个:

https://askubuntu.com/questions/537012/dd-image-size-does-it-equal-the-size-of-the-partition

所以我猜这意味着这个 .img 文件实际上是磁盘本身的大小,而不是当前使用的空间的大小

相关内容