探索 AIX 6:在 AIX 6 上配置 iSCSI Target

探索 AIX 6:在 AIX 6 上配置 iSCSI Target

developerWorks
文档选项
<script type="text/javascript"> </script>
将打印机的版面设置成横向打印模式

打印本页

<script type="text/javascript"> </script>
将此页作为电子邮件发送

将此页作为电子邮件发送


王 荣, 技术支持工程师, IBM 科技产品(深圳)有限公司

2008 年 5 月 22 日

本文将介绍如何配置以及使用 AIX 上以软件方式实现的 iSCSI target 功能,其中包括客户端配置,CHAP 认证,安全访问控制等内容。

您可以访问“AIX 6 资源中心”了解更多的 AIX 6 的新特性:

引言

iSCSI(Internet Small Computer System Interface)被业界认为是非常廉价的 SAN 解决方案,一直在中低端应用领域被市场所看好。 iSCSI 客户端和服务端都既可以通过硬件方式实现,也能通过软件方式的,其优劣区别就是在于效能与成本各有优势。绝大多数操作系统都免费的附带了 iSCSI 的 sw initiator(软件方式)客户端组件,比如在 AIX5.2 以上的版本中就开始附带了 iSCSI sw initiator 组件。不过 iSCSI 服务端,也即 iSCSI target,一般都是收费软件,并且绝大多数都只能运行在 windows 平台。在 AIX 6.1 中集成了 iSCSI initiator 和 iSCSI target 了两种功能。另外,借助与 POWER6 以及部分 POWER5 机型其功能强大的底层硬件平台, AIX 6.1 还能够支持到使用软件方式的 iSCSI 磁盘启动,无需硬件 iSCSI HBA。





回页首


iSCSI 的基本介绍

iSCSI 可以简单理解为通过 TCP/IP 封装 SCSI 命令,实现在 IP 网络使用远端的 SCSI 设备的一种协议。 iSCSI 是 SCSI 协议的扩展, SCSI 使用物理 SCSI 电缆传递 SCSI 命令,而 iSCSI 使用了虚拟的 TCP/IP 网络。借助现有的 LAN、WAN 网络环境,iSCSI 提供了非常经济的数据存储的解决方案。

其基本结构可以参看下图,iSCSI 结构与 SCSI 结构一样,由客户端(Initiator)和服务端(Target)两部分组成。不同的是 SCSI 的数据链路是一条 SCSI 总线,连接和寻址都较简单;而 iSCSI 使用 TCP/IP 网络作为数据链路,其配置就相对复杂一些,但是其灵活性和扩展性则远高于传统的 SCSI 架构。iSCSI 其最底层是以太交换网络,是 iSCSI 协议通信的基础层,我们首先需要保证客户端与服务端的网络畅通。(注:不光是传统以太网络,目前高性能 InfiniBand 网络也是采用 iSCSI 协议作为存储设备的传输协议)。中间层是 iSCSI 协议层的封装,主要功能包括 iSCSI 连接的管理,访问控制等,本文的内容也是主要针对这一层的配置和管理。最上层是 SCSI 命令层,在配置好 iSCSI 设备后,系统即可透明的使用 SCSI 协议访问远端的设备。


图表 1 iSCSI 协议模型





回页首


本文所配置案例的基本框架

本文所采用的案例,其逻辑结构图如下:右边是一台 AIX 6 服务器,我们将通过它来提供 iSCSI Tareget 服务。本案例中,使用了一个 lv (exlv)和一个磁盘(hdisk1)作为 Target LUN(Logical Unit Number) 设备,并通过 Target0 输出给客户端。在左边客户端这一侧,我们通过 initiator 连接到 AIX 6 服务器来访问 Target LUN 设备,并使用这两个远程的 iSCSI 磁盘创建一个 datavg。


图表 2 本案例逻辑架构


软硬件测试环境
系统平台 操作系统 网络地址
System p 520 lpar 1 (服务端)
2 CPU 2G 内存
AIX 6.1 192.168.21.134
System p 520 lpar 2 (客户端)
2 CPU 2G 内存
AIX 5.3L 192.168.21.132





回页首


系统安装要求

操作系统版本要求:AIX 6.1.0.0

iSCSI target 软件包在 AIX 6.1 expansion pack 光盘中,放入光驱,通过 SMIT 安装下面第一个软件包。

devices.tmiscsw.rte 6.1.0.0

如遇到错误,请检查以下软件包是否正确安装,devices.tmiscsw.rte 依赖于此软件包,请放入第一张系统盘安装此包。

