使用 COMSTAR 和 ZFS 配置虚拟化存储环境

适用于 Oracle Solaris 11.1

作者:Alexandre BorgesOracle ACE

如何使用 COMSTAR 为 Windows、Linux 或 Mac OS 中运行的任何服务提供本地 iSCSI 存储。本文还介绍如何使用质询握手身份验证协议 (CHAP) 配置身份验证,保护 iSCSI 存储免受禁止的访问的侵入。有关 ZFS 的系列文章的第 1 部分。

2014 年 2 月发布


右箭头 第 1 部分 — 使用 COMSTAR 和 ZFS 配置虚拟化存储环境
右箭头 第 2 部分 — 使用交换监视和使用 ZFS 卷扩大交换空间
右箭头 第 3 部分 — 使用 ZFS 影子迁移
右箭头 第 4 部分 — 将 ZFS 数据集委托给非全局区域
右箭头 第 5 部分 — 使用 ZFS 加密
右箭头 第 6 部分 — 使用 ZFS 快照

想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。

简介

要执行本系列文章中所示示例,请下载并安装适用于 x86 的 Oracle Solaris 11.1。所有文章均使用主机名 solaris11-1(服务器)和 solaris11-2(客户端)。客户端和服务器均可使用 Oracle VM VirtualBox 安装在虚拟机中,每个需要 4 GB RAM,并使用虚拟机的主磁盘安装 Oracle Solaris 11.1 来宾操作系统,每个虚拟机占用 80 GB。我为第一个虚拟机 (solaris11-1) 配置了 5 个 4-GB 虚拟磁盘,但在示例中会增加磁盘数。

关于 ZFS 和 COMSTAR

Oracle Solaris 10 中引入的 ZFS 改变了数据的管理方式。它是一个 128 位文件系统,可以容纳高达 256 万亿目录和无限数目的文件。它确保了端到端的数据完整性。自从 Oracle Solaris 11 发布以来,它提供了许多新特性,让系统管理员轻松了许多。本系列文章将探索其中许多特性。

ZFS 是 Oracle Solaris 11 操作系统的一部分,但还有其他与 ZFS 相关的 Oracle 存储技术;例如 Oracle ZFS 存储设备,它提供了 ZFS 压缩等无缝特性;重复数据删除;能够使用条带、镜像和 RAID-Z 配置创建 ZFS 池;以及能够使用 IP 多路径和链路聚合控制协议 (LACP) 等网络特性访问存储。此外,它还支持多种协议:HTTP、iSCSI、HTTPS、NFS、SMB 等。另一种与 ZFS 有关的技术是 Oracle 云计算,因为利用基础设施即服务 (IaaS),可以使用 ZFS 架构满足存储要求。

Oracle Solaris 11 引入的名为通用多协议 SCSI 目标 (COMSTAR) 的框架支持 iSCSI 协议,可以将任何 Oracle Solaris 11 主机转换为 iSCSI 目标,为其他计算机提供存储;或者转换为 iSCSI 启动器,使用充当主机总线适配器 (HBA) 的软件访问 iSCSI 目标提供的存储。此功能非常有用,因为通过 iSCSI 协议提供的任何存储均可作为本地存储供 iSCSI 启动器访问,无需使用光纤通道 (FC) 等昂贵技术。此外,COMSTAR 还支持 FC 和以太网光纤通道 (FCoE) 等协议,无需 HBA。

通过 COMSTAR 配置 iSCSI 目标时主要需要注意两点,一是 iSCSI 磁盘不能用作专用转储设备,二是 iSCSI 数据可能最终导致网络超载。

配置 COMSTAR

