linux下实现文件共享:搭建iSCSI服务器(与samba,nfs不同,直接共享设备)

Posted Tuki_a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下实现文件共享:搭建iSCSI服务器(与samba,nfs不同,直接共享设备)相关的知识,希望对你有一定的参考价值。

什么是iSCSI

iSCSI定义

iSCSI服务定义:
iSCSI又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术。
iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。
透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。
简而言之就是直接对设备进行共享的技术。

iSCSI协议:
iSCSI(Internet 小型计算机系统接口):是一种基于 TCP/IP 的协议,
用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,
并创建存储区域网络(SAN)。
SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,
这种传输以数据块级别(block-level)在多个数据存储网络间进行。

iSCSI协议功能:
SCSI 结构基于客户/服务器模式,
其通常应用环境是:设备互相靠近,并且这些设备由 SCSI 总线连接。
iSCSI 的主要功能是在 TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。
此外,iSCSI 提供了在 IP 网络封装SCSI命令,且运行在TCP上。

SAN:
如今我们所涉及的 SAN (Storage Area Network),其实现数据通信的主要要求是:
1. 数据存储系统的合并;
2. 数据备份;
3. 服务器群集;
4. 复制;
5. 紧急情况下的数据恢复。
另外,SAN 可能分布在不同地理位置的多个 LANs 和 WANs 中。
必须确保所有 SAN 操作安全进行并符合服务质量(QoS)要求,
而 iSCSI 则被设计来在 TCP/IP 网络上实现以上这些要求。

iSCSI 协议的四个组成部分:
iSCSI 地址和命名规则:
在网络实体中,iSCSI节点是 SCSI 设备在网络中可用的标识符,每个 iSCSI 节点都有一个独一无二的名称(其长度最多可以达 255 个字节),这种名称是根据 Internet 节点的命名规则进行命名的。
iSCSI会话管理:
iSCSI 会话由登录阶段(Login Phase)和工作阶段(Full Feature Phase)两部分构成,由特殊命令完成。
iSCSI 差错处理:
由于在 IP 网络,特别是在 WAN 中实施 iSCSI 会经常出现数据传输错误现象,iSCSI 协议可以提供错误处理方法。
iSCSI 安全性:
由于 iSCSI 工作在数据可能被非法访问的网络,该协议允许使用不同安全性途径。

iSCSI与NFS和Samba的不同

samba和nfs是文件系统层次的:
磁盘需要格式化到文件系统之后才可以挂载使用(想共享文件系统就必须对磁盘进行格式化),
之后共享服务器上的目录才能对磁盘进行读写。

iscsi是把磁盘的读写权利直接共享出去:
挂载以及文件系统的格式化都在客户端去做。
可以进一步提高磁盘读写效率,不需要在文件系统上进行读写,直接对磁盘进行读写。
把二进制、机器语言等直接存放在磁盘里,不需要再转换识别成人类的语言。

iSCSI的实现

服务端配置

先加一块硬盘并搞一个分区出来,方法可以参考之前的文章----->怎么在VM中加一块硬盘?如果真机是linux系统那么添加硬盘的方法参考怎么在真实linux系统下的虚拟机里加硬盘?,但分区方法都是一样的,参考第一个链接即可。

分区:
fdisk /dev/sda ---分一个区出来---> /dev/sda1
#我的硬盘是/dev/sda,分区是/dev/sda1
mkfs.xfs /dev/sda1		#格式化分区

安装软件并启用:
dnf install targetcli -y
systemctl start target
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload

