Chinaunix首页 | 论坛 | 博客
  • 博客访问: 174215
  • 博文数量: 25
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 238
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-11 10:03
个人简介

linux运维

文章分类

全部博文(25)

文章存档

2017年(5)

2016年(2)

2015年(18)

我的朋友

分类: 服务器与存储

2015-07-16 13:21:11

原文地址:iscsi 作者:yitian_1989

RHEL 5已开始在内核中加入了对iSCSI的支持,使用的 iSCSI Initiator软件是Open-iSCSI Initiator,支持万兆网卡,其配置方式与RHEL 4及更早的RedHat Linux发行版中的iSCSI Initiator有很大的区别。

一、安装并配置iSCSI Initiator软件

以下以RHEL 5 x86版本为例介绍如何安装并配置iSCSI initiator。

1、安装iSCSI Initiator

把RHEL5 x86第一张安装光盘挂载到/mnt目录下,之后进入/mnt/Server目录进行安装。

[root@pe03 Server]# cd /mnt/Server/

[root@pe03 Server]# rpm -ivh iscsi-initiator-utils-6.2.0.742-0.5.el5.i386.rpm

warning: iscsi-initiator-utils-6.2.0.742-0.5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...                ########################################### [100%]

1:iscsi-initiator-utils  ########################################### [100%]

这个安装将iscsid、iscsiadm安装到/sbin目录下,它还将把默认的配置文件安装到/etc/iscsi目录下:

/etc/iscsi/iscsid.conf 所有刚发起的iSCSI session默认都将使用这个文件中的参数设定。

/etc/iscsi/initiatorname.iscsi  软件iSCSI initiator的intiator名称配置文件。

在iscsi启动的时候,iscsid和iscsiadm会读取这两个配置文件。

2、确认iscsi服务随系统启动而启动

用chkconfig检查iscsi和iscsid服务在运行级别3和5中随系统的启动而自动启动

[root@pe03 Server]# chkconfig --list |grep iscsi

iscsi           0:off   1:off   2:off   3:on    4:on    5:on    6:off

iscsid          0:off   1:off   2:off   3:on    4:on    5:on    6:off

如果iscsid和iscsi没有随系统的启动而启动,则用chkconfig设置这两个服务在系统运行级别为3和5时随系统启动而启动

[root@pe03 Server]# chkconfig iscsi --level 35 on

[root@pe03 Server]# chkconfig iscsid --level 35 on

3、设置InitiatorName

用vi编辑/etc/iscsi/initiatorname.iscsi文件,文件内容如下

InitiatorName=iqn.2005-03.com.max:pe03

本例中InitiatorName设置为iqn.2005-03.com.max:pe03

注意:

? InitiatorName这个单词必须注意大小写,同时,必须顶格写,xxxx代表要设        置的initiator名称,请遵循iqn命名规范。

? iqn规范定义的InitiatorName格式为iqn.domaindate. reverse.domain.name:optional name,例如:iqn.2006-11.com.h3c:dbserver。

 
注意:修改initiatorname之后,需要重启iscsid服务,才能生效。
Centos7   systemctl restart iscsid.service
Centos6.x   /etc/init.d/iscsid restart

4、配置iscsi参数

编辑/etc/iscsi/iscsi.conf文件,确认node.startup的值为automatic,如果iSCSI存储服务器的target上启用了CHAP认证,则还需要配置CAHP认证:

node.session.auth.authmethod = CHAP

node.session.auth.username = xxxxxx      ――CHAP认证用户名

node.session.auth.password = xxxxxx      ――CHAP认证密码(至少12个字符)

下表是部分参数作用的解释:

配置内容 对应语句

在开机后是否自动登录Target。 node.startup = automatic   表示自动登录(默认是automatic),

node.startup = manual     表示需手动登录。

默认的CHAP认证用户名和密码 node.session.auth.authmethod = CHAP

node.session.auth.username = xxxxxx     CHAP认证用户名

node.session.auth.password = xxxxxx     CHAP认证密码(至少12个字符)

iSCSI发生错误以后,返回应用程序的超时时间。 node.session.timeo.replacement_timeout = 120  表示120秒

 

5、启动iscsi服务

用service iscsi start启动iSCSI服务。

root@pe03 Server]# service iscsi start

Turning off network shutdown. Starting iSCSI daemon: [  OK  ]

[  OK  ]

Setting up iSCSI targets: [  OK  ]

