我有一个使用 VDI 和灵活大小的 VirtualBox 映像。目前物理 DVI 文件为 94GB。主机是 Ubuntu 服务器,客户机是带有 ext4 分区的 CentOS 6.4。主机使用 1TB 的 SATA 普通磁盘。
磁盘读取速度为:
sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 23330 MB in 2.00 seconds = 11679.09 MB/sec
Timing buffered disk reads: 420 MB in 3.01 seconds = 139.49 MB/sec
磁盘写入速度:
sudo dd if=/dev/zero of=output bs=8k count=128k; sudo rm -f output
131072+0 records in
131072+0 records out
1073741824 bytes (1.1 GB) copied, 4.91353 s, 219 MB/s
所以...我猜复制 100GB 应该花费更少的时间。事实上,简单的复制cp
花费的时间要少得多。在我的例子中,它需要 30 分钟,而 需要 2 个小时clonehd
。
我知道 clonehd 也进行压缩,所以这可能是一个很大的区别。现在...假设我只想显式压缩一次,然后克隆。还有其他更快的选择吗?我在某处读到我可以做的很简单,cp
然后更改创建的克隆映像的 UUID。有人这样做过吗?安全吗?因为我这样做是为了备份...我需要这个过程是安全的。
dd
请注意,我已经使用或清理了客户 Cent OS 中的可用空间zerofree
。但这不是本帖的主题。
实际上,如果我可以在运行 VM 的同时运行它,我不会遇到那么多问题clonehd
,但据我了解,这是不可能的/不推荐的,因为如果同时修改它,克隆/复制的 vdi 文件可能会被损坏。
提前致谢,
答案1
您写道“主机使用的是 1TB 的 SATA 普通磁盘”。这让我相信您说的是旋转硬盘,甚至可能是台式机级驱动器(例如 7200 rpm SATA,而不是 10k 或 15k rpm SAS 驱动器,更不用说 SSD 了)。
请记住,7200 rpm 驱动器通常最高速度约为 100-120 MB/s。这为不依赖缓存时应获得的速度设置了上限。(请注意,dd
问题中的命令很可能严重依赖缓存,因此无法准确反映 I/O 性能。您可以conv=sync
使用同步 I/O 来增加强制。同样,正如评论中指出的那样,通过从 /dev/zero 读取,您可以消除等式的一侧。)
由于虚拟机的磁盘映像文件配置精简,因此很有可能磁盘上存在碎片。根据碎片程度,您甚至可能受到 IOPS 限制。7200 rpm 驱动器的理论最大容量为 120 IOPS。
单向(读或者写入)100 GB 以 110 MB/s 的速度写入大约需要 900 秒。将时间翻倍,因为您同时在读取和写作时,你会看到 1800-2000 秒,或者半小时。
如果再加上碎片化因素,那么两小时听起来肯定是差不多的。