hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1405回复:8

kangzh,terrychen,cidentifier等大侠请进,高分求助

楼主#
更多 发布于:2004-08-29 00:33
我现在的任务要做一个iscsi 的客户端(跟网络驱动器类似,不过用的是iscsi协议),我知道你们几位大侠做过这方面的东东,所以冒昧请教我用过了这边的vscsi是可以达到用文件或ram虚拟盘的目的,可是要用到我的任务上来,有一些疑问:
1:如何在探测到iscsi盘的时候自动在本地生成它对应的磁盘分区标记,vscsi必须手工在计算机机管理里面转为基本盘再分区,再得到逻辑盘,而这在microsoft iscsi initiator中是不需要做的(当然如果目标端本来就没有分区那是必须在计算机管理里面做的),而且从实现网络盘来讲也应该做成这样
2:一般scsi miniport来读文件或内存ram的时候必须要有对应大小的空间,不然做不了网络盘如果也按照这种办法做显然不行本地不可能有这么大的空间,那么势必要把从网络上得到的iscsi target的磁盘大小文件等信息转化成某种形式来欺骗windows,问题是这种欺骗是怎么做到的?
3:对于网络中可能存在的多个portal是通过驱动里面设定一个支持的portal的上限然后在驱动里面定死(这种方案从逻辑上讲不太对因为从逻辑上每个portal都是一个磁盘,每个target是一个磁盘分区),还是每个驱动对应一个portal,那么多个portal怎么办,起多个驱动实例?不懂了
4:tdi是必须要用的,我在windows里面没有找到简单的可以调用的函数,cidentifier你是怎么做到的,能提示一下吗?这边的tdi client和tdi server好像都没这么简单啊
多谢各位的指教//bow

我的邮箱是paulchengg@126.com

最新喜欢:

TOMG2004TOMG20...
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-01 09:35
1,试试看IOCTL_SCSI_RESCAN_BUS。
2。直接把scsi的srb转化为iscsi的命令
3。没看懂问题
4。tdi有一套接口的,本站应该有范例。
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-01 13:14
多谢多谢,可能有些问题我没有说清楚
1:IOCTL_SCSI_RESCAN_BUS会让系统发现新硬件的吧?然后系统就出现disk wizard..然后要创建分区,逻辑盘,格式化一大堆.实际要做到的效果是如果server端的盘没有分区格式化这样做是合理的,但是如果server端的盘已经格式化了且分好区,有内容了,那么这样做是不合适的.我的问题正是怎么让盘自动的出现在资源管理器中,而不需要手工去做分区,格式化这些事.我跟踪了一下,手工创建分区,格式化时有好多的read capacity,read10,write10.

input/output range 怎么自动找一个合适的不冲突的值设置进去,vscsi必须要在安装时手工指定input/output range,这个问题上次看到cidentifier问过,不知道怎么解决的
2:我的意思是怎么让vscsi以为它所挂的盘的容量是特定大小,以及知道它所对应的分区是指定的分区格式等等,这些资源管理器里面一个盘出现可以操作的必须要做的基本工作.
3:我的意思其实是 怎么让一个scsi miniport可以挂多个磁盘,以及在处理IRP可以区分开各个盘,互不干扰.
4:这个问题解决起来问题不大,看到了pcausa

谢谢谢谢
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-03 15:39
问题没有人回答吗,大侠们快出出手啊,快被淹没了。。。
cidentifier
驱动牛犊
驱动牛犊
  • 注册日期2003-11-13
  • 最后登录2009-09-20
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-06 18:01
1.不知道你的iscsi initiator是用什么做,如果采用scsiminiport的话,那么scsiport会作为一个总线驱动来自动发送inquiry命令来探测scsi硬盘,你只要响应该命令就可以了。

2.scsiport会发送readcapacity来询问磁盘的大小。

3.portal是什么?是iscsi中的术语吗?

4.iscsi好像应该使用tdi/tcp

顺便问一下,你的target是硬件还是虚拟磁盘?我也正打算研究iscsi,共勉
control it, or forget it
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-06 21:00
谢谢cidentifier
1:查询磁盘是知道的,但关键是怎么让他省略掉前面分区,创建逻辑盘这些在计算机管理里面要走的步骤而直接在资源管理器里面出现完好的盘?自动为scsi hba分配资源?(我这边试的时候要手工指定input/output range)
2:磁盘大小是read capacity里面返回的没错,但是看分区等这些对应的呢,这个问题其实也可以看做属于第一个问题,因为不手工做1那些步骤,那么必须在驱动中把那些操作对应的命令都做一遍,而其中任何一个操作对应的都是SRB序列,不可能是单个的SRB,问题是这些序列是什么

3:portal是scsi 中的定义,对应着ip,port这些,我理解错误了,应该跟它没多少关系

同共勉
cidentifier
驱动牛犊
驱动牛犊
  • 注册日期2003-11-13
  • 最后登录2009-09-20
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-10 10:43
这跟你的target是硬件还是虚拟盘有关系,如果是硬件,当然需要分区,如果是利用文件虚拟,则可以先利用filedisk将文件格式化后,再用你的iscsi去访问。

所谓的srb序列,你不能指望得到一个固定的srb序列,而只是要保证响应必要的每个命令,从我的实验来看,目前只需要响应inquiry, testunitready, readcapacity, read10, write10, modesence。
control it, or forget it
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-10 10:58
新买的磁盘不是都需要分区格式化嘛?没有必要省掉这一步吧,如果真有需要不妨参看一下driverstudio里面的一个例子,ramdisk,它创建的磁盘是直接格式话好的,只需要填写必要的数据到磁盘相应位置就可以了.
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-10 15:12
谢谢cidentifier和kangzh,
如果不能得到SRB序列,那么必须用映象文件来做了,本来我想是把一个文件夹映射成本地的一个磁盘。windows里面映射网络驱动器倒是可以将一个目录映射成一个网络映象磁盘,不知道是怎么实现的。。

关于分区,第一次有硬件当然需要分区了,我的意思是第一次分完区建立映象,也向映象盘中写入了东西之后,下次就连到网络映象盘的时候就不应该再让用户在计算机管理里面做分区这些事。是不是说只要我指定的映象文件有以前写过得内容,也处理好了read10,write10这些,那么我下次连上去的时候,就不需要在计算机管理里面做任何事情,资源管理器里面自动有磁盘出现。(这个问题还没实际试过,但我想应该是这样吧)

为SCSI 驱动分配IO资源这个问题好像还是没有好的解决办法。。

还有一个问题就是我在映象盘上共享的文件时,如果我设成只读,那么当别人通过映象文件访问我的映象盘的时候怎么让他不能更改文件内容,也不能删掉文件。如果只是简单的在映象盘上将文件属性设成只读,那么势必下次创建者也更改不了文件的内容了。至于删除文件更不知道该怎么做,因为windows里面只读文件是可以删去的,那么当某个用户共享一个文件在映象盘上的时候,别的用户登陆到这个镜像盘上可以任意删去。而这应该是不允许的。          

谢谢
游客

返回顶部