ISCSITARGET
一. 环境部署
1.编译:
源码地址:https://launchpad.net/ubuntu/+source/iscsitarget/
在iscsitarget-1.4.20.3+svn502源码目录下make即可.
make之后的源码会根据不同系统内核的版本有所改变.
生成文件:ietd
ietadm
iscsi_trgt.ko
2.安装:
make [KSRC=<kernel-src>] install
<kernel-src>:/usr/src/源码目录
3.配置:
替换对应目录下的配置文件ietd.conf和dhcpd.conf
4.启动&停止:
/etc/init.d/iscsi-target start
/etc/init.d/iscsi-target stop
二. TARGET的组成及功能
1.组成:
ietadm: 用户命令接口;
ietd: 接受用户命令接口和initiator登录接口;
Iscsi_trgt.ko: 内核模块;
/usr/init.d/iscsi_target: 启动文件;
/etc/iet/ietd.conf: 配置文件;
2.功能:
ietadm: /usr/ietadm.c
主要功能:
a.通过socket和ietd进行本地通信;
b.在服务端下手动创建target,lun等功能, 创建的target和lun, session等可在/proc/net/iet下看到;
c.ietadm的使用方法可在系统下执行 ietadm --help查看;
ited: /usr/ietd.c
主要功能:
a.通过socket和ietadm进行本地通信,并处理ietadm过来的命令;
b.出来新来客户端的登录流程,登录完成,创建链接完成后,会把accept返回的fd传给驱动,后续通信由驱动处理, 而ietd守护进行会把该fd关闭掉;
c.和ietadm通信的接口plain.c下的struct config_operations plain_ops;
d.和驱动通信的接口ctldev.c下的struct iscsi_kernel_interface ioctl_ki, struct iscsi_kernel_interface ioctl_ki下的函数通过调用源码中自定义的ioctl函数调用驱动中对应接口;
iscsi_trgt.ko:
主要功能:
a.处理iotcl里定义的函数,add_target, add_lun等;
b.和客户端通信及读写镜像文件;
三. TARGET的学习总结
1. Target是访问的基本单元,即每个客户端需对应一个target;
2. Lun是存储的基本单元, 每个target下可有一个或多个lun;