ISCSI 共享存储在RHEL5上的实现方法betway必威体育平台:

作业环境
在VirtualBox4.0 虚拟机下操作
服务器端sqinga:CentOS
5.5-i386
客户端sqingb:CentOS 5.5-i386

近日辉总整理了在VMware环境下安装RAC的文档,没有涉及共享存储这层概念,有点美中不足,于是我向前推进一层,使用ISCSI模拟共享存储的盘阵,研究了一翻,整理笔记内容如下,相关脚本来自唐SIR,我狗尾续貂了一把,哈哈…

一、关于iSCSI(资料)

环境介绍:
服务器端:RHEL5.4  64位, IP地址:192.168.50.7
客户端1:  REHL6.0  64位,IP地址:192.168.50.4
客户端2:  REHL5.4  64位,IP地址:192.168.50.195

iSCSI是internet Small Computer System
Interface的缩写,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,其目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,iSCSI推动了数据在网络之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,iSCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用,
iSCSI能够在LAN、WAN甚至Internet上进行数据传送,使得数据的存储不再受地域的限制。

一:服务器端:
首先需要安装scsi-target-utils工具包,然后将tgtd服务设置成开机自动启动,然后划出一个100G的LVM做共享盘阵,LVM的名称为data
[root@rhel5 ~]# yum -y install scsi-target-utils.x86_64      
[root@rhel5 ~]# service tgtd start
Starting SCSI target daemon: Starting target framework daemon
[root@rhel5 ~]# chkconfig tgtd on 
[root@rhel5 ~]# lvs
  LV          VG         Attr   LSize   Origin Snap%  Move Log Copy% 
Convert
  data        VolGroup00 -wi-ao
100.00G                                     
  lv_data     VolGroup00 -wi-ao 
50.00G                                     
  lv_root     VolGroup00 -wi-ao 
29.28G                                     
  Oracle10g_1
VolGroup00 -wi-ao 100.00G

iSCSI技术的核心是在TCP/IP网络上传输SCSI协议,即使用TCP/IP报文和iSCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输,如下图所示。

每次重启tgtd服务的时候,之前使用tgtdadmin绑定的target和logicalunit都会失效,因而写了个脚本用于简化操作
IQN命名规范:iqn.date. reverse.domain.name:optional
name,例如:iqn.2011-06-01.com.766.rac:shareddisk
这里设置允许所有的IP进行进行挂载,取消target绑定的时候需要先取消logicalunit然后取消target

betway必威体育平台 1
 
