mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:2927回复:31

再次请教wowocock和slwqw等高手过来帮忙分析一下

楼主#
更多 发布于:2004-04-28 15:38
我最终要作的是这样一个东西:
虚拟一个驱动器 这个驱动器中的文件夹和文件可能来自于不同的服务器上的不同目录和文件
但是在用户看来和本地驱动器没有区别

我有过作miniport的经验 之前做过虚拟一个磁盘 磁盘上的内容来自于服务器上的一个分区
但是这样作有一个问题是共享之后有写冲突的问题 而且不好控制管理 所以决定在文件级作

文件系统我从来没有做过 感觉作起来比miniport这样的块级驱动要难很多

不知道我作这个是作过滤驱动还是作一个fsd呢 难不难?
请大侠们分析一下

最新喜欢:

TOMG2004TOMG20...
mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-29 20:22
是啊  郁闷了...
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-29 18:58
难度肯定是有的

我是新手
很想找代码看
感觉好象很难的说
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-04-29 15:44
我以前写一个粗糙的例子,不过难度太大,写到一半就撤了 :D

所以实在没有什么实际的例子可供参考,最好的例子就是IFS Kit自带的FASTFAT了。

靠,推卸责任啊.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-29 15:14
我以前写一个粗糙的例子,不过难度太大,写到一半就撤了 :D

所以实在没有什么实际的例子可供参考,最好的例子就是IFS Kit自带的FASTFAT了。
mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-29 13:52
好快阿 呵呵

看来五一要看nt file system internal了

不是不信 是不会阿

对 给各例子阿 ^_^
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-29 13:43
还有

你的要求说是网络上的目录

那么效率低是协议以及网络架构原因
TCP/IP网络在共享连接状态效率不会高过30%
交换网络下可以达到60-70%

以上是实测数据
供你参考

对于绝大多数应用
基于100M交换网络的数据共享(File Based)使用现有协议完全可以满足要求

但是要虚拟Block Based存储,只好考虑光纤或者GIGABITA网络了
以上是关于网络选择的看法,两年前的经验。供参考
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-04-29 13:29
还有

你要做的东西如果不用投机的方法的话

可以参考一下GFS
global file system

很难调

另外,你肯定要用到网络协议
SAMBA和NFS是现成的协议
自己写协议,太麻烦了
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-04-29 13:24
slwqw老兄还是给个例子吧
我也想看看

RAID*RAId是基于以太网络的RAID5平方

主要用在流媒体服务的存储方面

目前做到单机1。8GBPS的吞吐量
仅仅集群内部控制数据交换就用到2块1000M网卡连接INFINIBAND

很变态
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2004-04-29 12:44
slwqw老兄,给个例子吧???嘿嘿......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-04-29 12:22
我早就说过了嘛,要写一个FSD,你偏不信! :)
mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-04-29 11:38
walkonthesky 兄
我做的就是虚拟磁盘
你现在做的怎么样了?

可能是很难把
不过我作多少算多少啦 呵呵


raid我也懂一些阿 我们这有别的人搞这个
RAID*RAID就不懂了 呵呵

对于我现在要作的第一步该怎么作呢
就是说只是虚拟一个本地的文件夹为磁盘?
不用definedosdevice的那种
mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-04-29 11:28
那我的该怎么下手呢
暂时我想先只作一个虚拟磁盘 读取本地的文件夹内容
但是不使用defiendosdevice阿
要自己将里面的内容映射过来

刚才看了一下nt filesystem internals
是不是要拦截 query directory先?

还有fileobject里面的有一个context2变量
一般是放的ccb结构 从里面可以指出fcb

但是ccb好像是要自己定义的?
不太懂了:)

不知道怎么样得到query directory 处理所需要的信息
所以不知道怎么把目录的结果返回了
mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-04-29 11:22
呵呵  wowocock也来了阿:)
mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-04-29 11:21
filedisk里面是看不到任何关于文件的信息的
比如说read
他只知道你读取的是偏移多少 多长的一块单元
他并不知道你读的是哪一个文件里面的内容
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
15楼#
发布于:2004-04-29 11:15
不错,FILEDISK,RAMDISK基本都是在FILESYSTEM下的,提供存储空间而已,还要依赖于其上的FILESYSTEM的。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
mtwyaya
驱动牛犊
驱动牛犊
  • 注册日期2002-10-20
  • 最后登录2008-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-04-29 11:08
很感谢walkonthesky兄的回答!

我以前做过iscsi
下载intel的linux下的iscsi源码 然后将启动器端改成windows下的
就是作一个miniport驱动 并不很难 不过ms后来有免费的了 :)

我对文件系统是这两天开始看的
不过filedisk我觉得并不是文件系统驱动
因为他是针对块寻址的 和scsi miniport里面的寻址方式一样
我觉得他好像是工作在文件系统之下的吧?

filedisk使用那个文件没有任何别的用处  仅仅是当作一个存储空间
你把这个文件换成一块内存 一个真实的磁盘或者别的任何存储空间都可以的
他本身并不能读取给定原始文件里面的任何文件信息 仅仅是当作存储空间使用
当然 后面你写进去的可以读出来 这和我原来作iscsi一回事
而definedosdevice是可以读出原始信息的 因为他工作在现有的文件系统上面

我的一点很肤浅的看法 请大侠们指正

我作这个程序的目的是想做一个真正的虚拟磁盘 但是要工作在文件系统这一层
不是投机的方式
不使用网上邻居的这种方式
这样作的原因是网上邻居的性能太低了
而如果自己作 可以针对专门的应用作优化 比如说对存储优化
象现在的dafs这样的系统在1000m网下面可以达到70m了  
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-04-29 09:26
FILEDISK将文件虚拟为磁盘分区
但是为什么不直接将文件夹DefineDosDevice呢
这样除了不能格式化以外,和虚拟的磁盘分区是一模一样
有什么区别吗??

如果仅仅是为了实现磁盘加密之类的功能
那么,那么与直接使用EFS的区别在那里

如果仅仅是将许多磁盘文件放到一个文件中,集中进行处理
那么这些要求使用复合结构文件完全可以达到
有什么区别吗???

楼主借光!!!!
借你的帖子和大虾们讨论一下!
这个疑问我想了很久了。
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-04-29 09:24
其实对于FILEDISK的意义我也是很迷茫

感觉这种做法意义不大
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-04-29 09:19
看你做的功能

感觉就象是虚拟存储的概念
但是看你提问题的方式
绝对不是做虚拟存储产品

所以就想当然的建议你以取巧的方式解决了
因为你要的东西绝对不是一两个人可以搞出来的

否则IBM/HP/VERITAS/EMC还玩什么
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
上一页
游客

返回顶部