重要事项:本节提供配置 COMSTAR 的分步过程,但首先要警告您需要密切注意系统提示:solaris11-1 是服务器,solaris11-2 是客户端。

  1. 首先,必须列出系统上的可用磁盘:

    root@solaris11-1:~# format
    Searching for disks...done
    AVAILABLE DISK SELECTIONS:
           0. c8t0d0 <VBOX-HARDDISK-1.0-80.00GB>
              /pci@0,0/pci1000,8000@14/sd@0,0
           1. c8t1d0 <VBOX-HARDDISK-1.0-16.00GB>
              /pci@0,0/pci1000,8000@14/sd@1,0
           2. c8t2d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@2,0
           3. c8t3d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@3,0
           4. c8t4d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@4,0
           5. c8t5d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@5,0
           6. c8t6d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@6,0
    Specify disk (enter its number): ^D
    

    系统上有 5 个可用磁盘:c8t2d0c8t6d0。目前这足够了。

  2. 下一步,需要在服务器上安装 COMSTAR storage-server 软件包(如果未安装的话),因为它包含配置和创建 iSCSI 目标所需的二进制文件:

    root@solaris11-1:~# pkg search storage-server            
    INDEX       ACTION VALUE                                PACKAGE
    incorporate depend pkg:/storage-server@0.1,5.11-0.133   pkg:/consolidation/osnet/osnet-incorporation@0.5.11-0.175.1.0.0.24.2
    pkg.fmri    set    solaris/storage-server               pkg:/storage-server@0.1-0.133
    pkg.fmri    set    solaris/storage/storage-server       pkg:/storage/storage-server@0.1-0.173.0.0.0.1.0
    pkg.fmri    set    solaris/group/feature/storage-server pkg:/group/feature/storage-server@0.5.11-0.175.1.0.0.24.2
    
    root@solaris11-1:~# pkg install storage-server
    
               Packages to install:  22
           Create boot environment:  No
    Create backup boot environment: Yes
                Services to change:   1
    
    DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
    Completed                              22/22     1035/1035    54.5/54.5  393k/s
    
    PHASE                                          ITEMS
    Installing new actions                     1901/1901
    Updating package state database                 Done
    Updating image state                            Done
    Creating fast lookup database                   Done
    
    root@solaris11-1:~# pkg info storage-server
    
              Name: group/feature/storage-server
           Summary: Multi protocol storage server group package
          Category: Drivers/Storage (org.opensolaris.category.2008)
                    Meta Packages/Group Packages (org.opensolaris.category.2008)
             State: Installed
         Publisher: solaris
           Version: 0.5.11
     Build Release: 5.11
            Branch: 0.175.1.0.0.24.2
    Packaging Date: Wed Sep 19 18:44:09 2012
              Size: 5.46 kB
              FMRI: pkg://solaris/group/feature/storage-server@0.5.11,5.11-0.175.1.0.0.24.2:20120919T184409Z
    
    root@solaris11-1:~# pkg list storage-server
    
    NAME (PUBLISHER)                                  VERSION                    IFO
    group/feature/storage-server                      0.5.11-0.175.1.0.0.24.2    i—
    
  3. 现在需要启用 stmf 服务,它负责 iSCSI LUN 并提供 iSCSI 目标功能:

    root@solaris11-1:~# svcs -a | grep stmf
    disabled        6:40:04 svc:/system/stmf:default
    
    root@solaris11-1:~# svcs -l svc:/system/stmf:default
    fmri         svc:/system/stmf:default
    name         STMF
    enabled      false
    state        disabled
    next_state   none
    state_time   Tue Nov 26 06:40:04 2013
    restarter    svc:/system/svc/restarter:default
    manifest     /lib/svc/manifest/system/stmf.xml
    dependency   require_all/none svc:/system/filesystem/local:default (online)
    
    root@solaris11-1:~# svcadm enable svc:/system/stmf:default
    
    root@solaris11-1:~# svcs -a | grep stmf
    online          6:55:44 svc:/system/stmf:default
    
  4. 创建一个池来存放 iSCSI 卷(和 LUN):

    root@solaris11-1:~# zpool create iscsi_pool c8t2d0
    root@solaris11-1:~# zpool status iscsi_pool
    
      pool: iscsi_pool
     state: ONLINE
      scan: none requested
    config:
    
          NAME        STATE     READ WRITE CKSUM
          iscsi_pool  ONLINE       0     0     0
          c8t2d0      ONLINE       0     0     0
    
    errors: No known data errors
    
  5. 创建一个卷 (iscsi_volume),它将用于在下一步创建 LUN:

    root@solaris11-1:~# zfs create -V 1Gb iscsi_pool/iscsi_volume
    root@solaris11-1:~# zfs list iscsi_pool/iscsi_volume
    
    NAME                      USED  AVAIL  REFER  MOUNTPOINT
    iscsi_pool/iscsi_volume  1.03G  3.91G    16K  -
    
  6. iscsi_volume 创建 LUN:

    root@solaris11-1:~# stmfadm create-lu /dev/zvol/rdsk/iscsi_pool/iscsi_volume
    Logical unit created: 600144F0991C8E0000005294663C0001
    
    root@solaris11-1:~# stmfadm list-lu
    LU Name: 600144F0991C8E0000005294663C0001
    
  7. 使上一步中创建的 LUN 对所有主机可见:

    root@solaris11-1:~# stmfadm add-view 600144F0991C8E0000005294663C0001
    
    root@solaris11-1:~# stmfadm list-view -l 600144F0991C8E0000005294663C0001
    View Entry: 0
        Host group   : All
        Target Group : All
        LUN          : Auto
    

    :此 LUN 可仅对特定主机可见。

  8. iSCSI 目标服务可能已禁用,因此需要启用它:

    root@solaris11-1:~# svcs -a | grep target
    disabled        6:39:36 svc:/network/iscsi/target:default
    disabled        6:40:01 svc:/system/fcoe_target:default
    disabled        6:40:14 svc:/system/ibsrp/target:default
    
    root@solaris11-1:~# svcadm enable svc:/network/iscsi/target:default
    root@solaris11-1:~# svcs svc:/network/iscsi/target:default
    STATE          STIME    FMRI
    online          7:45:38 svc:/network/iscsi/target:default
    
    root@solaris11-1:~# svcs -l svc:/network/iscsi/target:default
    fmri         svc:/network/iscsi/target:default
    name         iscsi target
    enabled      true
    state        online
    next_state   none
    state_time   Tue Nov 26 07:45:38 2013
    logfile      /var/svc/log/network-iscsi-target:default.log
    restarter    svc:/system/svc/restarter:default
    manifest     /lib/svc/manifest/network/iscsi/iscsi-target.xml
    dependency   require_any/error svc:/milestone/network (online)
    dependency   require_all/none svc:/system/stmf:default (online)
    
  9. 现在该建新的 iSCSI 目标了:

    root@solaris11-1:~# itadm create-target
    Target iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4 successfully created
    
    root@solaris11-1:~# itadm list-target -v
    TARGET NAME                                                  STATE    SESSIONS
    iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4  online   0        
    	alias:              -
    	auth:               none (defaults)
    	targetchapuser:     -
    	targetchapsecret:   unset
    	tpg-tags:           default
    

    :注意,iSCSI 目标设置为使用以下默认的 iSCSI 目标属性:

    root@solaris11-1:~# itadm list-defaults
    iSCSI Target Default Properties:
    
    alias:         <none>
    auth:          <none>
    radiusserver:  <none>
    radiussecret:  unset
    isns:          disabled
    isnsserver:    <none>
    
  10. 客户端 (solaris11-2) 上,验证网络配置是否正常:

    root@solaris11-2:~# ipadm show-addr
    ADDROBJ           TYPE     STATE        ADDR
    lo0/v4            static   ok           127.0.0.1/8
    net0/v4           dhcp     ok           192.168.1.111/24
    lo0/v6            static   ok           ::1/128
    net0/v6           addrconf ok           fe80::a00:27ff:fe27:6af9/10
    
    root@solaris11-2:~# ping solaris11-1
    solaris11-1 is alive
    
    root@solaris11-2:~# ping www.oracle.com
    www.oracle.com is alive
    
  11. 在客户端 (solaris11-2) 上,验证 iSCSI 启动器服务是否正在运行。如果未运行,则启用该服务:

    root@solaris11-2:~# svcs -a | grep initiator
    online          6:35:50 svc:/system/fcoe_initiator:default
    online          6:35:51 svc:/network/iscsi/initiator:default
    
    root@solaris11-2:~# svcs -l svc:/network/iscsi/initiator:default
    fmri         svc:/network/iscsi/initiator:default
    name         iSCSI initiator daemon
    enabled      true
    state        online
    next_state   none
    state_time   Tue Nov 26 06:35:51 2013
    logfile      /var/svc/log/network-iscsi-initiator:default.log
    restarter    svc:/system/svc/restarter:default
    contract_id  88
    manifest     /lib/svc/manifest/network/iscsi/iscsi-initiator.xml
    dependency   require_any/error svc:/milestone/network (online)
    dependency   require_all/none svc:/network/service (online)
    dependency   require_any/error svc:/network/loopback (online)
    
  12. 现在需要确定 iSCSI 目标标识符。为了确定,在服务器 (solaris11-1) 上键入以下命令:

    root@solaris11-1:~# itadm list-target
    TARGET NAME                                                  STATE    SESSIONS
    iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4  online   0        
    
    root@solaris11-1:~# itadm list-target -v
    TARGET NAME                                                  STATE    SESSIONS
    iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4  online   0        
         alias:              -
         auth:               none (defaults)
         targetchapuser:     -
         targetchapsecret:   unset
         tpg-tags:           default
    
  13. 客户端 (solaris11-2) 上,配置 iSCSI 启动器以便静态发现服务器 (solaris11-1) 上的 iSCSI 目标:

    root@solaris11-2:~# iscsiadm add static-config iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4,192.168.1.107
    
    root@solaris11-2:~# iscsiadm list static-config
    Static Configuration Target: iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4,192.168.1.107:3260
    
  14. 在客户端上,列出发现方法 (static) 并确保已启用:

    root@solaris11-2:~# iscsiadm list discovery
    Discovery:
         Static: disabled
         Send Targets: disabled
         iSNS: disabled
    
    root@solaris11-2:~# iscsiadm modify discovery --static enable
    root@solaris11-2:~# iscsiadm list discovery
    Discovery:
         Static: enabled
         Send Targets: disabled
         iSNS: disabled
    root@solaris11-2:~#
    
  15. 在客户端上,确认可以看到新的 iSCSI 目标:

    root@solaris11-2:~# iscsiadm list target
    Target: iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4
         Alias: -
         TPGT: 1
         ISID: 4000002a0000
         Connections: 1
    
  16. 现在可以从客户端访问该 iSCSI 目标,我们必须使用 devfsadm 命令找到新的 iSCSI 磁盘,并使用 format 命令列出它们:

    root@solaris11-2:~# devfsadm
    root@solaris11-2:~# format
    Searching for disks...done
    
    AVAILABLE DISK SELECTIONS:
           0. c0t600144F0991C8E0000005294663C0001d0 <SUN-COMSTAR-1.0 cyl 1022 alt 2 hd 64 sec 32>
              /scsi_vhci/disk@g600144f0991c8e0000005294663c0001
           1. c8t0d0 <VBOX-HARDDISK-1.0-80.00GB>
              /pci@0,0/pci1000,8000@14/sd@0,0
           2. c8t1d0 <VBOX-HARDDISK-1.0-16.00GB>
              /pci@0,0/pci1000,8000@14/sd@1,0
           3. c8t2d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@2,0
           4. c8t3d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@3,0
           5. c8t4d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@4,0
           6. c8t5d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@5,0
           7. c8t6d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@6,0
    Specify disk (enter its number): ^C
    

    注意输出中用粗体高亮显示的第一个磁盘。

  17. 使用发现的 iSCSI 磁盘创建一个包含 ZFS 文件系统的新存储池:

    root@solaris11-2:~# zpool create iscsi_pool c0t600144F0991C8E0000005294663C0001d0
    
    root@solaris11-2:~# zpool list
    NAME         SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
    iscsi_pool  1008M   116K  1008M   0%  1.00x  ONLINE  -
    repo_pool   15.9G  7.64G  8.24G  48%  1.00x  ONLINE  -
    rpool       79.5G  28.2G  51.3G  35%  1.00x  ONLINE  -
    
    root@solaris11-2:~# zpool status iscsi_pool
      pool: iscsi_pool
     state: ONLINE
      scan: none requested
    config:
    
        NAME                                     STATE     READ WRITE CKSUM
        iscsi_pool                               ONLINE       0     0     0
          c0t600144F0991C8E0000005294663C0001d0  ONLINE       0     0     0
    
    errors: No known data errors
    
    root@solaris11-2:~# zfs create iscsi_pool/iscsi_filesystem
    root@solaris11-2:~# zfs list iscsi_pool/iscsi_filesystem
    NAME                         USED  AVAIL  REFER  MOUNTPOINT
    iscsi_pool/iscsi_filesystem   31K   976M    31K  /iscsi_pool/iscsi_filesystem
    

