用.NET创建虚拟磁盘?

时间:2011-07-29 12:26:35

标签: c# .net virtualization hard-drive

我在Stack Overflow上找到了很多关于此问题的好主题,但我的问题更具体一些。很多公司正在使用这个软件来托管我们所做的相同服务......

http://memory.dataram.com/products-and-services/software/ramdisk

显然,虚拟磁盘的读/写速度非常快,而且当我们运行非常密集的I / O软件时,我想写一些东西来做同样的事情。我唯一需要的是它在虚拟驱动器上运行应用程序(用于增加的I / O速度)并每隔X分钟将数据复制到硬盘驱动器上的物理位置。

这很容易实现吗?我应该用什么来实现这个目标?

修改

看起来我可以使用下面的Dokan Library,但是Windows中的“subst”命令会产生任何I / O性能提升,或者这个库是最好的选择吗?

http://dokan-dev.net/en/about/

2 个答案:

答案 0 :(得分:7)

除非您想编写自己的RAM磁盘驱动程序,否则这不是C#/ .NET问题。像链接一样的驱动程序已经存在了很长时间,并且它们确实具有疯狂的读/写速度,代价是应用程序和操作系统的RAM可用性。如果相关机器有大量RAM,那么在您的情况下这可能不是问题。

它的编程部分是将RAM磁盘内容定期写入磁盘。由于RAM磁盘通常只显示为另一个驱动器,因此将文件从文件复制到物理磁盘很简单。你可以在C#中做到这一点,但它在许多脚本语言中都能正常工作。

如果这是一个高端应用程序,请查看固态SATA驱动器。它们的读/写速度比硬盘驱动器快得多,并且数据在崩溃,电源故障等方面都是持久的。

答案 1 :(得分:0)

如果你确实需要一个RAM驱动器,那么你真正需要的是一个块设备驱动程序,它将在内核模式下完成工作。 Dokan的问题是(a)这是一个文件系统驱动程序,这需要你做很多额外的工作,(b)它调用你的用户模式代码,这会导致速度减慢,(c)它是免费的东西,不够稳定,不适合生产使用。