devices.common.IBM.iSCSI.rte 6.1.0.0





回页首


iSCSI Target 的配置

Target 的配置有三部分,一是创建 iSCSI Target 最底层的协议驱动设备;二是在协议驱动设备上创建虚拟的 Target 设备;最后将本地的磁盘映射到 Target 上,作为 Target LUN。

首先,通过 smit tmiscsi_proto 创建 iSCSI Target 协议设备。如下图:

 iSCSI Target Protocol Device

Move cursor to desired item and press Enter.

List All iSCSI Target Protocol Devices
Add an iSCSI Target Protocol Device
Change / Show Characteristics of an iSCSI Target Protocol Device
Remove an iSCSI Target Protocol Device





F1=Help F2=Refresh F3=Cancel Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


选择 Add an iSCSI Target Protocol Device, 按回车到下一步。

 Add an iSCSI Target Protocol Device

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[Entry Fields]
iSCSI Target Protocol Device Name tmsw0
Maximum number of sessions [200] +#
Maximum transfer size in one PDU [262144] +#
Access Control enabled [off] +
Apply change to DATABASE only no +


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

在此处配置 Target 的性能参数,我们一般使用默认值。 Access Control enabled 这一栏我们下面还会提到,打开或关闭取决于我们是否采用基于 iqn 的安全访问控制机制。在这里我们直接回车到下一步。

 COMMAND STATUS

Command: OK stdout: yes stderr: no

Before command completion, additional instructions may appear below.

tmsw0 Available







F1=Help F2=Refresh F3=Cancel Esc+6=Command
Esc+8=Image Esc+9=Shell Esc+0=Exit /=Find

第二步,我们创建虚拟的 Target 设备。使用命令 smit tmtarget。

 iSCSI Targets

Move cursor to desired item and press Enter.

List All iSCSI Targets
Add an iSCSI Target
Change / Show Characteristics of an iSCSI Target
Remove an iSCSI Target





F1=Help F2=Refresh F3=Cancel Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

选择 Add an iSCSI Target。

 Add an iSCSI Target

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[Entry Fields]
iSCSI Target Protocol Device Name tmsw0
iSCSI Target Logical Name []
* iSCSI Target Name [com.ibm.cn.swtarget0]
Maximum Target LUNs allowed [512] +#
Paths []
Force disconnection of iSCSI clients on remove [no] +
Initiator Reconnection delay [] +#
Addressing method [] +#
Apply change to DATABASE only no +


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

在 iSCSI Target Name 一栏输入 Target 设备的 iqn 地址。其他保持默认值。我们设置其为 com.ibm.cn.swtarget0. 按回车下一步。

 COMMAND STATUS

Command: OK stdout: yes stderr: no

Before command completion, additional instructions may appear below.

target0 Available

Target 设备即创建完成。

最后,我们将 LV exlv 和 hdisk1 两个块设备挂载(mapping)到 Target 设备下,作为 iSCSI Target LUN 设备。使用命令 smit tmlun

 iSCSI Target LUNs

Move cursor to desired item and press Enter.

List all iSCSI Target Logical Units
Add an iSCSI Target Logical Unit
Change / Show Characteristics of an iSCSI Target Logical Unit
Remove an iSCSI Target Logical Unit

lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x iSCSI Parent Target Name x
x x
x Move cursor to desired item and press Enter. x
x x
x target0 Available iSCSI Target Mode Target x
x x
x F1=Help F2=Refresh F3=Cancel x
x Esc+8=Image Esc+0=Exit Enter=Do x
F1x /=Find n=Find Next x
Esmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

选择 Add an iSCSI Target Logical Unit,按回车然后选择 target0,再按回车到下一步。

Add an iSCSI Target Logical Unit

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[Entry Fields]
iSCSI Parent Target Name target0
Logical Unit Name []
* Backing Device Type [disk] +
* Backing Device Name [hdisk1] +
Maximum Number of Commands to Queue to Device [3] +#
Apply change to DATABASE only no +




F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

我们先添加 hdisk1,在 Backing Device type 中输入设备类型 disk。在 Backing Device Name 输入 hdisk1. 回车下一步。

 COMMAND STATUS

Command: OK stdout: yes stderr: no

Before command completion, additional instructions may appear below.

lu0 Available






F1=Help F2=Refresh F3=Cancel Esc+6=Command
Esc+8=Image Esc+9=Shell Esc+0=Exit /=Find
n=Find Next