使用其他发现方法

这就完成了吗?不,还没有!最好了解如何使用另一种发现方法,如 sendtargets,它提供了一种动态发现 iSCSI 目标的办法。

为此,先取消 iSCSI 启动器客户端 (solaris11-2) 配置,然后用这种新方式重新配置:

root@solaris11-2:~# iscsiadm list static-config
Static Configuration Target: iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4,192.168.1.107:3260

root@solaris11-2:~# zpool destroy iscsi_pool

root@solaris11-2:~# iscsiadm remove static-config iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4,192.168.1.107:3260

root@solaris11-2:~# iscsiadm list target 	(NO OUTPUT)

root@solaris11-2:~# iscsiadm modify discovery --static disable
root@solaris11-2:~# iscsiadm modify discovery --sendtargets enable
root@solaris11-2:~# iscsiadm list discovery
Discovery:
    Static: disabled
    Send Targets: enabled
    iSNS: disabled

root@solaris11-2:~# iscsiadm add discovery-address 192.168.1.114
root@solaris11-2:~# iscsiadm list target
Target: iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4
    Alias: -
    TPGT: 1
    ISID: 4000002a0000
    Connections: 1

root@solaris11-2:~# devfsadm
root@solaris11-2:~# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c0t600144F0991C8E0000005294663C0001d0 <SUN-COMSTAR-1.0-1.00GB>           /scsi_vhci/disk@g600144f0991c8e0000005294663c0001
       1. c8t0d0 <VBOX-HARDDISK-1.0-80.00GB>
          /pci@0,0/pci1000,8000@14/sd@0,0
       2. c8t1d0 <VBOX-HARDDISK-1.0-16.00GB>
          /pci@0,0/pci1000,8000@14/sd@1,0
       3. c8t2d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
          /pci@0,0/pci1000,8000@14/sd@2,0
       4. c8t3d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
          /pci@0,0/pci1000,8000@14/sd@3,0
       5. c8t4d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
          /pci@0,0/pci1000,8000@14/sd@4,0
       6. c8t5d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
          /pci@0,0/pci1000,8000@14/sd@5,0
       7. c8t6d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
          /pci@0,0/pci1000,8000@14/sd@6,0

