计算机中心和运行服务器时的核心问题之一是为服务器系统提供硬盘容量。在大型主机领域,经常使用光纤通道来解决这一问题。到目前为止,UNIX 计算机和多数服务器尚未连接到中央储存解决方案。
linux-iSCSI 提供了一种简单且价格合理的解决方案来将 Linux 计算机连接到中央储存系统。大体上说,iSCSI 表示在 IP 层次上传送 SCSI 命令。如果有程序对这种设备发出查询,操作系统将生成必要的 SCSI 命令。然后,会将这些命令嵌入到 IP 中并在需要时由软件进行加密,该软件通常为 iSCSI 发起程序。而后这些包将被传送到相应的 iSCSI 远程工作站(也称为 iSCSI 目标)。
许多储存解决方案允许通过 iSCSI 进行访问,但是也可以运行提供 iSCSI 目标的 Linux 服务器。在此情况下,针对文件系统服务对 Linux 服务器进行优化设置将非常重要。iSCSI 目标只是访问 Linux 中的块设备。因此,可以使用 RAID 解决方案增加磁盘空间以及大量内存从而改善数据缓存。有关 RAID 的更多信息,请参见第 7.2 节 “软 RAID 配置”。
SUSEŽ Linux Enterprise Server 附带从 Ardis iSCSI 目标进化而来的开放源代码 iSCSI 目标解决方案。基本设置可以通过 YaST 来完成,但是要充分利用 iSCSI,将需要手动设置。
iSCSI 目标配置会将现有块设置活文件系统映像导处到 iSCSI 发起程序。首先,通过 YaST 创建所需块设备,或创建文件系统映像。有关分区概述,请参见第 8.5.7 节 “使用 YaST 分区程序”。必须手动创建文件系统映像。例如,如果希望创建大小为 4GB 的映像 /var/lib/xen/images/xen-0,则首先确保存在该目录,然后创建映像本身:
mkdir -p /var/lib/xen/images dd if=/dev/zero of=/var/lib/xen/images/xen-0 seek=1M bs=4096 count=1
要配置 iSCSI 目标,请在 YaST 中运行 模块。将在三个选项卡中完成配置。在选项卡中,选择启动方式和防火墙设置。如果希望从远程计算机访问 iSCSI 目标,则选择。如果 iSNS 服务器应管理发现和访问控制,则激活 并输入 iSNS 服务器的 IP 地址。请注意,您甚至不能使用有效的主机名,而必须使用 IP 地址。有关 iSNS 的更多信息,请阅读第 13 章 iSNS for Linux 概述。
全局此处的身份验证设置用于发现服务而非用于访问目标。如果不希望限制对发现的访问,则使用。
如果需要身份验证,则需要考虑两种可能性。一种可能性时发起程序必须证明它有权在 iSCSI 目标上运行发现。可通过完成此操作。另一种可能性时 iSCSI 目标必须向发起程序证明它是所希望的目标。因此,iSCSI 目标还可提供用户名和密码。可通过完成此操作。可在 RFC 3720 中找到有关身份验证的更多信息(请参见 http://www.ietf.org/rfc/rfc3720.txt)。
目标在选项卡中定义。使用创建新的 iSCSI 目标。第一个对话框会询问有关要导出的设备的信息。
目标
iqn.yyyy-mm.<reversed domain name>
语法始终以 iqn 开头。yyyy-mm 是日期格式(日期为激活此目标的日期)。可在 RFC 3722 中找到有关命名约定的更多信息(请参见 http://www.ietf.org/rfc/rfc3722.txt)。
可自由选择。标识符应跟在某模式之后以使整个系统具有良好的结构。
可以向目标指派多个 LUN。为此,请在选项卡中选择一个目标,然后单击。在此,向某现有目标添加新的 LUN。
添加到块设备的路径,或添加到要导出的文件系统映像的路径。
下个菜单配置目标的访问限制。配置与发现身份验证的配置非常相似。在此情况下,至少应设置一个进入的身份验证。
完成新目标配置,并返回到选项卡的概述页面。可通过单击来激活更改。
在 /etc/ietd.conf 中配置 iSCSI 目标。此文件中第一个目标声明之前的所有参数对于文件来说是全局的。此部分的身份验证信息具有特殊的意义 - 它不是全局的,而是用于发现 iSCSI 目标。
如果有权访问 iSNS 服务器,首先要配置的是将有关此服务器的信息告知该目标。请注意,iSNS 服务器的地址必须始终用 IP 地址给出。普通的域名是不合格的。此功能的配置类似如下所示:
iSNSServer 192.168.1.111 iSNSAccessControl no
此配置使得 iSCSI 目标可在 iSNS 服务器中自我注册,反之,还提供对启动程序的发现。有关 iSNS 的更多信息,请阅读第 13 章 iSNS for Linux 概述。请注意,不支持 iSNS 发现的访问控制。仅保留 iSNSAccessControl no。
所有直接 iSCSI 身份验证都可双向进行。iSCSI 目标可要求 iSCSI 发起程序使用 IncomingUser 来验证,可添加多次。iSCSI 发起程序还可要求 iSCSI 目标身份验证。在此情况下请使用 OutgoingUser。这两个方向的语法相同:
IncomingUser <username> <password> OutgoingUser <username> <password>
身份验证后跟一个或多个目标定义。为每个目标添加 Target 部分。此部分总是以 Target 标识符开头,后跟逻辑单元编号定义:
Target iqn.yyyy-mm.<reversed domain name>[:identifier]
Lun 0 Path=/dev/mapper/system-v3
Lun 1 Path=/dev/hda4
Lun 2 Path=/var/lib/xen/images/xen-1,Type=fileio
在 Target 行中,yyyy-mm 是激活此目标的日期,并可自由选择标识符。可在 RFC 3722 中找到有关命名约定的更多信息(请参见 http://www.ietf.org/rfc/rfc3722.txt)。在此示例中导出了三个不同的块设备。第一个块设备是逻辑卷(另见第 7.1 节 “LVM 配置”),第二个块设备是 IDE 分区,第三个设备是可在逻辑文件系统中获得的映像。对 iSCSI 发起程序来说,所有这三个块设备是相同的。
激活 iSCSI 目标之前,请在 Lun 定义后至少添加一个 IncomingUser。此操作身份验证此目标的使用。
要激活所有更改,可使用 rcopen-iscsi restart 重启动 iscsitarget 守护程序。在 /proc 文件系统中检查配置:
cat /proc/net/iet/volume
tid:1 name:iqn.2006-02.com.example.iserv:systems
lun:0 state:0 iotype:fileio path:/dev/mapper/system-v3
lun:1 state:0 iotype:fileio path:/dev/hda4
lun:2 state:0 iotype:fileio path:/var/lib/xen/images/xen-1
还有一些选项可控制 iSCSI 目标的行为。可在 ietd.conf 的手册页中找到这些选项。
/proc 文件系统中还会显示活动会话。对于每个连接的发起程序,会向 /proc/net/iet/session 额外添加一个项:
cat /proc/net/iet/session
tid:1 name:iqn.2006-02.com.example.iserv:system-v3
sid:562949957419520 initiator:iqn.2005-11.de.suse:cn=rome.example.com,01.9ff842f5645
cid:0 ip:192.168.178.42 state:active hd:none dd:none
sid:281474980708864 initiator:iqn.2006-02.de.suse:01.6f7259c88b70
cid:0 ip:192.168.178.72 state:active hd:none dd:none
当需要更改 iSCSI 目标配置时,必须始终重启动目标以激活配置文件中所作的更改。不幸的是,在此过程中将中断所有活动会话。要使操作不受干扰,应在主配置文件 /etc/ietd.conf 中执行更改,但是还要通过管理实用程序 ietadm 来手动更改当前配置。
要通过 LUN 创建新 iSCSI 目标,请首先更新配置文件。以下是附加项:
Target iqn.2006-02.com.example.iserv:system2
Lun 0 Path=/dev/mapper/system-swap2
IncomingUser joe secret
要手动设置此配置,请如下继续操作:
使用命令 ietadm --op new --tid=2 --params Name=iqn.2006-02.com.example.iserv:system2 创建新目标。
使用 ietadm --op new --tid=2 --lun=0 --params Path=/dev/mapper/system-swap2 添加逻辑单元。
使用 ietadm --op new --tid=2 --user --params=IncomingUser=joe,Password=secret 设置此目标上的用户名和密码组合。
使用 cat /proc/net/iet/volume 检查配置。
还可以删除活动连接。首先,使用命令 cat /proc/net/iet/session 检查所有活动连接。此操作可能如下所示:
cat /proc/net/iet/session
tid:1 name:iqn.2006-03.com.example.iserv:system
sid:281474980708864 initiator:iqn.1996-04.com.example:01.82725735af5
cid:0 ip:192.168.178.72 state:active hd:none dd:none
要删除会话 ID 为 281474980708864 的会话,请使用命令 ietadm --op delete --tid=1 --sid=281474980708864 --cid=0。请注意:此操作会导致在客户机系统上无法访问设备并且访问此设备的进程可能会挂起。
ietadm 还可用来更改各种配置参数。使用 ietadm --op show --tid=1 --sid=0 获取全局变量列表。输出将如下所示:
InitialR2T=Yes ImmediateData=Yes MaxConnections=1 MaxRecvDataSegmentLength=8192 MaxXmitDataSegmentLength=8192 MaxBurstLength=262144 FirstBurstLength=65536 DefaultTime2Wait=2 DefaultTime2Retain=20 MaxOutstandingR2T=1 DataPDUInOrder=Yes DataSequenceInOrder=Yes ErrorRecoveryLevel=0 HeaderDigest=None DataDigest=None OFMarker=No IFMarker=No OFMarkInt=Reject IFMarkInt=Reject
可以轻松地更改所有这些参数。例如,如果希望将最大连接数更改为两个连接,则使用 ietadm --op update --tid=1 --params=MaxConnections=2。在文件 /etc/ietd.conf 中,关联行应类似于 MaxConnections 2。
![]() | 根据通过 ietadm 所作的更改来更新 ietd.conf |
|---|---|
系统上使用命令 ietadm 所作的更改不是永久性的。如果未将更改添加到配置文件 | |
还有多个选项可用于命令 ietadm。可使用 ietadm -h 查找概述。该处的缩写为目标 ID(tid)、会话 ID(sid)和连接 ID(cid)。还可在 /proc/net/iet/session 中找到这些缩写。