我正在使用 DD 通过 Netcat 将硬盘从一个系统复制到另一个系统,直接克隆。
我在每个系统上启动了 RIP。
目标系统:nc -l -p 9000 |pv|dd of=/dev/hda 源系统:dd if=/dev/hda |pv|nc 9000 -q 10
传输速度似乎徘徊在 10 或 11 MB/s 左右,记录的突发速度接近 18。两个系统都连接到千兆交换机。两者上的 Ethtool eth0 均显示:
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: umbg
Wake-on: g
Current message level: 0x00000007 (7)
Link detected: yes
我想我可能会混淆一些传输速率的数字,但这是传输数据的预期速度吗?
编辑:我刚刚尝试使用两根标记为 5e 兼容的不同电缆,并使用交叉连接器直接连接两个系统。虽然 ethtool 仍然显示它们的速度设置为 1000Mb/s,但传输速率似乎只比以前高一点。我猜要么是驱动器太差劲,要么是网卡太差劲,要么是处理器一定存在瓶颈。
EDIT2 我刚刚尝试从需要克隆的单元中取出第二块硬盘,并将其物理连接到主克隆。最初,一个 IDE 通道连接到 HD,另一个连接到 CD-ROM。我取出主硬盘并将其连接到与 CD-ROM 相同的通道,因此它们应该是 /dev/hda 和 /dev/hdb。我取出 CD 上的电缆并将其连接到“空白板”,因此它应该是 /dev/hdc。
我重新启动并运行“dd if=/dev/hda|pv|dd of=/dev/hdc”,结果速度高达……10 MB/s。速度在 8 MB/s 和 12 MB/s 之间剧烈波动。
所以...我认为是硬盘的性能太差了...我已经习惯了网络成为瓶颈,所以我觉得磁盘是问题所在很奇怪!
答案1
大部分缓慢是由于 HD 瓶颈造成的。在完全空闲的磁盘/系统/网络上,普通 HD 会通过网络推送 40-50mb 的数据。将 dd 的开销添加到简单的 tcp netcat 管道中,该管道根本没有针对网络流量进行优化,速度就会开始大幅下降。
大部分减速都来自 TCP 窗口大小。数据包通过后必须等待回复才能发送下一个数据包。通常内部网络的延迟非常低,以至于没有人会注意到这些。当您以非网络优化的方式进行转储时,窗口开始到处乱窜。一个很好的例子是 Vistas 在 SP1 之前的版本中的网络文件复制,当 TCP 窗口调整出现严重错误时,传输速度低于每秒 100kb。
另外,作为参考,我这里有两个盒子,它们通过网络持续以每秒 60-80 兆的速度向其他盒子推送数据。它们确实有专用网卡、RAID 10 和一堆 10000RPM SAS 驱动器来提供这种速度。
答案2
dd if=/dev/zero of=/dev/hda
目的地和 源上给出的
dd if=/dev/hda of=/dev/null
较低值将为您提供最佳情况。
如果你有空闲的 CPU,请考虑使用 gzip -fast
值得考虑设置巨型数据包(较大的 mtu )
答案3
我期望速度更接近 20 MB/s,您使用的是 cat 6 / 5e 电缆吗?
我还将运行 iostat(sysstat 包的一部分),看看 iostat 是否认为驱动器的利用率达到 100%:
iostat -c 2 -x
以下是 Tom's Hardware 撰写的一篇有关千兆网络的精彩文章:千兆以太网:伙计,我的带宽在哪里?
答案4
我的速度是 12MB/秒,但以前速度要慢得多 - 我遇到的问题是驱动器。我使用的是一台劣质的廉价戴尔“存储服务器”,带有一张糟糕的 RAID 卡。废弃 RAID,用 JBOD 配置替换会产生很大的不同,即使我随后将软件 RAID5 放在首位。
我还考虑在交换机上设置巨型帧,这将大大提高您的吞吐量。(ifconfig eth0 mtu 9000
暂时,或者添加MTU 9000
到您的 ifcfg 文件中以在您的 Linux 接口上设置巨型帧)。