真棒!!!我们完成了同样的启动器操作,但这次是用动态方法发现 iSCSI 目标磁盘。

添加身份验证

现在完成了吧?还没有。最好给配置添加一些身份验证。例如,可以使用 CHAP 方法(单向或双向)甚至 RAIDIUS 配置 iSCSI 身份验证。在本例中,我们将使用 CHAP 单向,即客户端(启动器)登录服务器(目标)访问 iSCSI 目标设备。

  1. 所有配置必须在目标上启动,我们通过 iSCSI 上下文提供 ZFS 卷。首先,确定 iSCSI 目标:

    root@solaris11-1:~# itadm list-target
    TARGET NAME                                                  STATE    SESSIONS
    iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4  online   0     
    
  2. 我们先前配置的 iSCSI 目标未使用 CHAP 身份验证方法,因此必须修改配置:

    root@solaris11-1:~# itadm modify-target -a chap iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4
    Target iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4 successfully modified
    
  3. 一旦更改了身份验证方法,必须为身份验证关联一个密码。本例中,将使用密码 oracle123456,因为 CHAP 密码必须 至少有 12 个字符:

    root@solaris11-1:~# itadm modify-target -s iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4
    Enter CHAP secret:
    Re-enter secret:
    Target iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4 successfully modified
    
  4. 为了让启动器登录目标,我们使用启动器节点注册启动器。为此,在客户端上执行以下命令:

    root@solaris11-2:~# iscsiadm list initiator-node
    Initiator node name: iqn.1986-03.com.sun:01:e00000000000.5250ac8e
    Initiator node alias: solaris11
       Login Parameters (Default/Configured):
           Header Digest: NONE/-
           Data Digest: NONE/-
           Max Connections: 65535/-
       Authentication Type: NONE
       RADIUS Server: NONE
       RADIUS Access: disabled
       Tunable Parameters (Default/Configured):
           Session Login Response Time: 60/-
           Maximum Connection Retry Time: 180/-
           Login Retry Time Interval: 60/-
       Configured Sessions: 1
    

    启动器节点名称列在输出的第一行。

  5. 使用上一步中确定的启动器节点名在目标主机(服务器 solaris11-1)中注册启动器:
    root@solaris11-1:~# itadm create-initiator -s iqn.1986-03.com.sun:01:e00000000000.5250ac8e
    Enter CHAP secret:
    Re-enter secret:
    
    root@solaris11-1:~# itadm list-initiator
    INITIATOR NAME                                               CHAPUSER  SECRET
    iqn.1986-03.com.sun:01:e00000000000.5250ac8e                 <none>         set
    
  6. 在启动器计算机上,确认客户端是否继续使用 iSCSI 动态发现 (sendtargets):

    root@solaris11-2:~# iscsiadm list discovery
    Discovery:
       Static: disabled
       Send Targets: enabled
       iSNS: disabled
    
  7. (可选)如果在 iSCSI 目标(服务器 solaris11-1)上使用 DHCP 并已更改 IP 地址(因为 DHCP 续租),可以删除旧的发现地址,然后添加一个新地址:

    root@solaris11-2:~# iscsiadm remove discovery-address 192.168.1.114 
    root@solaris11-2:~# iscsiadm add discovery-address 192.168.1.107
    root@solaris11-2:~# iscsiadm list target
    Target: iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4
       Alias: -
       TPGT: 1
       ISID: 4000002a0000
       Connections: 0
    
  8. 现在要在客户端中配置与在目标 (solaris11-1) 中定义的相同 CHAP 密码 (oracle123456),并将 iSCSI 客户端的客户端身份验证方法更改为 CHAP:

    root@solaris11-2:~# iscsiadm modify initiator-node --CHAP-secret
    Enter secret:
    Re-enter secret:
    
    root@solaris11-2:~# iscsiadm modify initiator-node --authentication CHAP
    
  9. 同样,在客户端列出目标和启动器节点:

    root@solaris11-2:~# iscsiadm list target
    Target: iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4
       Alias: -
       TPGT: 1
       ISID: 4000002a0000
       Connections: 0
    
    root@solaris11-2:~# iscsiadm list initiator-node
    Initiator node name: iqn.1986-03.com.sun:01:e00000000000.5250ac8e
    Initiator node alias: solaris11
       Login Parameters (Default/Configured):
           Header Digest: NONE/-
           Data Digest: NONE/-
           Max Connections: 65535/-
       Authentication Type: CHAP
           CHAP Name: iqn.1986-03.com.sun:01:e00000000000.5250ac8e
       RADIUS Server: NONE
       RADIUS Access: disabled
       Tunable Parameters (Default/Configured):
           Session Login Response Time: 60/-
           Maximum Connection Retry Time: 180/-
           Login Retry Time Interval: 60/-
       Configured Sessions: 1
    
  10. 我们需要强制检测客户端上的新设备,如果一切正常,列出可用磁盘:

    root@solaris11-2:~# devfsadm
    root@solaris11-2:~# format
    Searching for disks...done
    
    AVAILABLE DISK SELECTIONS:
           0. c0t600144F0991C8E0000005294663C0001d0 <SUN-COMSTAR-1.0-1.00GB>           /scsi_vhci/disk@g600144f0991c8e0000005294663c0001
           1. c8t0d0 <VBOX-HARDDISK-1.0-80.00GB>
              /pci@0,0/pci1000,8000@14/sd@0,0
           2. c8t1d0 <VBOX-HARDDISK-1.0-16.00GB>
              /pci@0,0/pci1000,8000@14/sd@1,0
           3. c8t2d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@2,0
           4. c8t3d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@3,0
           5. c8t4d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@4,0
           6. c8t5d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@5,0
           7. c8t6d0 <VBOX-HARDDISK-1.0 cyl 2046 alt 2 hd 128 sec 32>
              /pci@0,0/pci1000,8000@14/sd@6,0
    Specify disk (enter its number): ^C
    
  11. 成功了!要验证是否发生 CHAP 身份验证,可执行以下命令查看消息日志:

    root@solaris11-2:~# dmesg
    
    Nov 27 07:17:13 solaris11-2 iscsi: [ID 559844 kern.info] NOTICE: iscsi session(40) 
    iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4 online
    Nov 27 07:17:13 solaris11-2 scsi: [ID 583861 kern.info] sd9 at scsi_vhci0: unit-address 
    g600144f0991c8e0000005294663c0001: f_tpgs
    Nov 27 07:17:13 solaris11-2 genunix: [ID 936769 kern.info] sd9 is 
    /scsi_vhci/disk@g600144f0991c8e0000005294663c0001
    Nov 27 07:17:13 solaris11-2 genunix: [ID 408114 kern.info] 
    /scsi_vhci/disk@g600144f0991c8e0000005294663c0001 (sd9) online
    Nov 27 07:17:13 solaris11-2 genunix: [ID 483743 kern.info] 
    /scsi_vhci/disk@g600144f0991c8e0000005294663c0001 (sd9) multipath status: degraded: path 1 
    iscsi0/disk@0000iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab40001,0 is online
    
  12. 证明配置起作用的另一种办法是在服务器上键入以下命令:

    root@solaris11-1:~# itadm list-target
    TARGET NAME                                                  STATE    SESSIONS
    iqn.1986-03.com.sun:02:d087ef4d-f821-e276-b120-f71995504ab4  online   1       
    

    您可以看到,服务器上已经建立了一个有效会话。现在,可以按先前的方式创建存储池。

另请参见

如果您想看另一个更简单的 iSCSI 启动器用例,我编写了一个有关如何配置免费的虚拟磁盘库 (VTL) 的教程,在该文档末尾,我介绍了如何使用 iSCSI 协议从 Oracle Solaris 11 连接到 VTL。

此外,以下是我撰写的其他一些文章的链接:

以下是有关 Oracle Solaris 11 的一些资源:

关于作者

Alexandre Borges 是一位 Oracle ACE,曾于 2001 至 2010 年任职于 Sun Microsystems,并担任签约讲师,主要负责讲授 Oracle Solaris、Oracle Solaris Cluster、Oracle Solaris 安全性、Java EE、Sun 硬件和 MySQL 课程。目前,他为 Symantec、Oracle 合作伙伴和 EC-Council 提供课程教学,并且讲授一些关于信息安全的非常专业的课程。此外,他还是 Linux Magazine Brazil 的特约撰稿人和专栏作家。

修订版 1.0,2014 年 2 月 25 日

关注我们:
博客 | Facebook | Twitter | YouTube