SCST在SAN网络环境中的应用
来源:互联网 发布:arcgis批处理python 编辑:程序博客网 时间:2024/04/28 20:36
问题描述
在SAN网络环境中,Linux服务器上的SCSI设备,如何通过HBA卡,走光纤网络,让其他的服务器使用到这些设备?本文采用SCST - Generic SCSI Target Subsystem for Linux,试图解决该问题。
查看HBA卡的信息
# lspci | grep -i fibre01:00.0 Fibre Channel: QLogic Corp. ISP2432-based 4Gb Fibre Channel to PCI Express HBA (rev 03)01:00.1 Fibre Channel: QLogic Corp. ISP2432-based 4Gb Fibre Channel to PCI Express HBA (rev 03)
一块卡上有2个端口。
在/sys/class/fc_host/目录下,可以查看HBA卡信息
# cd /sys/class/fc_host/# lshost0 host1 # 有两个端口# cat ./host1/port_name # 查看端口1的名称0x2101001b3235b031# cat ./host1/port_state # 查看端口1的状态Online# cat ./host1/speed # 查看端口1的速率4 Gbit
通过查看host0,host1目录下的属性文件,可以查看HBA的各种信息。
安装systool工具,可以方便的查看HBA信息,该工具在sysfsutils包中。
# rpm -ivh libsysfs-2.1.0-7.el6.x86_64.rpm# rpm -ivh sysfsutils-2.1.0-7.el6.x86_64.rpm查看端口名称# systool -c fc_host -v | grep "port_name"port_name = "0x2100001b3215b031"port_name = "0x2101001b3235b031"查看端口速率# systool -c fc_host -v | grep "speed"speed = "unknown"supported_speeds = "1 Gbit, 2 Gbit, 4 Gbit"speed = "4 Gbit"supported_speeds = "1 Gbit, 2 Gbit, 4 Gbit"查看端口状态# systool -c fc_host -vClass = "fc_host"......Class Device = "host1"Class Device path = "/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/host1/fc_host/host1"dev_loss_tmo = "45"fabric_name = "0xffffffff"issue_lip = <store method only>max_npiv_vports = "127"node_name = "0x2001001b3235b031"npiv_vports_inuse = "0"**port_id = "0x0000ef"****port_name = "0x2101001b3235b031"****port_state = "Online"**port_type = "Point-To-Point (direct nport connection)"**speed = "4 Gbit"**supported_classes = "Class 3"supported_speeds = "1 Gbit, 2 Gbit, 4 Gbit"symbolic_name = "QLE2462 FW:v7.03.00 DVR:v8.07.00.08.06.6-k1"system_hostname = ""tgtid_bind_type = "wwpn (World Wide Port Name)"uevent = vport_create = <store method only>vport_delete = <store method only>Device = "host1"Device path = "/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/host1" fw_dump = nvram = "ISP " optrom = optrom_ctl = <store method only> reset = <store method only> sfp = "" uevent = "DEVTYPE=scsi_host" vpd = "."
将HBA卡修改为Target模式
把HBA开装到服务器上,因为Linux操作系统内核已经支持了qla2xxx的驱动,所以不需要去Qlogic去下载特殊的驱动,就可以使用HBA,只是该HBA卡处理initiator模式。
# lsmod | grep qla2xxxqla2xxx 469784 0 scsi_transport_fc 55075 1 qla2xxx
CentOS 6.x的内核版本是2.6.32,只支持Qlogic的HBA卡的init模式,不支持Target模式。
解决办法有两个,都需要重新编译内核,第一个办法,在Linux kernel 2.6.32内核上,把HBA卡的驱动换成支持Target模式的驱动;第二个办法,将Linux内核版本升级到3.x。
在这里,采用第一个办法,更换HBA的驱动。
准备工作
构建本地YUM源
创建DVD挂载点# mkdir -p /mnt/centos# mount -o loop CentOS-6.6-x86_64-bin-DVD1.iso /mnt/centos修改YUM源配置文件# cd /etc/yum.repos.d/# vi CentOS-Media.repo...[c6-media]name=CentOS-$releasever - Mediabaseurl=file:///mnt/centos/gpgcheck=0enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
还有一些必要的软件,本地源无法提供,采用163的YUM进行安装
在http://mirrors.163.com/.help/centos.html下载CentOS6的YUM源配置文件CentOS6-Base-163.repo,将该文件上传到服务器上的/etc/yum.repos.d/目录下。
移去当前正在使用的由系统提供的qla2xxx模块,并在下次启动时屏蔽:
# rmmod qla2xxx# echo blacklist qla2xxx >/etc/modprobe.d/blacklist-qla2xxx.conf# reboot
编译内核
查看内核代码
# uname -r2.6.32-504.el6.x86_64
下载内核源代码:kernel-2.6.32-504.el6.src.rpm
安装内核源代码
# groupadd mockbuild #解决warning: group mockbuild does not exist - using root问题# useradd mockbuild -g mockbuild #解决warning: user mockbuild does not exist - using root 问题# rpm -ivh kernel-2.6.32-504.el6.src.rpm
安装后,会生成rpmbuild目录。
产生随机数
# yum install rng-tools # 安装rngd# rngd -r /dev/urandom # 生成随机数,否则下面的rpmbuild的过程会很漫长
执行kernel.spec的”%prep”部分,主要是解开源代码并打相应补丁
安装必要的软件# yum install patchutils xmlto elfutils-libelf-devel elfutils-devel binutils-devel python-devel# yum install asciidoc newt-devel perl-ExtUtils-Embed# yum install audit-libs-devel bison hmaccalc# yum install gcc rpm-build# cd /root/rpmbuild/SPECS# rpmbuild -bp kernel.spec
SCST打补丁
在modprobe scst_changer的时候,如果出现错误FATAL: Error inserting scst_changer: … Invalid argument, 可以通过查看/var/log/messages文件,看看错误在哪里。
# tail -f messages......Aug 14 16:10:57 mhvtl kernel: scst: ***ERROR***: Pass-through dev handlers (handler "dev_changer") not supported. Consider applying on your kernel patch scst_exec_req_fifo-<kernel-version>
从SCST网站上下载 scst-3.0.1.tar.bz2
解压scst-3.0.1.tar.bz2# tar xvfj scst-3.0.1.tar.bz2打补丁# cd /root/rpmbuild/BUILD/kernel-2.6.32-504.el6/linux-2.6.32-504.el6.x86_64# patch -p1 < /root/scst-3.0.1/kernel/scst_exec_req_fifo-2.6.32.patch patching file block/blk-map.cHunk #2 succeeded at 275 (offset 3 lines).patching file include/linux/blkdev.hHunk #1 succeeded at 695 (offset -13 lines).Hunk #2 succeeded at 809 (offset -5 lines).patching file include/linux/scatterlist.hHunk #2 succeeded at 223 (offset 4 lines).patching file lib/scatterlist.cHunk #1 succeeded at 591 (offset 98 lines).# cd /root/rpmbuild/BUILD/kernel-2.6.32-504.el6/linux-2.6.32-504.el6.x86_64/block# vi blk-map.c397行int res = 0; # 对res进行初始化,否则,编译不通过
替换驱动
从SCST网站上下载 qla2x00t-3.0.1.tar.bz2
解压qla2x00t-3.0.1.tar.bz2# tar xvfj qla2x00t-3.0.1.tar.bz2将原有的kernel source自带的qla2xxx目录改名保存# cd /root/rpmbuild/BUILD/kernel-2.6.32-504.el6/linux-2.6.32-504.el6.x86_64/drivers/scsi# mv qla2xxx/ qla2xxx.bak创建链接,替换驱动# ln -s /root/qla2x00t-3.0.1 qla2xxx
配置内核
# yum install ncurses ncurses-devel# cd /root/rpmbuild/BUILD/kernel-2.6.32-504.el6/linux-2.6.32-504.el6.x86_64# cp .config config.bak# make menuconfig
选择菜单: “Device Drivers -> SCSI device support,采用默认配置即可。
比较内核配置的前后差异# diff .config config.bakdiff .config config.bak 4c4< # Fri Aug 14 13:29:52 2015---> # Fri Aug 14 13:05:49 20151475d1474< CONFIG_SCSI_QLA2XXX_TARGET=y内核版本,增加扩展版本号# vi Makefile EXTRAVERSION = -504-scst编译# make# make modules# mkdir -p /lib/modules/2.6.32-504-scst# make modules_install# make install编译完毕后重启# reboot在GRUB启动界面,选择新内核,启动系统。
查看qla2xxx驱动模块信息
# modinfo qla2xxx......parm: qlini_mode:Determines when initiator mode will be enabled. Possible values: "exclusive" (default) - initiator mode will be enabled on load, disabled on enabling target mode and then on disabling target mode enabled back; "disabled" - initiator mode will never be enabled; "enabled" - initiator mode will always stay enabled. (charp)......有qlini_mode参数,允许选择target mode设置为exclusive 和 enabled,处于initiator模式;设置为disabled,处于Target模式装载模块# modprobe qla2xxx查看模块的参数设置# systool -m qla2xxx -v......qlini_mode = "exclusive" # 处于initiator模式......卸载模式# modprobe -r qla2xxx
设置qla2xxx驱动处理target模式
编辑qla2xxx.conf# vi qla2xxx.conf options qla2xxx qlini_mode=disabled装载模块# modprobe qla2xxx查看模块的参数设置# systool -m qla2xxx -v......qlini_mode = "disabled" # 处于target模式......
安装SCST
安装介质: scst-3.0.1.tar.bz2
# tar xvfj scst-3.0.1.tar.bz2# cd scst-3.0.1# make all# make install安装完成后,可以看到SCST生成的内核模块# ls -l /lib/modules/`uname -r`/extradrwxr-xr-x. 2 root root 4096 Aug 7 21:43 dev_handlers-rw-r--r--. 1 root root 4180135 Aug 7 21:43 scst.ko# ls -l /lib/modules/`uname -r`/extra/dev_handlers-rw-r--r--. 1 root root 291902 Aug 7 21:43 scst_cdrom.ko-rw-r--r--. 1 root root 282334 Aug 7 21:43 scst_changer.ko-rw-r--r--. 1 root root 295411 Aug 7 21:43 scst_disk.ko-rw-r--r--. 1 root root 295494 Aug 7 21:43 scst_modisk.ko-rw-r--r--. 1 root root 282358 Aug 7 21:43 scst_processor.ko-rw-r--r--. 1 root root 282286 Aug 7 21:43 scst_raid.ko-rw-r--r--. 1 root root 301992 Aug 7 21:43 scst_tape.ko-rw-r--r--. 1 root root 628155 Aug 7 21:43 scst_user.ko-rw-r--r--. 1 root root 909397 Aug 7 21:43 scst_vdisk.ko
安装qla2x00t
安装介质:qla2x00t-3.0.1.tar.bz2
# tar xvfj qla2x00t-3.0.1.tar.bz2# cd qla2x00t-3.0.1# cd qla2x00-target修改SCST的include和src文件的路径# vi MakefileSCST_INC_DIR := $(shell if [ -e "$$PWD/../../scst" ]; \ then echo "$$PWD/../../scst-3.0.1/include"; \ else echo "$(DESTDIR)$(PREFIX)/include/scst"; fi)SCST_DIR := $(shell if [ -e "$$PWD/../../scst-3.0.1" ]; \ then echo "$$PWD/../../scst-3.0.1/src"; \ else echo "$(DESTDIR)$(PREFIX)/include/scst"; fi)# make# make install
安装mhVTL
安装依赖包
# yum install mtx mt-st lsscsi zlib-devel lzo-devel
mhVTL内核部分安装
# tar xvfz mhvtl-2015-04-14.tgz# cd mhvtl-1.5/# cd kernel# make# make install
mhVTL用户空间部分安装
创建用户以及组
# groupadd vtl# useradd -g vtl vtl
mhVTL的目录说明:
/etc/mhvtl 配置文件路径
/opt/mhvtl 虚拟带库存储路径
安装mhVTL
# cd mhvtl-1.5# make# make install# chown -R vtl:vtl /opt/mhvtl这一步是必需的,要不然,启动mhvtl的时候,会报make_vtl_media failed.的错误# /etc/init.d/mhvtl start启动mhVTL的后台进程
查看虚拟带库信息
# lsscsi -g[2:0:0:0] disk ATA ST3500413AS HP63 /dev/sda /dev/sg0[8:0:0:0] mediumx STK L700 0105 /dev/sch0 /dev/sg9[8:0:1:0] tape IBM ULT3580-TD5 0105 /dev/st0 /dev/sg1[8:0:2:0] tape IBM ULT3580-TD5 0105 /dev/st1 /dev/sg2[8:0:3:0] tape IBM ULT3580-TD4 0105 /dev/st2 /dev/sg3[8:0:4:0] tape IBM ULT3580-TD4 0105 /dev/st3 /dev/sg4[8:0:8:0] mediumx STK L80 0105 /dev/sch1 /dev/sg10[8:0:9:0] tape STK T10000B 0105 /dev/st4 /dev/sg5[8:0:10:0] tape STK T10000B 0105 /dev/st5 /dev/sg6[8:0:11:0] tape STK T10000B 0105 /dev/st6 /dev/sg7[8:0:12:0] tape STK T10000B 0105 /dev/st7 /dev/sg8
配置SCST
装载驱动模块
# modprobe scst# modprobe scst_changer# modprobe scst_tape# modprobe qla2xxx# modprobe qla2x00tgt查看系统日志# /var/log# tail -f messages......Aug 14 19:20:21 mhvtl kernel: qla2x00t: Initializing QLogic Fibre Channel HBA Driver target mode addon version 3.0.1Aug 14 19:20:21 mhvtl kernel: scst: Target **21:00:00:1b:32:15:b0:31** for template qla2x00t registered successfullyAug 14 19:20:21 mhvtl kernel: qla2x00t(0): using 64 Bit PCI addressingAug 14 19:20:21 mhvtl kernel: scst: Target **21:01:00:1b:32:35:b0:31** for template qla2x00t registered successfullyAug 14 19:20:21 mhvtl kernel: qla2x00t(1): using 64 Bit PCI addressingAug 14 19:20:21 mhvtl kernel: qla2x00t: Target mode driver for QLogic 2x00 controller registered successfullyAug 14 19:20:21 mhvtl kernel: scst: Target template qla2x00t registered successfully
此时,就可以在SAN网络的其他主机上能够看到输出的SCSI设备。(客户机可能需要重新启动,或是重新扫描硬件)。
- SCST在SAN网络环境中的应用
- LVS在大规模网络环境中的应用
- LVS在大规模网络环境中的应用
- iSCSI-SCST的应用
- Diameter协议及其在SIP网络环境中的应用
- DOS下一些命令在网络环境中的应用
- 吴佳明(普空):LVS在大规模网络环境中的应用
- 吴佳明(普空):LVS在大规模网络环境中的应用
- 网络管理软件在高校网络中的应用
- vlan技术在网络环境中的用途
- 浅析NAS、iSCSI、NAS SAN在视频行业的应用
- 2. DAS,NAS,SAN在数据库存储上的应用
- DAS,NAS,SAN在数据库存储上的应用
- DAS,NAS,SAN在数据库存储上的应用
- WMI在网络编程中的应用
- EtherPeek NX在网络维护中的应用
- WMI在网络编程中的应用
- 彻底了解Cookies在网络中的应用
- 高效实用内存
- 淘米水有大用处
- substr和instr的使用
- ActiveAndroid 初学
- 命令行用编译(javac)并运行(java)Jav啊文件
- SCST在SAN网络环境中的应用
- Java关键字之finalize
- 【Material Design视觉设计语言】应用样式设计
- 国内从事红外热成像的公司
- HDU 2502 月之数
- Pie(二分POJ3122)
- Android Service学习之AIDL, Parcelable和远程服务
- WPARAM和LPARAM的含义
- 【MaterialDesign】TabLayout,CollapsingToolbarLayout,AppBarLayout,CoordinatorLayout