iSCSI-SCST的应用

问题描述

Linux服务器上,有很多SCSI设备(例如虚拟磁盘),通过iSCSI协议,走以太网,怎样让其他的服务器使用到这些设备?解决方案是通过Generic SCSI Target Subsystem for Linux, 常用的软件工具有tgt,scst等。

这里介绍SCST 3.0.1 版本的安装,配置,以及使用。

安装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`/extra
drwxr-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

同时SCST提供了后台服务/etc/init.d/scst

安装iSCSI-SCST

安装介质:iscsi-scst-3.0.1.tar.bz2
iscsi-scst是依赖scst的,在安装过程,需要用到scst的include目录。

# tar xvfj iscsi-scst-3.0.1.tar.bz2
# cd iscsi-scst-3.0.1
修改Makefile文件,修正SCST_INC_DIR,以及SCST_DIR
# vi Makefile
SHELL=/bin/bash

SUBDIRS := $(shell pwd)

SCST_INC_DIR := $(shell if [ -e "$$PWD/../scst-3.0.1" ];                        \
                  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 all
# make install
安装完成后,在/lib/modules/2.6.32-358.el6.x86_64/extra目录下,生成了iscsi-scst.ko内核模块

iscsi-scst没有在/etc/init.d目录提供后台服务启动,停止的脚本,只是提供了后台进程/usr/local/sbin/iscsi-scstd,执行该命令,启动后台服务。停止服务,暂时采用kill进程的办法。

配置SCST

将iscsi-scst-3.0.1/etc/scst.conf拷贝到/etc目录下。

# cat scst.conf
HANDLER vdisk_fileio {
    DEVICE disk01 {
        filename /dev/ram0
        nv_cache 1
    }
    DEVICE disk02 {
        filename /dev/ram1
        nv_cache 1
    }
}

TARGET_DRIVER iscsi {
    enabled 1

    TARGET iqn.2006-10.net.vlnb:tgt {
        LUN 0 disk01
        LUN 1 disk02

        enabled 1
    }
}

定义了2个虚拟磁盘的HANDLER,然后采用iscsi方式做成TARGET_DRIVER,TARGET为iqn.2006-10.net.vlnb:tgt,两个逻辑单元分别为虚拟磁盘(disk01, disk02)。

启动服务

注:iscsi-scst采用3260端口,实验方便,启动服务之前,先关闭防火墙。

# service iptables stop

1.启动scst

# /etc/init.d/scst start

该过程会在装载内核模块scst

2.装载虚拟磁盘处理的内核模块

# modprobe scst_vdisk

3.装载iSCSI协议处理的内核模块

# modprobe iscsi_scst

4.启动iscsi-scst后台进程

# iscsi-scstd

至此,整个服务启动完成,可以用iSCSI Initiator访问这两块虚拟磁盘了。

通过Windows iSCSI Initiator访问SCSI设备

你可能感兴趣的:(数据保护)