先说明下,不建议在生产环境使用,写这个只是为了理解ISCSI以及Multipath* I/O 的工作方式;这次测试的操作系统是CENTOS6 ;没别的了懒得装 就先用这个,7系列可能包的名字有些不同, 根据情况百度吧!
iSCSI目标创建 iSCSI目标可以是网络中的专用物理设备,也可以是网络存储服务器上的iSCSI软件配置的逻辑设备。目标是SCSI总线通信的终点。由发起者访问的目标上的存储由LUN定义。
创建iSCSI目标
安装 scsi-target-utils
.
1 yum install scsi-target-utils
打开iptables3260端口
1 2 iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT service iptables save
启动并启用target服务
1 2 service tgtd start chkconfig tgtd on
为LUN分配存储空间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command . Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x43eb8efd. Command (m for help ): n Partition type : p primary (0 primary, 0 extended, 4 free) e extended Select (default p): *Enter* Using default response p Partition number (1-4, default 1): *Enter* First sector (2048-2097151, default 2048): *Enter* Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +250M Partition 1 of type Linux and of size 250 MiB is set Command (m for help ): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
编辑/etc/tgt/targets.conf创建目标容器
1 2 3 4 5 6 7 cat /etc/tgt/targets.conf ... default-driver iscsi <target iqn.2015-06.com.example.test:target1> backing-store /dev/sdb1 initiator-address 192.168.10.1 </target>
创建一个backing-store sdb1,允许192.168.10.1启动target,
iqn命名规则:
iqn.*YYYY*-*MM*.*reverse.domain.name*:*OptionalIdentifier*
.
重启target服务.
1 2 3 service tgtd restart Stopping SCSI target daemon: [ OK ] Starting SCSI target daemon: [ OK ]
查看配置.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 tgt-admin --show Target 1: iqn.2015.06.com.example.test: server System information: Driver: iscsi State: ready I_T nexus information: LUN information: Lun: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type : null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 2147 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type : rdwr Backing store path: /dev/sdb1 Backing store flags: Account information: ACL information: 10.10.1.1
创建 iSCSI Initiator iSCSI启动器是希望访问目标或服务器上的存储的客户端。该过程需要知道目标的IP地址。
创建 iSCSI Initiator
安装 iscsi-initiator-utils
.
1 yum install iscsi-initiator-utils
发现 target.使用target端ip.
1 2 3 iscsiadm -m discovery -t sendtargets -p 192.168.1.2 Starting iscsid: [ OK ] 192.168.1.2:3260,1 iqn.2015-06.com.example.test:target1
显示了target端的iqn,login时需要此项.
连接到 target.
1 2 3 iscsiadm -m node -T iqn.2015-06.com.example:target1 --login Logging in to [iface: default, target: iqn.2015-06.com.example:target1, portal: 192.168.1.2,3260] (multiple) Login in to [iface: default, target: iqn.2015-06.com.example:target1, portal: 192.168.1.2,3260] successful.
显示ISCSI磁盘名称.
1 2 grep "Attached SCSI" /var/log /messages Jun 19 01:30:26 test kernel: sd 7:0:0:1 [sdb] Attached SCSI disk
创建个lvm玩.
1 pvcreate /dev/sdb && vgcreate test /dev/sdb && lvcreate -n newtest -l 100%FREE test
挂载.
1 2 mkdir /mnt/iscsiTest mount /dev/mapper/test -newtest /mnt/iscsiTest
Make it persistent across reboots by editing the /etc/fstab
file.
1 2 3 4 blkid /dev/mapper/test -newtest /dev/sdb: UUID="b01cd289-0f48-4e7c-bf4b-3b822f0a4332" TYPE="ext4" vim /etc/fstab UUID=b01cd289-0f48-4e7c-bf4b-3b822f0a4332 /mnt/iscsiTest ext4 _netdev 0 0
命令手册 名称 iscsiadm - open-iscsi管理实用程序
概要 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 SYNOPSIS iscsiadm -m discovery [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I iface -t type -p ip:port [ -l ] ] | [ -o operation ] [ -n name ] [ -v value ] iscsiadm -m node [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ -S ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ] [ -n name ] [ -v value ] [ -p ip:port ] ] iscsiadm -m session [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -r sessionid | sysfsdir [ -R ] [ -u | -s ] ] iscsiadm -m iface [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I ifacename ] [ [ -o operation ] [ -n name ] [ -v value ] ] iscsiadm -m fw [-l] iscsiadm -m host [ -P printlevel ] [ -H hostno ] iscsiadm -k priority
描述 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 iscsiadm实用程序是一个允许发现的命令行工具 登录到iSCSI目标,以及访问和管理开放源码, iscsi数据库。 Open-iscsi不使用iSCSI RFC定义的术语节点, 节点是单个iSCSI启动器或目标。Open-iscsi使用 术语节点指向目标上的门户。 对于会话模式,使用会话ID(sid)。一个会话的sid可以 通过运行iscsiadm -m session -P找到。会话ID和sysfs 路径目前不持续,部分由时间决定 会话设置。 请注意,许多节点和发现操作都要求 iSCSI守护进程(iscsid)正在运行。
OPTIONS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 -d,-- debug = debug_level 打印调试信息。debug_level的有效值为0 到8。 -h,-- help 显示帮助文本并退出 -I, - 接口[iface] interface参数指定要用于的iSCSI接口 操作。iSCSI接口(iface)定义在 的/ etc /的iSCSI / ifaces。对于硬件iSCSI(qla4xxx),iface配置 必须具有硬件地址(iface.hwaddress = port的MAC 地址)和driver / transport_name(iface.transport_name)。 iface的名字是iface配置的文件名。对于 软件iSCSI,iface配置必须具有硬件 地址(iface.hwaddress)或网络层的接口名称 (iface.net_ifacename),它必须具有 驱动器/ TRANSPORT_NAME 可用的驱动程序/ iscsi_transports是tcp(软件iSCSI 通过TCP / IP),iser(软件iSCSI over infinniband)或qla4xxx (Qlogic 4XXXX HBA)。hwaddress是MAC地址或for 软件iSCSI可能是特殊值“默认” 指示启动器不将会话绑定到特定的会话 硬件资源,而是允许网络或infinniband 层决定做什么。没有必要创建一个iface 配置默认行为。如果不指定iface, 那么使用默认行为。 如上所述,有一个特殊的iface名称是默认的。那里 是三个其他 - cxgb3i,bnx2i和iser,它不绑定 会话到一个特定的卡,但会绑定会话 cxgb3i,bnx2i或iser传输。这些是实验和 不支持使用稳定的界面。 在发现模式下,多个接口可以通过传递 在多个I / - 接口实例中。例如, “iscsiadm -m discovery -t st -p mytarget -I iface0 -I iface2” 将直接使用iscsiadm设置节点数据库以创建记录 这将通过传入的两个内容创建会话。 在节点模式下,每个呼叫中只支持单个接口 到iscsiadm。 此选项对发现,节点和iface模式有效。 -k,-- killiscsid = [priority] 当前优先级必须为零。这将立即停止 iscsid操作和关闭iscsid。它不注销任何 会话。运行此命令与执行“killall”相同 iscsid“,通常不能使用,因为如果iscsid 正在进行错误恢复,或者iscsid是否存在错误 没有运行,系统可能无法恢复。这个 命令和iscsid的SIGTERM处理是实验性的。 -l,-- login 对于节点和fw模式,登录到指定的记录。发现 模式,登录到所有发现的目标。 此选项仅对发现和节点模式有效。 -L,-- loginall == [all | manual | automatic] 对于节点模式,使用节点或连接启动登录所有会话 值得传入或全部运行,除了标记 onboot,如果全部被传入。 此选项仅对节点模式有效(它是有效的但不是 功能用于会话模式)。 -m, -mode op 指定模式。 op必须是发现,节点,fw,主机 iface或会话之一。 如果没有指定其他选项:对于发现和 节点,全部显示各自的记录; 为会议,所有显示活动会话和连接; 对于fw,所有启动显示固件值; 对于主机,所有iSCSI主机都是 显示; 对于iface,所有的ifaces都设置在/ etc / iscsi / ifaces中 被显示。 -n,-- name = name 在记录中 指定字段 名称。用于更新 运营商。 -o,-- op = op 指定数据库操作符op。op必须是新的,删除, 更新或显示之一。 此选项对于除fw以外的所有模式均有效。删除不应该 用于运行会话。如果iscsiadm会停止 会话,然后删除记录。 new为给定的门户(IP地址)创建一个新的数据库记录 和端口号)。在发现模式下,iscsiadm将创建新的 目标返回的门户的记录。 删除删除指定的recid。在发现节点中,如果是iscsiadm 正在执行发现,它将删除门户的记录 不再退回。 更新 将使用名称将recid更新为指定的值。 在发现节点中,如果iscsiadm正在执行发现 不需要recid, name 和 value 参数。更新 操作将对目标返回的门户进行操作, 并将使用配置文件中的info更新节点记录 和命令行。 show是node,discovery和iface的默认行为 模式。当没有传入命令时也会使用它 会话模式和一个运行的sid被传入。 名称和值是 当与show一起使用时,被忽略。 -p,-- portal = ip [:port] 使用ip-address ip和port的目标端口,默认端口 值为3260。 此选项仅对发现或节点操作有效 与新的操作员。 这应该与节点模式下的--target一起使用,以指定 open-iscsi文档被称为节点或节点记录。 注意:open-iscsi使用单词节点,不匹配 iSCSI RFC的iSCSI节点术语。 -P,-- print = printlevel 如果在节点模式下以树形式打印节点。如果在会话模式 以树形式打印会话。如果在发现模式下打印 节点树形式。 -T,--targetname = TARGETNAME 使用目标 TARGETNAME。 这应该与节点模式中的--portal一起使用来指定 open-iscsi文档被称为节点或节点记录。 注意:open-iscsi使用单词节点,不匹配 iSCSI RFC的iSCSI节点术语。 -r, -- sid = sid | sysfsdir 使用会话ID sid。会话的sid可以从中找到 在会话模式下运行iscsiadm和--info参数。 可以使用包含会话的sysfs路径,而不是sid。 例如使用以下之一: /sys/devices/platform/hostH/sessionS/targetH:B:I/H:B:I:L, /sys/devices/platform/hostH/sessionS/targetH:B:I, or /sys/devices/platform/hostH/sessionS, sid | sysfsdir 仅用于会话模式。 -R,-- rescan 在会话模式下,如果sid也通过重新扫描会话。如果 没有通过重新扫描所有正在运行的会话。 在节点模式下,重新扫描通过目标运行的会话, 门户,iface元组传入。 -s,-- stats 显示会话统计信息 -S,--show 显示记录时,不要隐藏屏蔽值,例如 CHAP密码(密码)。 此选项仅对节点和会话模式有效。 -t,-- type = type 类型必须是sendtargets(或缩写为st), slp, isns 或 fw。目前只支持sendtargets,fw和iSNS,请参阅 DISCOVERY TYPES部分。 此选项仅对发现模式有效。 -u,-- logout 注销指定的记录。 此选项仅对节点和会话模式有效。 -U,-- logoutall == [全部,手动,自动] 注销所有会话与节点或conn启动值传递 在或所有运行的sesssion,除了标记在启动,如果一切都是 传入 此选项仅对节点模式有效(它是有效的但不是 功能用于会话模式)。 -v,-- value = value 指定与更新运算符一起使用的值。 此选项仅对节点模式有效。 -V,-- version 显示版本并退出
发现类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 iSCSI定义了3种发现类型:SendTargets,SLP和iSNS。 发送目标 一种本地iSCSI协议,允许每个iSCSI目标发送一个 启动器的可用目标列表。 SLP( 可选)iSCSI目标可以使用服务定位协议 (SLP)宣布可用的目标。发起者可以 可以直接实现SLP查询,也可以使用单独的工具 获取有关可用目标的信息。 iSNS iSNS(Internet存储名称服务)记录有关信息 较大网络中的存储卷。利用iSNS, 使用iSNS服务器的地址必须在iscsid.conf中设置 “isns.address”值,iscsiadm必须在发现模式下运行 与“isns”发现类型。 open-iscsi中的iSNS支持是实验性的。iscsid.conf 设置,iscsiadm语法和节点DB布局可能会改变。 fw 几个NIC和系统包含一个迷你iSCSI启动器 可用于启动。获取用于启动fw的值 选项可以使用。做fw发现,不存储 持久记录在节点或发现DB中,因为 值存储在系统或NIC的资源中。 执行fw发现将打印门户,像其他 发现方法。查看其他设置,如CHAP值和 启动器设置,就像在节点模式下一样,运行“iscsiadm” -m fw“。 open-iscsi中的fw支持是实验性的。设置和 iscsiadm语法和输出格式可能会改变。 iscsiadm支持iSNS (isns)或SendTargets (st) 发现类型。 SLP实施正在开发中。
例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 发现给定IP地址的目标: iscsiadm - 模式发现--type sendtargets --portal 192.168.1.10 登录,必须使用发现找到的节点记录ID: iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --login 登出: iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --logout 列表节点记录: iscsiadm --mode node 显示给定节点记录的所有数据: iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260
FILES 1 2 3 4 5 6 7 8 /etc/iscsi/iscsid.conf 启动时由iscsid和iscsiadm读取的配置文件。 /etc/iscsi/initiatorname.iscsi 启动时由iscsid和iscsiadm读取的包含iSCSI InitiatorName和InitiatorAlias的文件。 /var/lib/iscsi/nodes/ 此目录包含具有目标的节点。 /var/lib/iscsi/send_targets 此目录包含门户。