RHEL5 - iSCSI(一) 什�N是 SAN / IP-SAN
什�N是 SAN (Storage area Network),他是一�N�Y料�Υ嫜b置(Raw Device),不�^他不像是 NAS 可以直接提供存取.他只提供�o Server �Y料�Υ嫜b置,� Server 能�蛴蓄~外的硬碟�b置.因�樗�可以很��性的提供�o不同的 serve 大小不同的空�g,所以常用在大企�I中.最早的 SAN �鬏�介面�楣饫w,但是�S著 1G,10Gb �W卡(有一�N�iT用在 iSCSI 的�W卡,因�橛� TOE:TCP/IP offload engine,它具有�\算的功能所以不��因此�子孟到y上的 CPU 的使用率)的上市,�W卡的�鬏��l��增加,�W卡也可以��任光�w提供的�l��(光�w的�l���� 2G,4Gb,光�w短波-850 mm,�L波-1310 mm),�@��技�g�Q�� iSCSI(Internet SCSI),也因此以�W卡��鬏��榻橘|的 SAN,被�Q�� IP-SAN.
相�P�S商 : EMC / NetApp / FalconStor
常�的 IP-SAN 有 iSCSI / FCoE / FCP / AoE
RHEL5 - iSCSI(二) 安�b iSCSI Target / initiator
Initiator 指的是 "使用磁碟" 的主�C端, Target 指的是 "提供磁碟" 的伺服器端.
iSCSI Target
iSCSI 是一�N SAN的�b置而 SAN的�b置主要是提供 Server �Υ骟w的空�g.相�^於�鹘y的 SAN 是以光�w��鬏�媒�w而 iSCSI(Internet SCSI)他是 IP-based 的�Y料�Υ娴难b置.使得他能更容易��用在企�I中. 1.一般的�W卡就能��作 iSCSI Target 但是缺�c就是��消耗太多的 CPU �Y源,����@�拥���}所以�l展出另外�煞N的 iSCSI Target �W卡.2.一�N是��w的 iscsi + TOE (TOE:TCP/IP offload engine),它可以��� TCP/IP 的封包直接在�W路卡上�\算所以不��因此�子孟到y上的 CPU 的使用率, 3.另外一�N就是硬�w式的 iSCSI + TOE. 它除了具有 TOE �可以直接��� iSCSI 的�Y料做�\算.基本上它的使用上就像是一般�Υ嫜b置 HBA.你可以直接在 BIOS �x�作 iSCSI 硬�w�_�C的�幼�.
note: SCSI Port - SCSI Protocol
在 RedHat 5 之前的版本是不支援 iSCSI Target 的,所以建�h大家使用 iet(iSCSI Enterprise Target) : http://iscsitarget.sourceforge.net/ 但是�@一版本的 iSCSI Target �F在看起�硪呀��]有在更新了加上 RHEL5 已�包含了 iSCSI Target 的服��.所以�F在就不再使用 iet(iSCSI Enterprise Target) 有�d趣的可以�⒖家幌轮�前的文章 http://benjr.tw/?q=node/74
安�b��� iSCSI target:
在 RHEL5 光碟中的 /ClusterStorage/ 目���找到 scsi-target-utils-0.0-0.20070620snap.el5.i386.rpm �n案�@就是 iSCSI Target 的程式.一�_始�]�x�袢�部安�b�需要 perl-Config-General �@一��套件.
[root@benjr ~]# rpm -ivh /media/cdrom/ClusterStorage/scsi-target-utils-0.0-0.20070620snap.el5.i386.rpm |
[root@benjr ~]# service tgtd start |
[root@benjr ~]# chkconfig tgtd on |
安�b��� iSCSI initiator:
在 RHEL5 光碟中的 /Server/ 目���找到 iscsi-initiator-utils-6.2.0.868-0.18.el5 �n案�@就是 iSCSI initiator 的程式
[root@localhost ~]# rpm -ivh iscsi-initiator-utils-6.2.0.868-0.18.el5 |
[root@localhost ~]# service iscsi start |
[root@localhost ~]# chkconfig iscsi on |
RHEL5 - iSCSI(三) 建立 iSCSI Target controller device
目前我的�h境如下所示:
1. RHEL5 Server - ��作 iSCSI Target 端,
2�w硬碟,一��是 OS 另外一��就是�o iSCSI ��做分享出�淼� raw devices 所使用.
2. RHEL5 Client - ��作 iSCSI Initiator 端.
3.Switch - 因�槭� IP-SAN 所以不需要 Fiber switch,原�淼� Network Switch 即可使用.建�h使用 1Gb 以上的�h境.
第一步是新增 controller device 其中的 iqn(iSCSI Qualified Name)格式如下 iqn.yyyy-mm.<reversed domain name>[:identifier] 名�Q最好是根�� iqn �砻�名.不像是 iet(iSCSI Enterprise Target) 是�⒃O定��在�n案,要使用 tgtd 必�使用指令�硗瓿稍O定�幼�.不�^很�N心的是你在 /usr/share/doc/scsi-target-utils-0.0/README.iscsi �n案都可以找到�例.
[root@benjr ~]# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2009-4.tw.benjr:storage |
--tid : �@�� id 必�唯一,��我��在指派硬�w�Y源(如硬碟空�g)�r就是依��此 id �砜词侵概山o哪一�� iqn.
-T : iqn(iSCSI Qualified Name)
先�砜匆幌����的指令做了什�N.
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store Account information: ACL information: |
lun0 是��用�砉芾淼� controller device,是自�赢a生而且一但建立就�o法移除.
RHEL5 - iSCSI(四) 指定硬碟空�g�o iSCSI Target
����建立好了 iqn 接下�砭褪且� 指定硬碟空�g�o iSCSI Target.
[root@benjr ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb1 |
--tid 1 : ��得�����O定的 tid 吧!!
--lun 1 : 除了����自�咏�立好的 lun 0 ,第一��指定�� lun1,以此�推.
通常 SCSI RAID ��用多�w SCSI HD �M合成一�����b置(LUN),SCSI 控制器就可以使用�我坏倪���b置�碜龃嫒�. http://benjr.tw/?q=node/352
-b /dev/sdb1 : 除了一般 partition 外�可以用 LVM.一般系�y�S商所提供的 iSCSI Target 也都是配合 LVM �磉\作.
LVM(Logical Volume Manager)是一�N可以��B�更磁�^大小的方式,可以�你能更容易利用管理你的硬碟. http://benjr.tw/?q=node/55
除了可以指定一般的 partition ��作 iSCSI Target 端的 Lun 之外�可以使用 file ��作 block device.方式一�釉�先指定 partition �o他�Q成 file 就可以了!不�^先要建立一���n案是空的.
[root@benjr ~]# dd if=/dev/zero of=iscsidisk bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 18.005 seconds, 59.6 MB/s |
�]有出�F�e�`�息你��看到和我一�拥� lun1 ���到 /dev/sdb1 ,lun2 ���到 /root/iscsidisk
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 LUN: 2 Type: disk SCSI ID: deadbeaf1:2 SCSI SN: beaf12 Size: 1G Backing store: /root/iscsidisk Account information: ACL information: |
先移除掉 lun 2 一�_始�不需要�@�N多的 lun,移除的指令��在後面�f明.
[root@benjr ~]# tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 2 |
RHEL5 - iSCSI(伍) iSCSI Target ACL
iSCSI Target �A�O是不�任何人存取,除非�O定了 ACL(Access Control List). 一�_始在����A段可以用 ALL �任意的 Initiator 都可以存取.
[root@benjr ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL |
--tid 1 : ��得�����O定的 tid 吧!!
-I ALL : 不限制任何 IP 的 initiators 都可以�泶嫒∵@�� iSCSI Target. (-I : 大��的 i;ALL 必�都�榇��才��生效))
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 Account information: ACL information: ALL |
不�^�]人希望什�N阿�阿狗的 initiators 都�硎褂梦疫@一台 iSCSI Target.先把 "ALL" 移除.ALL 比�^�m合使用在 iSCSI Boot.
[root@benjr ~]# tgtadm --lld iscsi --op unbind --mode target --tid 1 -I ALL |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 Account information: ACL information: |
下面使用����例�碚f明 ACL IP 的指定方式:
[root@benjr ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.8.1.121 |
[root@benjr ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.8.1.0/24 |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 Account information: ACL information: 192.8.1.121 192.8.1.0/24 |
你除了可以指定特定 IP : 192.8.1.121 的 initiator 可以存取此 iSCSI Target device外�可以��ο嗤��W域的 IP: 192.8.1.0/24 �碓O定.
RHEL5 - iSCSI(六) iSCSI initiator
目前 RHEL5 提供一支程式 "iscsiadm" 我��只要透�^�@一支程式就可以� initiator 去�B接 Target 端的硬碟. iscsiadm 原自於 open-iscsi �P於指令���}可以�⒖� http://www.open-iscsi.org/docs/README 的���f明.
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 192.8.1.55:3260 192.8.1.55:3260,1 iqn.2009-4.tw.benjr:storage |
"iqn.2009-4.tw.benjr:storage" �@就是192.8.1.55:3260 的 iqn.
-p : iSCSI target 的 IP . iSCSI �A�O使用的 port 是 3260.
-T : 指定 target_iqn_name
-l: login
[root@localhost ~]# iscsiadm -m node -T iqn.2009-4.tw.benjr:storage -p 192.8.1.55:3260 -l Logging in to [iface: default, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260] Login to [iface: default, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260]: successful |
[root@localhost ~]# iscsiadm -m session tcp: [1] 192.8.1.55:3260,1 iqn.2009-4.tw.benjr:storage |
在 iSCSI Target 端也��看到 iSCSI Initiator 是否有�B接.
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: I_T nexus: 4 Initiator: iqn.1994-05.com.redhat:116f23e2ef8 Connection: 0 IP Address: 192.8.1.121 LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 Account information: ACL information: 192.8.1.121 192.8.1.0/24 |
如果成功�B接上 iSCSI target它使用的方式就如同一般的硬碟.
[root@localhost ~]# fdisk -l Disk /dev/sda: 500.1 GB, 500107862016 bytes Device Boot Start End Blocks Id System Disk /dev/sdb: 10.0 GB, 10010133504 bytes Device Boot Start End Blocks Id System |
想登出或是移除 iSCSI initiator �O定�r使用:
-u: (logout) 相同 Login 的指令但使用��� -u
-o delete : 可以移除掉 Target 的�B�Y.只��在下一次重新��� iSCSI 才有效.
[root@localhost ~]# iscsiadm -m node -T iqn.2009-4.tw.benjr:storage -p 192.8.1.55:3260 -u Logging out of session [sid: 1, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260] Logout of [sid: 1, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260]: successful |
[root@localhost ~]# iscsiadm -m node -T iqn.2009-4.tw.benjr:storage -p 192.8.1.55:3260 -o delete |
RHEL5 - iSCSI(七) �� iSCSI Target 移除硬碟
����我��指定了一��硬碟 /dev/sdb1 �o iSCSI Target ,�F在我��再透�^指令新增另外一��硬碟 /dev/sdb2 ,後面就是�@一次的重�c如何移除指定好的硬碟.
[root@benjr ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 2 -b /dev/sdb2 |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: I_T nexus: 3 Initiator: iqn.1994-05.com.redhat:116f23e2ef8 Connection: 0 IP Address: 192.8.1.121 LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 LUN: 2 Type: disk SCSI ID: deadbeaf1:2 SCSI SN: beaf12 Size: 9G Backing store: /dev/sdb2 Account information: ACL information: 192.8.1.121 192.8.1.0/24 |
透�^��� --op delete 去移除 --lun2 也就是 /dev/sdb2 的硬碟空�g.
[root@benjr ~]# tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 2 |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: I_T nexus: 3 Initiator: iqn.1994-05.com.redhat:116f23e2ef8 Connection: 0 IP Address: 192.8.1.121 LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 Account information: ACL information: 192.8.1.121 192.8.1.0/24 |
很好 --lun 2 已�不存在了.不�^很可惜是����所有使用 tgtadm 指令�O定 iSCSI Target 在重新�_�C後就不存在了,所以建�h��������指令��在 /etc/rc.local �n案中.
RHEL5 - iSCSI(八) CHAP 身分��C
除了指定 IP 做 ACL �可以透�^ user / password (CHAP-Challenge Handshake Authentication Protocol 使用 MD5 的加密��C) �碜錾矸烛��C.
CHAP 有很多�N除了
1.�蜗� CHAP ��C:在此安全性等�,只有目�� Target ��做��C.另外一�N是
2.相互(Mutual) CHAP ��C:在此安全性等�,目�� Target �c��悠� Initiator 皆��被彼此做��C.最後是
3.Reverse CHAP��C:一般的 CHAP 使用 one-way hash,密�a�n�o法回朔,但是使用 Reverse CHAP 是可以的.�P於 Reverse CHAP 目前�W路上我�查不太到很多的�Y料所以�o法做�f明.
https://fedoraproject.org/wiki/Scsi-target-utils_Quickstart_Guide
先�碚f明第一�N �蜗� CHAP ��CCHAP(Challenge Handshake Authentication Protocol)
�A�O iSCSI �裼昧� �蜗� CHAP(Challenge Handshake Authentication Protocol) 的身分��C方式,基本上是一�N以 MD5 的加密��C方式.方式如下:
1. 在�p方(Target / Initiator) 建立�B�後,Target 送出 "challenge" 的�息告知 Initiator 要做身分��C.
2. Initiator ���⑹褂谜呙艽a使用 md5 做 one-way hash �K送出去�o Target 端.
假如使用者密�a是 :123456 ,md5 做�^ one-way hash 之後�成 : f447b20a7fcbf53a5d5be013ea0b15af
3. Target 端�⒁越��^ md5 的密�a和 Initiator 做比��,如果比�φ��_,�@身份��C及成立要不然就���⒋舜芜B�Y做中��.
Target 端�K�]有�⒃�先密�a�Υ嫦��,而是�⒚艽a�o�成做�^ one-way hash 的 f447b20a7fcbf53a5d5be013ea0b15af.如果�蛇�的 md5 一�蛹创�表成立.
4. 在正常�B��^程中��不�r重�妥� 1~3 的 CHAP 身分��C.
�槭颤N身分��C���裼� One Way Hashes 其���c是原�Y料已�不存在,�魉驮诰W路上不需怕密�a�n被�I取.
note : One Way Hashes
One Way Hashes 主要���a生一�M固定�L度字串(fingerprint or message digests),�@�M字串用�肀�υ��Y料是否遭到修改,它的特性如下
1.原�Y料�入�L度�榭勺�
2.�出的 fingerprint �楣潭ㄩL度
3.���Y料任何 byte 改��r, fingerprint 也���的完全不同
4.我���o法依�� fingerprint �砘赝瞥稍��Y料,�@也是�槭颤N�Q�� One Way hash(�畏较虻馁Y料�\算,函�刀�σ坏奶匦�)
既然�o法回推成原�Y料,那怎知�Y料是否正�_, One Way hash ��再�①Y料再做一次 One Way hash 然後直接比�� fingerprint 是否一��.
不�^所有的�B��是��受到 ACL 的限制, CHAP 只是多加上一�颖Wo.先�⒅�前�O定先取消,�� ACL 改成 ALL.
[root@benjr ~]# tgtadm --lld iscsi --op unbind --mode target --tid 1 -I 192.8.1.121 |
[root@benjr ~]# tgtadm --lld iscsi --op unbind --mode target --tid 1 -I 192.8.1.0/24 |
[root@benjr ~]# tgtadm --lld iscsi --op unbind --mode target --tid 1 -I ALL |
iSCSI 的�ぬ�跟本地端的 Linux �ぬ�密�a�o�P,所以必�透�^ "tgtadm" �斫�立.
[root@benjr ~]# tgtadm --lld iscsi --op new --mode account --user benjr --password benjr |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode account Account list: benjr |
�ぬ�是建立好了�要�⑺�指定到哪一�� target.
[root@benjr ~]# tgtadm --lld iscsi --op bind --mode account --tid 1 --user benjr #使用 --op unbind 可以�⑦@使用者�倪@ iqn 移除. |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: I_T nexus: 4 Initiator: iqn.1994-05.com.redhat:116f23e2ef8 Connection: 0 IP Address: 192.8.1.121 LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 Account information: benjr ACL information: ALL |
iSCSI initiator 如要使用 CHAP 登入 Target,我��需要修改 /etc/iscsi/iscsid.conf, node.session.auth.username 和 node.session.auth.password 都要修改�����O定好的 --user benjr --password benjr .
incoming 或是 outgoing 的 password 和 username 的最大限制是 256 字元.
[root@localhost~]# cat /etc/iscsi/iscsid.conf node.session.auth.username = benjr node.session.auth.password = benjr |
RHEL5 - iSCSI(九) 相互(Mutual) CHAP incoming / outgoing ��C
相互(Mutual) CHAP ��C:CHAP 的�J�C端可�� Target(Incoming Authentication) 或是 Initiator(Outgoing Authentication) 任一端�碚J�C.也就是�f Target(Incoming Authentication) 是由 Target 端�� Initiator �J�C.�@�拥恼J�C方式可以允�S多�� Initiator �磉B接到 Target.而 Initiator(Outgoing Authentication) 是由 Initiator �碚J�C Target 端.
之前我��都是在 Target 端�O定�ぬ�密�a,�@就是使用 Incoming Authentication 是由 Target 端�� Initiator �J�C.要同�r使用 Outgoing Authentication 也很���.只要指定 outgoing 的 user 和 password
����已��O定�^ Incoming 的�J�C方式,�F在要透�^ "tgtadm" �斫�立 Outgoing 的�J�C.
[root@benjr ~]# tgtadm --lld iscsi --op new --mode account --user in_benjr --password in_benjr --outgoing |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode account Account list: benjr in_benjr |
�ぬ�是建立好了�要�⑺�指定到哪一�� target.
[root@benjr ~]# tgtadm --lld iscsi --op bind --mode account --tid 1 --user benjr --outgoing |
[root@benjr ~]# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2009-4.tw.benjr:storage System information: Driver: iscsi Status: running I_T nexus information: I_T nexus: 4 Initiator: iqn.1994-05.com.redhat:116f23e2ef8 Connection: 0 IP Address: 192.8.1.121 LUN information: LUN: 0 Type: controller SCSI ID: deadbeaf1:0 SCSI SN: beaf10 Size: 0 Backing store: No backing store LUN: 1 Type: disk SCSI ID: deadbeaf1:1 SCSI SN: beaf11 Size: 9G Backing store: /dev/sdb1 Account information: benjr in_benjr (outgoing) ACL information: ALL |
iSCSI initiator 如要使用 Outgoing CHAP ,我��需要修改 /etc/iscsi/iscsid.conf, node.session.auth.username_in 和 node.session.auth.password_in 都要修改�����O定好的
[root@localhost ~]# cat /etc/iscsi/iscsid.conf node.session.auth.username = benjr node.session.auth.password = benjr node.session.auth.username_in = in_benjr node.session.auth.password _in= in_benjr |
�⒖嘉募� : http://linux.vbird.org/somepaper/20081205-rhel5-iscsi.pdf
RHEL5 - iSCSI(十) Intel NIC + iSCSI Remote Boot ROM
�m然 RHEL5 在安�b�r就可以�x�裼� iSCSI Boot . 不�^很可惜的是,如果你的 BIOS 不支援�� iSCSI Boot,那安�b完系�y後就再也�_不了�C,因�橐话� BIOS 只能�漠�地端的硬碟�_�C(硬�w的 iSCSI ��被��楫�地硬碟),目前只有 EFI(Extensible Firmware Interface,目前是由 Intel 主��,主要目的是取代�F前使用的 BIOS) 的系�y��支援�� iSCSI Boot ,所以呢!!!一般的�W卡是��w的 iSCSI + TOE �要有 EFI 才能���F由 iSCSI Boot (硬�w的 iSCSI 不在此限).
但是最近在查� iSCSI 的�Y料�r�l�F了 Intel 出了 Intel? iSCSI Remote Boot �@�� ROM 就包含了 iSCSI Boot 的功能.它可以�你原先的 Intel �W卡直接透�^他提供的功能能��倪h端的 iSCSI 直接�_�C.下�d�c在 http://support.intel.com/support/network/iscsi/remoteboot/ 方式也不�y.
不�^在使用�@ Intel? iSCSI Remote Boot 有其限制,它主要是���Intel PCI-Express Server 等�的 Gigabit family �W卡所�O�的.所以如果你手上有下面�@���卡就可以使用.
�@下�d�n案中�包含了 iSCSI Remote Boot 的 driver,�缀跏鞘忻嫔铣S玫淖�I系�y都包含在�e面.
更新 iSCSI Remote Boot ROM:
Intel 提供的�@一之工具 Intel iSCSI Network Adapter Boot Configuration Utility (iSCSIUtl) 是一�b DOS 的程式,所以第一步就是先回到 DOS 先行更新 Intel NIC firmware 的 iSCSI Remote Boot ROM.在����下�d的�n案中解�_後���l�F目� iSCSIUtl\DOS\iscsiutl.exe 就是更新 Intel NIC 的 iSCSI Remote Boot ROM 的主程式.使用方式也很���:
iSCSIUtl -[OPTION] or -[OPTION]=[VALUE]
C:\iscsiutl -all -up
Intel(R) iSCSI Boot Utility
iSCSIUtl version 2.3.17.00
Copyright (C) 2003-2009 Intel Corporateion
Programming flash on part 1 with iSCSI Boot image
An Intel(R) Boot Agent setting has been detected on this device. Programming
this device with Intel(R) iSCSI Boot will erase this setting.
Would you like to continue?
(Y)es or (N)o:
Y
*
Flash update successful.
Flash not enabled on port 2
Use the "-FLASHENABLE" parameter to enable to flash
Port Network Address Series WOL Boot ROM Type Version
==== =============== ====== === ======================= =======
1 001517785DD6 Gigabit YES iSCSI Enabled 2.3.17
2. 001517785DD7 Gigabit N/A FLASH Disabled 2.3.17
|
上面的指令��找出任何包含 pre-installed Intel Boot Agent image 的�W卡,通常���埠的�W卡第一��埠��被更新.系�y�����你是否更新回答 Y(yes) 系�y就���_始更新,如果你需要更新其他的�W路埠�r可以指定埠�砀�新.
ISCSIUTL -NIC=1 -FLASHENABLE
等系�y重新�_�C後你���l�F Intel 的�W卡的 Option ROM �的不一��.
Intel(R) iSCSI Boot version 2.3.17 Copyright (c) 2003-2009 Intel Corporation. All rights reserved. Press ESC key to skip iSCSI boot initialization. Press <Ctrl-D> to run setup... |
按下 <Ctrl-D> 就可以�M入 Intel iSCSI Remote Boot 的 Option ROM.��� iSCSI initiator 端作�O定.
�O定 iSCSI Remote Boot
接下�砦��就可以直接在 Intel 的 Option ROM 上�O定 iSCSI Target 所指定的 Lun ,如果你�]有硬�w的 iSCSI Target 端也�]�P�S,你可以先用 RHEL5 的 iSCSI Target 端的功能 RHEL5 - iSCSI IP-SAN 先�M入 Intel iSCSI Remote Boot 的 option ROM.
�M入 iSCSI Remote Boot Port Selection Menu 你可以看到目前系�y所有的 Intel iSCSI Remote Boot-capable adapters.你可以在此�面看到系�y上 Intel �W卡的 PCI device ID, PCI bus/device/function 以及 MAC Address
�@�e最多可以�@示出�� 10 iSCSI Remote Boot-capable ports ,超�^系�y就�@示不出�砹�,我想一台 Server 要超�^ 10 ���W路埠的�C��不大.�@�e需要做�f明的是 iSCSI Remote Boot status ,也就是�@示在最後的 BOOT:PRIMARY, BOOT:DISABLED
Boot 的�x�可以分成下面�追N.
���W路埠�x�癯� Primary(按 'P' �I可以把��B改�成 Primary) Intel iSCSI Remote Boot ��以此��作�B上 iSCSI Target �榈谝��先�O定值.��系�y有多���W路埠�r只能有一�� Primary.
���W路埠�x�癯� secondary(按 'S' �I可以把��B改�成 secondary) , 只有�� Primary �B�失��r secondary 才��向 iSCSI Target 要求�B�.��系�y有多���W路埠�r只能有一�� secondary.
前面更新 iSCSI Boot ROM �r我只��σ�� port 做更新,所以我��只��看到一����B是 PRIMARY 另外一��是 DISABLED.
�@�的�O定就是 iSCSI Remote Boot initiator 和 target 的�x�包括了 IP ,name 以及 Boot Lun 皆是在�e�O定.
�A�O iSCSI �裼昧� CHAP(Challenge Handshake Authentication Protocol) 的身分��C方式,基本上是一�N以 MD5 的加密��C方式.如果你的系�y有�裼妹艽a的保�o就需要在�@�e做�O定.
如果����在 iSCSI Remote Boot Configuration 或是 CHAP Configuration �O定不�M意�x��"Discard Changes and Exit" 系�y就不�Υ����所有的�O定了.�K且回到上一�� "iSCSI Remote Boot Port Selection Menu
�x�� "Save Changes and Exit" 就可以�����在 iSCSI Remote Boot Configuration 或是 CHAP Configuration 所�O定的��下��,�K且回到上一�� "iSCSI Remote Boot Port Selection Menu
我��先�碓O定 "SCSI Boot Configuration"
�O定可以分成 "Initiator" 和 "Target" 端,上面那一部分就是本�C "Intel iSCSI Remote Boot " 也就是 "Initiator" 端的�O定.
如果你的 DHCP 有��� iSCSI �O定你只要直接勾�x由 DHCP 指派 client IP address, subnet mask, and gateway IP address.
�@�e就是�O定 iSCSI initiator name 主要是�榱俗� iSCSI target 可以辨�R Intel iSCSI Remote Boot 的名�Q.
�O定固定的 IP �@ IP 必�要和 Target 同�W段也必�能和 Target 建立�B�.
IP 的 subnet-mask 取�Q於你的�W路 IP 的�W段.
��你的 Target 和 Initiator �於不同�W段�r需要 gateway �磙D送封包.
下面半步就是 Target 端的�O定,除了 Target Name(就是 IQN ) �入�r注意不要打�e外,其他就是 iSCSI Target 端的 IP.
如果你的 DHCP 有��� iSCSI �O定你只要直接勾�x由 DHCP 指派 iSCSI target's IP address, IP port number, iSCSI target name, and SCSI LUN ID.
Target 端的 IQN (iSCSI Qualified Name)格式如下 iqn.yyyy-mm.<reversed domain name>[:identifier] .
iSCSI Target 端的 IP 位置.
iSCSI 所使用的 TCP Port Number(�A�O�� 3260).
通常 SCSI RAID ��用多�w SCSI HD �M合成一�����b置(LUN),SCSI 控制器就可以使用�我坏倪���b置�碜龃嫒�,通常 LUN 是由 0 �_始但是 RHEL5 的 iSCSI Target 的 lun0 是用�懋�作管理控制 controller device.
iSCSI �裼� CHAP-Challenge Handshake Authentication Protocol(以 MD5 �榛��A的加密��C),�碜錾矸烛��C. �蜗� CHAP ��C:在此安全性等�,只有目�� Target ��做��C.
iSCSI target 端所�O定的 CHAP 使用者名�Q.
iSCSI target 端所�O定的 CHAP 密�a. �@密�a不可和 Initiator Secret 端所�O定的密�a相同.
相互(Mutual) CHAP ��C,在此安全性等�,目�� Target �c��悠� Initiator 皆��被彼此做��C
iSCSI Initiator Mutual CHAP 密�a.�@密�a不可和 Target Secret 端所�O定的密�a相同.
如果�]有�O定上的�e�`登出之後你可以看到系�y��多出一�� iSCSI 的 drive.
Intel(R) iSCSI Boot version 2.3.17 Copyright (c) 2003-2009 Intel Corporation. All rights reserved. Press ESC key to skip iSCSI boot initialization. Initializing adapter configuration - MAC address(001517785DD6). Attempting to connect to target disk using MAC address(001517785DD6) |
BIOS Boot Menu
更新完 Intel iSCSI Remote Boot 後在 BIOS 的 Boot Menu ��多出一�� Intel? iSCSI Remote Boot 的�x�.下面你看到的是我 IBM 的 Server 每一家的 Boot Menu �@示出�淼亩疾槐M相同.
自�� RHEL5 �_始安�b的�r候多了一���x� "Advanced Storage Configuration" ,�@�x�就是可以�你�� iSCSI �_�C.步�E如下:
�x�� "Add iSCSI Target" 如果你�W路�h境�]有 iSCSI Target 可以使用 RHEL5 建立出 iSCSI Target 端的服�� http://benjr.tw/?q=node/434
Target IP Address :�@就是 iSCSI Target 端的 IP
iSCSI initiator Name : iSCSI Target 所指定的 iqn(iSCSI Qualified Name)
如果�利完成即刻就��看到 iSCSI Target 所指派的硬碟空�g.
RHEL5 - iSCSI(十一) MPIO
iSCSI remote boot 可以透�^ MPIO(multipath I/O) �泶_保他的�B�不��因��我坏木W路�嗑�而失去�B�,但是�@功能是不是用 teaming (teaming 是一���橥ㄟ^由多���W卡��建的 team,多���W卡�同一��,可以提供��d平衡 load-balancing,容�e fault-tolerance 的功能) 一�泳涂梢越�Q了.�槭颤N���用到 MPIO �@�|西.
�D片出自於 http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/DM_Multipath/index.html
�P於�@一�c在 Intel 的官方�W站文件 Intel? PRO/1000 Server Adapter iSCSI and iSCSI Remote Boot Frequently Asked Questions -
http://www.intel.com/network/connectivity/products/316975.pdf 有提到,�@�e面提到的都�凫队搀w的 iSCSI remote boot.
Q18: Does Intel iSCSI boot support adapter teaming?
A18: Adapter teaming is not supported on ports configured for iSCSI remote boot due to limitations in the OS stack, which does not support teaming for iSCSI traffic. Storage failover and load balancing support is provided by using MPIO.
Q16: Is Multipath I/O (MPIO) supported by Intel iSCSI boot?
A16: Intel iSCSI boot solutions use the standard OS iSCSI boot initiators to provide remote boot support, so MPIO and other advanced features are supported for iSCSI boot via the OS initiator once the OS boots.
配置 iSCSI 多路境 MPIO(Multipath),需要同�W段的�W卡���埠,目前我的 iSCSI Target 端�� 192.8.1.55
[root@benjr ~]# ifconfig | grep 192.8 inet addr:192.8.1.214 Bcast:192.8.1.255 Mask:255.255.255.0 inet addr:192.8.1.85 Bcast:192.8.1.255 Mask:255.255.255.0 |
先�_定�@���埠和 iSCSI Target 互通.
[root@benjr ~]# ping -I eth0 192.8.1.55 |
[root@benjr ~]# ping -I eth1 192.8.1.55 |
iSCSI initiator �A�O��依���W路��B只和 iSCSI Target 建立一�� session,�m然你的�W路上同�W段的埠有���以上.他�是只��建立一�� session.如果我��要使用 iSCSI interfaces (iface) binding 的功能必�要在 /var/lib/iscsi/ifaces 指定多���W路埠.我��可以使用 iscsiadm 的指令�斫�立.建立 ieth0 和 ieth1
[root@benjr ~]# iscsiadm -m iface -I ieth0 --op=new |
[root@benjr ~]# iscsiadm -m iface -I ieth1 --op=new |
ieth0 和 ieth1 真����指向���w�b置 eth0 和 eth1
[root@benjr ~]# iscsiadm -m iface -I ieth0 --op=update -n iface.net_ifacename -v eth0 |
[root@benjr ~]# iscsiadm -m iface -I ieth1 --op=update -n iface.net_ifacename -v eth1 |
除了可以指定�W路�b置名�Q外 ethx �可以依���W卡的 MAC address �碇付� "iface.hwaddress",�_定一下����建立出�淼� ieth0 和 ieth1
[root@benjr ~]# iscsiadm -m iface ieth0 tcp,default,eth0 ieth1 tcp,default,eth1 |
iscsiadm 主要��在 /var/lib/iscsi/ifaces 目�下面建立����所�O定的 iface �b置, iscsiadm ��依���@�的�O定同�r向 iSCSI Target 建立�B�.
[root@benjr ~]# cat /var/lib/iscsi/ifaces/ieth0 iface.iscsi_ifacename = ieth0 iface.net_ifacename = eth0 iface.hwaddress = default iface.transport_name = tcp |
[root@benjr ~]# cat /var/lib/iscsi/ifaces/ieth1 iface.iscsi_ifacename = ieth1 iface.net_ifacename = eth1 iface.hwaddress = default iface.transport_name = tcp |
��我��只要透�^ iscsiadm �@一支程式去向 iSCSI Target 端建立�B��r,要特�e去指定����我��建立好的 iSCSI interfaces (iface) binding �b置,�@�泳涂梢宰� iSCSI Initiator 和 iSCSI Target 端建立多�l�B�.
[root@benjr ~]# iscsiadm -m discovery -t sendtargets -p 192.8.1.55 -I ieth0 -I ieth1 192.8.1.55:3260,1 iqn.2009-4.tw.benjr:storage 192.8.1.55:3260,1 iqn.2009-4.tw.benjr:storage |
"iqn.2009-4.tw.benjr:storage" �@就是192.8.1.55:3260 iSCI Target 的 iqn.
[root@benjr ~]# iscsiadm -m node --loginall=all Logging in to [iface: ieth1, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260] Logging in to [iface: ieth0, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260] Login to [iface: ieth1, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260]: successful Login to [iface: ieth0, target: iqn.2009-4.tw.benjr:storage, portal: 192.8.1.55,3260]: successful |
登入 iSCSI Target 之後我�����l�F多出��深w硬碟,不管是大小�是��B都一��,�@就是 iSCSI Initiator 已�和 Target 端透�^��l路�浇�立了不同的�B�.接下�砭托枰��O定一下所�^的 MPIO , 在 Linux 下是被�Q�� device-mapper multipath
[root@benjr ~]# fdisk -l Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System Disk /dev/sdb: 20.0 GB, 20012106240 bytes Device Boot Start End Blocks Id System Disk /dev/sdc: 20.0 GB, 20012106240 bytes Device Boot Start End Blocks Id System |
DM(Device-Mapper) multipath 的�O定�n�Υ嬖� /etc/multipath.conf ,我��只需要�⑾到y�A�O的 blacklist - devnode,�⑺�用 "#"�]解掉.�系�y自己���y即可.
[root@benjr ~]# vi /etc/multipath.conf blacklist { # devnode "*" } |
DM(Device-Mapper) multipath 的服�彰��Q�� multipathd ,�_�C���r�O定 chkconfig ,立即�⒂梅��帐褂� service 程式.
[root@benjr ~]# chkconfig multipathd on Start multipathd:
|
[root@benjr ~]# service multipathd start List multipath devices: |
��我�� "multipathd" 的服���又�後使用 multipath 指定�碛^看可以�l�F����由 iSCSI Initiator �B�所建立出�淼� 2 �w硬碟已�其��是指向同一�� SCSI ID 而 DM-Multipath 也�_�J的出��.
[root@benjr ~]# multipath -ll mpath1 (16465616462656166313a3100000000000000000000000000) dm-2 IET,VIRTUAL-DISK [size=19G][features=0][hwhandler=0] \_ round-robin 0 [prio=1][active] \_ 7:0:0:1 sdb 8:16 [active][ready] \_ round-robin 0 [prio=1][enabled] \_ 6:0:0:1 sdc 8:32 [active][ready] |
我��也可以透�^指令 scsi_id ��z�硬碟�b置的 ID 是否相同.
[root@benjr ~]# scsi_id -x -g -u -s /block/sdb ID_VENDOR=IET ID_MODEL=VIRTUAL-DISK ID_REVISION=0001 ID_SERIAL=16465616462656166313a3100000000000000000000000000 ID_TYPE=disk ID_BUS=scsi |
[root@benjr ~]# scsi_id -x -g -u -s /block/sdc ID_VENDOR=IET ID_MODEL=VIRTUAL-DISK ID_REVISION=0001 ID_SERIAL=16465616462656166313a3100000000000000000000000000 ID_TYPE=disk ID_BUS=scsi |
我��透�^系�y就可以�^看到 /dev/dm 的�b置了.�@���b置就如同一般的硬碟�b置,如同 /dev/sda 你可以��λ�做分割,格式化,�x��等�幼�.而且�具�� MPIO 的功能.
[root@benjr ~]# fdisk -l Disk /dev/dm-2: 20.0 GB, 20012106240 bytes 255 heads, 63 sectors/track, 2433 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System |
如果系�y�]有自�赢a生 /dev/dm 的�b置�r可以透�^程式 kpartx �懋a生.
[root@benjr ~]# kpartx -a /dev/mapper/16465616462656166313a3100000000000000000000000000 |
�⒖假Y料 : http://blog.chinaunix.net/u3/92556/showart_1842981.html