配置iSCSI 服务端

ISCSI服务端和客户端的操作系统以及IP地址

环境准备

主机名称:

ISCSI服务端
ISCSI客户端

操作系统:

RHEL 7.3

IP地址:

服务端192.168.0.13
客户端192.168.0.10

服务端配置过程

第一步:配置好Yum 软件仓库后安装iSCSI 服务端程序以及配置命令工具。通过在yum命令的后面添加-y 参数,在安装过程中就不需要再进行手动确认了:

[root@linuxprobe ~]# yum -y install targetd targetcli

安装完成后启动iSCSI的服务端程序targetd,然后把这个服务程序加入到开机启动项中,以便下次在服务器中期后依然能够为用户提供iSCSI共享存储资源服务:

[root@linuxprobe ~]# systemctl start targetd
[root@linuxprobe ~]# systemctl enable targetd

第 2 步:配置iSCSI 服务端共享资源。targetcli 是用于管理iSCSI 服务端存储资源的专用配置命令,它能够提供类似于fdisk 命令的交互式配置功能,将iSCSI 共享资源的配置内容抽象成“目录”的形式,我们只需将各类配置信息填入到相应的“目录”中即可。这里的难点主要在于认识每个“参数目录”的作用。当把配置参数正确地填写到“目录”中后,iSCSI服务端也可以提供共享资源服务了。
    在执行 targetcli 命令后就能看到交互式的配置界面了。在该界面中可以使用很多Linux命令,比如利用ls 查看目录参数的结构,使用cd 切换到不同的目录中。/backstores/block 是iSCSI 服务端配置共享设备的位置。我们需要把刚刚创建的RAID 5 磁盘阵列md0 文件加入到配置共享设备的“资源池”中,并将该文件重新命名为disk0,这样用户就不会知道是由服务器中的哪块硬盘来提供共享存储资源,而只会看到一个名为disk0 的存储设备。

[root@linuxprobe ~]# targetcli

第 3 步:创建iSCSI target 名称及配置共享资源。iSCSI target 名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串。稍后用户在扫描iSCSI 服务端时即可看到这个字符串,因此我们不需要记住它。系统在生成这个target 名称后,还会在/iscsi 参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到iSCSI 共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录iSCSI 服务端后,即可默认使用这硬盘设备提供的共享存储资源了。

/> cd iscsi
/iscsi>
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80.
Created TPG 1.
/iscsi> cd iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80/
/iscsi/iqn.20....d497c356ad80> ls
o- iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 .... [TPGs: 1]
o- tpg1 ............................................. [no-gen-acls, no-auth]
o- acls ........................................................ [ACLs: 0]
o- luns ........................................................ [LUNs: 0]
o- portals .................................................. [Portals: 0]
/iscsi/iqn.20....d497c356ad80> cd tpg1/luns
/iscsi/iqn.20...d80/tpg1/luns> create /backstores/block/disk0
Created LUN 0.

第 4 步:设置访问控制列表(ACL)。iSCSI 协议是通过客户端名称进行验证的,也就是说,用户在访问存储共享资源时不需要输入密码,只要iSCSI 客户端的名称与服务端中设置的访问控制列表中某一名称条目一致即可,因此需要在iSCSI 服务端的配置文件中写入一串能够验证用户信息的名称。acls 参数目录用于存放能够访问iSCSI 服务端共享存储资源的客户端名称。在系统刚刚生成的iSCSI target 后面追加上类似于:client 的参数,这样既能保证客户端的名称具有唯一性,又非常便于管理和阅读:

/iscsi/iqn.20...d80/tpg1/luns> cd ..
/iscsi/iqn.20...c356ad80/tpg1> cd acls
/iscsi/iqn.20...d80/tpg1/acls> create iqn.2003-01.org.linux-iscsi.linuxprobe.
x8664:sn.d497c356ad80:client
Created Node ACL for iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:
client
Created mapped LUN 0.

第5 步:设置iSCSI 服务端的监听IP 地址和端口号。位于生产环境中的服务器上可能有多块网卡,那么到底是由哪个网卡或IP 地址对外提供共享存储资源呢?这就需要我们在配置文件中手动定义iSCSI 服务端的信息,即在portals 参数目录中写上服务器的IP 地址。接下来将由系统自动开启服务器192.168.0.13 的3260 端口将向外提供iSCSI 共享存储资源服务:

/iscsi/iqn.20...d80/tpg1/acls> cd ..
/iscsi/iqn.20...c356ad80/tpg1> cd portals
/iscsi/iqn.20.../tpg1/portals> create 192.168.0.13
Using default IP port 3260
Created network portal 192.168.10.10:3260.

第 6 步:配置妥当后检查配置信息,重启iSCSI 服务端程序并配置防火墙策略。在参数文件配置妥当后,可以浏览刚刚配置的信息,确保与下面的信息基本一致。在确认信息无误后输入exit 命令来退出配置。注意,千万不要习惯性地按Ctrl + C 组合键结束进程,这样不会保存配置文件,我们的工作也就白费了。最后重启iSCSI 服务端程序,再设置firewalld 防火墙策略,使其放行3260/tcp 端口号的流量。