hdisk1 已添加好成为 Target LUN。下面我们继续添加 LV exlv。

 Add an iSCSI Target Logical Unit

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[Entry Fields]
iSCSI Parent Target Name target0
Logical Unit Name []
* Backing Device Type [lv] +
* Backing Device Name [exlv] +
Maximum Number of Commands to Queue to Device [3] +#
Apply change to DATABASE only no +


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

在设备类型一栏选择 lv,在 Backing Device Name 一栏输入 exlv,按回车到下一步。

COMMAND STATUS

Command: OK stdout: yes stderr: no

Before command completion, additional instructions may appear below.

lu1 Available






F1=Help F2=Refresh F3=Cancel Esc+6=Command
Esc+8=Image Esc+9=Shell Esc+0=Exit /=Find
n=Find Next

通过以下命令,来检查刚创建的设备的状态是否正常 :

# lsdev -C -t target# 查看 target 状态
target0 Available iSCSI Target Mode Target
tmiscsi0 Defined iSCSI Target Mode Targets Container
# lsdev -C -t lu# 查看 Target LUN 的状态
lu0 Available iSCSI Target Mode Logical Unit
lu1 Available iSCSI Target Mode Logical Unit
#

到现在,我们已经在服务器端,配置好了 iSCSI 的 target 服务。并将 2 个块设备映射成为 target0 的 Target LUN 设备。默认的配置选项没有打开安全控制访问以及 CHAP 认证机制。所以我们目前不需要关心访问权限等内容。这部分内容在最后一个章节讨论。





回页首


iSCSI software Initiator 配置

客户端需要我们配置客户端的 iqn 地址,还有 iSCSI Target 端的信息,我们将通过以下两个步骤来完成。

首先配置客户端的 iqn 地址。在客户端系统中使用 smit 来配置,smit 路径:smit chgiscsisw。

 Change / Show Characteristics of an iSCSI Protocol Device

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[Entry Fields]
iSCSI Protocol Device iscsi0
Description iSCSI Protocol Device
Status Available
iSCSI Initiator Name [iqn.aix01.hostid.c0a81582]
Maximum number of commands to queue to driver [200] +#
Discovery Policy file +
Maximum Targets Allowed [16] +#
Apply change to DATABASE only no +

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

在 iSCSI Initiator Name 一栏输入自定义的客户端 iqn,或使用自动生成的的 iqn 地址,我们在这里使用默认的生成的 iqn。下面我们通过编辑客户端 /etc/iscsi/targets 文件,添加 ISCSI target,也即配置 iSCSI 服务器信息。

# vi /etc/iscsi/targets
# The target line would look like:
# 10.2.1.105 3260 iqn.com.ibm-K167-42.fc1a "This is my password."
#
# EXAMPLE 3: iSCSI Target with CHAP(MD5) authentication and line continuation
# Assume the target is at address 10.2.1.106
# the valid port is 3260
# the name of the target is iqn.2003-01.com.ibm:00.fcd0ab21.shark128
# the CHAP secret is "123ismysecretpassword.fc1b"
# 字段格式为:“Server IP”端口“target iqn 地址”
192.168.21.134 3260 com.ibm.cn.swtarget0

在上面这个文件我们添加了最后一行,由三个字段组成,第一段指定服务器 IP 地址,第二段指定服务端口,第三段指定服务器 target 的 iqn 地址。我们配置好 target 信息之后,执行 cfgmgr 刷新一下,如果配置正确,我们就可以找到 iSCSI disk 了。如下图

# cfgmgr -l iscsi0# 刷新设备列表
# lsdev -Cc disk# 列出磁盘状态
hdisk0 Available Virtual SCSI Disk Drive
hdisk1 Available Other iSCSI Disk Drive
hdisk2 Available Other iSCSI Disk Drive





回页首


创建 Datavg

这一步较为简单,我们能够正确连接到 iSCSI 服务器端,访问到 iSCSI 磁盘后,可以通过下列命令创建一个 vg。

# mkvg -y datavg hdisk1 hdisk2
datavg
# lsvg -p datavg
datavg:
PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
hdisk1 active 511 511 103..102..102..102..102
hdisk2 active 9 9 02..02..01..02..02

至此,我们已完成了在 AIX 平台上的关于 iSCSI 的一个基本的配置过程,包括:iSCSI 服务器配置,iSCSI 客户端的配置,以及使用 iSCSI 磁盘创建 vg。但是没有涉及到访问控制和认证等安全相关的内容,下面我们就 iSCSI 服务器安全机制做一个介绍。





