cleversafe跨vault读写实现的初步分析。
来源:互联网 发布:倒a g复国 知乎 编辑:程序博客网 时间:2024/06/05 02:44
JSCSI是cleversafe中用的第三方的源代码,里面有很多类或包是没用的。
即使是cleversafe的源代码,有很多是其本身的一些试验性代码,在软件运行过程中是不起作用的。
另外,跨vault读写的工作和加入metadata的工作也不适合在scsi这一层来做,初步看应该在grid层以下。
首先,下面这个xml是很重要的,如果说cleversafe的代码不好读的话,这个文件是恶首之一。
dsnet-accesser/conf/core-org-bindings.xml
对远程多个slice服务器读写的实现是在
中
org.cleversafe.layer.slicestore.remote.RemoteSliceStore.readImpl(List<SliceName>)
实现的。
但是调用的话是在主要是在org.cleversafe.layer.grid.smartcontroller.ReadStateMachine中
其中的SliceNames,
是存在org.cleversafe.vault.BaseVault.sliceStores中的。
好了,有了这些,基本上就全部都能改了。
注:SliceName的内容是什么,还不太清楚,可以整体编译后,运行log出来看看。以上仅是读代码后的猜测,具体还要log出来才知道是否正确。
另外,中间数据和mapping树之类的东西可以用java.io.RandomAccessFile来写到文件中。
#############################我是结束线#####################################
#############################我是结束线#####################################
#############################我是结束线#####################################
下面是跟着某人的思路看的,看就看了,也不删了.................
原始的jSCSI##################################################################
首先,在jSCSI大包里,读写最终是用:
org.jscsi.connection.Session.read(Object, ByteBuffer, int, long)
来实现的。
当jscsi相关模块收到的socket来的读写命令,交给session来处理的,
session本身是一个线程,通过:head = taskQueue.poll();来监视排列。
head.execute();
final Object thread = head.getCaller();
这里会判断是读或写,分别调用相应的模块 。
在这里 head的接口调用是关键:
对于读写来说head是一个 IOTask类,读写分别对应于ReadTask,WriteTask。
然后是一堆的继承和调用关系,最后现出原型:
org.jscsi.JSCSIDevice.read(long, byte[])
第一个是地址,二个是对应的内存块。读就是把地址中的数据读到后的内存块。
原始的jSCSI##################################################################完
如果还是原始的jSCSI的话:
再从头找回来,读的实现是在:
org.jscsi.connection.Session.ReadTask.execute()中的
phase.read(session, buffer, logicalBlockAddress, length);
又是一堆的继承和调用关系,
最后应该在:
org.jscsi.connection.FullFeaturePhase.read(Session, ByteBuffer, int, long)
但是在cleversafe的实现
ISCSITargetService 中的
LogicalUnit lu = new GridLogicalUnit(controller);
调用的是GridLogicalUnit(controller);
回过头来看一下:
- cleversafe跨vault读写实现的初步分析。
- cleversafe 的读写机制分析与编解码接口
- cleversafe shell命令分析
- 几个Vault的案例分析讲座
- Centos 安装 & cleversafe的使用
- cleversafe 的加解密部分
- AECbytes: ProjectWise和Vault平台的对比分析调研
- Database Vault的禁用
- Linux的网桥中的STP的实现分析初步
- C++面向对象特性实现机制的初步分析 Part1
- C++面向对象特性实现机制的初步分析 Part2
- C++面向对象特性实现机制的初步分析 Part3
- C++面向对象特性实现机制的初步分析
- DirectUI的初步分析
- DirectUI的初步分析
- DirectUI的初步分析
- DirectUI的初步分析
- DirectUI的初步分析
- AT&T汇编指令
- 转:KMP算法详解
- Linux 汇编语言开发指南
- 妹妹的体会
- 没有事业的女孩子(一位老总的感言)
- cleversafe跨vault读写实现的初步分析。
- 用SQL实现12345的所有排序序列--【叶子】
- 赛软件 * 比赛 = 软件比拼
- how to rename with for of cmd
- ASP.NET版Memcached监控工具
- [小说连载]张小庆,在路上(6)- 真心话和大冒险
- oracle CLOB字段转换位VARCHAR
- CSDN第一篇博文
- 用Mongodb基于GridFS存储文件