OnebyOnePlease
驱动牛犊
驱动牛犊
  • 注册日期2004-05-13
  • 最后登录2010-03-19
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望31点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1887回复:18

关于虚拟网络硬盘的同步问题

楼主#
更多 发布于:2005-03-04 14:13
我在A机器创建虚拟盘E,它是网络上机器B的物里盘C.
我是通过把发向A的E盘的IRP都通过TDI传给机器B的C:盘
但是现在有个问题是它们不能同步。
如在机器A的E盘写入一个文件,在机器B上的C盘却看不到这个文件。
它们两个盘好想是独立的。
我知该如何解决这个问题。
还有就是还有其它方式实现虚拟硬盘吗?
jiunie
驱动牛犊
驱动牛犊
  • 注册日期2003-12-19
  • 最后登录2005-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-07 09:53
你知的网络上的两台机器可以通过网上邻居看到吗?
如能的话,将要虚拟的空间用文件来呈现,直接用filedisk就可以了.
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-03-07 10:48
期待...
这个问题恐怕很难做,因为向磁盘写如数据得时候驱动层不是马上能得到得。
---内核开发合作或提供基础技术服务QQ:22863668 ---
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-07 11:08
期待...
这个问题恐怕很难做,因为向磁盘写如数据得时候驱动层不是马上能得到得。

每次发完文件,强制Flush一下
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-03-07 11:42
[quote]期待...
这个问题恐怕很难做,因为向磁盘写如数据得时候驱动层不是马上能得到得。

每次发完文件,强制Flush一下 [/quote]
发送完毕当然好办了,这之前磁盘中还没有得到数据呢,你怎么知道发送完毕
---内核开发合作或提供基础技术服务QQ:22863668 ---
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-07 11:51
[quote][quote]期待...
这个问题恐怕很难做,因为向磁盘写如数据得时候驱动层不是马上能得到得。

每次发完文件,强制Flush一下 [/quote]
发送完毕当然好办了,这之前磁盘中还没有得到数据呢,你怎么知道发送完毕 [/quote]
用定时器,每隔一段时间Flush一下,操作系统就是这样做的
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
OnebyOnePlease
驱动牛犊
驱动牛犊
  • 注册日期2004-05-13
  • 最后登录2010-03-19
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望31点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-07 16:16
这样还是会造成磁盘的混乱。
OnebyOnePlease
驱动牛犊
驱动牛犊
  • 注册日期2004-05-13
  • 最后登录2010-03-19
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望31点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-08 08:55
有没有更好的方案呢。
liuge
驱动牛犊
驱动牛犊
  • 注册日期2004-06-02
  • 最后登录2005-07-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-08 09:14
你是在涉及到分布式文件系统的技术问题了:这就是Cache的一致性问题。这个问题可能和在你虚拟硬盘上的文件系统实现有关。你用的FAT32还是别的什么?

理论上,Windows 2000的Cache Manager每隔3秒就会把Dirty数据Flush一次,所以我比较好奇为什么会发生这种现象?能具体描述一下吗?
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2005-03-08 09:33
你是在涉及到分布式文件系统的技术问题了:这就是Cache的一致性问题。这个问题可能和在你虚拟硬盘上的文件系统实现有关。你用的FAT32还是别的什么?

理论上,Windows 2000的Cache Manager每隔3秒就会把Dirty数据Flush一次,所以我比较好奇为什么会发生这种现象?能具体描述一下吗?

不可能是3秒钟,我修改FILEDISK就发现,开始处理WRITE时出错了,但是确还是可以把文件复制进去出来,文件没有损坏,但是过几分钟才会发现文件有问题。如果文件小的话时间就会很长。
---内核开发合作或提供基础技术服务QQ:22863668 ---
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-08 10:25
你是在涉及到分布式文件系统的技术问题了:这就是Cache的一致性问题。这个问题可能和在你虚拟硬盘上的文件系统实现有关。你用的FAT32还是别的什么?

理论上,Windows 2000的Cache Manager每隔3秒就会把Dirty数据Flush一次,所以我比较好奇为什么会发生这种现象?能具体描述一下吗?

Cache是CPU中的,刷新是刷新到内存,使内存与Cache一致,而不是磁盘
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
OnebyOnePlease
驱动牛犊
驱动牛犊
  • 注册日期2004-05-13
  • 最后登录2010-03-19
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望31点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-03-08 12:35
我的虚拟硬盘是把客户端的文件系统下层的IRP发给服务端的实际文件系统的下层。他没有通过服务端的物理盘所邦定的文件系统。
所以我现在考虑是不是在文件系统的上层建过虑驱动,截获IRP
然后直接发给服务端的物理硬盘的文件系统。
这样同部的问题就解决了。
大家看看,这个方案如何?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-03-08 15:30
我的虚拟硬盘是把客户端的文件系统下层的IRP发给服务端的实际文件系统的下层。他没有通过服务端的物理盘所邦定的文件系统。
所以我现在考虑是不是在文件系统的上层建过虑驱动,截获IRP
然后直接发给服务端的物理硬盘的文件系统。
这样同部的问题就解决了。
大家看看,这个方案如何?
 

效果一样,OS的文件系统也有缓冲
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
OnebyOnePlease
驱动牛犊
驱动牛犊
  • 注册日期2004-05-13
  • 最后登录2010-03-19
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望31点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-03-08 16:43
有没有什末办法可以使文件系统知到实际物理磁盘已经变化了。
然后文件系统自动刷新。
liuge
驱动牛犊
驱动牛犊
  • 注册日期2004-06-02
  • 最后登录2005-07-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-03-09 10:13
我写了一个文件驱动,在文件驱动这一层观察到的write flush就是3秒钟左右。但在disk这一层如何,我试试看。你看看我写的vdisk,它比filedisk简单多了(它使用了一个系统句柄标志,所以简单得多),也许有帮助。如果需要写控制器级的虚拟硬盘,我们再来讨论。

vdisk在http://bcompute.com/rambler/cn/WinDriverDownload.htm网页上。功能少一些,毕竟是一个演示程序:) 但可以用,更易于演示。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-03-09 10:43
就它vdisk下不了
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
OnebyOnePlease
驱动牛犊
驱动牛犊
  • 注册日期2004-05-13
  • 最后登录2010-03-19
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望31点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-03-10 09:27
他能实现同步功能吗?
还有他能需拟一个网络盘吗?
好象不能吧
liuge
驱动牛犊
驱动牛犊
  • 注册日期2004-06-02
  • 最后登录2005-07-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-03-13 03:53
忘了更新网页了,惭愧。现在可以下了。

把这个例子中的Zw...函数调用改成对TDI的调用就可以了。

关于使用TDI,可以看一下DriverStudio的DriverNetwork库。也可以看“谁有磁盘驱动访问网络的源代码,就是在磁盘驱动中加入TDI支持 ”这个帖子。


gongbin_net
驱动牛犊
驱动牛犊
  • 注册日期2003-06-18
  • 最后登录2005-06-07
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-03-25 18:39
OnebyOnePlease你的那个做的如何阿,我们现在也作那个,不过是数据库的,可不可以多多帮帮我啊
游客

返回顶部