作为一个维护问题,我需要定期(每年3-5次)复制一个存储库,该存储库现在有超过2000万个文件,总磁盘空间超过1.5TB.我目前正在使用RICHCOPY,但已尝试过其他人.RICHCOPY似乎是最快的,但我不相信我接近我的XP机器能力的极限.
我正在使用我在汇编语言的艺术中读到的东西编写一个程序来复制我的文件.我的另一个想法是开始学习如何在Python中使用多线程来复制.
我正在四处寻找在大会中这样做的想法,因为它似乎很有趣,但是虽然我的时间并不是非常珍贵,但是我想要了解一下我是否会在复印速度上看到足够的增益.我假设我会,但我开始真正学习编程18个月,它仍然或多或少是一个爱好.因此,我可能会错过解释语言所发生的一些基本概念.
任何观察或经验将不胜感激.请注意,我不是在寻找任何代码.我已经在Python 2.6中编写了一个基本的复制程序,它不比RICHCOPY慢.我正在寻找一些能让我更快速的观察.现在,我花了50多个小时从磁盘复制到Drobo,然后从Drobo复制到磁盘.我有一个LogicCube,当我只是复制磁盘但有时我需要从磁盘转到Drobo或反过来.我想,鉴于我可以在七小时内使用LogicCube扇形复制一个3/4满2 TB的驱动器,我应该能够使用Assembly接近它,但我不知道这是否有效.(是的,有时无知是幸福)
我需要加速它的原因是我有两到三个周期,在复制过程中发生了一些事情(五十个小时是很长一段时间,期望世界保持不动),这导致我不得不丢弃副本并重新开始.例如,上周,水管在我们的建筑物下面断裂并缩短了电力.
感谢早期的回复,但我不认为这是I/O限制.我没有通过网络,驱动器插入我的母板与sata连接,我的Drobo插入Firewire端口,我的想法是两个连接应该允许更快的传输.
实际上我不能使用扇区副本,除了从单个磁盘到Drobo.由于Drobo文件结构很神秘,因此它无法正常工作.我不科学的观察是,从一个内部磁盘到另一个内部磁盘的副本并不比从Drobo到内部磁盘的副本快.
我受硬件约束,我买不起10K转2TB的驱动器(如果他们甚至制造它们).
你们中有很多人建议使用文件同步解决方案.但这并不能解决我的问题.首先,我玩的文件同步解决方案首先构建了一个地图(为了更好的术语),我有太多的小文件,所以他们窒息.我使用RICHCOPY的原因之一是它立即开始复制,它不使用内存来构建地图.其次,几周前我的三个Drobo备份中有一个失败了.我的规则是,如果我有备份失败,其他两个必须保持离线,直到新的建立.因此,我需要从我使用LogicCube的三个备份单驱动器副本中复制一个.
在一天结束时,我必须在一个驱动器上有一个好的副本,因为这是我交付给我的客户.因为我的客户有各种各样的系统,我在SATA驱动器上交付给他们.
我从某人那里租了一些云空间,我的数据也被存储为最深的备份,但如果离开那里则拉动它是很昂贵的.
Mar*_*ers 42
复制文件是一个I/O绑定过程.你不太可能看到在汇编中重写它有任何加速,甚至多线程可能只会导致事情变慢,因为不同的线程同时请求不同的文件将导致更多的磁盘搜索.
使用标准工具可能是最好的方法.如果有任何要优化的内容,您可能需要考虑更改文件系统或硬件.
减速有2个地方:
每个文件的副本比磁盘副本慢很多(你可以克隆100%的每个扇区的数据).特别适用于20mm文件.除非从克隆文件切换到克隆原始磁盘数据,否则无法使用调整最多的程序集修复该程序集.在后一种情况下,是的,汇编确实是你的票(或C).
简单地存储20mm文件并递归地找到它们在Python中可能效率较低.但这更有可能是找到更好的算法的功能,并且不可能通过Assembly显着改进.此外,这将不是50小时的主要贡献者
总结 - 如果您进行原始磁盘扇区复制,Assembly WILL会有所帮助,但如果您进行文件系统级复制,则无法提供帮助.
正如其他答案所提到的(+1标记),在复制文件时,磁盘i/o是瓶颈.你使用的语言不会产生太大的影响.您如何布置文件将有所作为,您传输数据的方式将有所作为.
你提到过复制到DROBO.你的DROBO是如何连接的?查看此连接速度图表.
让我们来看看你可以通过某些线路类型获得的最大复制率:
1.5 TB / 1.5 Mbps).瘸子,至少你的表现并不是这么糟糕.1.5 TB / 480 Mbps).也许是LogicCube?1.5 TB / 80 Mbps).也许你的硬盘速度?1.5 TB / 100 Mbps).因此,根据您的问题的限制,您可能无法做得更好.但您可能想要开始执行原始磁盘复制(如Unix的dd),这应该比文件系统级复制快得多(它更快,因为没有随机磁盘寻找目录遍历或碎片文件).
要使用dd,您可以将Linux启动到您的计算机上(或者使用cygwin?).请参阅本页面以供参考或这一个关于使用Ubuntu的现场启动从Windows备份.
如果您要在RAID上组织1.5 TB数据,则可能会加快复制速度(因为磁盘将并行读取),并且(取决于配置)它还可以保护您免受驱动故障.
我不认为在汇编中写它会帮助你.如果您受处理器约束并且认为您可以做比编译器更聪明的事情,那么在汇编中编写例程可以帮助您.但是在网络副本中,你将受到IO约束,所以在这里或那里刮一个循环几乎肯定不会有所作为.
我认为这里的真实规则是,在考虑优化之前,最好先了解您的流程以了解您在哪些方面花费时间.
| 归档时间: |
|
| 查看次数: |
3297 次 |
| 最近记录: |