配置:
直接编写配置文件比较难,所以用targetcli(cli管理接口)
targetcli		#输入这个命令后在进入的环境输入ls可以看到蓝色的是目录,紫色的是目录里的内容
#输入help可以查看帮助!
然后在在这个环境里一次输入如下命令:
/backstores/block create lucky_storage1 /dev/sda1		
#,建立内部共享名称,把sda1在当前的环境里起个别名
/iscsi create iqn.2021-06.com.lucky:disk1
#建立外部共享名称,共享的名字叫iscsi,iqn是iscsi限定名称,格式是iqn.时间.org.lucky(域名的反写)
/iscsi/iqn.2021-06.com.lucky:disk1/tpg1/luns create /backstores/block/lucky_storage1
#将共享的和内部真实的设备进行关联
/iscsi/iqn.2021-06.com.lucky:disk1/tpg1/acls create iqn.2021-06.com.lucky:luckykey
#建立访问控制的key,lucykey是访问共享时所持有的钥匙,acl是访问控制列表
exit
#退出设置就会被保存到文件/etc/target/saveconfig.json里

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
如果想删除这些配置:
targetcli		#进入环境
然后输入:
clearconfig confirm=True
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

在这里插入图片描述
删除配置
在这里插入图片描述

客户端配置

iscsi_client客户端:

dnf install iscsi-initiator-utils.x86_64 -y		#安装客户端组件

vim /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.2021-06.com.lucky:luckykey
#这一步是为了完成认证,否则登录不上
#这里=后边服务端写的啥客户端写啥     
systemctl restart iscsid
#更改完设置后记得重启
#iscsid是管理客户端的,iscsi是管理设备的

登录共享设备:
iscsiadm -m discovery -t st -p 192.168.187.129	#可以连接,不可以就是服务端火墙问题
iscsiadm  -m node -T iqn.2021-06.com.lucky:disk1 -p 192.168.187.129 -l

查看共享设备:
fdisk -l

退出登录共享设备:
iscsiadm  -m node -T iqn.2021-06.com.lucky:disk1 -p 192.168.187.129 -u
#-u临时登出,就是unlogin

安装并访问
在这里插入图片描述
修改认证信息
在这里插入图片描述
尝试登录成功!
在这里插入图片描述

使用共享设备:
其实就可以把这个共享设备当成本机的一块硬盘来使用,和本机硬盘的使用方法是一样的,分区、格式化等

分区:
fdisk /dev/sda ---分一个区出来---> /dev/sda1
mkfs.xfs /dev/sda1		#格式化分区
mount /dev/sda1 /mnt	#就可以正常使用这块硬盘了

mount挂载重启会失效
想永久挂载要写入文件的方式挂载:
vim /etc/fstab
写入:
/dev/sda1        /mnt        xfs     defaults,_netdev 0 0
必须写_netdev,否则系统在开机的时候会起不来,识别不了这块设备
如果因为这个启动失败,可以输入超级用户密码然后去改这个文件

在这里插入图片描述
永久挂载
在这里插入图片描述

彻底删除共享设备:
iscsiadm  -m node -T iqn.2021-06.com.lucky:disk1 -p 192.168.187.129 -u
这个命令是临时登出,认证信息还保留着,一重启又会重新生效
tree /var/lib/iscsi/可以看到认证信息

彻底删除需要两步:
iscsiadm  -m node -T iqn.2021-06.com.lucky:disk1 -p 192.168.187.129 -u
iscsiadm  -m node -T iqn.2021-06.com.lucky:disk1 -p 192.168.187.129 -o delete
然后再tree /var/lib/iscsi/就没有认证信息了。

重新登录:
iscsiadm -m discovery -t st -p 192.168.187.129
iscsiadm  -m node -T iqn.2021-06.com.lucky:disk1 -p 192.168.187.129 -l

在这里插入图片描述
重新登录需要重新发现再登录
在这里插入图片描述

以上是关于linux下实现文件共享:搭建iSCSI服务器(与samba,nfs不同,直接共享设备)的主要内容,如果未能解决你的问题,请参考以下文章

Linux下搭建iSCSI共享存储

Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式 Debian9.5下实现

Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式CentOS7-1810下实现

Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)

Linux下搭建iSCSI共享存储的方法 TGT 方式 CentOS6.9系统下

Linux下搭建iSCSI共享存储的方法 TGT 方式 Debian9.5系统下