iSCSI的工作过程:当iSCSI主机应用程序发出数据读写请求后,操作系统会生成一个相应的SCSI命令,该SCSI命令在iSCSI
initiator层被封装成ISCSI消息包并通过TCP/IP传送到设备侧,设备侧的iSCSI
target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行;设备执行SCSI命令后的响应,在经过设备侧iSCSI
target层时被封装成ISCSI响应PDU,通过TCP/IP网络传送给主机的ISCSI
initiator层,iSCSI
initiator会从ISCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序。

  1. [root@rhel5 ~]# cat /etc/init.d/tgtdrules   
  2. #!/bin/sh  
  3. # /etc/rc.d/init.d/oracle  
  4. # chkconfig: – 59 85  
  5. # description: oracle10g is meant to run under Linux Oracle Server
     
  6. # Source function library.  
  7.  
  8. . /etc/rc.d/init.d/functions  
  9.  
  10. start() {  
  11. echo -e “Starting Tgtdrules Server:\n”  
  12.  
  13. # Target  
  14. tgtadm  –lld iscsi –op new –mode target –tid 1 -T iqn.2011-06-01.com.766.rac:shareddisk
     
  15.  
  16. # Lun  
  17. tgtadm  –lld iscsi –op new –mode logicalunit –tid 1 –lun 1 -b /dev/VolGroup00/data
     
  18.  
  19. # Init  
  20. #tgtadm  –lld iscsi –op bind –mode target –tid 1 -I 192.168.50.191
     
  21. #tgtadm  –lld iscsi –op bind –mode target –tid 1 -I 192.168.50.192
     
  22. tgtadm  –lld iscsi –op bind –mode target –tid 1 -I ALL  
  23. }  
  24.  
  25. stop() {  
  26. echo -e “Stopping Tgtdrules Server:\n”  
  27.  
  28. # Lun  
  29. tgtadm  –lld iscsi –op delete –mode logicalunit –tid 1 –lun 1 
     
  30.  
  31. # Target  
  32. tgtadm  –lld iscsi –op delete –mode target –tid 1   
  33.  
  34. # Init  
  35. #tgtadm  –lld iscsi –op unbind –mode target –tid 1 -I 192.168.50.191
     
  36. #tgtadm  –lld iscsi –op unbind –mode target –tid 1 -I 192.168.50.192
     
  37. tgtadm  –lld iscsi –op unbind –mode target –tid 1 -I ALL  
  38. }  
  39.  
  40.  
  41. status() {  
  42. tgtadm –lld iscsi -o show -m target}  
  43.  
  44.  
  45. case “$1” in  
  46.  
  47.   start)  
  48.   start  
  49.   ;;  
  50.  
  51.   stop)  
  52.   stop  
  53.   ;;  
  54.  
  55.   status)  
  56.   status  
  57.   ;;  
  58.  
  59.   *)  
  60.   echo $”Usage: tgtdrules {start|stop|status}”  
  61.   ;;  
  62.  
  63. esac  
  64.  
  65. exit 0  
  66.  
  67. 服务器端测试:  
  68. [root@rhel5 ~]# service tgtd status  
  69. tgtd (pid 2943 2942) is running…  
  70.  
  71. [root@rhel5 ~]# netstat -ntpl |grep :3260  
  72. tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      2942/tgtd           
     
  73. tcp        0      0 :::3260                     :::*                        LISTEN      2942/tgtd   
     
  74.  
  75. [root@rhel5 ~]# service tgtdrules start  
  76. Starting Tgtdrules Server:  
  77.  
  78. [root@rhel5 ~]# service tgtdrules status  
  79. Target 1: iqn.2011-06-01.com.766.rac:shareddisk  
  80.     System information:  
  81.         Driver: iscsi  
  82.         State: ready  
  83.     I_T nexus information:  
  84.         I_T nexus: 1  
  85.             Initiator: iqn.1994-05.com.RedHat:b1beb63e2617
     
  86.             Connection: 0  
  87.                 IP Address: 192.168.50.4  
  88.     LUN information:  
  89.         LUN: 0  
  90. betway必威体育平台,            Type: controller  
  91.             SCSI ID: IET     00010000  
  92.             SCSI SN: beaf10  
  93.             Size: 0 MB  
  94.             Online: Yes  
  95.             Removable media: No  
  96.             Backing store type: null  
  97.             Backing store path: None  
  98.             Backing store flags:   
  99.         LUN: 1  
  100.             Type: disk  
  101.             SCSI ID: IET     00010001  
  102.             SCSI SN: beaf11  
  103.             Size: 107374 MB  
  104.             Online: Yes  
  105.             Removable media: No  
  106.             Backing store type: rdwr  
  107.             Backing store path: /dev/VolGroup00/data  
  108.             Backing store flags:   
  109.     Account information:  
  110.     ACL information:  
  111.     ALL 

二、服务器端SCSI target的配置及使用

betway必威体育平台 2

Linux target framework(tgt)是为创建、维护SCSI target
驱动(包括iSCSI、FC、SRP等)提供支持。它的关键目标是简洁地集成到scsi-mid层,并且实现大部分应用层空间。

安装scsi-target-utils
[root@sqinga ~]# yum install scsi-target-utils

启动tgtd服务
[root@sqinga ~]# /etc/init.d/tgtd start
[root@sqinga ~]# /etc/init.d/tgtd status
tgtd (pid 1996 1995) is running…

相关文章