本章讲解了如下内容:
➢ iSCSI 技术概述;
➢ 创建 RAID 磁盘阵列;
➢ 配置 iSCSI 服务端;
➢ 配置 Linux 客户端;
➢ 配置 Windows 客户端。
本章开篇介绍了计算机硬件存储设备的不同接口技术的优缺点,并由此切入 iSCSI 技
术主题的讲解。iSCSI 技术实现了物理硬盘设备与 TCP/IP 网络协议的相互结合,使得用户
可以通过互联网方便地访问远程机房提供的共享存储资源。本章将带领大家在 Linux 系统
上部署 iSCSI 服务端程序,并分别基于 Linux 系统和 Windows 系统来访问远程的存储资
源。通过本章以及第 6 章、第 7 章的学习,读者将进一步理解和掌握如何在 Linux 系统中
管理硬盘设备和存储资源,为今后走向运营岗位打下坚实的基础。
17.1 iSCSI 技术概述
硬盘是计算机硬件设备中重要的组成部分之一,硬盘存储设备读写速度的快慢也会对
服务器的整体性能造成影响。第 6 章、第 7 章讲解的硬盘存储结构、RAID 磁盘阵列技术
以及 LVM 技术等都是用于存储设备的技术,尽管这些技术有软件层面和硬件层面之分,
但是它们都旨在解决硬盘存储设备的读写速度问题,或者竭力保障存储数据的安全。
为了进一步提升硬盘存储设备的读写速度和性能,人们一直在努力改进物理硬盘设备的
接口协议。当前的硬盘接口类型主要有 IDE、SCSI 和 SATA 这 3 种。
➢ IDE 是一种成熟稳定、价格便宜的并行传输接口。
➢ SATA 是一种传输速度更快、数据校验更完整的串行传输接口。
➢ SCSI 是一种用于计算机和硬盘、光驱等设备之间系统级接口的通用标准,具有系统
资源占用率低、转速高、传输速度快等优点。
不论使用什么类型的硬盘接口,硬盘上的数据总是要通过计算机主板上的总线与 CPU、
内存设备进行数据交换,这种物理环境上的限制给硬盘资源的共享带来了各种不便。后来,
IBM 公司开始动手研发基于 TCP/IP 协议和 SCSI 接口协议的新型存储技术,这也就是我
们目前能看到的互联网小型计算机系统接口(iSCSI,Internet Small Computer System
Interface)。这是一种将 SCSI 接口与以太网技术相结合的新型存储技术,可以用来在网络
中传输 SCSI 接口的命令和数据。这样,不仅克服了传统 SCSI 接口设备的物理局限性,实
现了跨区域的存储资源共享,还可以在不停机的状态下扩展存储容量。
为了让各位读者做到知其然,知其所以然,以便在工作中灵活使用这项技术,下面将讲
解一下 iSCSI 技术在生产环境中的优势和劣势。首先,iSCSI 存储技术非常便捷,在访问存储
资源的形式上发生了很大变化,摆脱了物理环境的限制,同时还可以把存储资源分给多个服
务器共同使用,因此是一种非常推荐使用的存储技术。但是,iSCSI 存储技术受到了网速的制
约。以往,硬盘设备直接通过主板上的总线进行数据传输,现在则需要让互联网作为数据传
输的载体和通道,因此传输速率和稳定性是 iSCSI 技术的瓶颈。随着网络技术的持续发展,
相信 iSCSI 技术也会随之得以改善。
既然要通过以太网来传输硬盘设备上的数据,那么数据是通过网卡传入到计算机中的么?
这就有必要向大家介绍 iSCSI-HBA 卡了(见图 17-1)。与一般的网卡不同(连接网络总线和
内存,供计算机上网使用),iSCSI-HBA 卡连接的则是 SCSI 接口或 FC(光纤通道)总线和内
存,专门用于在主机之间交换存储数据,其使用的协议也与一般网卡有本质的不同。运行 Linux
系统的服务器会基于 iSCSI 协议把硬盘设备命令与数据打包成标准的 TCP/IP 数据包,然后通
过以太网传输到目标存储设备,而当目标存储设备接收到这些数据包后,还需要基于 iSCSI 协
议把 TCP/IP 数据包解压成硬盘设备命令与数据。
17.2 创建 RAID 磁盘阵列
既然要使用 iSCSI 存储技术为远程用户提供共享存储资源,首先要保障用于存放资源的
服务器的稳定性与可用性,否则一旦在使用过程中出现故障,则维护的难度相较于本地硬盘
设备要更加复杂、困难。因此推荐各位读者按照本书第 7 章讲解的知识来部署 RAID 磁盘阵
列组,确保数据的安全性。下面以配置 RAID 5 磁盘阵列组为例进行讲解。考虑到第 7 章已经
事无巨细地讲解了 RAID 磁盘阵列技术和配置方法,因此本节不会再重复介绍相关参数的意
义以及用途,忘记了的读者可以翻回去看一下。
首先在虚拟机中添加 4 块新硬盘,用于创建 RAID 5 磁盘阵列和备份盘,如图 17-2 所示。
启动虚拟机系统,使用 mdadm 命令创建 RAID 磁盘阵列。其中,-Cv 参数为创建阵列并
显示过程,/dev/md0 为生成的阵列组名称,-n 3 参数为创建 RAID 5 磁盘阵列所需的硬盘个
数,-l 5 参数为 RAID 磁盘阵列的级别,-x 1 参数为磁盘阵列的备份盘个数。在命令后面要逐
一写上使用的硬盘名称。另外,还可以使用第 3 章讲解的通配符来指定硬盘设备的名称,有
兴趣的读者可以试一下。
[root@localhost ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
在上述命令成功执行之后,得到一块名称为/dev/md0 的新设备,这是一块 RAID 5 级别
的磁盘阵列,并且还有一块备份盘为硬盘数据保驾护航。大家可使用 mdadm -D 命令来查看
设备的详细信息。另外,由于在使用远程设备时极有可能出现设备识别顺序发生变化的情况,
因此,如果直接在 fstab 挂载配置文件中写入/dev/sdb、/dev/sdc 等设备名称的话,就有可能在
下一次挂载了错误的存储设备。而 UUID 值是设备的唯一标识符,可以用于精确地区分本地
或远程设备。于是我们可以把这个值记录下来,一会儿准备填写到挂载配置文件中。
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Oct 31 08:57:59 2018
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Oct 31 08:59:44 2018
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8c5098b7:8dee3b88:d0ffc83f:a7a0870d
Events : 18
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
17.3 配置 iSCSI 服务端
iSCSI 技术在工作形式上分为服务端(target)与客户端(initiator)。iSCSI 服务端即用于
存放硬盘存储资源的服务器,它作为前面创建的 RAID 磁盘阵列的存储端,能够为用户提供
可用的存储资源。iSCSI 客户端则是用户使用的软件,用于访问远程服务端的存储资源。下面
按照表 17-1 来配置 iSCSI 服务端和客户端所用的 IP 地址。
主机名称 | 操作系统 | IP地址 |
ISCSI服务端 | centos7 | 192.168.10.1 |
ISCSI客户端 | centos7 | 192.168.10.20 |
第1步:配置好 Yum 软件仓库后安装 iSCSI 服务端程序以及配置命令工具。通过在 yum
命令的后面添加-y 参数,在安装过程中就不需要再进行手动确认了:
[root@localhost ~]# yum -y install targetd targetcli
安装完成后启动 iSCSI 的服务端程序 targetd,然后把这个服务程序加入到开机启动项中,
以便下次在服务器重启后依然能够为用户提供 iSCSI 共享存储资源服务:
[root@localhost ~]# systemctl start targetd
[root@localhost ~]# systemctl enable targetd
Created symlink from /etc/systemd/system/multi-user.target.wants/targetd.service to /usr/lib/systemd/system/targetd.service.
第2步:配置 iSCSI 服务端共享资源。targetcli 是用于管理 iSCSI 服务端存储资源的专用
配置命令,它能够提供类似于 fdisk 命令的交互式配置功能,将 iSCSI 共享资源的配置内容抽
象成“目录”的形式,我们只需将各类配置信息填入到相应的“目录”中即可。这里的难点主
要在于认识每个“参数目录”的作用。当把配置参数正确地填写到“目录”中后,iSCSI 服务
端也可以提供共享资源服务了。
在执行 targetcli 命令后就能看到交互式的配置界面了。在该界面中可以使用很多 Linux 命
令,比如利用 ls 查看目录参数的结构,使用 cd 切换到不同的目录中。/backstores/block 是 iSCSI
服务端配置共享设备的位置。我们需要把刚刚创建的 RAID 5 磁盘阵列 md0 文件加入到配置
共享设备的“资源池”中,并将该文件重新命名为 disk0,这样用户就不会知道是由服务器中
的哪块硬盘来提供共享存储资源,而只会看到一个名为 disk0 的存储设备。
[root@localhost ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 0]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 0]
o- loopback ......................................................................................................... [Targets: 0]
/> cd backstores/block
/backstores/block> create disk0 /dev/md0
Created block storage object disk0 using /dev/md0.
/backstores/block> cd /
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- disk0 ......................................................................... [/dev/md0 (40.0GiB) write-thru deactivated]
| | o- alua ................................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 0]
o- loopback ......................................................................................................... [Targets: 0]
/>
第3步: 创建 iSCSI target 名称及配置共享资源。iSCSI target 名称是由系统自动生成的,
这是一串用于描述共享资源的唯一字符串。稍后用户在扫描 iSCSI 服务端时即可看到这个字
符串,因此我们不需要记住它。系统在生成这个 target 名称后,还会在/iscsi 参数目录中创建
一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到 iSCSI 共享资
源池中的硬盘设备添加到这个新目录中,这样用户在登录 iSCSI 服务端后,即可默认使用这
硬盘设备提供的共享存储资源了。
/> cd iscsi
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7/
/iscsi/iqn.20....3820fdacaeb7> ls
o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7 ........................................................... [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/iqn.20....3820fdacaeb7> cd tpg1/luns
/iscsi/iqn.20...eb7/tpg1/luns> create /backstores/block/disk0
Created LUN 0.
/iscsi/iqn.20...eb7/tpg1/luns>
第4步:设置访问控制列表(ACL)。iSCSI 协议是通过客户端名称进行验证的,也就是
说,用户在访问存储共享资源时不需要输入密码,只要 iSCSI 客户端的名称与服务端中设置
的访问控制列表中某一名称条目一致即可,因此需要在 iSCSI 服务端的配置文件中写入一串
能够验证用户信息的名称。acls 参数目录用于存放能够访问 iSCSI 服务端共享存储资源的客
户端名称。刘遄老师推荐在刚刚系统生成的 iSCSI target 后面追加上类似于:client 的参数,这
样既能保证客户端的名称具有唯一性,又非常便于管理和阅读:
/iscsi/iqn.20...eb7/tpg1/luns> cd ..
/iscsi/iqn.20...fdacaeb7/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
o- acls ................................................................................................................ [ACLs: 0]
o- luns ................................................................................................................ [LUNs: 1]
| o- lun0 ............................................................................ [block/disk0 (/dev/md0) (default_tg_pt_gp)]
o- portals .......................................................................................................... [Portals: 1]
o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...fdacaeb7/tpg1> cd acls
/iscsi/iqn.20...eb7/tpg1/acls> ls
o- acls .................................................................................................................. [ACLs: 0]
/iscsi/iqn.20...eb7/tpg1/acls> ll
Command not found ll
/iscsi/iqn.20...eb7/tpg1/acls> create iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client
Created Node ACL for iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client
Created mapped LUN 0.
第5步:
设置 iSCSI 服务端的监听 IP 地址和端口号。位于生产环境中的服务器上可能有
多块网卡,那么到底是由哪个网卡或 IP 地址对外提供共享存储资源呢?这就需要我们在配置
文件中手动定义 iSCSI 服务端的信息,即在 portals 参数目录中写上服务器的 IP 地址。接下来
将由系统自动开启服务器 192.168.10.10 的 3260 端口将向外提供 iSCSI 共享存储资源服务:
+
/iscsi/iqn.20...eb7/tpg1/acls> cd ..
/iscsi/iqn.20...fdacaeb7/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
o- acls ................................................................................................................ [ACLs: 1]
| o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client ......................................... [Mapped LUNs: 1]
| o- mapped_lun0 ....................................................................................... [lun0 block/disk0 (rw)]
o- luns ................................................................................................................ [LUNs: 1]
| o- lun0 ............................................................................ [block/disk0 (/dev/md0) (default_tg_pt_gp)]
o- portals .......................................................................................................... [Portals: 1]
o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...fdacaeb7/tpg1> cd portals/
/iscsi/iqn.20.../tpg1/portals> create 192.168.10.1
Using default IP port 3260
Could not create NetworkPortal in configFS
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> create 192.168.10.1
Using default IP port 3260
Created network portal 192.168.10.1: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- alua ............................................................................ [ALUA Groups: 1]
| | o- default_tg_pt_gp ................................................ [ALUA state: Active/optimized]
| 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.localhost.x8664:sn.3820fdacaeb7 ................................ [TPGs: 1]
| o- tpg1 ........................................................................ [no-gen-acls, no-auth]
| o- acls ................................................................................... [ACLs: 1]
| | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client ............ [Mapped LUNs: 1]
| | o- mapped_lun0 .......................................................... [lun0 block/disk0 (rw)]
| o- luns ................................................................................... [LUNs: 1]
| | o- lun0 ............................................... [block/disk0 (/dev/md0) (default_tg_pt_gp)]
| o- portals ............................................................................. [Portals: 1]
| o- 192.168.10.1:3260 ......................................................................... [OK]
o- loopback .................................................................................. [Targets: 0]
/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@localhost ~]# systemctl restart targetd
[root@localhost ~]# firewall-cmd --permanent --add-port=3260/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
iSCSI 服务端的配置至此全部完成。
17.4 配置 Linux 客户端
我们在前面的章节中已经配置了很多 Linux 服务,基本上可以说,无论是什么服务,
客户端的配置步骤都要比服务端的配置步骤简单一些。在 RHEL 7 系统中,已经默认安
装了 iSCSI 客户端服务程序 initiator。如果您的系统没有安装的话,可以使用 Yum 软件
仓库手动安装。
[root@localhost ~]# yum install iscsi-initiator-utils
前面讲到,iSCSI 协议是通过客户端的名称来进行验证,而该名称也是 iSCSI 客户端的唯
一标识,而且必须与服务端配置文件中访问控制列表中的信息一致,否则客户端在尝试访问
存储共享设备时,系统会弹出验证失败的保存信息。
下面我们编辑 iSCSI 客户端中的 initiator 名称文件,把服务端的访问控制列表名称填写
进来,然后重启客户端 iscsid 服务程序并将其加入到开机启动项中:
[root@localhost ~]# vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client
"/etc/iscsi/initiatorname.iscsi" 1L, 81C written
[root@localhost ~]#
[root@localhost ~]# systemctl restart iscsid
[root@localhost ~]# systemctl enable iscsid
Created symlink from /etc/systemd/system/multi-user.target.wants/iscsid.service to /usr/lib/systemd/system/iscsid.service.
[root@localhost ~]#
iSCSI 客户端访问并使用共享存储资源的步骤很简单,只需要记住刘遄老师的一个小口
诀“先发现,再登录,最后挂载并使用”。iscsiadm 是用于管理、查询、插入、更新或删除 iSCSI
数据库配置文件的命令行工具,用户需要先使用这个工具扫描发现远程 iSCSI 服务端,然后
查看找到的服务端上有哪些可用的共享存储资源。其中,-m discovery 参数的目的是扫描并发
现可用的存储资源,-t st 参数为执行扫描操作的类型,-p 192.168.10.10 参数为 iSCSI 服务端的
IP 地址:
[root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.10.1
192.168.10.1:3260,1 iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7
在使用 iscsiadm 命令发现了远程服务器上可用的存储资源后,接下来准备登录 iSCSI 服
务端。其中,-m node 参数为将客户端所在主机作为一台节点服务器,-T iqn.2003-01. org.linuxiscsi.linuxprobe.x8664:sn.d497c356ad80 参数为要使用的存储资源(大家可以直接复制前面命令
中扫描发现的结果,以免录入错误),-p 192.168.10.10 参数依然为对方 iSCSI 服务端的 IP 地
址。最后使用--login 或-l 参数进行登录验证。
[root@localhost ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7 -p 192.168.10.1 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7, portal: 192.168.10.1,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7, portal: 192.168.10.1,3260] successful.
[root@localhost ~]#
在 iSCSI 客户端成功登录之后,会在客户端主机上多出一块名为/dev/sdb 的设备文件。第
6 章曾经讲过,udev 服务在命名硬盘名称时,与硬盘插槽是没有关系的。接下来可以像使用
本地主机上的硬盘那样来操作这个设备文件了。
[root@localhost ~]# file /dev/sdb
/dev/sdb: block special
[root@localhost ~]#
下面进入标准的磁盘操作流程。考虑到大家已经在第 6 章学习了这部分内容,外加
这个设备文件本身只有 40GB 的容量,因此我们不再进行分区,而是直接格式化并挂载
使用。
[root@localhost ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
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@localhost ~]# mkdir /iscsi
[root@localhost ~]# mount /dev/sdb /iscsi
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 4.0G 14G 24% /
devtmpfs 473M 0 473M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 7.2M 481M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 161M 854M 16% /boot
tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs 98M 32K 98M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb 40G 33M 40G 1% /iscsi
从此以后,这个设备文件就如同是客户端本机主机上的硬盘那样工作。需要提醒大家的
是,由于 udev 服务是按照系统识别硬盘设备的顺序来命名硬盘设备的,当客户端主机同时使
用多个远程存储资源时,如果下一次识别远程设备的顺序发生了变化,则客户端挂载目录中
的文件也将随之混乱。为了防止发生这样的问题,我们应该在/etc/fstab 配置文件中使用设备
的 UUID 唯一标识符进行挂载,这样,不论远程设备资源的识别顺序再怎么变化,系统也能
正确找到设备所对应的目录。
blkid 命令用于查看设备的名称、文件系统及 UUID。可以使用管道符(详见第 3 章)进
行过滤,只显示与/dev/sdb 设备相关的信息:
[root@localhost ~]# blkid | grep /dev/sdb
/dev/sdb: UUID="7335f852-5cbd-4151-a94b-65809259527b" TYPE="xfs"
刘遄老师还要再啰嗦一句,由于/dev/sdb 是一块网络存储设备,而 iSCSI 协议是基于
TCP/IP 网络传输数据的,因此必须在/etc/fstab 配置文件中添加上_netdev 参数,表示当系统联
网后再进行挂载操作,以免系统开机时间过长或开机失败:
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Oct 28 13:24:17 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=dde3c368-3fb5-4679-b2e4-3775d623b240 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
UUID=7335f852-5cbd-4151-a94b-65809259527b /iscsi xfs defaults,_netdev 0 0
~
如果我们不再需要使用 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.
17.5 配置 Windows 客户端
使用 Windows 系统的客户端也可以正常访问 iSCSI 服务器上的共享存储资源,而且操作
原理及步骤与 Linux 系统的客户端基本相同。在进行下面的实验之前,请先关闭 Linux 系统
客户端,以免这两台客户端主机同时使用 iSCSI 共享存储资源而产生潜在问题。下面按照表
17-2 来配置 iSCSI 服务器和 Windows 客户端所用的 IP 地址。
主机名称 | 操作系统 | IP地址 |
ISCSI服务器 | centos7 | 192.168.10.1 |
Windows系统客户端 | windows 7 | 192.168.10.10 |
第1步:运行 iSCSI 发起程序。在 Windows 7 操作系统中已经默认安装了 iSCSI 客户端
程序,我们只需在控制面板中找到“系统和安全”标签,然后单击“管理工具”(见图 17-3),
进入到“管理工具”页面后即可看到“iSCSI 发起程序”图标。双击该图标。在第一次运行 iSCSI
发起程序时,系统会提示“Microsoft iSCSI 服务端未运行”,单击“是”按钮即可自动启动并
运行 iSCSI 发起程序,如图 17-4 所示。
第2步:扫描发现 iSCSI 服务端上可用的存储资源。不论是 Windows 系统还是 Linux 系
统,要想使用 iSCSI 共享存储资源都必须先进行扫描发现操作。运行 iSCSI 发起程序后在“目
标”选项卡的“目标”文本框中写入 iSCSI 服务端的 IP 地址,然后单击“快速连接”按钮,
如图 17-5 所示。
在弹出的“快速连接”提示框中可看到共享的硬盘存储资源,单击“完成”按钮即可,
如图 17-6 所示。
目标换成192.168.10.1
回到“目标”选项卡页面,可以看到共享存储资源的名称已经出现,如图 17-7 所示。
第3步:准备连接 iSCSI 服务端的共享存储资源。由于在 iSCSI 服务端程序上设置了 ACL,
使得只有客户端名称与 ACL 策略中的名称保持一致时才能使用远程存储资源,因此需要在“配置”
选项卡中单击“更改”按钮,把 iSCSI 发起程序的名称修改为服务端 ACL 所定义的名称,如图 17-
8 所示。
在确认客户端发起程序的名称修改正确后即可返回到“目标”选项卡页面中,然后单击
“连接”按钮进行连接请求,成功连接到远程共享存储资源的页面如图 17-9 所示。
第4步:
访问 iSCSI 远程共享存储资源。右键单击桌面上的“计算机”图标,打开计算
机管理程序,如图 17-10 所示。
开始对磁盘进行初始化操作,如图 17-11 所示。Windows 系统用来初始化磁盘设备的步
骤十分简单,各位读者都可以玩得转 Linux 系统,相信 Windows 系统就更不在话下了。Windows
系统的初始化过程步骤如图 17-12 至图 17-18 所示。