回页首


iSCSI 访问安全控制

在 AIX 6 中,iSCSI 安全机制由两部分组成,一是使用 CHAP 握手协议对客户端连接请求做认证;二是通过访问列表(access list),控制客户端的访问权限。

CHAP 握手协议

CHAP 握手协议是一种应用广泛的身份验证的协议,可以对客户端进行身份验证。在 AIX 6 中,我们可以为每个 target 设置一个 CHAP 认证密钥,在服务器端的 /etc/tmiscsi/autosecrets 文件中配置。格式如下图:

# 字段格式为: target 名称 CHAP 用户名 CHAP 密钥
# 本文中 target 名为 target0
# 因为 AIX 的 iSCSI 客户端会自动使用本机的 iqn 地址作为 CHAP 的用户名,
# 所以我们在这里设置 chap 名为客户端的 iqn 地址
# CHAP 密钥:我们设定为 test1234
#
target0 iqn.aix01.hostid.c0a81582 test1234

相应的我们需要修改客户端的的配置文件,编辑 /etc/iscsi/targets 文件,在后面添加 CHAP 密钥信息。

vi /etc/iscsi/targets
# 字段格式为:“Server IP”端口“target iqn 地址”“CHAP 密钥”。注意密钥需要在两边使用引号标记。
192.168.21.134 3260 com.ibm.cn.swtarget0 “test1234”

我们通过 cfgmgr 命令刷新下设备。

# cfgmgr -vl iscsi0
----------------
attempting to configure device 'iscsi0'
Time: 0 LEDS: 0x25b0
invoking /usr/lib/methods/cfgiscsi -l iscsi0
Number of running methods: 1
----------------
Completed method for: iscsi0, Elapsed time = 1
return code = 0
****************** stdout ***********
hdisk1 hdisk2
****************** no stderr ***********
。。。( 略 )

访问控制列表

访问控制列表,是一个基于客户端 iqn 地址来控制访问权限的一个列表。它可以精确到设置每一个输出磁盘的访问权限。要使用访问控制功能,首先需要在创建 target 协议设备的时候需要激活该功能。或通过 smit tmiscsi_proto_change 来修改 Access Control enabled 为 on。修改必须要先删除该设备下的所有子设备,所以最好在创建的时候激活该功能。

 Change / Show Characteristics of an iSCSI Target Protocol Device

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[Entry Fields]
iSCSI Target Protocol Device Name tmsw0
Maximum number of sessions [200] +#
Maximum transfer size in one PDU [262144] +#
Access Control enabled [on] +
Apply change to DATABASE only no +

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

访问权限的配置在 /etc/tmiscsi/access_lists 中设置,下面将提供一些配置例子以供参考。更详细的格式说明请参考 /etc/tmiscsi/access_lists 中的注释。

#vi /etc/tmiscsi/access_lists

# 基本命令格式为:
# target 名称 | LUN 名称客户端的 iqn 地址,客户端 iqn 地址…
# 例:Target0 下的所有磁盘可以被 iqn 地址为 iqn.aix01.hostid.c0a8 的客户端访问。
target0|all iqn.aix01.hostid.c0a8
#target0 的 LUN 名为 disk1 的磁盘可以被 iqn.aix01.hostid 和 iqn.aix02.hostid 访问
target0|disk1 iqn.aix01.hostid,iqn.aix02.hostid
# 所有的 target 中的所有的磁盘可以被任意一个客户端访问。
all|all any

小结

IBM 的 system p AIX 6 平台为中小企业的 iSCSI 应用提供了一种全新的解决方案。总体来说有以下三个优势。

  • AIX 6 的 iSCSI target 是集成在 AIX 安装光盘 expansion pack 里的一个软件包,无需额外费用。
  • 借助 system p 强大的 IO 吞吐能力,能够保证稳定和高速的 iSCSI 流量。同时 system p 的先进的架构还能保证 IO 带宽的线性扩展能力。性能优势远非其他系统平台所能比拟。
  • 作为 system p 的一贯特性:高可靠性,高可用性,高可服务性。这些特性不仅是在系统设计上得到保证,也一直被业界所认可。

我们看到依托于 system p 强大的硬件平台,AIX 6 提供的 iSCSI target 解决方案即高可靠又高性能。反过来说,AIX 6 进一步拓展了其 UNIX 平台的应用领域,将 system p 服务器打造成了一台“iSCSI 存储设备”。



参考资料

学习

讨论


关于作者

 