用service iscsi status及service iscsid status查看iscsi相关服务的运行状态

[root@pe03 Server]# service iscsi status

iscsid (pid 3697 3696) is running...

[root@pe03 Server]# service iscsid status

iscsid (pid 3697 3696) is running...

 

Open-iSCSI是通过以下iSCSI数据库文件来实现永久配置的:

Discovery (/var/lib/iscsi/send_targets):在/var/lib/iscsi/send_targets目录下包含iSCSI portals的配置信息,每个portal对应一个文件,文件名为“iSCSI portal IP,端口号”(例如“200.200.10.200,3260”)。

Node (/var/lib/iscsi/nodes):在/var/lib/iscsi/nodes目录下,生成一个或多个以iSCSI存储服务器上的 Target名命名的文件夹,在该文件夹下有一个文件名为“iSCSI portal IP,端口号” (例如“200.200.10.200,3260”)的配置参数文件,该文件中是initiator登录target时要使用的参数,这些参数的设置是从 /etc/iscsi/iscsi.conf中的参数设置继承而来的,可以通过iscsiadm对某一个参数文件进行更改(需要先注销到target的登 录)。

iscsiadm是用来管理(更新、删除、插入、查询)iSCSI配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。

 

6、分配存储资源,在Linux上执行target的发现

RHEL 5上当前的iSCSI Initiator版本只支持sendtargets 的发现方式,不支持SLP和iSNS 

假设后端存储为IX5000,iSCSI业务IP地址为200.200.10.200,则使用下面的命令执行target的发现:

[root@pe03 Server]# iscsiadm -m discovery -t sendtargets -p 200.200.10.200:3260

因为此时还没有在IX5000上创建该initiator并分配卷,这个命令执行成功后没有任何输出,但是此时到IX5000上会查看到有新的initiator生成。

在IX5000上把卷分配给Linux服务器后,再次执行target的发现:

[root@pe03 Server]# iscsiadm -m discovery -t sendtargets -p 200.200.10.200:3260

iscsiadm: unexpected SendTargets data: 

200.200.10.200:3260,1 iqn.2007-04.acme.com:h3c:200realm.rhel5

此时发现了一个新的target,target名称为iqn.2007-04.acme.com:h3c:200realm.rhel5

注:在IP SAN存储设备上把相应的存储空间分配给RedHat Linux服务器的具体操作请参照各存储设备相关的指导书

 

7、登录target

[root@pe03 Server]# iscsiadm -m node -T iqn.2007-04.acme.com:h3c:200realm.rhel5 -p 200.200.10.200:3260 -l

这里-T后面跟target名称,最后的-l(英文字母中小写的L),是login的意思。

可以使用iscsiadm -m node --loginall=all一次登录所有的targets。

[root@pe03 Server]# iscsiadm -m node --loginall=all

 

8、查看iSCSI session信息

用iscsiadm -m session –i查看iSCSI session和设备信息 

[root@pe03 ~]# iscsiadm -m session -i

iscsiadm version 2.0-742

************************************

Session (sid 0) using module tcp:

************************************

TargetName: iqn.2007-04.acme.com:h3c:200realm.rhel5

Portal Group Tag: 1

Network Portal: 200.200.10.200:3260

iSCSI Connection State: LOGGED IN

Internal iscsid Session State: NO CHANGE

 

************************

Negotiated iSCSI params:

************************

HeaderDigest: None

DataDigest: None

MaxRecvDataSegmentLength: 65536

MaxXmitDataSegmentLength: 65536

FirstBurstLength: 65536

MaxBurstLength: 262144

ImmediateData: No

InitialR2T: Yes

MaxOutstandingR2T: 1

 

************************

Attached SCSI devices:

************************

Host Number: 3  State: running

 

scsi3 Channel 00 Id 0 Lun: 0

Attached scsi disk sdb          State: running

 

二、.对新发现的磁盘进行分区并创建文件系统

1、先用fdisk –l查看新的磁盘名称,这里我们发现了一个100GB的磁盘,设备名为/dev/sdb

[root@pe03 Server]# fdisk -l

..............................

Disk /dev/sdb: 107.3 GB, 107373133824 bytes

255 heads, 63 sectors/track, 13054 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/sdb doesn't contain a valid partition table

 

2、用fdisk /dev/sdb进行分区,本例中我们把整个磁盘分成一个主分区/dev/sdb1

