ISCSI安装之PC架构---超详细

                    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文件系统有一个特性,对某个分区mountumount很多次后或者隔一个固定的时间后,系统会对该分区进行检测,这就会导致硬盘反映速度很慢,影响业务,本操作的目的就是去掉文件系统自动检查的属性。

 

 

设定文件系统的自动挂载

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的两种验证方式

 

1IP认证方式

 

只需修改以下内容那个 

 

修改/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中,用来指定windowsLinux客户端主机登录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  #验证用户名称,可以是任意字符,但必须与targetIncomingUse配置的名字一致。

 

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 ~]# 

注意:这里发现sdbsdc,虽然能发现两块,但是我们能连接的只有一个,因为做限制了

 

 

接下来登录操作:

[root@localhost ~]# iscsiadm  -m node -T iqn.2013-07.com.1:sdb  -p 10.0.7.113   -l

 

注意:-l是登录,-u是退出

 

 

 

Windows客户端:直接上图

 

直接诶选择change,填入登录密码

 

 

成功! 一个简单的pc架构存储就这样完成了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章