前言:SCST是一个老版本的linux target实现了,现在基本已经被LIO取代
这是一个非常快速的HOWTO,旨在提供有关如何设置和配置iSCSI-SCST的快速参考。有关更深入的信息,请参阅SCST和iSCSI-SCST README文件。
使用scstadmin安装和使用iSCSI-SCST
==============================================
1.下载,构建和安装iSCSI-SCST。
首先下载iSCSI-SCST源代码。您可以从以下URL下载已发布的版本:
或者您可以通过在shell中运行以下命令来下载最新的开发版本:
虽然SCST和iSCSI-SCST与未修补的Linux内核一样可以与其他开源iSCSI目标具有相同或更快的速度,但如果您想获得更好的性能,则需要修补和重建内核。根据内核版本选择补丁(下例中为2.6.38.x):
cd /usr/src/kernels/linux-2.6.38.8
patch -p1 <$ HOME / scst / iscsi-scst / kernel / patches / put_page_callback-2.6.38.patch
make clean
如果你的内核找不到put_page_callback,那么就不需要修补了,所以你可以跳过这个和下一个(内核重建和重启)步骤。
接下来,构建并安装内核:
make && make modules
make modules_install && make install
对于某些Linux发行版(例如Ubuntu),上述步骤不会重建初始RAM磁盘。确保在重新引导之前重新生成RAM磁盘。请查看随发行版提供的update-initrd,update-initramfs或mkinitrd命令的文档。
现在重新启动系统,以便加载新构建的内核。
一旦系统再次启动并运行,下一步就是构建并安装SCST,iSCSI-SCST和scstadmin。对于大多数发行版(包括RHEL 6),您可以通过从SCST目录运行以下命令来执行此操作:
make 2release
make scst scst_install iscsi iscsi_install scstadm scstadm_install
使用RHEL 5或CentOS 5时,请改用以下命令:
make 2release
make enable_proc
make scst scst_install iscsi iscsi_install scstadm scstadm_install
iSCSI-SCST包括以下组件:
*内核模块:iscsi-scst.ko scst.ko scst_vdisk.ko
* iscsi-scstd - 守护进程
*手册
*删除位于 iscsi-scst/etc/obsolete下的配置文件,如果你想使用它们需要复制到/etc。在iSCSI-SCST 2.0中,建议使用scstadmin和SCST sysfs接口:
* initiators.allow - 用于为目标分配特定的启动器
* initiators.deny - 用于为目标分配特定的启动器
* iscsi-scstd.conf - 目标及其属性列表
2.设置/etc/scst.conf
scst.conf配置文件由系统引导时由shell脚本/etc/init.d/scst通过scstadmin加载。target,device 和LUN配置在此文件中定义。
通常,SCST及其组件(包括iSCSI-SCST)是内核模块,因此它们使用内核接口来配置sysfs。但是,直接使用sysfs接口很麻烦。 Scstadmin实用程序允许使用常规纯文本界面。您可以使用“scstadmin -config”将配置文件加载到SCST sysfs中,并使用“scstadmin -write_config”将当前运行的配置保存到scst.conf中。
如果要直接使用SCST sysfs接口,请参见下面的第二部分。
这是示例配置文件。将其复制到/etc/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
LUN 0 disk01
LUN 1 disk02
enabled 1
}
}
请注意,对于每个启动器,LUN 0必须存在,因此您无法在没有LUN 0的情况下创建目标和启动程序组。这是SCSI协议所必需的,并且还记录在SCST的README文件中。
然后启动scst和iscsi-scst服务运行以下命令:
/etc/init.d/scst start
您现在应该拥有可用的iSCSI-SCST。如果以后需要更改scst.conf并重新加载它,可以直接运行scstadmin:
scstadmin -config /etc/scst.conf
或重新启动SCST:
/etc/init.d/scst restart
如果需要在重新引导时自动配置SCST,请执行以下步骤。
3.在/etc/init.d中创建软链接
这将使SCST在系统引导时自动启动。使用chkconfig或update-rc.d,具体取决于您使用的Linux发行版。对于Debian系统(如Ubuntu)的示例:
update-rc.d scst默认值
在openSUSE上,您可以通过以下命令让SCST自动启动:
insserv scst
4.重新启动SCST和iSCSI-SCST
如果您现在不想重新启动,可以通过以下命令使上述设置生效:
/etc/init.d/scst restart
不使用scstadmin via / sys接口安装和使用iSCSI-SCST
================================================== ========================
Scstadmin 应该足够您做基础的操作。仅当您需要为scstadmin执行过于高级的操作时才使用这些步骤。例如,保持配置是数据库而不是普通文件。
在iSCSI-SCST系统中,三个组件进行交互以将设备和文件系统导出到远程主机上的iSCSI启动器:Target,LUN和设备。 Target表示主机,并充当LUN的容器。 LUN(逻辑单元号)表示设备的地址,并为启动器提供访问控制,以及充当设备的容器。设备表示您希望提供给启动器的实际块设备或文件系统。您必须先创建目标,然后创建LUN,然后将LUN分配给目标,然后定义设备并将其分配给LUN。最后,您必须启用目标和SCST系统。完成步骤(如下)后,您应该能够从授权的远程启动器中查找和访问导出的设备。
首先在第一部分重复步骤1,但在步骤1中从make命令中省略“scstadm scstadm_install”。
接下来加载所需的内核模块,如下所示:
modprobe scst_disk
modprobe scst_vdisk
modprobe iscsi-scst
模块scst_disk允许以直通模式导出本地SCSI(SAS等)设备,scst_vdisk允许基于文件和块设备创建虚拟LUN,模块iscsi-scst是主要的iSCSI-SCST模块。
然后运行iSCSI-SCST用户空间服务:iSCSI的scstd
创建目标
----------------
改变目标的参数
----------------------------
echo“8192”> /sys/kernel/scst_tgt/targets/iscsi/
iqn.2007-05.com.example\:storage.iscsi-scst-1/MaxRecvDataSegmentLength
您可以通过以下方式阅读:
8192
[key]
标记“[key]”显示高级管理工具,如scstadmin,该属性没有默认值。你可以忽略它。
添加虚拟磁盘设备
-----------------
dd if = / dev / zero of = / disk1 bs = 1M count = 1024
这将为我们未来的虚拟设备disk1创建后端文件/ disk1。
echo“add_device disk1 filename = / disk1; nv_cache = 1”> / sys / kernel / scst_tgt / handlers / vdisk_fileio / mgmt
这将添加新的FILEIO设备disk1,其中启用了后端文件/ disk1和NV_CACHE选项。
对于块设备,通常使用BLOCKIO处理程序更有效:
echo“add_device dev1 filename = / dev / dev1”> / sys / kernel / scst_tgt / handlers / vdisk_blockio / mgmt
列出当前注册的SCST设备
-----------------------------------------
您可以看到可用设备列表:
# ls -1 /sys/kernel/scst_tgt/devices
0:0:0:0
1:0:0:0
3:0:0:0
3:0:0:1
3:0:0:2
3:0:0:3
3:0:0:4
3:0:0:5
3:0:0:6
3:0:0:7
2:0:0:0
4:0:0:0
4:0:0:5
4:0:0:6
4:0:0:7
4:0:0:8
4:0:0:9
4:0:1:0
4:0:1:1
4:0:1:2
4:0:1:3
4:0:1:4
5:0:0:0
5:0:0:5
5:0:0:6
5:0:0:7
5:0:0:8
5:0:0:9
5:0:1:0
5:0:1:1
5:0:1:2
5:0:1:3
5:0:1:4
disk1
定义LUN掩码
--------------------
LUN掩码定义了哪个启动器可以看到哪些LUN。
请注意,每个组必须具有LUN 0。这是SCSI要求(在SCST的自述文件中有记录)。
echo“add disk1 1 read_only = 1”> /sys/kernel/scst_tgt/targets/iscsi/
iqn.2007-05.com.example\:storage.iscsi-scst-1/luns/mgmt
从组中删除LUN
---------------------------
运行以下命令:
有关LUN屏蔽的更多信息,请参阅SCST README,“访问和设备可见性管理(LUN屏蔽)”部分。
启用目标
----------------
创建并配置目标后,应启用它:
然后启用iSCSI-SCST驱动程序:
echo 1> / sys / kernel / scst_tgt / targets / iscsi / enabled
将目标分配给特定的启动器
----------------------------------------
为了将目标分配给特定的启动器,您应该使用上面定义的LUN掩码。如果将启动器分配给目标的空安全组,则启动器将不会在SendTargets发现中看到此目标,并且将无法连接到该目标。
此外,您可以使用allowed_portal sysfs属性仅通过选定的门户网站使目标可见。阅读iSCSI-SCST的README文件,了解有关此工具的更多详细信息。
不使用scstadmin via / proc接口安装和使用iSCSI-SCST
================================================== =========================
首先重复上一节中的步骤1和2,但在步骤1中从make命令中省略“scstadm scstadm_install”。
接下来设置/etc/iscsi-scstd.conf
你可以这样做,例如运行以下shell命令:
echo“Target $(sed -n's / InitiatorName = // p'/etc/iscsi/initiatorname.iscsi):storage”> /etc/iscsi-scstd.conf
cat /etc/iscsi-scstd.conf
接下来加载scst_disk内核模块,如下所示:
modprobe scst_disk
shell脚本/etc/init.d/iscsi-scst现在可用于启动/停止/重新启动或检查iSCSI-SCST的状态。
选择SCST使用的设备
------------------------------------
您可以看到可用设备列表:
# cat /proc/scsi_tgt/scsi_tgt
Device (host:ch:id:lun or name) Device handler
0:0:0:0 dev_disk
1:0:0:0 dev_disk
3:0:0:0 dev_disk
3:0:0:1 dev_disk
3:0:0:2 dev_disk
3:0:0:3 dev_disk
3:0:0:4 dev_disk
3:0:0:5 dev_disk
3:0:0:6 dev_disk
3:0:0:7 dev_disk
2:0:0:0 none
4:0:0:0 none
4:0:0:5 dev_disk
4:0:0:6 dev_disk
4:0:0:7 dev_disk
4:0:0:8 dev_disk
4:0:0:9 dev_disk
4:0:1:0 dev_disk
4:0:1:1 dev_disk
4:0:1:2 dev_disk
4:0:1:3 dev_disk
4:0:1:4 dev_disk
5:0:0:0 none
5:0:0:5 dev_disk
5:0:0:6 dev_disk
5:0:0:7 dev_disk
5:0:0:8 dev_disk
5:0:0:9 dev_disk
5:0:1:0 dev_disk
5:0:1:1 dev_disk
5:0:1:2 dev_disk
5:0:1:3 dev_disk
5:0:1:4 dev_disk
LUN屏蔽
-----------
SCST定义安全组。对于每个组,您可以添加LUN。
如果要将所有LUN都可用于所有目标,只需将它们添加到“默认”组:
# echo "add 5:0:0:8 0" >/proc/scsi_tgt/groups/Default/devices
# cat /proc/scsi_tgt/groups/Default/devices
Device (host:ch:id:lun or name) Virtual lun Options
5:0:0:8 0
现在,LUN“5:0:0:8”被添加到“默认”组作为LUN#0。
请注意,您必须具有LUN 0.这是SCSI要求(在SCST的README中记录)。
定义LUN掩码
--------------------
要将特定LUN与特定目标关联,请执行以下操作:
*为目标创建一个组:
*将LUN添加到组:
从组中删除LUN
---------------------------
运行以下命令:
删除组
----------------
运行以下命令:
有关LUN屏蔽的更多信息,请参阅SCST README,“访问和设备可见性管理(LUN屏蔽)”部分。
使用iscsi-scstd.conf创建目标
---------------------------------------
创建目标的最简单方法是在/etc/iscsi-scstd.conf中定义它们。可以在etc/ iscsi-scstd.conf中找到一个示例。在启动iSCSI-SCST之前,您需要在/ etc /下使用此文件。
将目标分配给特定的启动器
----------------------------------------
为了将目标分配给特定的启动器,您需要使用/etc/initiators.allow和/etc/initiators.deny。您可以在etc / initiators.allow和etc / initiators.deny中找到示例文件。
请注意,默认情况下所有目标都允许使用所有目标,因此如果要使用/etc/initiators.allow,则需要使用/etc/initiators.deny,如下所示:
ALL ALL
这将拒绝所有启动器对/etc/initiators.allow中定义的启动器的期望。
iscsi-scst-adm的有用示例:
显示特定目标:
# iscsi-scst-adm --op show --tid=1
QueuedCommands=0
显示特定目标的已配置参数:
# iscsi-scst-adm --op show --tid=1 --sid=0
InitialR2T=No
ImmediateData=Yes
MaxConnections=1
MaxRecvDataSegmentLength=2097152
MaxXmitDataSegmentLength=131072
MaxBurstLength=2097152
FirstBurstLength=262144
DefaultTime2Wait=2
DefaultTime2Retain=0
MaxOutstandingR2T=1
DataPDUInOrder=Yes
DataSequenceInOrder=Yes
ErrorRecoveryLevel=0
HeaderDigest=None
DataDigest=None
OFMarker=No
IFMarker=No
OFMarkInt=Reject
IFMarkInt=Reject
略
- iSCSI Network Designs: Part 5 – iSCSI Multipathing, Host Bus Adapters, High Availability and Redundancy
iSCSI Network Designs: Part 5 – iSCSI Multipathing, Host Bus Adapters, High Availability and Redunda ...
- iscsi序列一、搭建iscsi存储系统
一.NAS和SAN服务器概述 SAS: 容量小, 300G, 600G, 900G, 价格贵. SATA:容量大,500G, 750G, 1T, 2T, 3T, 4T 不支持热插拔,价格低. 假S ...
- ceph iscsi (SCST)
ceph结合iscsi iscsi Target 安装 1.安装SCST tar -jxf scst-3.0.1.tar.bz2 cd scst-3.0.1 make && make ...
- Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式CentOS7-1810下实现
iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...
- Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式 Debian9.5下实现
iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...
- iscsi与multipath
2016-10-01/21:07:24 http://www.cnblogs.com/wuchanming/p/4019660.htmlhttp://czmmiao.iteye.com/blog/20 ...
- centos 6.5 x64创建并挂载使用iscsi共享磁盘
前景摘要:NFS或iSCSI,哪个更好?文件 vs 块NFS使用文件级别的实施,服务器或存储阵列托管整个文件系统,客户到文件系统上读写文件,可以在阵列端对主存储数据进行重复数据删除.iSCSI和FC则 ...
- 网络存储(二)之ISCSI原理
组成 一个简单ISCSI系统大致由以下部分构成 ISCSI Initiator 或者 ISCSI HBA ISCSI Target 以太网交换机 一台或者多台服务器 结构图如下: iscsi服务器用来 ...
- [转帖]DAS、NAS、SAN、iSCSI 存储方案概述
目前服务器所使用的专业存储方案有DAS.NAS.SAN.iSCSI几种.存储根据服务器类型可以分为:封闭系统的存储和开放系统的存储: (1)封闭系统主要指大型机. (2)开 ...
随机推荐
- vue-awesome-swiper组件不能自动播放和导航器小圆点不显示问题
from: https://blog.csdn.net/osdfhv/article/details/79062427 <template> <div class="swi ...
- C# 使用lambda表达式过滤掉数组中的空字符串
使用lambda表达式过滤掉数组中的空字符串 KeyWord = KeyWord.Where(S => !string.IsNullOrEmpty(S)).ToArray();
- restful规范快速记忆
restful规范: 十个规则: 用户发来请求,url必须: 1.因为是面向资源编程,所以每个URL代表一种资源,URL中尽量不要用动词,要用名词 2.尽量使用HTTPS,https代替http 3. ...
- php实现微信网页授权回调代理
一个简单的php文件,实现微信网页授权回调域名的代理转发 <?php function is_HTTPS() { if (!isset($_SERVER['HTTPS'])) return F ...
- js-cookie的用法
cookie的作用无需多言,自己封装一个cookie,不停地复制黏贴页颇为麻烦,在这里,有npm为我们封装好的插件js-cookie: https://www.npmjs.com/package/js ...
- (转) 为什么不应该重写service方法?
故事通常是这样开始的: 从前,有一个程序猿,他语重心长地对孙子说:“孩子,要是你以后写servlet,最好不要重写service方法啊” 孙子大为不解,程序猿又说:“听爷爷的,准没错,爷爷的爷爷就是这 ...
- CRT/LCD/VGA Information and Timing
彩色阴极射线管的剖面图: 1. 电子QIANG Three Electron guns (for red, green, and blue phosphor dots)2. 电子束 Electron ...
- URI/URL/URN的联系和区别
下面是我整理的一些关于他们的描述. URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. 而URL是uniform resource locato ...
- windbg无故不显示command窗口
原文最早发表于百度空间2010-02-05 有的dump可以显示,有的不行……上网找了一通没有收获,自己搞了一下,终于在点击“window”——“cascade floating windows”后出 ...
- 获取从库Seconds_Behind_Master监控主从同步
#!/bin/bash now_date=`date "+%Y-%m-%d,%H:%M:%S"` flag_old=`cat /home/oracle/scripts/flag.t ...