|
最近更新日期:2011年08月02日
18.2 iSCSI target 的设定
18.2.1 所需软件与软件结构 18.2.2 target 的实际设定 大标题的图示18.2 iSCSI target 的设定 能够完成 iSCSI target/initiator 设定的项目非常多 (注4),鸟哥找的到的就有底下这几个:
由于被我们 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 主要提供哪些档案呢?基本上有底下几个比较重要需要注意的:
其实 CentOS 已经将很多功能都设定好了,因此我们只要修订配置文件,然后启动 tgtd 这个服务就可以啰! 接下来,就让我们实际来玩一玩 iSCSI target 的设定吧! 小标题的图示18.2.2 target 的实际设定 从上面的分析来看,iSCSI 就是透过一个网络接口,将既有的磁盘给分享出去就是了。那么有哪些类型的磁盘可以分享呢? 这包括:
其实没有那么复杂,我们大概知道可以透过 (1)大型档案; (2)单一分割槽; (3)单一装置 (包括磁盘、数组、软件磁盘阵列、LVM
的 LV 装置文件名等等) 来进行分享。在本小节当中,我们将透过新的分割产生新的没有用到的分割槽、LVM
逻辑滚动条、大型档案等三个咚咚来进行分享。既然如此,那就得要先来搞定这些咚咚啰!
要注意喔,等一下我们要分享出去的数据,最好不要被使用,也最好不要开机就被挂载 (/etc/fstab 当中没有存在记录的意思)。
那么就来玩玩看啰!
既然 iSCSI 要分享的是磁盘,那么我们得要准备好啊!目前预计准备的磁盘为:
实际处理的方式如下: # 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 檔名都是以 iqn 为开头,意思是:『iSCSI Qualified Name (iSCSI 合格名称)』的意思(注5)。那么在 iqn 后面要接啥档名呢?通常是这样的: iqn.yyyy-mm.<reversed domain name>:identifier
iqn.年年-月.单位网域名的反转写法 :这个分享的target名称
鸟哥做这个测试的时间是 2011 年 8 月份,然后鸟哥的机器是 www.centos.vbird ,反转网域写法为 vbird.centos, 然后,鸟哥想要的 iSCSI target 名称是 vbirddisk ,那么就可以这样写:
另外,就如同一般外接式储存装置 (target 名称) 可以具有多个磁盘一样,我们的 target 也能够拥有数个磁盘装置的。
每个在同一个 target 上头的磁盘我们可以将它定义为逻辑单位编号
(Logical Unit Number, LUN)。我们的 iSCSI initiator 就是跟 target 协调后才取得 LUN 的存取权就是了
(注5)。在鸟哥的这个简单案例中,最终的结果,我们会有一个 target ,在这个 target
当中可以使用三个 LUN 的磁盘。
接下来我们要开始来修改配置文件了。基本上,配置文件就是修改 /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):
上面的设定值要怎么用呢?现在,假设你的环境中,仅允许 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 所启动的埠口啰: [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 内的语法,修改来源端即可。 |
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室