阅读:2927回复:31
再次请教wowocock和slwqw等高手过来帮忙分析一下
我最终要作的是这样一个东西:
虚拟一个驱动器 这个驱动器中的文件夹和文件可能来自于不同的服务器上的不同目录和文件 但是在用户看来和本地驱动器没有区别 我有过作miniport的经验 之前做过虚拟一个磁盘 磁盘上的内容来自于服务器上的一个分区 但是这样作有一个问题是共享之后有写冲突的问题 而且不好控制管理 所以决定在文件级作 文件系统我从来没有做过 感觉作起来比miniport这样的块级驱动要难很多 不知道我作这个是作过滤驱动还是作一个fsd呢 难不难? 请大侠们分析一下 |
|
最新喜欢:![]() |
沙发#
发布于:2004-04-29 20:22
是啊 郁闷了...
|
|
板凳#
发布于:2004-04-29 18:58
难度肯定是有的
我是新手 很想找代码看 感觉好象很难的说 |
|
|
地板#
发布于:2004-04-29 15:44
我以前写一个粗糙的例子,不过难度太大,写到一半就撤了 :D 靠,推卸责任啊..... |
|
|
地下室#
发布于:2004-04-29 15:14
我以前写一个粗糙的例子,不过难度太大,写到一半就撤了 :D
所以实在没有什么实际的例子可供参考,最好的例子就是IFS Kit自带的FASTFAT了。 |
|
5楼#
发布于:2004-04-29 13:52
好快阿 呵呵
看来五一要看nt file system internal了 不是不信 是不会阿 对 给各例子阿 ^_^ |
|
6楼#
发布于:2004-04-29 13:43
还有
你的要求说是网络上的目录 那么效率低是协议以及网络架构原因 TCP/IP网络在共享连接状态效率不会高过30% 交换网络下可以达到60-70% 以上是实测数据 供你参考 对于绝大多数应用 基于100M交换网络的数据共享(File Based)使用现有协议完全可以满足要求 但是要虚拟Block Based存储,只好考虑光纤或者GIGABITA网络了 以上是关于网络选择的看法,两年前的经验。供参考 |
|
|
7楼#
发布于:2004-04-29 13:29
还有
你要做的东西如果不用投机的方法的话 可以参考一下GFS global file system 很难调 另外,你肯定要用到网络协议 SAMBA和NFS是现成的协议 自己写协议,太麻烦了 |
|
|
8楼#
发布于:2004-04-29 13:24
slwqw老兄还是给个例子吧
我也想看看 RAID*RAId是基于以太网络的RAID5平方 主要用在流媒体服务的存储方面 目前做到单机1。8GBPS的吞吐量 仅仅集群内部控制数据交换就用到2块1000M网卡连接INFINIBAND 很变态 |
|
|
9楼#
发布于:2004-04-29 12:44
slwqw老兄,给个例子吧???嘿嘿......
|
|
|
10楼#
发布于:2004-04-29 12:22
我早就说过了嘛,要写一个FSD,你偏不信! :)
|
|
11楼#
发布于:2004-04-29 11:38
walkonthesky 兄
我做的就是虚拟磁盘 你现在做的怎么样了? 可能是很难把 不过我作多少算多少啦 呵呵 raid我也懂一些阿 我们这有别的人搞这个 RAID*RAID就不懂了 呵呵 对于我现在要作的第一步该怎么作呢 就是说只是虚拟一个本地的文件夹为磁盘? 不用definedosdevice的那种 |
|
12楼#
发布于:2004-04-29 11:28
那我的该怎么下手呢
暂时我想先只作一个虚拟磁盘 读取本地的文件夹内容 但是不使用defiendosdevice阿 要自己将里面的内容映射过来 刚才看了一下nt filesystem internals 是不是要拦截 query directory先? 还有fileobject里面的有一个context2变量 一般是放的ccb结构 从里面可以指出fcb 但是ccb好像是要自己定义的? 不太懂了:) 不知道怎么样得到query directory 处理所需要的信息 所以不知道怎么把目录的结果返回了 |
|
13楼#
发布于:2004-04-29 11:22
呵呵 wowocock也来了阿:)
|
|
14楼#
发布于:2004-04-29 11:21
filedisk里面是看不到任何关于文件的信息的
比如说read 他只知道你读取的是偏移多少 多长的一块单元 他并不知道你读的是哪一个文件里面的内容 |
|
15楼#
发布于:2004-04-29 11:15
不错,FILEDISK,RAMDISK基本都是在FILESYSTEM下的,提供存储空间而已,还要依赖于其上的FILESYSTEM的。
|
|
|
16楼#
发布于:2004-04-29 11:08
很感谢walkonthesky兄的回答!
我以前做过iscsi 下载intel的linux下的iscsi源码 然后将启动器端改成windows下的 就是作一个miniport驱动 并不很难 不过ms后来有免费的了 :) 我对文件系统是这两天开始看的 不过filedisk我觉得并不是文件系统驱动 因为他是针对块寻址的 和scsi miniport里面的寻址方式一样 我觉得他好像是工作在文件系统之下的吧? filedisk使用那个文件没有任何别的用处 仅仅是当作一个存储空间 你把这个文件换成一块内存 一个真实的磁盘或者别的任何存储空间都可以的 他本身并不能读取给定原始文件里面的任何文件信息 仅仅是当作存储空间使用 当然 后面你写进去的可以读出来 这和我原来作iscsi一回事 而definedosdevice是可以读出原始信息的 因为他工作在现有的文件系统上面 我的一点很肤浅的看法 请大侠们指正 我作这个程序的目的是想做一个真正的虚拟磁盘 但是要工作在文件系统这一层 不是投机的方式 不使用网上邻居的这种方式 这样作的原因是网上邻居的性能太低了 而如果自己作 可以针对专门的应用作优化 比如说对存储优化 象现在的dafs这样的系统在1000m网下面可以达到70m了 |
|
17楼#
发布于:2004-04-29 09:26
FILEDISK将文件虚拟为磁盘分区
但是为什么不直接将文件夹DefineDosDevice呢 这样除了不能格式化以外,和虚拟的磁盘分区是一模一样 有什么区别吗?? 如果仅仅是为了实现磁盘加密之类的功能 那么,那么与直接使用EFS的区别在那里 如果仅仅是将许多磁盘文件放到一个文件中,集中进行处理 那么这些要求使用复合结构文件完全可以达到 有什么区别吗??? 楼主借光!!!! 借你的帖子和大虾们讨论一下! 这个疑问我想了很久了。 |
|
|
18楼#
发布于:2004-04-29 09:24
其实对于FILEDISK的意义我也是很迷茫
感觉这种做法意义不大 |
|
|
19楼#
发布于:2004-04-29 09:19
看你做的功能
感觉就象是虚拟存储的概念 但是看你提问题的方式 绝对不是做虚拟存储产品 所以就想当然的建议你以取巧的方式解决了 因为你要的东西绝对不是一两个人可以搞出来的 否则IBM/HP/VERITAS/EMC还玩什么 |
|
|
上一页
下一页