vault 创建过程 & 新增编码的方法

本文详细介绍了在特定配置文件中新增ID码的方法,并通过示例展示了如何在create_vault命令中进行设置。同时,文章深入探讨了ID码的具体实现、数据库存储方式以及与XML配置的交互过程,包括使用Eclipse插件编辑数据库表结构和解析XML文件的流程。此外,还阐述了vault管理、权限控制、服务接口和服务状态绑定等方面的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新增IDA码的方法

/root/dsnet-accesser/conf/core-org-bindings.xml文件中,

在现有的三四种IDA码的后面,增加一种


      <bindns:implementation class="org.cleversafe.ida.CosetCode.CosetInformationDispersalCodec" referral="cosetcodec" minVersion="1.0" maxVersion="1.0"/>

 

然后在create_vault命令中的vault配置xml中进行设置

/root/dsnet-accesser/bin/dsnet-create-vault --name="iqn.2010-05.anycn" --descriptor="/root/dsnet-accesser/conf/anycn.xml"

如:anycn.xml中

<!-- Information Dispersal Algorithm -->
   <vault:ida kind="IDA" referral="cosetcodec" version="1">
      <eval:param name="num-slices">
         <eval:literal type="int" value="8"/>
      </eval:param>
      <eval:param name="threshold">
         <eval:literal type="int" value="6"/>
      </eval:param>
   </vault:ida>

 

 

 


 

 

./dsnet-create-vault

 

好像有二个接口:

1、具体实现是在org.cleversafe.layer.access.GridAccessDaemon 中有函数

private class VaultStatus implements VaultStatusMBean

 VaultStatus(文件名为GridAccessDaemon )中有:

public String createVault(String descriptor, String name)

 

调用的可能是:

 

LocalFileVaultManager implements VaultManager中的:

org.cleversafe.vault.managers.LocalFileVaultManager.createVault(String, String, UUID, CredentialsManager)

 

这一块又用到了hibernate,至于吗,要用这么多中间件。

 

  vault的信息是存在javaDB数据库中的。

库的位置是在/root/dsnet-accesser/output/accesser/directory/directory.db,这个目录就是数据库。

注: 该库只能一个用户同时访问,所以accesser要先关掉。

用eclipse的插件“Eclipse Data Tools Platform”可以编辑查看。

APP库中的VAULT表

结果如下:

VAULT_IDVAULT_IDENTIFIERVAULT_NAME
13107236a477ba-737c-475c-ad98-bb99370103c5iqn.2010-03.sjtu
294912d140b7a4-b64d-48ab-861c-3a6eaa8c93fbiqn.2010-05.anycn

 

 

SERVICE表:

SERVICE_IDSERVICE_NAMESERVICE_TYPEOBJ_VERSIONSERVICE_VAULT
163840iqn.2010-03.sjtuiscsi0131072

 

SERVICE_INTERFACE表:

SERVICE_INTERFACE_IDSERVICE_INTERFACE_HOSTSERVICE_INTERFACE_PORTSERVICE_INTERFACE_AUTOSTARTSERVICE_INTERFACE_TYPEOBJ_VERSION
10.0.0.032601iscsi5

 

SERVICE_TO_SERVICE_INTERFACE表:

 SERVICE_INTERFACE_ID                SERVICE_ID
 --------------------                                      ----------
                    1                                             163840

 

此时:/root/dsnet-accesser/bin/dsnet-list-targets
+------------------+------------------+--------------------------------------+
| iqn.2010-03.sjtu | iqn.2010-03.sjtu | 36a477ba-737c-475c-ad98-bb99370103c5 |
+------------------+------------------+--------------------------------------+

 

 

 

 

vault表与vaultstate绑定的(org.cleversafe.vault.managers.state.VaultState)

 


 

以上是数据库这一块写好了。

 


xml这一块

应该是用xmlbean, 这一块的代码写的很乱,框架用了很多,但是接口并没有写成活的。

org.cleversafe.vault.managers.LocalFileVaultManager.getVaultInstance(UUID, InputStream, Credentials, KeyPair)

中,

 

 XMLVaultDescriptor(din, ctx);
中是对xml进行解析。

 

一层层下去,org.cleversafe.vault.XMLVaultDescriptor.loadVaultFromXML(InputStream)中vd.getVault().getIda()就是读出来

IDA的。

anycn.xml

 

 

access control这一块

本函数中用到

org.cleversafe.vault.managers.LocalFileVaultManager.createVaultACL(UUID, File, Credentials, PublicKey)

 

 

 

 

 

下面来看storeslices:

 

上面的org.cleversafe.vault.managers.LocalFileVaultManager.createVault(String, String, UUID, CredentialsManager)中,

调用org.cleversafe.vault.managers.LocalFileVaultManager.executeOnStores(UUID, File, Credentials, KeyPair, StoreExecuter, boolean)

在store slices中安装vault。

 

 

 


 

另一方面我们来看一下vault这个东西。

org.cleversafe.layer.block.dsd.BlockDeviceMain中新实例化一个BlockDeviceVault

org.cleversafe.layer.block.BlockDeviceVault<<

extends BaseVaultpublic class BlockDeviceVault extends BaseVault

BaseVault中就有了decodec就是IDA的编码,但是

public abstract class BaseVault implements Vault

vault中没有这个码,但是有get这个码的方法。

 

用命令:find /root/dsnet-accesser/ |  xargs grep "BlockDevice"

可以查到,在blockdevice-org-bindings.xml中有用到“org.cleversafe.layer.block.BlockDeviceVault”这个类,NND。

./conf/blockdevice-org-bindings.xml:      <bindns:implementation class="org.cleversafe.layer.block.BlockDeviceVault" referral="block"/>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值