# 18.3 iSCSI initiator 的设定
## 18.3 iSCSI initiator 的设定
谈完了 target 的设定,并且观察到相关 target 的 LUN 数据后,接下来就是要来挂载使用啰。使用的方法很简单, 只不过我们得要安装额外的软件来取得 target 的 LUN 使用权就是了。
- - - - - -
### 18.3.1 所需软件与软件结构
在前一小节就谈过了,要设定 iSCSI initiator 必须要安装 iscsi-initiator-utils 才行。安装的方法请使用 yum 去处理,这里不再多讲话。那么这个软件的结构是如何呢?
- /etc/iscsi/iscsid.conf:主要的配置文件,用来连结到 iSCSI target 的设定;
- /sbin/iscsid:启动 iSCSI initiator 的主要服务程序;
- /sbin/iscsiadm:用来管理 iSCSI initiator 的主要设定程序;
- /etc/init.d/iscsid:让本机模拟成为 iSCSI initiater 的主要服务;
- /etc/init.d/iscsi:在本机成为 iSCSI initiator 之后,启动此脚本,让我们可以登入 iSCSI target。所以 iscsid 先启动后,才能启动这个服务。为了防呆,所以 /etc/init.d/iscsi 已经写了一个启动指令, 启动 iscsi 前尚未启动 iscsid ,则会先呼叫 iscsid 才继续处理 iscsi 喔!
老实说,因为 /etc/init.d/iscsi 脚本已经包含了启动 /etc/init.d/iscsid 的步骤在里面,所以,理论上, 你只要启动 iscsi 就好啦!此外,那个 iscsid.conf 里面大概只要设定好登入 target 时的帐密即可, 其他的 target 搜寻、设定、取得的方法都直接使用 iscsiadm 这个指令来完成。由于 iscsiadm 侦测到的结果会直接写入 /var/lib/iscsi/nodes/ 当中,因此只要启动 /etc/init.d/iscsi 就能够在下次开机时,自动的连结到正确的 target 啰。 那么就让我们来处理处理整个过程吧 ([注6](#ps6))!
- - - - - -
### 18.3.2 initiator 的实际设定
首先,我们得要知道 target 提供了啥咚咚啊,因此,理论上,不论是 target 还是 initiator 都应该是要我们管理的机器才对。 而现在我们知道 target 其实有设定账号与密码的,所以底下我们就得要修改一下 iscsid.conf 的内容才行。
- 修改 /etc/iscsi/iscsid.conf 内容,并启动 iscsi
这个档案的修改很简单,因为里面的参数大多已经预设做的不错了,所以只要填写 target 登入时所需要的帐密即可。 修改的地方有两个,一个是侦测时 (discovery) 可能会用到的帐密,一个是联机时 (node) 会用到的帐密:
```
[root@clientlinux ~]# vim /etc/iscsi/iscsid.conf
node.session.auth.username = vbirduser <==在 target 时设定的
node.session.auth.password = vbirdpasswd <==约在 53, 54 行
discovery.sendtargets.auth.username = vbirduser <==约在 67, 68 行
discovery.sendtargets.auth.password = vbirdpasswd
[root@clientlinux ~]# chkconfig iscsid on
[root@clientlinux ~]# chkconfig iscsi on
```
由于我们尚未与 target 联机,所以 iscsi 并无法让我们顺利启动的!因此上面只要 chkconfig 即可,不需要启动他。 要开始来侦测 target 与写入系统信息啰。全部使用 iscsiadm 这个指令就可以完成所有动作了。
- 侦测 192.168.100.254 这部 target 的相关数据
虽然我们已经知道 target 的名字,不过,这里假设还不知道啦!因为有可能哪一天你的公司有钱了, 会去买实体的 iSCSI 数组嘛!所以这里还是讲完整的侦测过程好了!你可以这样使用:
```
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p IP:port
选项与参数:
-m discovery :使用侦测的方式进行 iscsiadmin 指令功能;
-t sendtargets :透过 iscsi 的协议,侦测后面的设备所拥有的 target 数据
-p IP:port :就是那部 iscsi 设备的 IP 与埠口,不写埠口预设是 3260 啰!
范例:侦测 192.168.100.254 这部 iSCSI 设备的相关数据
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p 192.168.100.254
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
# 192.168.100.254:3260,1 :在此 IP, 端口上面的 target 号码,本例中为 target1
# iqn.2011-08.vbird.centos:vbirddisk :就是我们的 target 名称啊!
[root@clientlinux ~]# ll -R /var/lib/iscsi/nodes/
/var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk
/var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk/192.168.100.254,3260,1
# 上面的特殊字体部分,就是我们利用 iscsiadm 侦测到的 target 结果!
```
现在我们知道了 target 的名称,同时将所有侦测到的信息通通写入到上述 /var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk/192.168.100.254,3260,1 目录内的 default 档案中, 若信息有修订过的话,那你可以到这个档案内修改,也可以透过 iscsiadm 的 update 功能处理相关参数的。
- 开始进行联机 iSCSI target
因为我们的 initiator 可能会连接多部的 target 设备,因此,我们得先要瞧瞧目前系统上面侦测到的 target 有几部, 然后再找到我们要的那部 target 来进行登入的作业。不过,如果你想要将所有侦测到的 target 全部都登入的话, 那么整个步骤可以再简化:
```
范例:根据前一个步骤侦测到的资料,启动全部的 target
[root@clientlinux ~]# /etc/init.d/iscsi restart
正在停止 iscsi: [ 确定 ]
正在激活 iscsi: [ 确定 ]
# 将系统里面全部的 target 通通以 /var/lib/iscs/nodes/ 内的设定登入
# 上面的特殊字体比较需要注意啦!你只要做到这里即可,底下的瞧瞧就好。
范例:显示出目前系统上面所有的 target 数据:
[root@clientlinux ~]# iscsiadm -m node
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
选项与参数:
-m node:找出目前本机上面所有侦测到的 target 信息,可能并未登入喔
范例:仅登入某部 target ,不要重新启动 iscsi 服务
[root@clientlinux ~]# iscsiadm -m node -T target名称 --login
选项与参数:
-T target名称:仅使用后面接的那部 target ,target 名称可用上个指令查到!
--login :就是登入啊!
[root@clientlinux ~]# iscsiadm -m node -T iqn.2011-08.vbird.centos:vbirddisk \
> --login
# 这次进行会出现错误,是因为我们已经登入了,不可重复登入喔!
```
接下来呢?呵呵!很棒的是,我们要来开始处理这个 iSCSI 的磁盘了喔!怎么处理?瞧一瞧!
```
[root@clientlinux ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes <==这是原有的那颗磁盘,略过不看
....(中间省略)....
Disk /dev/sdc: 2147 MB, 2147483648 bytes
67 heads, 62 sectors/track, 1009 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Disk /dev/sdb: 2154 MB, 2154991104 bytes
67 heads, 62 sectors/track, 1013 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Disk /dev/sdd: 524 MB, 524288000 bytes
17 heads, 59 sectors/track, 1020 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
```
你会发现主机上面多出了三个新的磁盘,容量与刚刚在 192.168.100.254 那部 iSCSI target 上面分享的 LUN 一样大。 那这三颗磁盘可以怎么用?你想怎么用就怎么用啊!只是,唯一要注意的,就是 iSCSI target 每次都要比 iSCSI initiator 这部主机还要早开机,否则我们的 initiator 恐怕就会出问题。
- 更新/删除/新增 target 数据的方法
如果你的 iSCSI target 可能因为某些原因被拿走了,或者是已经不存在于你的区网中,或者是要送修了~ 这个时候你的 iSCSI initiator 总是得要关闭吧!但是,又不能全部关掉 (/etc/init.d/iscsi stop), 因为还有其他的 iSCSI target 在使用。这个时候该如何取消不要的 target 呢?很简单!流程如下:
```
[root@clientlinux ~]# iscsiadm -m node -T targetname --logout
[root@clientlinux ~]# iscsiadm -m node -o [delete|new|update] -T targetname
选项与参数:
--logout :就是注销 target,但是并没有删除 /var/lib/iscsi/nodes/ 内的数据
-o delete:删除后面接的那部 target 链接信息 (/var/lib/iscsi/nodes/*)
-o update:更新相关的信息
-o new :增加一个新的 target 信息。
范例:关闭来自鸟哥的 iSCSI target 的数据,并且移除链接
[root@clientlinux ~]# iscsiadm -m node <==还是先秀出相关的 target iqn 名称
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
[root@clientlinux ~]# iscsiadm -m node -T <u>iqn.2011-08.vbird.centos:vbirddisk</u> \
> --logout
Logging out of session [sid: 1, target: iqn.2011-08.vbird.centos:vbirddisk,
portal: 192.168.100.254,3260]
Logout of [sid: 1, target: iqn.2011-08.vbird.centos:vbirddisk, portal:
192.168.100.254,3260] successful.
# 这个时候的 target 连结还是存在的,虽然注销你还是看的到!
[root@clientlinux ~]# iscsiadm -m node -o delete \
> -T iqn.2011-08.vbird.centos:vbirddisk
[root@clientlinux ~]# iscsiadm -m node
iscsiadm: no records found! <==嘿嘿!不存在这个 target 了~
[root@clientlinux ~]# /etc/init.d/iscsi restart
# 你会发现唔!怎么 target 的信息不见了!这样瞭了乎!
```
如果一切都没有问题,现在,请回到 discovery 的过程,重新再将 iSCSI target 侦测一次,再重新启动 initiator 来取得那三个磁盘吧!我们要来测试与利用该磁盘啰!
- - - - - -
### 18.3.3 一个测试范例
到底 iSCSI 可以怎么用?我们就来玩一玩。假设:
1. 你刚刚如同鸟哥的整个运作流程,已经在 initiator 上面将 target 数据清除了;
2. 现在我们只知道 iSCSI target 的 IP 是 192.168.100.254 ,而需要的帐密是 vbirduser, vbirdpasswd;
3. 帐密信息你已经写入 /etc/iscsi/iscsid.conf 里面了;
4. 假设我们预计要将 target 的磁盘拿来当作 LVM 内的 PV 使用;
5. 并且将所有的磁盘容量都给一个名为 /dev/iscsi/disk 的 LV 使用;
6. 这个 LV 会被格式化为 ext4 ,且挂载在 /data/iscsi 内。
那么,整体的流程是:
```
# 1\. 启动 iscsi ,并且开始侦测及登入 192.168.100.254 上面的 target 名称
[root@clientlinux ~]# /etc/init.d/iscsi restart
[root@clientlinux ~]# chkconfig iscsi on
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p 192.168.100.254
[root@clientlinux ~]# /etc/init.d/iscsi restart
[root@clientlinux ~]# iscsiadm -m node
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
# 2\. 开始处理 LVM 的流程,由 PV, VG, LV 依序处理喔!
[root@clientlinux ~]# fdisk -l <==出现的资料中你会发现 /dev/sd[b-d]
[root@clientlinux ~]# pvcreate /dev/sd{b,c,d} <==建立 PV 去!
Wiping swap signature on /dev/sdb
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
Physical volume "/dev/sdd" successfully created
[root@clientlinux ~]# vgcreate iscsi /dev/sd{b,c,d} <==建立 VG 去!
Volume group "iscsi" successfully created
[root@clientlinux ~]# vgdisplay <==要找到可用的容量啰!
--- Volume group ---
VG Name iscsi
....(中间省略)....
Act PV 3
VG Size 4.48 GiB
PE Size 4.00 MiB
Total PE 1148 <==就是这玩意儿!共 1148 个!
Alloc PE / Size 0 / 0
Free PE / Size 1148 / 4.48 GiB
....(底下省略)....
[root@clientlinux ~]# lvcreate -l 1148 -n disk iscsi
Logical volume "disk" created
[root@clientlinux ~]# lvdisplay
--- Logical volume ---
LV Name /dev/iscsi/disk
VG Name iscsi
LV UUID opR64B-Zeoe-C58n-ipN2-em3O-nUYs-wjEZDP
LV Write Access read/write
LV Status available
# open 0
LV Size 4.48 GiB <==注意一下容量对不对啊!
Current LE 1148
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
# 3\. 开始格式化,并且进行开机自动挂载的动作!
[root@clientlinux ~]# mkfs -t ext4 /dev/iscsi/disk
[root@clientlinux ~]# mkdir -p /data/iscsi
[root@clientlinux ~]# vim /etc/fstab
/dev/iscsi/disk /data/iscsi ext4 defaults,_netdev 1 2
[root@clientlinux ~]# mount -a
[root@clientlinux ~]# df -Th
文件系统 类型 Size Used Avail Use% 挂载点
/dev/mapper/iscsi-disk
ext4 4.5G 137M 4.1G 4% /data/iscsi
```
比较特殊的是 /etc/fstab 里面的第四个字段,加上 *netdev (最前面是底线) 指的是,因为这个 partition 位于网络上, 所以得要网络开机启动完成后才会挂载的意思。现在,请让你的 iSCSI initiator 重新启动看看, 试看看重新启动系统后,你的 /data/iscsi 是否还存在呢? ^*^
然后,让我们切回 iSCSI target 那部主机,研究看看到底谁有使用我们的 target 呢?
```
[root@www ~]# tgt-admin --show
Target 1: iqn.2011-08.vbird.centos:vbirddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 2
Initiator: iqn.1994-05.com.redhat:71cf137f58f2 <==不是很喜欢的名字!
Connection: 0
IP Address: 192.168.100.10 <==就是这里联机进来啰!
LUN information:
....(后面省略)....
```
明明是 initiator 怎么会是那个 redhat 的名字呢?如果你不介意那就算了,如果挺介意的话,那么修改 initiator 那部主机的 /etc/iscsi/initiatorname.iscsi 这个档案的内容,将它变成类似如下的模样即可:
**Tips:** 不过,这个动作最好在使用 target 的 LUN 之前就进行,否则,当你使用了 LUN 的磁盘后,再修改这个档案后, 你的磁盘文件名可能会改变。例如鸟哥的案例中,改过 initiatorname 之后,原本的磁盘文件名竟变成 /dev/sd\[efg\] 了!害鸟哥的 LV 就不能再度使用了...
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
```
# 1\. 先在 iSCSI initiator 上面进行如下动作:
[root@clientlinux ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2011-08.vbird.centos:initiator
[root@clientlinux ~]# /etc/init.d/iscsi restart
# 2\. 在 iSCSI target 上面就可以发现如下的数据修订了:
[root@www ~]# tgt-admin --show
Target 1: iqn.2011-08.vbird.centos:vbirddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 5
Initiator: iqn.2011-08.vbird.centos:initiator
Connection: 0
IP Address: 192.168.100.10
....(后面省略)....
```
- - - - - -
- 鸟哥的Linux私房菜:服务器架设篇 第三版
- 第一部份:架站前的进修专区
- 作者序
- 第一章、架设服务器前的准备工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架设服务器流程
- 1.3 自我评估是否已经具有架站的能力
- 1.4 本章习题
- 第二章、基础网络概念
- 2.1 网络是个什么玩意儿
- 2.2 TCP/IP 的链结层相关协议
- 2.3 TCP/IP 的网络层相关封包与数据
- 2.4 TCP/IP 的传输层相关封包与数据
- 2.5 连上 Internet 前的准备事项
- 2.6 重点回顾:
- 2.7 本章习题
- 2.8 参考数据与延伸阅读
- 第三章、局域网络架构简介
- 3.1 局域网络的联机
- 3.2 本书使用的内部联机网络参数与通讯协议
- 第四章、连上 Internet
- 4.1 Linux 连上 Internet 前的注意事项
- 4.2 连上 Internet 的设定方法
- 4.3 无线网络--以笔记本电脑为例
- 4.4 常见问题说明
- 4.5 重点回顾
- 4.6 本章习题
- 4.7 参考数据与延伸阅读
- 第五章、 Linux 常用网络指令
- 5.1 网络参数设定使用的指令
- 5.2 网络侦错与观察指令
- 5.3 远程联机指令与实时通讯软件
- 5.4 文字接口网页浏览
- 5.5 封包撷取功能
- 5.6 重点回顾
- 5.7 本章习题
- 5.8 参考数据与延伸阅读
- 第六章、 Linux 网络侦错
- 6.1 无法联机原因分析
- 6.2 处理流程
- 6.3 本章习题
- 6.4 参考数据与延伸阅读
- 第二部分:主机的简易资安防护措施
- 第七章、网络安全与主机基本防护:限制端口, 网络升级与 SELinux
- 7.1 网络封包联机进入主机的流程
- 7.2 网络自动升级软件
- 7.3 限制联机埠口 (port)
- 7.4 SELinux 管理原则
- 7.5 被攻击后的主机修复工作
- 7.6 重点回顾
- 7.7 课后练习
- 7.8 参考数据与延伸阅读
- 第八章、路由观念与路由器设定
- 8.1 路由
- 8.2 路由器架设
- 8.3 动态路由器架设:quagga (zebra + ripd)
- 8.4 特殊状况:路由器两边界面是同一个 IP 网段: ARP Proxy
- 8.5 重点回顾
- 8.6 本章习题
- 8.7 参考数据与延伸阅读
- 第九章、防火墙与 NAT 服务器
- 9.1 认识防火墙
- 9.2 TCP Wrappers
- 9.3 Linux 的封包过滤软件:iptables
- 9.4 单机防火墙的一个实例
- 9.5 NAT 服务器的设定
- 9.6 重点回顾
- 9.7 本章习题
- 9.8 参考数据与延伸阅读
- 第十章、申请合法的主机名
- 10.1 为何需要主机名
- 10.2 注册一个合法的主机名
- 10.3 重点回顾
- 10.4 本章习题
- 10.5 参考数据与延伸阅读
- 第三部分:局域网络内常见的服务器架设
- 第十一章、远程联机服务器SSH / XDMCP / VNC / RDP
- 11.1 远程联机服务器
- 11.2 文字接口联机服务器: SSH 服务器
- 11.3 最原始图形接口: Xdmcp 服务的启用
- 11.4 华丽的图形接口: VNC 服务器
- 11.5 仿真的远程桌面系统: XRDP 服务器
- 11.6 SSH 服务器的进阶应用
- 11.7 重点回顾
- 11.8 本章习题
- 11.9 参考数据与延伸阅读
- 第十二章、网络参数控管者: DHCP 服务器
- 12.1 DHCP 运作的原理
- 12.2 DHCP 服务器端的设定
- 12.3 DHCP 客户端的设定
- 12.4 DHCP 服务器端进阶观察与使用
- 12.5 重点回顾
- 12.6 本章习题
- 12.7 参考数据与延伸阅读
- 第十三章、文件服务器之一:NFS 服务器
- 13.1 NFS 的由来与其功能
- 13.2 NFS Server 端的设定
- 13.3 NFS 客户端的设定
- 13.4 案例演练
- 13.5 重点回顾
- 13.6 本章习题
- 13.7 参考数据与延伸阅读
- 第十四章、账号控管: NIS 服务器
- 14.1 NIS 的由来与功能
- 14.2 NIS Server 端的设定
- 14.3 NIS Client 端的设定
- 14.4 NIS 搭配 NFS 的设定在丛集计算机上的应用
- 14.5 重点回顾
- 14.6 本章习题
- 14.7 参考数据与延伸阅读
- 第十五章、时间服务器: NTP 服务器
- 15.1 关于时区与网络校时的通讯协议
- 15.2 NTP 服务器的安装与设定
- 15.3 客户端的时间更新方式
- 15.4 重点回顾
- 15.5 本章习题
- 15.6 参考数据与延伸阅读
- 第十六章、文件服务器之二: SAMBA 服务器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服务器的基础设定
- 16.3 Samba 客户端软件功能
- 16.4 以 PDC 服务器提供账号管理
- 16.5 服务器简单维护与管理
- 16.6 重点回顾
- 16.7 本章习题
- 16.8 参考数据与延伸阅读
- 第十七章、区网控制者: Proxy 服务器
- 17.1 什么是代理服务器 (Proxy)
- 17.2 Proxy 服务器的基础设定
- 17.3 客户端的使用与测试
- 17.4 服务器的其他应用设定
- 17.5 重点回顾
- 17.6 本章习题
- 17.7 参考数据与延伸阅读
- 第十八章、网络驱动器装置: iSCSI 服务器
- 18.1 网络文件系统还是网络驱动器
- 18.2 iSCSI target 的设定
- 18.3 iSCSI initiator 的设定
- 18.4 重点回顾
- 18.5 本章习题
- 18.6 参考数据与延伸阅读
- 第四部分:常见因特网服务器架设
- 第十九章、主机名控制者: DNS 服务器
- 19.1 什么是 DNS
- 19.2 Client 端的设定
- 19.3 DNS 服务器的软件、种类与 cache only DNS 服务器设定
- 19.4 DNS 服务器的详细设定
- 19.5 协同工作的 DNS: Slave DNS 及子域授权设定
- 19.6 DNS 服务器的进阶设定
- 19.7 重点回顾
- 19.8 本章习题
- 19.9 参考数据与延伸阅读
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服务器之三: FTP 服务器
- 21.1 FTP 的数据链路原理
- 21.2 vsftpd 服务器基础设定
- 21.3 客户端的图形接口 FTP 联机软件
- 21.4 让 vsftpd 增加 SSL 的加密功能
- 21.5 重点回顾
- 21.6 本章习题
- 21.7 参考数据与延伸阅读
- 第二十二章、邮件服务器: Postfix
- 22.1 邮件服务器的功能与运作原理
- 22.2 MTA 服务器: Postfix 基础设定
- 22.3 MRA 服务器: dovecot 设定
- 22.4 MUA 软件:客户端的收发信软件
- 22.5 邮件服务器的进阶设定
- 22.6 重点回顾
- 22.7 本章习题
- 22.8 参考数据与延伸阅读