您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > iSCSI Target实现原理
iSCSITarget实现原理2011.09.07内容简介•Target的来源•Target的使用•Target的组成•Target各组成部分的实现•Target中使用的模块知识点示例代码库Target的来源•Target代码的官方下载地址–•IET=iSCSIEnterpriseTarget•WiseFlyTarget代码地址–svn://192.168.0.11/dev/IPSHOT/src/trunk/linux/iscsitarget-1.4.20.2Target的使用•Target的编译•Target提供的使用命令–Ietadm–help(见下一页)•Target的启动–/etc/init.d/iscsi_targetrestart•Target的日志方式–/etc/rsyslog.config–/var/log/daemon.log–/var/log/messages•--opnew--tid=[id]--paramsName=[name]•--opnew--tid=[id]--lun=[lun]--paramsPath=[path]•--opnew--tid=[id]--user--params=[user]=[name],Password=[pass]•--opnew--tid=[id]--lun=[lun]--iotype=[ro|wb]--user--params=[user]=[name]•--opdelete•--opdelete--tid=[id]•--opdelete--tid=[id]--lun=[lun]•--opdelete--tid=[id]--user--params=[user]=[name]•--opdelete--tid=[id]--lun=[lun]--user--params=[user]=[name]•--opdelete--tid=[id]--sid=[sid]--cid=[cid]•--opupdate--tid=[id]--user--params=[user]=[name],Password=[pass]•--opupdate--tid=[id]--lun=[lun]--iotype=[ro|wb]--user--params=[user]=[name]•--opupdate--tid=[id]--params=key1=value1,key2=value2,...•--opupdate--tid=[id]--redirect=[dest]•--opshow--tid=[id]•--opshow--tid=[id]--user•--opshow--tid=[id]--user--params=[user]=[name]•--opshow--tid=[id]--sid=[sid]•--opshow--tid=[id]--lun=[lun]•--opshow--tid=[id]--lun=[lun]--params=IntervalTime=[value]•--version•--helpTarget的组成•Ietadm•Ietd•Iscsi_trgt.ko•启动文件–/etc/init.d/iscsi_target•配置文件–/etc/iet/ietd.conf–/etc/iet/initiators.allow–/etc/iet/targets.allowTarget各组成部分的实现•Ietadm:用户命令接口–Ietadm.c•Ietd:接收用户命令接口&initiator登录接口–Ietd.c•Iscsi_trgt.ko:内核模块实现–Iscsi.c三个组成部分的关系•Ietadm命令流程图(见下一页)•举例:–*新建target–新建lun–新建user–*新建conn各模块主要的函数接口•Ietd.c之cops/plain_ops–structconfig_operationsplain_ops=–.init=plain_init,–.target_add=plain_target_create,–.target_del=plain_target_destroy,–.lunit_add=plain_lunit_create,–.lunit_del=plain_lunit_destroy,–.lunit_show=plain_lunit_show,//foriostat–.param_set=plain_param_set,–.account_add=plain_account_add,–.account_del=plain_account_del,–.account_query=plain_account_query,–.account_list=plain_account_list,–.account_update=plain_account_update,–.initiator_allow=plain_initiator_allow,–.target_allow=plain_target_allow,–.target_redirect=plain_target_redirect,各模块主要的函数接口•Ctldev.c之ki–structiscsi_kernel_interfaceioctl_ki={–.ctldev_open=ctrdev_open,–.module_info=iet_module_info,–.lunit_create=iscsi_lunit_create,–.lunit_update=iscsi_lunit_update,–.lunit_destroy=iscsi_lunit_destroy,–.lunit_show=iscsi_lunit_show,–.lunit_init=iscsi_lunit_init,–.param_get=iscsi_param_get,–.param_set=iscsi_param_set,–.target_create=iscsi_target_create,–.target_destroy=iscsi_target_destroy,–.session_create=iscsi_session_create,–.session_destroy=iscsi_session_destroy,–.session_info=iscsi_session_info,–.conn_create=iscsi_conn_create,–.conn_destroy=iscsi_conn_destroy,各模块主要的函数接口•Config.c之ioctl()–caseGET_MODULE_INFO):err=get_module_info(arg);–caseADD_TARGET:err=add_target(arg);–caseDEL_TARGET:err=target_del(id);–caseADD_VOLUME:err=add_volume(target,arg);–caseUPDATE_VOLUME:err=update_volume(target,arg);–caseDEL_VOLUME:err=del_volume(target,arg);–caseSHOW_VOLUME:err=show_volume(target,arg);–caseINIT_VOLUME:err=init_volume(target,arg);–caseADD_SESSION:err=add_session(target,arg);–caseDEL_SESSION:err=del_session(target,arg);–caseGET_SESSION_INFO:err=get_session_info(target,arg);–caseISCSI_PARAM_SET:err=iscsi_param_config(target,arg,1);–caseISCSI_PARAM_GET:err=iscsi_param_config(target,arg,0);–caseADD_CONN:err=add_conn(target,arg);–caseDEL_CONN:err=del_conn(target,arg);–caseGET_CONN_INFO:err=get_conn_info(target,arg);Ietd的启动流程•Ietd启动流程图(见下一页)Iscsi_trgt模块启动流程•iscsi_trgt模块启动流程图(见下一页)•见模块知识代码库新建target•addtarget流程图(见下一页)用户登录流程•示意图如下:–Chap用户认证–在target上创建session–在刚创建的targetsession上创建conn•Conn_create流程图(见下一页)Target中模块知识点示例代码•代码路径–Svn://tmp/linux/zhongwei/my_proj•Kernel内核代码文件•User用户测试代码•Include公共头文件–Hello.c–Chardev2.c–Procfs2.c•问题•Thanks
本文标题:iSCSI Target实现原理
链接地址:https://www.777doc.com/doc-3805165 .html