/iscsi/iqn.20.../tpg1/portals> ls /
o- / ........................... [...]
o- backstores................. [...]
| o- block ................... [Storage Objects: 1]
| | o- disk0 ................. [/dev/md0 (40.0GiB) write-thru activated]
| o- fileio .................. [Storage Objects: 0]
| o- pscsi ................... [Storage Objects: 0]
| o- ramdisk ................. [Storage Objects: 0]
o- iscsi ..................... [Targets: 1]
| o- iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 ... [TPGs: 1]
| o- tpg1 .................. [no-gen-acls, no-auth]
| o- acls ............................................... [ACLs: 1]
| | o- iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client
[Mapped LUNs: 1]
| | o- mapped_lun0 .......................... [lun0 block/disk0 (rw)]
o- luns .................... [LUNs: 1]
| | o- lun0 .............. [block/disk0 (/dev/md0)]
| o- portals ............. [Portals: 1]
| o- 192.168.0.13:3260 [OK]
o- loopback .................. [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
[root@linuxprobe ~]# systemctl restart targetd
[root@linuxprobe ~]# firewall-cmd --permanent --add-port=3260/tcp
success
[root@linuxprobe ~]# firewall-cmd --reload
success

iSCSI 服务端配置完成。


Linux客户端配置过程

第一步安装iSCSI 客户端服务程序initiator

[root@linuxprobe ~]# yum install iscsi-initiator-utils
Loaded plugins: langpacks, product-id, subscription-manager
Package iscsi-initiator-utils-6.2.0.873-21.el7.x86_64 already installed and
latest version
Nothing to do

下面我们编辑iSCSI 客户端中的initiator 名称文件,把服务端的访问控制列表名称填写进来,然后重启客户端iscsid 服务程序并将其加入到开机启动项中:

[root@linuxprobe ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client
[root@linuxprobe ~]# systemctl restart iscsid
[root@linuxprobe ~]# systemctl enable iscsid
ln -s ‘/usr/lib/systemd/system/iscsid.service‘ ‘/etc/systemd/system/multi-user.
target.wants/iscsid.service‘

iSCSI 客户端访问并使用共享存储资源的步骤很简单,只需要记住一个小口
诀“先发现,再登录,最后挂载并使用。iscsiadm 是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具,用户需要先使用这个工具扫描发现远程iSCSI 服务端,然后查看找到的服务端上有哪些可用的共享存储资源。其中,-m discovery 参数的目的是扫描并发现可用的存储资源,-t st 参数为执行扫描操作的类型,-p 192.168.0.13 参数为iSCSI 服务端的IP 地址:

[root@linuxprobe ~]# iscsiadm -m discovery -t st -p 192.168.0.13
192.168.10.10:3260,1 iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80

在使用 iscsiadm 命令发现了远程服务器上可用的存储资源后,接下来准备登录iSCSI 服务端。其中,-m node 参数为将客户端所在主机作为一台节点服务器,-T iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 参数为要使用的存储资源(大家可以直接复制前面命令中扫描发现的结果,以免录入错误),-p 192.168.0.13 参数依然为对方iSCSI 服务端的IP 地址。最后使用--login 或-l 参数进行登录验证。

[root@linuxprobe ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.linuxprobe.
x8664:sn.d497c356ad80 -p 192.168.10.10 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.linuxprobe.
x8664:sn.d497c356ad80, portal: 192.168.10.10,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:
sn.d497c356ad80, portal: 192.168.10.10,3260] successful.

在 iSCSI 客户端成功登录之后,会在客户端主机上多出一块名为/dev/sdb 的设备文件.

[root@linuxprobe ~]# file /dev/sdb
/dev/sdb: block special

最后就可以挂载并使用了

[root@linuxprobe ~]# mkfs.xfs /dev/sdb
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/sdb isize=256 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@linuxprobe ~]# mkdir /iscsi
[root@linuxprobe ~]# mount /dev/sdb /iscsi
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.4G 15G 20% /
devtmpfs 734M 0 734M 0% /dev
tmpfs 742M 176K 742M 1% /dev/shm
tmpfs 742M 8.8M 734M 2% /run
tmpfs 742M 0 742M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/sdb 40G 33M 40G 1% /iscsi

需要提醒大家的是,由于udev 服务是按照系统识别硬盘设备的顺序来命名硬盘设备的,当客户端主机同时使用多个远程存储资源时,如果下一次识别远程设备的顺序发生了变化,则客户端挂载目录中的文件也将随之混乱。为了防止发生这样的问题,我们应该在/etc/fstab 配置文件中使用设备的UUID 唯一标识符进行挂载,这样,不论远程设备资源的识别顺序再怎么变化,系统也能正确找到设备所对应的目录。
    blkid 命令用于查看设备的名称、文件系统及UUID。可以使用管道符进行过滤,只显示与/dev/sdb 设备相关的信息:

[root@linuxprobe ~]# blkid | grep /dev/sdb
/dev/sdb: UUID="eb9cbf2f-fce8-413a-b770-8b0f243e8ad6" TYPE="xfs"

如果我们不再需要使用iSCSI 共享设备资源了,可以用iscsiadm 命令的-u 参数将其设备卸载:

[root@linuxprobe ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.linuxprobe.
x8664:sn.d497c356ad80 -u
Logging out of session [sid: 7, target : iqn.2003-01.org.linux-iscsi.linuxprobe.
x8664:sn.d497c356ad80, portal: 192.168.10.10,3260]
Logout of [sid: 7, target: iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.
d497c356ad80,portal:192.168.10.10,3260] successful.

本文源自:刘遄老师的<Linux就该这么学>一书中的部分章节,内容细致因此收入博文中,便于随时查看

原文地址:http://blog.51cto.com/996665552/2349754

时间: 2024-11-05 18:48:31

配置iSCSI 服务端的相关文章

RHEL7 配置iscsi服务端并实现客户端自动开机挂载

环境:server 172.25.0.11 --iscsi server iqn:iqn.2016-02.com.example:server0client 172.25.0.10 --iscsi client iqn:iqn.2016-02.com.example:desktop0一.iscsi服务端配置 安装targetcli yum install targetcli -y 找一块磁盘挂载 [[email protected] ~]# targetcli --进入此命令配置iscsi服务端

[ Centos 7 iscsi搭建 及 1台客户端同时挂载多台iscsi服务端问题 ]

一.什么是iscsi iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择.iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料. 二.需求分析 最近在做虚拟化,需要通过一个主机挂载来自两个iscsi服务器的targets,如图: 三.实现思路        

linux存储技术与应用:配置iSCSI服务及应用示例

实验:配置iSCSI服务,(服务4.103,客户4.254/4.100) 先添加一块新硬盘 fdisk -cu /dev/sdb    # 进入磁盘分区模式 分区模式中输入以下信息进行:分区 -n            #新建分区 -p            #创建主分区 1             #第一个分区 回车 +1G        #第一个分区大小 w             #保存并退出 lsblk    可以发现新分区已经存在 mount /dev/sdb1  /var/lib/m

Cluster基础(一):配置iSCSI服务、编写udev规则、配置并访问NFS共享、部署Multipath多路径环境

一.配置iSCSI服务 目标: 本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端: 虚拟机添加新的磁盘 将新添加的磁盘分区并创建两个逻辑卷 逻辑卷名称分别为:/dev/myvg/iscsi1和/dev/myvg/iscsi2 服务器通过配置文件与命令两种方式共享逻辑卷 然后客户机挂载iSCSI服务器共享的磁盘: 客户端使用命令探测服务器共享的iSCSI磁盘 客户端挂载iSCSI磁盘 分区并格式化 方案: 使用2台RHEL6虚拟机,其中一台作为iSCSI服务器(192.168.4.

Service系统服务(六):rsync基本用法、rsync+SSH同步、配置rsync服务端、访问rsync共享资源、使用inotifywait工具、配置Web镜像同步、配置并验证Split分离解析

一.rsync基本用法 目标: 本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务: 1> 将目录 /boot 同步到目录 /todir 下   2> 将目录 /boot 下的文档同步到目录 /todir 下   3> 在目录 /boot 下新增文件 a.txt,删除 /todir 下的子目录 grub2,再次同步使 /todir 与 /boot 一致   4> 验证 -a.-n.-v.--delete 选项的含义 方案: 本地同步操作: rsync [选项...] 本

SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)

1.概念:SpringCloudConfig 基础配置 2.具体内容 通过名词就可以发现,SpringCloudConfig 核心作用一定就在于进行配置文件的管理上.也就是说为了更好的进行所有微服务的配置项的管理,在 SpringCloud 设计架构里面就考虑到了针对于所有的核心配置文件(application.yml)进行的一项统一管理的工具. 2.1.SpringCloudConfig 的基本概念 现在可以思考一个问题:在一个实际的项目开发过程之中,有可能会出现有上百个微服务(创建微服务的标

spring-cloud配置eureka服务端

spring-cloud配置eureka服务端 eureka用来发现其他程序 依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&

创建配置中心服务端(Spring Cloud Config)

创建配置中心服务端 创建好项目后添加配置文件内容 server.port=9004 spring.application.name=spring-cloud-config-server-01 #git仓库地址 spring.cloud.config.server.git.uri=http://git.home/test/config-depot.git #仓库内的相对路径 spring.cloud.config.server.git.search-paths=/config #git用户名 sp

[RHEL 7]ISCSI服务端及客户端连接配置

环境RHEL7.4 1.搭建服务器端主机环境 网络配置 网卡eth0 10.0.0.1 网卡eth1 10.1.0.1 网卡eth2 10.2.0.1 网卡eth3 10.3.0.1 硬盘配置 添加一块100GB硬盘,配置成DATAVG,划分LV并发布成iscsi硬盘 iscsi target服务配置 #yum install targetd targetcli -y 启动服务,并设定为开机启动 systemctl enable target systemctl start target 开启防