由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 解决点实际问题,网络拷贝硬盘
相关主题
Goodbug,是不是单机大于1 million/s的I/O你就输了?Please recommend good "file sharing/sync for multiple pcs" (转载)
清净版:写一个Complete Failover Handbook吧流化文件传送 (转载)
想请教魏老师一个方案中的理解问题。国服第一手游刀塔传奇开发经验:c++/lua
应该给魏大师发10个图灵奖。有什么东西用来做机器间的数据转移的?
qxc,我接招了,你给的要求太弱的,给你加强了请教一个ssh连接挂起的问题
透明计算是个什么玩意?请教cin.get()
rsync和scp有什么区别? (转载)C程序的异常输出
svn/cvs怎么样设置使得只保存最新版本? (转载)请教个throughput的问题
相关话题的讨论汇总
话题: dev话题: sda话题: hostb话题: hosta话题: dd
进入Programming版参与讨论
1 (共1页)
S*A
发帖数: 7142
1
我想说的是,很多东西理论上看上去
容易,实际组合到一起就会有事先难以
预计的性能问题。
这是一个很实际的问题,我想把硬盘上
的一个磁盘image 克隆到另外一部机器上。
假设现在有两部机器 hosta, hostb,中间用
用 Gigabit 的网卡连接。现在想把 hosta:/dev/sda
复制到 hostb:/dev/sda 越快越好。硬盘可以支持
100MB 左右顺序读写,网卡可以支持 125MB 的
传输。
之所以用 /dev/sda 这种原始硬盘而不用文件是,
这样没有文件系统的 overhead.
我现在的做法是,
在 hosta 上用 nc 起一个 socket 发送文件。
# dd if=/dev/sda bs=1M | nc --send-only -l 8888
在 hostb 上用 nc 收 socket 写文件。
# nc --recv-only hosta 8888 | dd of=/dev/sda bs=1M
这样可以用差不多 30MB/s 的速度复制。
但是如果 hostb 上用
nc hosta 8888 | dd of=/dev/null
也就是不写盘,可以有接近 100MB/s 的速度。这说明
读盘和网络转的速度是可以占用大部分 gigabit 带宽。
如果 hostb 上用 dd if=/dev/zero of=/dev/sda
这个写盘速度就是同样有差不多 100MB 左右。
完全顺序写。这个也大致符合硬盘的评测。
但是组合一下,虽然 netcat 和 dd 都是不同 process,
占用不同 core, CPU 也远远没有满,同时就只有 30MB
了。谁给解释一下? 还有什么更好的方法?
d***a
发帖数: 13752
2
这是因为接受端的pipe缓冲区不足
nc和dd之间的pipe缓冲区满了
然后造成TCP/IP反复启停,网络速度就降下来了
解决的办法是,在下来的命令中
nc --recv-only hosta 8888 | dd of=/dev/sda bs=1M
在|中再加一个mbuffer或buffer命令
w***g
发帖数: 5958
3
第一次听到 mbuffer,受教了。

【在 d***a 的大作中提到】
: 这是因为接受端的pipe缓冲区不足
: nc和dd之间的pipe缓冲区满了
: 然后造成TCP/IP反复启停,网络速度就降下来了
: 解决的办法是,在下来的命令中
: nc --recv-only hosta 8888 | dd of=/dev/sda bs=1M
: 在|中再加一个mbuffer或buffer命令

S*A
发帖数: 7142
4
赞,这个 mbuffer 还不错,好像专门写来网络备份的。
放在 nc 和 dd 之间作用不大。
mbuffer 本身支持网络读写。
我现在这样干:
接受端
mbuffer -s 1M -m 10M -I 8888 -o /dev/sda
发送端
mbuffer -s 1M -m 10M -i /dev/sda -O hostb:8888
这样可以推送到 73MB/s 的确快多了。很爽。
多谢。
d***a
发帖数: 13752
5
赞钻研!这样做更好。

【在 S*A 的大作中提到】
: 赞,这个 mbuffer 还不错,好像专门写来网络备份的。
: 放在 nc 和 dd 之间作用不大。
: mbuffer 本身支持网络读写。
: 我现在这样干:
: 接受端
: mbuffer -s 1M -m 10M -I 8888 -o /dev/sda
: 发送端
: mbuffer -s 1M -m 10M -i /dev/sda -O hostb:8888
: 这样可以推送到 73MB/s 的确快多了。很爽。
: 多谢。