[root@pe03 Server]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

 

The number of cylinders for this disk is set to 13054.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

   (e.g., DOS FDISK, OS/2 FDISK)

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

 

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-13054, default 1):     ――此处回车,使用默认值1 

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-13054, default 13054):   ――此处回车使用默认值13054

Using default value 13054

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

3、用mkfs命令在/dev/sdb1上创建ext3文件系统

[root@pe03 Server]# mkfs -t ext3 /dev/sdb1

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

13107200 inodes, 26214055 blocks

1310702 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=0

800 block groups

32768 blocks per group, 32768 fragments per group

16384 inodes per group

Superblock backups stored on blocks: 

        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 

        4096000, 7962624, 11239424, 20480000, 23887872

 

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 35 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

4、用tune2fs修改文件系统的属性,去掉自动检查的属性:

[root@pe03 Server]# tune2fs -c -1 -i 0 /dev/sdb1

tune2fs 1.39 (29-May-2006)

Setting maximal mount count to -1

Setting interval between checks to 0 seconds

Linux上的ext3文件系统有一个特性,对某个分区mount、umount很多次后或者隔一个固定的时间后,系统会对该分区进行检测,这就会导致硬盘反映速度很慢,影响业务,本操作的目的就是去掉文件系统自动检查的属性。

 

三、设定文件系统的自动挂载

本例中我们将要把/dev/sdb1挂载到/data目录下

1、手动创建一个目录/data

[root@pe03 Server]# mkdir /data

 

2、用tune2fs查看文件系统的UUID:

[root@pe03 Server]# tune2fs -l /dev/sdb1

tune2fs 1.39 (29-May-2006)

Filesystem volume name:  

Last mounted on:          

Filesystem UUID:          3f0a00b7-4939-4ad2-a592-0821bb79f7c6

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal resize_inode dir_index filetype sparse_super large_file

....................

 

3、用vi编辑/etc/fstab文件,设置自动挂载:

在/etc/fstab文件中增加下面蓝色的一行文字:

/dev/VolGroup00/LogVol00  /                    ext3    defaults        1 1

LABEL=/boot             /boot                ext3    defaults        1 2

devpts                  /dev/pts               devpts  gid=5,mode=620  0 0

tmpfs                   /dev/shm               tmpfs   defaults        0 0

proc                    /proc                  proc    defaults        0 0

sysfs                   /sys                   sysfs   defaults        0 0

/dev/VolGroup00/LogVol01 swap                  swap    defaults        0 0

UUID=3f0a00b7-4939-4ad2-a592-0821bb79f7c6    /data     ext3    _netdev   0 0

注意:

? 挂载选项使用的是“_netdev”

? UUID要顶格写。

? Linux系统 重启后,磁盘设备的名称可能会发生变化,从而引起文件系统不能挂载上来或者不能正确挂载,使用UUID的方式进行挂载可以解决这个问题,也可以使用给文件 系统设置卷标的方式来解决,具体操作步骤可以参见KMS-12541:《在Linux上使用文件系统卷标解决磁盘名称发生变化引起的文件系统不能正确自动 挂载的问题》

 

4、用mount –a挂载文件系统

[root@pe03 Server]# mount –a

 

5、用df查看文件系统已经挂载成功

[root@pe03 /]# df -Th

Filesystem    Type    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

              ext3     65G  2.4G   59G   4% /

/dev/sda1     ext3     99M   12M   82M  13% /boot

tmpfs        tmpfs    471M     0  471M   0% /dev/shm

/dev/sdb1     ext3     99G  188M   94G   1% /data

 

6、条件允许的话,重启一下操作系统,使用df命令确认系统重启后文件系统能够自动挂载上来。

 

四、FAQ

1、如果存储上的Target下新挂载了一个SAN资源,如何在服务器上连接并识别?

如果一个Target下新增了一个SAN资源,在服务器可以使用iscsiadm –m session –R命令刷新(rescan)已连接的iSCSI session以识别新的SAN资源:

[root@pe03 /]# iscsiadm -m session –R

可以使用cat /proc/scsi/scsi或者fdisk -l来查看连接过来的卷,例如下面的scsi7 Channel: 00 Id: 00 Lun: 01即为新连接的SAN卷:

[root@pe03 /]# cat /proc/scsi/scsi 

…………………………………

