本文系统Centos6.0
本文主要是iscsi存储配置及安全验证方面的应用;
关于iscsi方面的介绍大家去查询很多资料;这里就不废话了;直接进入主题
iscsi target
一个可以被用于存储数据的iscsi磁盘阵列或者具有iscsi功能的设备都可以被称为iscsi target
利用iscsi target软件,可以将服务器的存储空间分配给客户机使用,客户机就可以像使用本地硬盘一样使用iscsi磁盘
相关软件;比如linux平台的iscsi enterprise target
Iscsi initiator
Iscsi initiator是一个安装在计算机上的一个软件或是一个硬件设备,它负责处理同iscsi存储设备进行通信。
相关软件;linux平台的iscsi initiator。Windows平台也有,比如win7自带的Iscsi发起程序;下面会分别介绍;
关于Iscsi存储数据过程;会先进行封装iscsi协议加tcp/ip协议头进行传输
一、下面就是简单展示案例拓扑了:
Linux iscsi target : ServerA : 192.168.182.132
linux iscsi initiator : Client A:192.168.182.133
Windows7 :Client B:192.168.182.134
1、Server A 安装target程序:
wget http://nchc.dl.sourceforge.net/project/iscsitarget/iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz cd iscsitarget-1.4.20.2 make make install
然后你就可以使用service 进行管理
事先提醒:本Server端有三块硬盘,sda,sdb,sdc;sdb为2G;sdc为3G;
接下来配置主配置文件:(先实验将sdb共享,让linux client和windows client发现 )
[root@centos iet]# vim ietd.conf Target iqn.2013-07-17.com.lansgg:storage.disk2.sdb Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
注释:
Target iqn.2013-07.com.lansgg:storage.disk2.sdb Iqn.yyyy-mm.:[identifier] Iqn:表示iscsi squalfled name 简称iqn Yyyy-mmm:表示年份-月份。 Reversed domain name:表示倒过来的域名。 Identifier:标识识别代码。这里是storage.disk2.sdb Lun 0 path=/dev/sdb.Type=fileio,scsild=xyz,SisiSN=xyz Lun 0 Path=/dev/sdb 表示块设备号为0,映射的磁盘为/dev/sdb,type 值fileio是默认的可以用于磁盘、file和lvm,这里设定的的是fileio,主要用来对一个磁盘进行存储共享。
接下来在Windows client进行操作:: (客户端过程大概就是:发现>>连接)
我的windows os 是win7,使用其自带的iscsi initiator程序;
双击后;点击“发现”选项卡
切换到“目标”选项卡后;你会发现我们共享出来的sdb
点击确定后;状态更换为“已连接”状态
现在你去右键电脑管理,发现一块2G的硬盘
进行格式化;
你会发现一个2G的盘;我这里将他格式化为FAT32的一个分区;在里面写了一个test的文件,内容是test;
接下来在linux client进行操作
[root@centos ~]# yum install iscsi-initiator* -y
你会发现启动 service iscsid start 是无效的;这也是当时让我很郁闷的一件事情;
我们就直接进行discovery吧,他会自动启动程序
自动启动了iscsid;接下来我们进行启动iscsi
Ps:每次成功执行一次targets发现后,iscsi initiator就会将查询记录写到/var/lb/iscsi/send_targets对应的目录下。因此,只需成功一次discovery即可;
里面会记录一下信息,可以去cat下
里面记录了很多的信息;
通过iscsiadm 指令与iscsi targets建立关联
iscsiadm是用来管理(更新、删除、插入、查询)iscsi配置数据库文件的命令行工具,用户能够用他对iscsi nodes、sessions、connections和discovery records进行一系列的操作;
1、登录 iscsi target; 也就是上面说的“连接”;因为上面已经discovery过了
[root@centos ~]# iscsiadm -m node -T iqn.2013-07.com.lansgg:storage.disk2.sdb -p 192.168.182.131 -l
Ps:这里的“-T”后面跟target名称,“ip-address”是target主机的ip地址,“port”是target主机的端口号,默认是3260 -l 代表 --login
现在我们进行fdisk查看
注意后面的System标识为FAT32;因为本盘已经在windows进行了格式化,并且创建了test文件;见上面。
现在来看看这个test文件:
成功看到~
2、如何我们不想使用想断开呢?
[root@centos ~]# iscsiadm -m node -T iqn.2013-07.com.lansgg:storage.disk2.sdb -p 192.168.182.131 -u
现在你fdisk就看不到sdb了;
3、查看iscsi session和设备信息
[root@centos ~]# iscsiadm -m session ###就会提示如下##### tcp: [5] 192.168.182.131:3260,1 iqn.2013-07.com.lansgg:storage.disk2.sdb
如果一个target下新增了一个卷,在服务器上使用iscsiadm -m session -R 命令可以刷新当前连接的session以看到新增的卷;
[root@centos ~]# iscsiadm -m session -R
4、查看有那些target记录在了数据库中;
[root@centos ~]# iscsiadm -m node
5、查看target存储端相关配置信息;
[root@centos ~]# iscsiadm -m node -T iqn.2013-07.com.lansgg:storage.disk2.sdb -p 192.168.182.131
二、基于安全验证的共享存储配置;
其实,在上面已经发现了,我们将硬盘共享出去后,谁都可以发现,连接,使用,这就不能保证自己的数据安全,不方便管理,上面的文件内容可能不只你自己的;
现在我们进行基于安全验证的配置;
比如:sdb硬盘共享出去给Windows主机使用,sdc给linux主机使用;
(只允许客户端主机A连接target共享出来的磁盘分区一,而客户端主机B只允许连接target共享出来的磁盘分区二)
在安全控制上有两个手段,一个就是我们指定某个ip使用某个共享区域;另一个就是账户、密码验证;
方式一:指定授权ip访问共享磁盘
sdb; iqn.2013-07.com.lansgg:storage.disk2.sdb (windows使用) ip:192.168.182.135
sdc ; iqn.2013-07.com.lansgg:storage.disk2.sdc (linux使用) ip:192.168.182.133
[root@centos iet]# vim /etc/iet/initiators.allow #ALL ALL #将默认的注释掉 iqn.2013-07.com.lansgg:storage.disk2.sdb 192.168.182.135 iqn.2013-07.com.lansgg:storage.disk2.sdc 192.168.182.133
重启server端iscsi-target服务,你会发现sdb归135所有使用权,sdc归133所有使用权
在client端重启iscsi进行触发即可;
方式二:client主机以密码认证获取iscsi target资源;
配置server端
[root@centos iet]# vim /etc/iet/ietd.conf IncomingUser discoveryuser discoverysecret ##第一个“IncomingUser”是个全局参数,用来指定discovery查询认证所使用的帐号和密码 Target iqn.2013-07.com.lansgg:storage.disk2.sdb IncomingUser lansgg lansggsecret Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz ##第二个IncomingUser是login认证; 关于sdc的认证是一样的配置
Ps:ip验证和密码验证不能共存;
这里用windows来验证下;
首先进行discovery
然后进行login操作
最后查看连接成功:
然后在linux客户端验证:
vim /etc/iscsi/iscsid.conf #以下三个是针对discovery的 Discovery.sendtargets.auth.authmethod=chap #表示discovery时启用chap验证 Discovery.sendtargets.auth.username=discoveryuser #验证用户名称,可以是任意字符,但必须与target端的incominguser配置的名称一致。 Discovery.sendtargets.auth.password=discoverysecret #验证密码,必须与target对应的incominguser选择设置的密码一致; #以下三个是针对login的 Node.session.auth.authmethod=chap #表示在login时启用chap验证。 Node.session.auth.username=lansgg #验证用户名称,可以是任意字符,但必须与target端的incominguser配置的名字一致。 Node.session.auth.password=lansggsecret #验证密码,必须与target端对应的incominguser选项配置的密码一致。
继续安装上面linux client进行discovery、login即可;然后格式化就可以使用了;
友情提示:
管理共享磁盘:
》Linux 上的ext文件系统的一个特性,对某个分区mount、umount很多次后会或者隔一个固定的时间后,系统会对该分区进行检测,这就会导致硬盘反映速度很慢,影响业务,本操作的目地就是去掉文件系统自动检查的属性;
Tune2fs 修改文件系统的属性,去掉自动检查的属性:
Tune2fs -c -1 -i 0 /dev/sdb5 # /dev/sdb5为挂载的共享磁盘
2》设定文件系统的自动挂载
使用uid标识进行挂载
Tune2fs -l /dev/sdb5 Vim /etc/fstab UUID=uuid /data ext3 _netdev 0 0
磁盘设备的名称可能会发生变化,从而引起文件系统不能挂载上来或者不能正确挂载,使用
_netdev 是针对iscsi设备的特殊mount选项,此挂载选择指示将在网络启动后挂载改卷,在关闭网络前卸载改卷。