Linux 大部分都支持iscsi服务器,不过都是通过targetcli命令行方式操作, 在加上acl 和chap认证的配置,显得略为繁琐。开源的NAS现在都太重了,并且也没有找到几款比较好用的。freenas 变成了truenas,感觉比较好用一点的openfiler好多年没有新版本了。还是自己动手走起。
一、 centos stream 上部署iscsi服务器
1. 安装targetcli、targetd
yum install -y targetcli targetd
这一步较为简单,我的环境中centos操作系统安装时就已经有了。
2. 安装前准备存储,根据自身需求不同,iscsi可以映射文件系统的一个目录,或者直接映射磁盘,根据自身情况定。我是为了扩展方便,使用LVM建立了vg和文件系统,挂载点为/nfslv
3. 在targetcli中建立后备存储(配置要映射的存储,是文件还是设备,具体位置)
到根目录中是这样的
4. 在targetcli中建立前端映射wwn,注意wwn名字的规定,必须是iqn.yyyy-mm.xxxx.xxx的格式
5. 在targetcli中将前端wwn与后端存储建立映射关系。将前面建立的15.66-svndisk 映射到当前wwn的一个lun,注意我故意写错了后端存储的名字会报错。完成这一步后就已经将一个存储(文件或设备)映射到了一个WWN的一个LUN上。
6. 配置访问控制ACL(iSCSI的优点之一就是有较好的安全管理措施,基于CHAP可以实现单向或双向认证)。命令行下认证是基于节点(客户端)的,需要先在windows 上查看需要连接iscsi服务器的默认发起程序名称。
补注:在iscsi目录下配置 set discovery_auth enable=1 userid=xxx password=xxxxx
discovery 用于客户端通过IP和端口号自动发现匹配的存储。
windows 以及esxi 的iscsi 客户端程序连接target服务器时,要求在target上必须在acl中配置对应的客户端iscsi initiator 的wwn,并且要为每个客户端的wwn配置对应的账号和口令,否则,客户端将无法建立连接,windows 客户端会报认证失败等错误信息,esxi没有提示信息,但无法扫描到磁盘。
接下来在targetcli中创建这个节点,并为这个节点创建认证的用户名和口令(注意口令要求12位,长度低会无法建立连接)。然后exit保存退出。
最后的整体配置
7. 重启scsci服务
systemctl restart target && systemctl restart iscsi && systemctl restart iscsid
8. windows 客户端连接
(1) 使用门户发现目标
(2)选中要连接的目标,然后进行连接
(3) 进行CHAP验证