热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

raid读写速度对比_一种高速的文件读写机制的设想

最近在自己开发文件系统,不知不觉,一个奇妙的想法一闪而过,关于文件的读写。设想:把单个文件储存在多个磁盘上,由于cpu速度比

最近在自己开发文件系统,不知不觉,一个奇妙的想法一闪而过,关于文件的读写。

设想:把单个文件储存在多个磁盘上,由于cpu速度比磁盘速度快,那么可以在一块磁盘上读写的时候,cpu进行另外一个磁盘上读写。那么这样一来,整个文件的读写时间就大大缩短了。有点像cpu的流水线技术!

我们知道,现在的单个文件都是储存在一个磁盘上的,也就是说整个文件都是在一个磁盘上,例如windows的c盘有一个文件test.txt,它文件数据就是在这个磁盘上的。对于单个磁盘的操作,它是线性的,只有完成前面的数据读写,才能继续后面数据的读写。

假设我们有2块磁盘,分别是sda, sdb吧。现在有一个test.txt文件在sda上面,假设,它的大小是1MB,假设磁盘读写速度是1MB/S,那么读取这个文件需要花费1秒的时间。

那么,如果此时把文件的数据分别储存到2个磁盘上,当从一个磁盘sda读取数据的时候,我们切换到另一个磁盘sdb,再读取数据。相当于把文件分成2半,当前半部分在sda中读写的时候,cpu再到sdb中进行读写。如果忽略cpu的运行,绝对得来看,对于1MB的文件,我们是不是在0.5S就读写完成了呢?当然这个只是绝对得来看。但是这种设想,也不是不可取。

如果我们把cpu的时间加上,浪费0.1秒,那么现在就0.6s来读写这个文件,速度照样可以提升40%。这是什么概念?对于小文件来说,这倒无所谓,可是对于大文件来说,这个设想就十分有利。如果一个1G的文件需要花费10s来完成读写,如果作用这个机制,时间就是6s。对于数据库文件的读写,可以大大缩短整个响应时间。

不过。这种方式最大的弊端就是,把文件分别储存到了多个磁盘上,如果一个磁盘受损,那么这个文件就废了。

如果是"同时"操作4块磁盘的话?如果每个磁盘可以提高一半的速度,那么,4块磁盘的就只需要0.625s时间!!!震惊!

不过,这些都是理想状态下的。还有许多都被忽略了。为什么还是要提出来呢?因为从这个数据读写速度的角度来说,是非常乐观的。

如果这个理论运用于实际中去,再结合多处理器,那么,在未来,对于文件的读写在以后速度将成倍提高!

原本打算进一步研究,写成一篇论文的,由于自己太懒了,就没去做。

我是操作系统BookOS的开发者,我们的官网是http://www.book-os.org,欢迎各位操作系统开发爱好者来玩(不忘为自己打广告,哈哈)。



推荐阅读
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文介绍了如何利用Java中的URLConnection类来实现基本的网络爬虫功能,包括向目标网站发送请求、接收HTML响应、解析HTML以提取所需信息,并处理可能存在的递归爬取需求。 ... [详细]
  • 本文详细介绍如何在 Windows 环境下安装 Ubuntu 12.04 版本的 Linux 操作系统,包括必要的软件下载、配置步骤以及注意事项。 ... [详细]
  • 众包(Crowdsourcing)是指将任务分发给广泛的社区成员完成,而非由组织内部人员独力承担。这一模式在软件测试领域尤为突出,通过结合网络与云计算技术,形成了强大的众包测试机制,对传统测试流程产生了深远影响。 ... [详细]
  • 本文汇集了一系列与Windows 7开发相关的资源链接,包括官方开发者指南、培训工具包、兼容性工具包以及SDK等,旨在为开发者提供全面的支持。 ... [详细]
  • 本文详细介绍了在使用Socket进行网络编程时,遇到链接器错误`undefined reference to WSAStartup@8`的解决方案,适用于多种开发环境。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • MacOS 重装指南
    本文详细介绍了如何通过U盘启动并重新安装MacOS,包括遇到安装问题时的解决方案。 ... [详细]
  • 如何恢复CAD中意外丢失的图纸数据
    当使用CAD进行绘图时,因突然断电或其他原因导致计算机关闭可能会造成工作数据的丢失。然而,通过利用CAD软件的自动保存功能,用户通常能够恢复至最近一次自动保存的数据状态。 ... [详细]
  • 本文深入探讨Java编程语言的关键特性,包括但不限于其简洁性、强大的面向对象能力、跨平台兼容性、安全机制、高效性能及多线程支持等方面。文章旨在为开发者提供全面理解Java特性的指导。 ... [详细]
  • 在Windows Server 2008 R2上配置IIS FTP服务
    本文详细介绍了如何在Windows Server 2008 R2操作系统上通过IIS配置FTP服务的过程,包括服务器角色的选择与安装、FTP站点的创建以及必要的服务和防火墙设置检查。 ... [详细]
  • Python数据类型6 字典
    字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包 ... [详细]
author-avatar
mobiledu2502925687
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有