ISCSI安装之PC架构----超详细
安装环境:
ISCSI服务器: Centos6.4 ip地址:10.0.7.113
ISCSI linux客户端: Centos6.4 ip地址:10.0.7.130
ISCSI win客户端: xp ip地址:10.0.7.133
安装开始:
第一部分:安装
服务端:
1:安装ISCSI服务所需的软件安装iSCSI target 下载地址:http://iscsitarget.sourceforge.net
[root@localhost iscsi]# tar zxf iscsitarget-1.4.20.1.tar.gz
[root@localhost iscsi]# cd iscsitarget-1.4.20.1
[root@localhost iscsitarget-1.4.20.1]# make
但是make的时候报以下错误:
make -C /lib/modules/2.6.32-358.el6.i686/build SUBDIRS=/iscsi/iscsitarget-1.4.20.1/kernel modules
make: *** /lib/modules/2.6.32-358.el6.i686/build: 没有那个文件或目录。 停止。
根据报错信息:
[root@localhost iscsitarget-1.4.20.1]# cd /lib/modules/2.6.32-358.el6.i686/
发现build的软连接是红色的,也就是不存在的, 为了验证这点,然后进入/usr/src/kernels/这个目录查看一下
[root@localhost 2.6.32-358.el6.i686]# cd /usr/src/kernels/
[root@localhost kernels]# ls
[root@localhost kernels]#
发现内容为空,并不存在这个软连接
Google了好半天,然后要安装kernel-devel这个软件 ,kernel-devel:包含内核开发环境所需的内核头文件等等
直接yum安装
[root@localhost kernels]# yum -y install kernel-devel
然后再查看一下/usr/src/kernels目录
[root@localhost kernels]# pwd
/usr/src/kernels
[root@localhost kernels]# ls
2.6.32-358.el6.i686
那现在就需要把刚刚/lib/modules/2.6.32-358.el6.i686目录下的build软连接指向/usr/src/kernels/2.6.32-358.el6.i686 也就是刚刚安装完kernel-devel后出来的目录
[root@localhost 2.6.32-358.el6.i686]# ln -s build/ /usr/src/kernels/2.6.32-358.el6.i686/
然后返回继续安装
[root@localhost iscsitarget-1.4.20.1]# make
Applying Patch compat-2.6.32.patch
/bin/sh: line 4: patch: command not found
make: *** [.patched.2.6.32-358.11.1.el6.i686] 错误 127
上面的报错是指patch命令没找到,可能是我系统安装的时候包没选好
直接yum安装即可
[root@localhost iscsitarget-1.4.20.1]# yum install patch
然后返回继续安装
[root@localhost iscsitarget-1.4.20.1]# make
[root@localhost iscsitarget-1.4.20.1]# make install
到这里安装完毕!
第二部分:配置
iSCSI Target的主配置文件为/etc/iet/ietd.conf
只需要修改2处内容,去掉这2处的#号,然后修改相应内容。
#Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
这里为共享的是sdb,我改为.
Target iqn.2013-07.com.1:sdb
格式:iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
iqn:表示“iSCSI Qualified Name”,简称iqn。
yyyy-mm:表示年份-月份。这里是2001-04。
reversed domain name:表示倒过来的域名,这里是com.example。
identifier:表示识别代码,这里是storage.disk2.sys1.xyz。
#Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
这里改为 :
Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
然后重启服务;
[root@localhost ~]# /etc/init.d/iscsi-target restart
Stopping iSCSI Target: Connection refused.
ietd: 没有进程被杀死
FATAL: Module iscsi_trgt not found.
[失败]
Starting iSCSI Target: FATAL: Module iscsi_trgt not found.
[失败]
解决方法:
mkdir /lib/modules/`uname -r`/kernel/iscsi
find / -name “iscsi_trgt.ko”
cp iscsi_trgt.ko /lib/modules/`uname -r`/kernel/iscsi
把iscsi_trgt.ko模块复制到正确的位置
depmod -aq
重建一下内核模块的依赖关系
重启服务:
[root@localhost ~]# /etc/init.d/iscsi-target restart
Stopping iSCSI Target: [确定]
Starting iSCSI Target: [确定]
[root@localhost ~]#
验证:
Linux客户端:安装iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm
为了方便我直接yum安装
[root@localhost ~]#yum install iscsi-*
然后启动
安装完成后,会生成/etc/iscsi主程序配置目录。
启动Initiator服务,操作如下:
[root@ Initiator iscsi]# service iscsi start
然后执行在linux上执行iSCSI Target发现,让客户端能找到网络中共享的iscisi
可以使用如下指令向 iSCSI Target 主机查询划分了哪些lun:
iscsiadm -m discovery --type sendtargets --portal IP 或者
iscsiadm -m discovery -t sendtargets -p IP
需要说明的是:当成功执行一次Target发现后,iSCSI Initiator就会将查询纪录写到/var/lib/iscsi/send_targets对应目录下。因此,对于Target发现只需执行一次即可。
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 10.0.7.113
正在启动 iscsid: [确定]
10.0.7.113:3260,1 iqn.2013-07.com.1:sdb
登录ISCSI target
[root@localhost ~]# iscsiadm -m node -T iqn.2013-07.com.1:sdb -p 10.0.7.113 -l
Logging in to [iface: default, target: iqn.2013-07.com.1:sdb, portal: 10.0.7.113,3260] (multiple)
Login to [iface: default, target: iqn.2013-07.com.1:sdb, portal: 10.0.7.113,3260] successful.
这里就证明已经成功了 可以去系统上执行发fdisk -l查看,需要自己手动分区格式化,然后mount挂在即可(这些省略)
管理共享磁盘
分区、格式化共享磁盘
tune2fs修改文件系统的属性,去掉自动检查的属性:
[root@data iscsi]# tune2fs -c -1 -i 0 /dev/sdb5
tune2fs 1.39 (29-May-2006)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
注意:Linux上的ext文件系统有一个特性,对某个分区mount、umount很多次后或者隔一个固定的时间后,系统会对该分区进行检测,这就会导致硬盘反映速度很慢,影响业务,本操作的目的就是去掉文件系统自动检查的属性。
设定文件系统的自动挂载
用tune2fs查看文件系统的UUID
[root@data iscsi]# tune2fs -l /dev/sdb5
编辑/etc/fstab文件,设置自动挂载:
UUID= b5c94f7f-295f-4030-b593-4247ddc7e088 /data ext3 _netdev 0 0
注意:磁盘设备的名称可能会发生变化,从而引起文件系统不能挂载上来或者不能正确挂载,使用UUID的方式进行挂载可以解决这个问题,也可以使用给文件系统设置卷标的方式来解决
netdev是针对iscsi设备的特殊mount选项,此挂载选项指示将在网络启动后挂载该卷,在关闭网络前卸载该卷
windows客户端: 安装iSCSI Initiator客户端
Windwos简单,直接上截图
点击Refresh刷新
点击LogOn激活
然后去磁盘管理查看是否增加磁盘,磁盘1就是从ISCSI上面挂载过来的,可以在里面新建文件
如果服务端要共享多块硬盘的时候,服务端的配置文件应该怎么改?
例如:我要共享sdc
只要在iscsi的主配置文件里面添加下面两句话:
Target iqn.2013-07.com.1:sdc
Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz
然后重启一下iscisi服务端
在linux客户端重新探寻一次;
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 10.0.7.113
10.0.7.113:3260,1 iqn.2013-07.com.1:sdc
10.0.7.113:3260,1 iqn.2013-07.com.1:sdb
发现了刚刚添加的sdc
在windows上探寻一次:
第三部分:ISCSI的两种验证方式
1:IP认证方式
只需修改以下内容那个
修改/etc/iet目录下找到ietd.conf文件
Target iqn.2013-07.com.1:sdb
Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz
Target iqn.2013-07.com.1:sdc
Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz
修改/etc/iet/initiators.allow文件
将末尾的ALL ALL 注释掉
iqn.2013-07.com.1:sdb 10.0.7.130
iqn.2013-07.com.1:sdc 10.0.7.133
验证:看看10.0.7.130挂载的是不是sdb 10.0.7.133挂载的是不是sdc
Linux客户机验证:
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 10.0.7.113
10.0.7.113:3260,1 iqn.2013-07.com.1:sdb
[root@localhost ~]#
Windows客户端:
第二种Initiator主机以密码认证获取iSCSI Target资源
再做这个操作以前,将上一步做的操作改回来
服务端:
接着修改/etc/iet/ietd.conf文件,修改后的内容如下:
Target iqn.2013-07.com.1:sdb
IncomingUser linuxwoshilinux
Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
Target iqn.2013-07.com.1:sdc
IncomingUser win woshiwindows
Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz
注意:第二个和第三个“IncomingUser”选项包含在对应的Target中,用来指定windows和Linux客户端主机登录Target/iqn/Lun时所使用的账号密码。也必须与initiator主机中设定的用户名密码一致。
重启iscis服务程序
Linux客户端:
修改/etc/iscsi/iscsid.conf文件,添加如下选项:
#以下三个是针对login的
node.session.auth.authmethod = CHAP #表示在login时启用CHAP验证。
node.session.auth.username = login.linux.auth #验证用户名称,可以是任意字符,但必须与target端IncomingUse配置的名字一致。
node.session.auth.password = linuxsecret
#验证密码,必须与target端对应的IncomingUse选项设置的密码一致。
启动iscsi客户端程序
但是我在执行发现操作的时候提示:
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 10.0.7.113
iscsiadm: No portals found
去检查iscsi服务端里:/etc/iet/下 initiators.allow 和targets.allow这两个文件里面的 ALL ALL是否不小心被注释掉了
执行发现操作
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 10.0.7.113
10.0.7.108:3260,1 iqn.2013-07.com.1:sdc
10.0.7.108:3260,1 iqn.2013-07.com.1:sdb
[root@localhost ~]#
注意:这里发现sdb和sdc,虽然能发现两块,但是我们能连接的只有一个,因为做限制了
接下来登录操作:
[root@localhost ~]# iscsiadm -m node -T iqn.2013-07.com.1:sdb -p 10.0.7.113 -l
注意:-l是登录,-u是退出
Windows客户端:直接上图
直接诶选择change,填入登录密码
成功! 一个简单的pc架构存储就这样完成了!