【Linux】ISCSI服务器

当我们的系统需要大量的磁盘容量,但是身边却没有足够的存储设备,此时,我们可以使用通过网络的scsi磁盘,即Internet scsi(iscsi)。iscsi主要是通过TCP/IP的技术,将存储设备端通过iscsi target功能,做成可以提供磁盘的服务器端,再通过iscsi initiator(iscsi初始化用户)功能,做成能够挂载使用iscsi target的客户端,这样就能够通过iscsi协议来进行磁盘的应用了。

iscsi架构主要将存储设备与使用的主机分为两个部分,分别是:

  1. iscsi target:就是存储设备端,存放磁盘设备。目的在于提供其他主机使用的磁盘。
  2. iscsi initiator:就是能够使用target的客户端,通常是服务器。也就是说,想要连接到iscsi target的服务器,也必须要安装iscsi initiator的相关功能后才能使用iscsi target提供的磁盘。

iscsi服务端需要使用的软件为:targetcli

iscsi客户端需要的软件为:iscsi-initiator-utils

实验:

服务端:

1、首先准备好iscsi共享的磁盘,iscsi可以通过(1)大型文件(2)单一分区(3)单一设备来进行共享。

(1)建立一个500M大小的文件

dd if=/dev/zero of=/iscsi bs=1M count=500

(2)创建一个新分区:这里是一个sda5分区

(3)准备一个空磁盘:这里添加了一个sdb磁盘

2、安装软件

[root@localhost ~]# yum install targetcli -y

3、配置iscsi服务端共享资源

targetcli是用于管理iscsi服务端存储资源的专用配置命令,它能够提供类似于fdisk命令的交互式配置功能,将iscsi共享资源的配置内容抽象成“目录”的形式,我们只需要将各类配置信息填入到相应的“目录”中即可。

[root@localhost ~]# targetcli

/> ls /

o- / ..................................................... [...]

  o- backstores .......................................... [...]可用于iscsi的服务存储类型有四种

  | o- block .............................. [Storage Objects: 0]块设备,磁盘驱动器,磁盘分区,逻辑卷,以及服务器上定义的任何b类型的设备文件

  | o- fileio ............................. [Storage Objects: 0]在服务器上生成的一个指定大小的文件

  | o- pscsi .............................. [Storage Objects: 0]物理scsi,通常不用

  | o- ramdisk ............................ [Storage Objects: 0]内存盘,其中存储的数据在服务器重启后将全部丢失

  o- iscsi ........................................ [Targets: 0]

  o- loopback ..................................... [Targets: 0]

3.1给三个可共享存储定义逻辑单元编号,如同一般外接式存储设备可以具有多个磁盘一样,target也能够拥有数个磁盘设备。每个在target上的磁盘我们将它定义为逻辑单元编号。

/>  cd /backstores/block

/backstores/block> create dev=/dev/sda5 name=lun0

Created block storage object lun0 using /dev/sda5.

/backstores/block> create dev=/dev/sdb name=lun1

Created block storage object lun1 using /dev/sdb.

/backstores/block> cd /backstores/fileio/

/backstores/fileio> create file_or_dev=/iscsi lun2

/backstores> ls /backstores/

o- backstores ............................................................... [...]

  o- block ................................................... [Storage Objects: 2]

  | o- lun0 ........................... [/dev/sda5 (1.0GiB) write-thru deactivated]

  | o- lun1 ............................ [/dev/sdb (5.0GiB) write-thru deactivated]

  o- fileio .................................................. [Storage Objects: 1]

  | o- lun2 ............................ [/iscsi (500.0MiB) write-back deactivated]

  o- pscsi ................................................... [Storage Objects: 0]

  o- ramdisk ................................................. [Storage Objects: 0]

3.2设置共享的iscsi target名称及配置共享资源

iscsi target名称可由系统自动生成,这是一串用于描述共享资源的唯一字符串。

iscsi有一套自己共享target名称的定义,基本上iscsi共享出来的target文件名都是以iqn开头,意思是“ISCSI Qualified Name(iscsi合格名称)”。iscsi的target名字示例如下:iqn.yyyy-mm.网络名的反转写法:这个共享的target名称。

/> cd /iscsi

/iscsi> create

/iscsi> ls /iscsi/

o- iscsi .......................................... [Targets: 1]

  o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.412f7ddb650b  [TPGs: 1]

    o- tpg1 ............................. [no-gen-acls, no-auth]

      o- acls ........................................ [ACLs: 0]

      o- luns ........................................ [LUNs: 0]

      o- portals .................................. [Portals: 1]

        o- 0.0.0.0:3260 ................................... [OK]

/iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.574bf27f644b/tpg1/luns 

/iscsi/iqn.20...50b/tpg1/luns> create /backstores/block/lun0

/iscsi/iqn.20...50b/tpg1/luns> create /backstores/block/lun1

/iscsi/iqn.20...50b/tpg1/luns> create /backstores/fileio/lun2

/iscsi/iqn.20...50b/tpg1/luns> ls