王 荣,IBM 科技产品(深圳)有限公司的技术支持工程师, 主要从事 HPC 应用测试和方案设计.熟悉 xNix 系统及各种交换网络(以太网,SAN 存储网络,InfiniBand 高性能网络,等),拥有 CCNA,RHCE认证 。你可以通过 oceanw@cn.ibm.com 和他联系。

 

原文:http://www.ibm.com/developerworks/cn/aix/library/0805_wangrong_iscsi/?S_TACT=105AGX52&S_CMP=tec-csdn

### 回答1: Android ADB Shell是Android Debug Bridge的缩写,旨在提供与Android设备之间的连接和调试,是Android开发的重要工具之一。使用ADB Shell可以直接在手机上执行Linux命令,而无需连接到PC上进行操作。 常用的ADB Shell命令有: 1. adb shell ls:列出当前目录下所有文件和文件夹; 2. adb shell ps:查看当前正在运行的进程; 3. adb shell cd:进入指定目录; 4. adb shell pwd:显示当前所在的目录; 5. adb shell rm:删除指定文件或目录; 6. adb shell mkdir:创建目录; 7. adb shell mv:移动或重命名文件或目录; 8. adb shell top:查看系统状态和资源情况。 此外,ADB Shell还可以用于发送广播、启动Activity、查看日志等操作,具有丰富的功能。需要注意的是,使用ADB Shell需要先将Android设备连接到PC并开启USB调试模式,否则无法正常执行命令。 总之,ADB Shell是Android开发和调试必须要掌握的工具之一,对于改善开发体验和提高开发效率会起到至关重要的作用。 ### 回答2: Android adb shell指令是在Android开发中非常常用的一种工具。它可以连接到Android设备并对设备进行控制和管理。在使用这些指令前,需要先保证已经安装了Android SDK,并且将其添加到了系统的PATH中。 其中,adb shell命令是进入设备命令控制台的主要指令,可以通过这个命令进入设备的内部命令行环境,从而实现一些需要在命令行环境中操作的任务。比如: 1. 查看设备的文件系统:可以通过adb shell命令进入设备的内部命令行环境,并使用ls命令、cat命令、cd命令等来查看、打印、切换设备的文件系统。 2. 安装和卸载应用程序:可以通过adb install命令来将apk包安装到设备上,并使用adb uninstall命令卸载应用程序。 3. 查看设备的IP地址:可以通过adb shell ip命令来查看设备的IP地址和MAC地址。 4. 启动Activity:可以通过adb shell am命令启动Activity,从而实现模拟用户点击和操作的功能。 5. 清除应用数据:可以使用adb shell pm命令清除应用程序的数据,来实现数据清除的功能。 此外,还有一些其他的adb shell指令,比如adb shell dumpsys命令可以获取设备的系统信息、adb shell screencap命令可以截取设备的屏幕、adb shell input命令可以模拟用户操作输入等等。这些指令都能够提高开发效率,让开发者更方便地管理和调试Android设备。 ### 回答3: Android的开发者工具软件包中,有一个重要的组件——adb(Android Debug Bridge),它被设计为一种模拟器上的调试工具,同时它也能够工作在真实的Android设备上。 adb是一个命令行工具,可以提供许多实用的功能,包括文件上传下载、设备状态监测、安装和卸载应用、执行Shell命令等等。 其中,adb shell指令是adb中最强大的一项指令,它可以帮助我们直接在设备上执行命令,操作设备上的文件、目录和进程等等。以下是几个常用的adb shell指令: 1. ls ls指令用来列出当前目录下的文件和文件夹,常用参数有: ls -a :列出目录下所有文件和文件夹,包括隐藏文件 ls -l :以详细的形式列出目录下的所有文件和文件夹,包括文件的属性和权限 2. cd cd指令用来进入指定的目录,可以使用绝对路径或相对路径: cd /sdcard :进入sdcard目录 cd .. :返回上一级目录 3. mkdir mkdir指令用来创建文件夹,使用方式: mkdir FolderName :创建名为FolderName的文件夹 4. rm rm指令用来删除文件或文件夹,使用方式: rm FileName :删除指定的文件 rm -r Folder :删除整个文件夹及其内容 5. ps ps指令用来列出设备上正在运行的进程,使用方式: ps :列出所有进程 ps | grep Keyword :列出包含关键字“Keyword”的进程 以上只是adb shell指令的部分功能,还有许多高级操作需要深入研究和学习。总之,adb shell指令在Android开发和调试中非常实用,可以提高效率和便捷性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值