Host: scsi7 Channel: 00 Id: 00 Lun: 00

  Vendor: H3C      Model: H3C ISCSI DISK   Rev: v1.0

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi7 Channel: 00 Id: 00 Lun: 01

  Vendor: H3C      Model: H3C ISCSI DISK   Rev: v1.0

  Type:   Direct-Access                    ANSI SCSI revision: 04

2、如何注销到target的连接?

如果要注销到某一个特定的Target的连接,可以使用下列的命令:

[root@pe03 /]# iscsiadm -m node -T iqn.2007-04.acme.com:h3c:200realm.rhel5 -p 200.200.10.200:3260 –u

其中,iqn.2007-04.acme.com:h3c:200realm.rhel5是Target的名称,200.200.10.200是Target服务器的IP,实际使用时请根据实际情况修改。

如果要注销到所有targets的连接,可以使用下列命令:

[root@pe03 /]# iscsiadm -m node --logoutall=all

注意:

? 注销target前请停止对iSCSI磁盘的读写,卸载该磁盘上的文件系统,如果使用了LVM,则还需要去激活使用到该磁盘的VG

 

3、如何重启iscsi服务?

停止对iSCSI磁盘的读写,卸载该磁盘上的文件系统,如果使用了LVM,则还需要去激活使用到该磁盘的VG,之后使用service iscsi restart重启iscsi服务。

4、如何停止iscsi服务?

停止对iSCSI磁盘的读写,卸载该磁盘上的文件系统,如果使用了LVM,则还需要去激活使用到该磁盘的VG,之后使用service iscsi stop停止iscsi服务。

5、如何针对不同的target设置不同的CHAP认证?

如果有多个目标服务器启用了CHAP认证,并且它们的用户名和密码不一样,此时需要手动更改node文件。

通过iscsiadm -m node -t sendtargets命令发现Target以后,在/var/lib/iscsi/nodes目录下会生成一个或多个以目的服务器上的Target名命 名的文件夹,文件夹中有一个文件。此文件中是initiator登录target要使用到的配置参数,可以通过更改此参数文件来配置登录到每个 Target的CHAP认证信息。

可直接编辑该文件,在该文件中添加(或修改)此Target的CHAP认证用户名和密码:

node.session.auth.authmethod = CHAP

node.session.auth.username = xxxxxx      ――CHAP认证用户名

node.session.auth.password = xxxxxx      ――CHAP认证密码(至少12个字符)

修改完成后重新登录Target即可。

也可以使用iscsiadm命令对登录某个target的CHAP认证参数进行修改

如:

[root@pe03 /]#iscsiadm -m node -T iqn.2000-03.com.h3c:.h3c-1.pe05-61 -p 200.200.10.101:3260 -o update --name=node.session.auth.authmethod --value=CHAP

[root@pe03 /]#iscsiadm -m node -T iqn.2000-03.com.h3c:.h3c-1.pe05-61 -p 200.200.10.101:3260 -o update --name= node.session.auth.username --value=xxxxxxx

[root@pe03 /]#iscsiadm -m node -T iqn.2000-03.com.h3c:.h3c-1.pe05-61 -p 200.200.10.101:3260 -o update --name= node.session.auth.password --value=xxxxxxx

需要注意的是,发现Target的命令(iscsiadm -m node -t sendtargets)会自动按照/etc/iscsi/iscsi.conf文件中的参数配置刷新/var/lib/iscsi/nodes下 initiator登录target要使用的参数文件,所以如果通过修改/var/lib/iscsi/nodes下的文件设置好CHAP认证后又对该存 储服务器执行了发现target的操作,则需要再次修改该文件。

 

6、如何从操作系统中删除一个target的信息?

使用下面的命令:

[root@pe03 /]# iscsiadm -m node -o delete -T iqn.2005-03.com.max -p 192.168.0.4:3260

其中iqn.2005-03.com.max代表target的名称,192.168.0.4代表target的IP地址

 

7、如何查看就有哪些target记录在了Open-iSCSI数据库中?

使用iscsiadm -m node命令

8、如何设置已有的Inititor开机自动登录target?
[root@pe03 /]# iscsiadm -m node -T iqn.2015-01-27.com.meidisen:ns.tgt -p 192.168.1.25 --op update -n node.startup -v manual(手动)
[root@pe03 /]# iscsiadm -m node -T iqn.2015-01-27.com.meidisen:ns.tgt -p 192.168.1.25 --op update -n node.startup -v automatic(自动)

阅读(1282) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~