t***t
发帖数: 6066
6
不明觉厉。
我只会java, windows.

【在 d***a 的大作中提到】
: 赞钻研!这样做更好。
z********0
发帖数: 9013
7
why not iSCSI, SAN protocol? like ATA over Ethernet?
S*A
发帖数: 7142
8
没有限定协议,快就行了。你知道有
比较快的 iscsi 软件推荐,比较容易用?
mbuffer 就是一行启动,很简单。
因为73M已经接近硬盘的极限了,
所以更加快的余地不大了。

【在 z********0 的大作中提到】
: why not iSCSI, SAN protocol? like ATA over Ethernet?
a***n
发帖数: 538
9
Rsync不行吗?

【在 S*A 的大作中提到】
: 没有限定协议,快就行了。你知道有
: 比较快的 iscsi 软件推荐,比较容易用?
: mbuffer 就是一行启动,很简单。
: 因为73M已经接近硬盘的极限了,
: 所以更加快的余地不大了。

z********0
发帖数: 9013
10
AoE runs on layer 2, less network protocol overhead

【在 S*A 的大作中提到】
: 没有限定协议,快就行了。你知道有
: 比较快的 iscsi 软件推荐,比较容易用?
: mbuffer 就是一行启动,很简单。
: 因为73M已经接近硬盘的极限了,
: 所以更加快的余地不大了。

相关主题
透明计算是个什么玩意?Please recommend good "file sharing/sync for multiple pcs" (转载)
rsync和scp有什么区别? (转载)流化文件传送 (转载)
svn/cvs怎么样设置使得只保存最新版本? (转载)国服第一手游刀塔传奇开发经验:c++/lua
进入Programming版参与讨论
s*****m
发帖数: 8094
11


【在 S*A 的大作中提到】
: 赞,这个 mbuffer 还不错,好像专门写来网络备份的。
: 放在 nc 和 dd 之间作用不大。
: mbuffer 本身支持网络读写。
: 我现在这样干:
: 接受端
: mbuffer -s 1M -m 10M -I 8888 -o /dev/sda
: 发送端
: mbuffer -s 1M -m 10M -i /dev/sda -O hostb:8888
: 这样可以推送到 73MB/s 的确快多了。很爽。
: 多谢。

S*A
发帖数: 7142
12
Rsync 很慢啊,能上 10MB/s 就不错了。

【在 a***n 的大作中提到】
: Rsync不行吗?
S*A
发帖数: 7142
13
前面的分析,网络不是瓶颈,只要不写盘,可以100MB的速度
传输。所以省一点点网络没有很大意义。这个关键问题网络
传输和写盘之间的调度问题。

【在 z********0 的大作中提到】
: AoE runs on layer 2, less network protocol overhead
a***n
发帖数: 538
14
是不是很小的文件啊。

【在 S*A 的大作中提到】
: Rsync 很慢啊,能上 10MB/s 就不错了。
S*A
发帖数: 7142
15
拷贝整个硬盘分区,动不动就是几十G 几百 G。
和文件系统里文件大小没有关系。
相当于网络 ghost image.

【在 a***n 的大作中提到】
: 是不是很小的文件啊。
1 (共1页)
进入Programming版参与讨论
相关主题
请教个throughput的问题qxc,我接招了,你给的要求太弱的,给你加强了
晕了,多线程,共享内存的问题透明计算是个什么玩意?
讨论一个c++的变态之处rsync和scp有什么区别? (转载)
其实google赶紧把gdrive搞出来,我就很高兴了svn/cvs怎么样设置使得只保存最新版本? (转载)
Goodbug,是不是单机大于1 million/s的I/O你就输了?Please recommend good "file sharing/sync for multiple pcs" (转载)
清净版:写一个Complete Failover Handbook吧流化文件传送 (转载)
想请教魏老师一个方案中的理解问题。国服第一手游刀塔传奇开发经验:c++/lua
应该给魏大师发10个图灵奖。有什么东西用来做机器间的数据转移的?
相关话题的讨论汇总
话题: dev话题: sda话题: hostb话题: hosta话题: dd