iSCSI配置
刚刚入职,师父安排学习iSCSI协议。先把iSCSI搭起来。
环境: 服务端和客户端都是CentOS7。服务端target使用的是Linux SCSI target framework,即tgt。
客户端initiator用的是iscsi-initiator-utils。两个软件可以通过以下命令安装:
yum install scsi-target-utils yum install iscsi-initiator-utils
具体配置方法网上有很多,不再赘述。我参考的是《鸟哥的Linux私房菜服务器架设篇(第三版)》
scsi-target-utils有一些用于配置的文件。基本上有以下几个比较重要的:
- /etc/tgt/targets.conf :主要配置文件,主要用来设置要分享的磁盘和一些其他的设置;
- /usr/sbin/tgt-admin:提供查询、删除target等功能的工具;
- /usr/sbin/tgt-setup-lun:建立target以及设定分享的磁盘与可使用的客户端等工具,这些在targets.conf里也能设置
- /usr/sbin/tgtd:后台驻留程序;
- /usr/sbin/tgt-admin:建立设置预计分享的映像文件装置的工具(用映像文件仿真磁盘)
iscsi-initiator-utils用于配置的文件:
- /etc/iscsi/iscsid.conf:配置文件,用于连接到iSCSI target
- /sbin/iscsid:启动iSCSI initiator的主要服务程序
- /sbin/iscsiadm:用来管理iSCSI initiator的主要设定程序
- /etc/init.d/iscsid:让本机模拟出成为iSCSI initiater的主要服务
- /etc/init.d/iscsi:在本机成为iscs initiator之后,启动此脚本,让我们登入iscsi target。iscsid先启动之后才能启动这个服务
在搭建iSCSI的时候遇到了一些问题,以下是问题和解决的方法:
问题:
按照鸟哥的配制方法在使用/etc/init.d/tgtd start 启动服务的时候,出现错误,显示没有启动脚本。
原因:
经过的前辈点化,明白了centos7的启动方式变成了systemd,而不是原来的systeminit,所以在/etc/init.d下没有启动脚本。但是有/usr/lib/systemd/system/tgtd.service这个文件。综上,应该用systemctl tgtd start这条命令来启动服务。(真的是照着教程也不一定能玩对啊,最终还是靠前辈点化才成功,真是感觉又高兴又羞耻)。
接下来的计划是,对照文档和抓包理解iscsi协议的流程、概念和一些细节,最后在对照tgt的源码学习。