o- luns .............................................. [LUNs: 3]

  o- lun0 ............................. [block/lun0 (/dev/sda5)]

  o- lun1 .............................. [block/lun1 (/dev/sdb)]

  o- lun2 ............................... [fileio/lun2 (/iscsi)]

3.3设置iscsi服务端的监听ip地址和端口号,位于生产环境中的服务器可能有多块网卡,那么就可以在这儿指定由哪个网卡或IP地址对外提供共享存储资源。

/iscsi/iqn.20...44b/tpg1/luns> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.574bf27f644b/tpg1/portals

/iscsi/iqn.20.../tpg1/portals> ls

o- portals ........................................ [Portals: 1]

  o- 0.0.0.0:3260 ......................................... [OK]

在7.2版本中自动创建了portal,如果需要自定义IP和端口,需要在创建target之前(也就是"/iscsi> create"命令之前)关闭自动创建portal功能(/> set group=global auto_add_default_portal=false)。如果已经创建target,也可以将已经有的portal删除再添加新的。

至此,iscsi服务端的基本配置已完成,如果要让客户端成功访问,需要对防火墙进行一些配置:

(1)关闭防火墙。

(2)如果不关闭防火墙则需要添加监听的端口:

[root@localhost ~]#firewall-cmd --permanent --add-port=3260/tcp

[root@localhost ~]#firewall-cmd --reload

iscsi客户端访问iscsi服务端

情况一:

如果权限设置如下:

/> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.412f7ddb650b/tpg1/

/iscsi/iqn.20...7ddb650b/tpg1> set attribute authentication=0                                  //关闭账号密码验证访问控制

/iscsi/iqn.20...7ddb650b/tpg1> set attribute generate_node_acls=1                        //自动生成acl节点

/iscsi/iqn.20...7ddb650b/tpg1>exit

[root@localhost ~]# systemctl restart target

客户端:

[root@localhost ~]# yum install iscsi-initiator-utils

[root@localhost ~]#systemctl restart iscsi iscsid

iscsiadm是客户端的发现远端设备命令,用法如下:

iscsiadm -m discovery                           //扫描并发现可用的存储资源

-I                                                               //指定使用哪个网络接口,如果只有一块网卡则不用指定

-t sendtargets(缩写为st)                    //设置执行扫描操作的类型

-p                                                             //指定iscsi设备的ip:port,不写端口则为默认的3260

iscsiadm -m node                                  //自己作为节点与server端建立连接

-u                                                             //登出

-l                                                              //登录

-T                                                             //指定target的名字登录或者登出( -l/-u)

iscsiadm -m session                             //查看会话

