## 18.2 iSCSI target 的设定
能够完成 iSCSI target/initiator 设定的项目非常多 ([注4](#ps4)),鸟哥找的到的就有底下这几个:
* Linux SCSI target framework (tgt):[http://stgt.sourceforge.net/](http://stgt.sourceforge.net/)
* Linux-iSCSI Project:[http://linux-iscsi.sourceforge.net/](http://linux-iscsi.sourceforge.net/)
* Open-iSCSI:[http://www.open-iscsi.org/](http://www.open-iscsi.org/)
由于被我们 CentOS 6.x 官方直接使用的是 tgt 这个软件,因此底下我们会使用 tgt 来介绍整个 iSCSI target 的设定喔!
* * *
### 18.2.1 所需软件与软件结构
CentOS 将 tgt 的软件名称定义为 scsi-target-utils ,因此你得要使用 yum 去安装他才行。至于用来作为 initiator 的软件则是使用 linux-iscsi 的项目,该项目所提供的软件名称则为 iscsi-initiator-utils 。所以,总的来说,你需要的软件有:
* scsi-target-utils:用来将 Linux 系统仿真成为 iSCSI target 的功能;
* iscsi-initiator-utils:挂载来自 target 的磁盘到 Linux 本机上。
那么 scsi-target-utils 主要提供哪些档案呢?基本上有底下几个比较重要需要注意的:
* /etc/tgt/targets.conf:主要配置文件,设定要分享的磁盘格式与哪几颗;
* /usr/sbin/tgt-admin:在线查询、删除 target 等功能的设定工具;
* /usr/sbin/tgt-setup-lun:建立 target 以及设定分享的磁盘与可使用的客户端等工具软件。
* /usr/sbin/tgtadm:手动直接管理的管理员工具 (可使用配置文件取代);
* /usr/sbin/tgtd:主要提供 iSCSI target 服务的主程序;
* /usr/sbin/tgtimg:建置预计分享的映像文件装置的工具 (以映像文件仿真磁盘);
其实 CentOS 已经将很多功能都设定好了,因此我们只要修订配置文件,然后启动 tgtd 这个服务就可以啰! 接下来,就让我们实际来玩一玩 iSCSI target 的设定吧!
* * *
### 18.2.2 target 的实际设定
从上面的分析来看,iSCSI 就是透过一个网络接口,将既有的磁盘给分享出去就是了。那么有哪些类型的磁盘可以分享呢? 这包括:
* 使用 dd 指令所建立的大型档案可供仿真为磁盘 (无须预先格式化);
* 使用单一分割槽 (partition) 分享为磁盘;
* 使用单一完整的磁盘 (无须预先分割);
* 使用磁盘阵列分享 (其实与单一磁盘相同方式);
* 使用软件磁盘阵列 (software raid) 分享成单一磁盘;
* 使用 LVM 的 LV 装置分享为磁盘。
其实没有那么复杂,我们大概知道可以透过 (1)大型档案; (2)单一分割槽; (3)单一装置 (包括磁盘、数组、软件磁盘阵列、LVM 的 LV 装置文件名等等) 来进行分享。在本小节当中,我们将透过新的分割产生新的没有用到的分割槽、LVM 逻辑滚动条、大型档案等三个咚咚来进行分享。既然如此,那就得要先来搞定这些咚咚啰! 要注意喔,等一下我们要分享出去的数据,最好不要被使用,也最好不要开机就被挂载 (/etc/fstab 当中没有存在记录的意思)。 那么就来玩玩看啰!
* 建立所需要的磁盘装置
既然 iSCSI 要分享的是磁盘,那么我们得要准备好啊!目前预计准备的磁盘为:
* 建立一个名为 /srv/iscsi/disk1.img 的 500MB 档案;
* 使用 /dev/sda10 提供 2GB 作为分享 (从第一章到目前为止的分割数);
* 使用 /dev/server/iscsi01 的 2GB LV 作为分享 (再加入 5GB /dev/sda11 到 server VG 中)。
实际处理的方式如下:
```
# 1\. 建立大型档案:
[root@www ~]# mkdir /srv/iscsi
[root@www ~]# dd if=/dev/zero of=/srv/iscsi/disk1.img bs=1M count=500
[root@www ~]# chcon -Rv -t tgtd_var_lib_t /srv/iscsi/
[root@www ~]# ls -lh /srv/iscsi/disk1.img
-rw-r--r--. 1 root root 500M Aug 2 16:22 /srv/iscsi/disk1.img <==容量对的!
# 2\. 建立实际的 partition 分割:
[root@www ~]# fdisk /dev/sda <==实际的分割方式自己处理吧!
[root@www ~]# partprobe <==某些情况下得 reboot 喔!
[root@www ~]# fdisk -l
Device Boot Start End Blocks Id System
/dev/sda10 2202 2463 2104483+ 83 Linux
/dev/sda11 2464 3117 5253223+ 8e Linux LVM
# 只有输出 /dev/sda{10,11} 信息,其他的都省略了。注意看容量,上述容量单位 KB
[root@www ~]# swapon -s; mount | grep 'sda1'
# 自己测试一下 /dev/sda{10,11} 不能够被使用喔!若有被使用,请 umount 或 swapoff
# 3\. 建立 LV 装置 :
[root@www ~]# pvcreate /dev/sda11
[root@www ~]# vgextend server /dev/sda11
[root@www ~]# lvcreate -L 2G -n iscsi01 server
[root@www ~]# lvscan
ACTIVE '/dev/server/myhome' [6.88 GiB] inherit
ACTIVE '/dev/server/iscsi01' [2.00 GB] inherit
```
* 规划分享的 iSCSI target 檔名
iSCSI 有一套自己分享 target 档名的定义,基本上,藉由 iSCSI 分享出来的 target 檔名都是以 iqn 为开头,意思是:『iSCSI Qualified Name (iSCSI 合格名称)』的意思([注5](#ps5))。那么在 iqn 后面要接啥档名呢?通常是这样的:
```
iqn.yyyy-mm.<reversed domain name>:identifier
iqn.年年-月.单位网域名的反转写法 :这个分享的target名称
```
鸟哥做这个测试的时间是 2011 年 8 月份,然后鸟哥的机器是 www.centos.vbird ,反转网域写法为 vbird.centos, 然后,鸟哥想要的 iSCSI target 名称是 vbirddisk ,那么就可以这样写:
* iqn.2011-08.vbird.centos:vbirddisk
另外,就如同一般外接式储存装置 (target 名称) 可以具有多个磁盘一样,我们的 target 也能够拥有数个磁盘装置的。 每个在同一个 target 上头的磁盘我们可以将它定义为逻辑单位编号 (Logical Unit Number, LUN)。我们的 iSCSI initiator 就是跟 target 协调后才取得 LUN 的存取权就是了 ([注5](#ps5))。在鸟哥的这个简单案例中,最终的结果,我们会有一个 target ,在这个 target 当中可以使用三个 LUN 的磁盘。
* 设定 tgt 的配置文件 /etc/tgt/targets.conf
接下来我们要开始来修改配置文件了。基本上,配置文件就是修改 /etc/tgt/targets.conf 啦。这个档案的内容可以改得很简单, 最重要的就是设定前一点规定的 iqn 名称,以及该名称所对应的装置,然后再给予一些可能会用到的参数而已。 多说无益,让我们实际来实作看看:
```
[root@www ~]# vim /etc/tgt/targets.conf
# 此档案的语法如下:
<target iqn.相关装置的target名称>
backing-store /你的/虚拟设备/完整檔名-1
backing-store /你的/虚拟设备/完整檔名-2
</target>
<target iqn.2011-08.vbird.centos:vbirddisk>
backing-store /srv/iscsi/disk1.img <==LUN 1 (LUN 的编号通常照顺序)
backing-store /dev/sda10 <==LUN 2
backing-store /dev/server/iscsi01 <==LUN 3
</target>
```
事实上,除了 backing-store 之外,在这个配置文件当中还有一些比较特别的参数可以讨论看看 (man tgt-admin):
* backing-store (虚拟的装置), direct-store (实际的装置): 设定装置时,如果你的整颗磁盘是全部被拿来当 iSCSI 分享之用,那么才能够使用 direct-store 。不过,根据网络上的其他文件, 似乎说明这个设定值有点危险的样子。所以,基本上还是建议单纯使用模拟的 backing-store 较佳。例如鸟哥的简单案例中,就通通使用 backing-store 而已。
* initiator-address (用户端地址): 如果你想要限制能够使用这个 target 的客户端来源,才需要填写这个设定值。基本上,不用设定它 (代表所有人都能使用的意思), 因为我们后来会使用 iptables 来规范可以联机的客户端嘛!
* incominguser (用户账号密码设定): 如果除了来源 IP 的限制之外,你还想要让使用者输入账密才能使用你的 iSCSI target 的话,那么就加用这个设定项目。 此设定后面接两个参数,分别是账号与密码啰。
* write-cache [off|on] (是否使用快取): 在预设的情况下,tgtd 会使用快取来增快速度。不过,这样可能会有遗失数据的风险。所以,如果你的数据比较重要的话, 或许不要使用快取,直接存取装置会比较妥当一些。
上面的设定值要怎么用呢?现在,假设你的环境中,仅允许 192.168.100.0/24 这个网段可以存取 iSCSI target,而且存取时需要帐密分别为 vbirduser, vbirdpasswd ,此外,不要使用快取,那么原本的配置文件之外,还得要加上这样的参数才行 (基本上,使用上述的设定即可,底下的设定是多加测试用的,不需要填入你的设定中)。
```
[root@www ~]# vim /etc/tgt/targets.conf
<target iqn.2011-04.vbird.centos:vbirddisk>
backing-store /home/iscsi/disk1.img
backing-store /dev/sda7
backing-store /dev/server/iscsi01
initiator-address 192.168.100.0/24
incominguser vbirduser vbirdpasswd
write-cache off
</target>
```
* 启动 iSCSI target 以及观察相关端口与磁盘信息
再来则是启动、开机启动,以及观察 iSCSI target 所启动的埠口啰:
```
[root@www ~]# /etc/init.d/tgtd start
[root@www ~]# chkconfig tgtd on
[root@www ~]# netstat -tlunp | grep tgt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 26944/tgtd
tcp 0 0 :::3260 :::* LISTEN 26944/tgtd
# 重点就是那个 3260 TCP 封包啦!等一下的防火墙务必要开放这个埠口。
# 观察一下我们 target 相关信息,以及提供的 LUN 数据内容:
[root@www ~]# tgt-admin --show
Target 1: iqn.2011-08.vbird.centos:vbirddisk <==就是我们的 target
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller <==这是个控制器,并非可以用的 LUN 喔!
....(中间省略)....
LUN: 1
Type: disk <==第一个 LUN,是磁盘 (disk) 喔!
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 2155 MB <==容量有这么大!
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /dev/sda10 <==磁盘所在的实际文件名
LUN: 2
Type: disk
SCSI ID: IET 00010002
SCSI SN: beaf12
Size: 2147 MB
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /dev/server/iscsi01
LUN: 3
Type: disk
SCSI ID: IET 00010003
SCSI SN: beaf13
Size: 524 MB
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /srv/iscsi/disk1.img
Account information:
vbirduser <==额外的帐户信息
ACL information:
192.168.100.0/24 <==额外的来源 IP 限制
```
请将上面的信息对照一下我们的配置文件呦!看看有没有错误就是了!尤其注意每个 LUN 的容量、实际磁盘路径! 那个项目不能错误就是了。(照理说 LUN 的数字应该与 backing-store 设定的顺序有关,不过,在鸟哥的测试中, 出现的顺序并不相同!因此,还是需要使用 tgt-admin --show 去查阅查阅才好!)
* 设定防火墙
不论你有没有使用 initiator-address 在 targets.conf 配置文件中,iSCSI target 就是使用 TCP/IP 传输数据的, 所以你还是得要在防火墙内设定可以联机的客户端才行!既然 iSCSI 仅开启 3260 埠口,那么我们就这么进行即可:
```
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 3260 -j ACCEPT
[root@www ~]# /usr/local/virus/iptables/iptables.rule
[root@www ~]# iptables-save | grep 3260
-A INPUT -s 192.168.100.0/24 -p tcp -m tcp --dport 3260 -j ACCEPT
# 最终要看到上述的输出字样才是 OK 的呦!若有其他用户需要联机,
# 自行复制 iptables.allow 内的语法,修改来源端即可。
```
* * *
- 鸟哥的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 参考数据与延伸阅读