[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 服务端IP地址                     //查看共享文件

[root@localhost ~]# iscsiadm -m node -l登录                                                                       //登录同步文件

[root@localhost ~]# lsblk或者lsscsi查看会发现多了几块磁盘                                               //客户端多出了3个磁盘      

情况二:

客户端需要成功给共享磁盘分区需要使用使用自定义acl实现访问控制

/iscsi/iqn.20...7ddb650b/tpg1> set attribute generate_node_acls=0                      //开启acl

使用自定义的acl实现访问控制,则需要设置访问权限控制列表aclacl参数目录用于存放能够访问iscsi服务端共享存储资源的客户端名称。在客户端访问时,只要iscsi客户端的名称与服务端设置的访问控制列表中的名称一致即可。

/> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.412f7ddb650b/tpg1/acls/

/iscsi/iqn.20...50b/tpg1/acls> create iqn.2019-12.com.redhat:client

/iscsi/iqn.20...50b/tpg1/acls>exit

[root@localhost ~]# systemctl restart target

客户端:

[root@localhost ~]# yum install iscsi-initiator-utils -y

[root@localhost ~]#vim /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.1994-05.com.redhat:client

[root@localhost ~]#systemctl restart iscsi iscsid

[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 服务端IP地址

[root@localhost ~]# iscsiadm -m node -l登录

[root@localhost ~]# lsblk或者lsscsi                                                //查看会发现多了几块磁盘

将共享过来的磁盘分区格式化之后挂载到本地:

编辑/etc/fstab文件时,注意使用UUID(因为磁盘的文件名不一定是固定的)。由于共享过来的是网络存储设备,而iSCSI协议是基于TCP/IP网络传输数据的,因此必须在/etc/fstab配置文件中添加上_netdev参数,表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Linux上搭建iSCSI服务器,需要进行以下步骤: 1. 安装iSCSI软件包:在Linux系统上安装iSCSI软件包,例如open-iscsiiscsi-target。 2. 配置iSCSI Target:使用iscsi-target软件包创建iSCSI Target,配置iSCSI Target的名称、IP地址、端口等信息。 3. 创建iSCSI LUN:使用iscsi-target软件包创建iSCSI LUN(逻辑单元),并将其映射到物理存储设备上。 4. 配置iSCSI Initiator:在客户端上安装iSCSI Initiator软件包,并配置iSCSI Initiator的名称、IP地址、端口等信息。 5. 连接iSCSI Target:在客户端上使用iSCSI Initiator连接iSCSI Target,并将iSCSI LUN映射到客户端上。 6. 测试iSCSI连接:使用客户端上的工具测试iSCSI连接是否正常,例如使用dd命令在iSCSI LUN上创建文件。 以上是在Linux上搭建iSCSI服务器的基本步骤,具体操作可以参考相关文档或教程。 ### 回答2: 先介绍一下iSCSI的基本概念吧:iSCSI是一种存储协议,它是一种基于网络的存储协议,通过网络将远程存储设备映射到本地主机上,使得本地主机可以像使用本地硬盘一样使用远程存储设备。iSCSI协议在网络存储领域应用广泛,特别是在虚拟化环境下,iSCSI存储是实现共享存储的重要方式之一。 搭建iSCSI服务器需要准备两个方面的工作,第一是准备一个可用的Linux服务器,第二是安装和配置iSCSI软件。 一、准备Linux服务器 1. 首先要安装Linux系统,这里我们以CentOS系统为例; 2. 确认服务器硬件配置符合iSCSI的要求; 3. 安装和配置网络环境; 4. 创建一个LUN(Logical Unit Number)存储单元,这是iSCSI存储的最小单位。 二、安装和配置iSCSI软件 1. 安装iSCSI软件,Linux下主流的iSCSI软件有多种,比如open-iscsi、tgt等,这里我们以open-iscsi为例; 2. 配置iSCSI服务器参数,包括iSCSI服务名称、存储密码等; 3. 创建iSCSI Target,这是iSCSI存储的核心部分,它是定义好的LUN逻辑单元映射到物理存储单元的过程; 4. 配置iSCSI Target的参数,包括存储IP地址、端口等; 5. 配置iSCSI Initiator,这是客户端连接iSCSI Target的过程; 6. 测试iSCSI存储的可用性。 综上,搭建iSCSI服务器并不是很复杂,但是需要较多的Linux操作技能。如果您不熟悉Linux操作,建议参考相关的教程或请专业技术人员操作。 ### 回答3: iSCSI是基于以太网的存储网络协议,可以将存储器虚拟化为IP网络资源。Linux搭建iSCSI服务器可以提供高效、稳定、灵活的存储资源服务,并且可以支持多种操作系统的访问,如Windows、Linux、Unix等。 步骤如下: 1. 安装iSCSI-target软件 Linux上的iSCSI-target软件有多种可选,如SCST、tgt、LIO等。在这里以tgt为例,它是Linux下使用最广泛的一个iSCSI-target软件。 在Ubuntu中,可以使用命令sudo apt-get install tgt安装tgt软件包。在CentOS中,可以使用命令yum install scsi-target-utils安装。 2. 配置tgt tgt的配置文件为/etc/tgt/targets.conf,在配置文件中,首先需要定义一个iSCSI Target,如下所示: <target iqn.2019-12.com.example:server.target1> backing-store /dev/sdb # 这里指定了iSCSI Target的存储设备 initiator-address 192.168.0.10 # 指定发起者的IP地址 incominguser user password # 指定iSCSI登录的用户名和密码 </target> 以上配置文件表示定义了一个名称为iqn.2019-12.com.example:server.target1的iSCSI Target,使用/dev/sdb设备作为存储设备,指定发起者IP地址为192.168.0.10。同时定义了一个iSCSI登录的用户名和密码。 3. 启动tgt服务 在tgt服务配置好后,需要使用命令systemctl start tgt启动tgt服务,使之生效。同时可以使用命令systemctl enable tgt设置开机启动服务。 4. 配置发起者 在Windows中,可以使用Microsoft iSCSI Initiator软件来作为iSCSI客户端进行连接。在Linux中,可以使用open-iscsi软件包来配置iSCSI客户端。 在Ubuntu中,可以使用命令sudo apt-get install open-iscsi安装open-iscsi软件包,在CentOS中,可以使用命令yum install iscsi-initiator-utils安装。 在配置iSCSI Initiator时,需要指定以下参数: - 目标iSCSI Target的名称或IP地址 - 登录iSCSI Target时需要用到的用户名和密码 - iSCSI Target的LUN ID(逻辑单元号),表示iSCSI Target中的哪个存储设备 对于open-iscsi,在Ubuntu中配置文件为/etc/iscsi/initiatorname.iscsi,在CentOS中为/etc/iscsi/initiatorname.iscsi,在配置文件中定义以下配置项: InitiatorName=iqn.2020-01.com.example:client # 定义iSCSI Initiator的名称 NodeStartUp=automatic # 设置开机启动 在配置好iSCSI Initiator后,可以使用命令iscsiadm -m discovery -P1来发现iSCSI Target。使用命令iscsiadm -m node -l可以登录iSCSI Target,并使用命令lsblk来查看iSCSI Target中的存储设备。 总结 搭建Linux iSCSI服务器并不复杂,需要操作者掌握基本的Linux系统操作和熟悉iSCSI的相关知识。通过一个简单的例子,我们可以了解到如何安装iSCSI-target软件、配置tgt,并使用iSCSI Initiator来连接iSCSI Target。同时,还需注意一些安全和性能的问题,如防火墙设置、安全登录、并发连接等,以保障服务的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值