vieyahn2017 / iBlog

44 stars 0 forks source link

4.4 iscsi Target、Initiator #78

Closed vieyahn2017 closed 5 years ago

vieyahn2017 commented 6 years ago

11

vieyahn2017 commented 6 years ago

存储知识学习之--IP网络存储iSCSI的概念与工作原理 https://blog.csdn.net/lqx0405/article/details/44777565

vieyahn2017 commented 6 years ago

基于Ubuntu 14.04的iSCSI存储配置--Target创建,Initiator连接 https://blog.csdn.net/nnuljl/article/details/38237437

[ tgt ]

apt-get install tgt 正在读取软件包列表... 完成 正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了: golang-doc golang-go golang-go-linux-amd64 golang-src libntdb1 python-ntdb Use 'apt-get autoremove' to remove them. 将会安装下列额外的软件包: libconfig-general-perl libibverbs1 librados2 librbd1 librdmacm1 sg3-utils 下列【新】软件包将被安装: libconfig-general-perl libibverbs1 librados2 librbd1 librdmacm1 sg3-utils tgt 升级了 0 个软件包,新安装了 7 个软件包,要卸载 0 个软件包,有 729 个软件包未被升级。 需要下载 1,754 kB/2,616 kB 的软件包。 解压缩后会消耗掉 9,648 kB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main librados2 amd64 0.80.11-0ubuntu1.14.04.3 [1,432 kB] 获取:2 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main librbd1 amd64 0.80.11-0ubuntu1.14.04.3 [323 kB] 下载 1,754 kB,耗时 3秒 (546 kB/s) 正在选中未选择的软件包 librados2。 (正在读取数据库 ... 系统当前共安装有 221254 个文件和目录。) 正准备解包 .../librados2_0.80.11-0ubuntu1.14.04.3_amd64.deb ... 正在解包 librados2 (0.80.11-0ubuntu1.14.04.3) ... 正在选中未选择的软件包 librbd1。 正准备解包 .../librbd1_0.80.11-0ubuntu1.14.04.3_amd64.deb ... 正在解包 librbd1 (0.80.11-0ubuntu1.14.04.3) ... 正在选中未选择的软件包 libibverbs1。 正准备解包 .../libibverbs1_1.1.7-1ubuntu1.1_amd64.deb ... 正在解包 libibverbs1 (1.1.7-1ubuntu1.1) ... 正在选中未选择的软件包 librdmacm1。 正准备解包 .../librdmacm1_1.0.16-1_amd64.deb ... 正在解包 librdmacm1 (1.0.16-1) ... 正在选中未选择的软件包 libconfig-general-perl。 正准备解包 .../libconfig-general-perl_2.52-1_all.deb ... 正在解包 libconfig-general-perl (2.52-1) ... 正在选中未选择的软件包 sg3-utils。 正准备解包 .../sg3-utils_1.36-1ubuntu1_amd64.deb ... 正在解包 sg3-utils (1.36-1ubuntu1) ... 正在选中未选择的软件包 tgt。 正准备解包 .../tgt_1%3a1.0.43-0ubuntu4.1~14.04.3_amd64.deb ... 正在解包 tgt (1:1.0.43-0ubuntu4.1~14.04.3) ... 正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ... 正在处理用于 ureadahead (0.100.0-16) 的触发器 ... 正在设置 librados2 (0.80.11-0ubuntu1.14.04.3) ... 正在设置 librbd1 (0.80.11-0ubuntu1.14.04.3) ... 正在设置 libibverbs1 (1.1.7-1ubuntu1.1) ... 正在设置 librdmacm1 (1.0.16-1) ... 正在设置 libconfig-general-perl (2.52-1) ... 正在设置 sg3-utils (1.36-1ubuntu1) ... 正在设置 tgt (1:1.0.43-0ubuntu4.1~14.04.3) ... initctl:未知任务: tgt 正在处理用于 libc-bin (2.19-0ubuntu6.5) 的触发器 ... /sbin/ldconfig.real: /usr/local/lib/libleveldb.so.1 is not a symbolic link

正在处理用于 ureadahead (0.100.0-16) 的触发器 ...

root@localhost:~# service tgt service
Usage: /etc/init.d/tgt {start|stop|forcedstop|restart|forcedrestart|reload|force-reload|status}
root@localhost:~# service tgt status
status:未知任务: tgt
vieyahn2017 commented 6 years ago

【上面tgt的方式 暂时失败的】

vieyahn2017 commented 6 years ago

Ubuntu 中 iSCSI Target 和 Initiator 的使用 http://e2718282.iteye.com/blog/1739281

如何在 Ubuntu 中使用 ISCSI ?且听我详细道来。

配置 Ubuntu 作为 ISCSI Target

在开始前,还是先更新一下系统吧: 
# apt-get update 
# apt-get upgrade 

(1) 安装 target 

# apt-get install iscsitarget iscsitarget-source iscsitarget-dkms 
资料上说,如果不安装后两个软件,在重启target的时候会报错。为了减少麻烦,还是老老实实都装上吧。 

(2) 修改 ISCSI Target 服务配置文件 

# vi /etc/default/iscsitarget 
ISCSITARGET_ENABLE=true 

(3) 为 Target 准备存储 

如果想用分区或者磁盘作为 Target,可以略过这一步;如果想用文件作为 Target,则可按照下面的示例来进行: 
# dd if=/dev/zero of=/var/lun1.bin count=0 obs=1 seek=50G 
上述命令在 /var 目录下创建了一个名为 lun1.bin,大小为 50G 的文件。 

(4) 修改 ISCSI Target 设备配置文件 

# vi /etc/iet/ietd.conf 
在文件的末尾添加如下信息: 
Target iqn.2012-12.local.mynet:storage.lun1 
Lun 1 Path=/var/lun1.bin,Type=fileio,ScsiId=lun1,ScsiSN=lun1 
第一行 Target 之后的内容可以任意修改,不过最好保持例子中的格式;第二行在该 Target 上创建了一个 LUN,序号为 1。 
当然,如果不想使用文件,也可以使用磁盘分区,只需修改 Path 属性即可:Path=/dev/sdd1 

(5) 重启 ISCSI Target 

# service iscsitarget restart 

如何使用 ISCSI Target 呢?这正是下一节要说的。 
vieyahn2017 commented 6 years ago

配置 Ubuntu 作为 ISCSI Initiator 当然,首先也要更新系统,和前面的步骤一样,这里就不啰嗦了。

(1) 安装 open-iscsi 

# apt-get install open-iscsi open-iscsi-utils 

(2) 配置 open-iscsi 

本文示例的 ISCSI Target 配置信息如下: 
ISCSI Server IP 192.168.1.100
ISCSI username  vivek
ISCSI password  yHni3Oq9wYzamS

如果 ISCSI Target Server 需要用户名密码,则需要在 /etc/iscsi/iscsid.conf 中进行配置,配置选项如下: 
node.session.auth.username = vivek 
node.session.auth.password = yHni3Oq9wYzamS 
discovery.sendtargets.auth.username = vivek 
discovery.sendtargets.auth.password = yHni3Oq9wYzamS 
其中,两组用户名和密码均为 Target Server 设定的用户名和密码。 

修改完成后,需要重启 open-iscsi 服务: 
# service open-iscsi restart 

(3) 发现 Target 

# iscsiadm -m discovery -t sendtargets -p 192.168.1.100 
示例输出如下: 
192.168.1.100:3260,1 iqn.2012-12.com.example:iscsi.vm0.c43030 
这里,3260 是 Target Server 的默认端口,所以在上面的命令中没有指定。如果使用其他端口,则需要用 # -p ip:port 的形式显示指定。 

(3) 使用 Target 

# iscsiadm -m node --targetname iqn.2012-12.com.example:iscsi.vm0.c43030 -p 192.168.1.100 --login 
示例输出如下: 
Logging in to [iface: default, target: iqn.2012-12.com.example:iscsi.vm0.c43030, portal: 192.168.1.1,3260] 
Login to [iface: default, target: iqn.2012-12.com.example:iscsi.vm0.c43030, portal: 192.168.1.1,3260]: successful 

登陆成功后,可以在 /var/log/messages 中看到如下消息: 
# tail -f /var/log/messages 
示例输出如下: 
Jul 2 12:54:04 vivek-laptop kernel: [ 4418.610787] scsi6 : iSCSI Initiator over TCP/IP 
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.649208] scsi 6:0:0:0: Direct-Access QNAP iSCSI Storage 3.1 PQ: 0 ANSI: 5 
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.649670] sd 6:0:0:0: Attached scsi generic sg3 type 0 
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.650531] sd 6:0:0:0: [sdc] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB) 
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.651889] sd 6:0:0:0: [sdc] Write Protect is off 
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.652643] sd 6:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA 
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.654620] sdc: unknown partition table 
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.692364] sd 6:0:0:0: [sdc] Attached SCSI disk /dev/sdc is new block level device. 

说明 /dev/sdc 已经作为一个新的块设备被添加到系统中了,该设备使用的就是服务器上的 ISCSI Target。
vieyahn2017 commented 6 years ago

netstat -anlpt | grep 3260

vieyahn2017 commented 6 years ago

配置 Ubuntu 作为 ISCSI Target

apt-get install  iscsitarget iscsitarget-dkms

修改 ISCSI Target 服务配置文件 
# vi /etc/default/iscsitarget 
ISCSITARGET_ENABLE=true 

dd if=/dev/zero of=/var/lun1.bin count=0 obs=1 seek=10G 
上述命令在 /var 目录下创建了一个名为 lun1.bin,大小为 10G 的文件。 

# vi /etc/iet/ietd.conf 
在文件的末尾添加如下信息: 
Target iqn.2012-12.local.mynet:storage.lun1 
Lun 1 Path=/var/lun1.bin,Type=fileio,ScsiId=lun1,ScsiSN=lun1 

service iscsitarget restart
vieyahn2017 commented 6 years ago

配置 Ubuntu 作为 ISCSI Initiator

apt-get install open-iscsi open-iscsi-utils 
service open-iscsi restart 

iscsiadm -m discovery -t sendtargets -p 192.168.0.103

iscsiadm -m node --targetname iqn.2012-12.local.mynet:storage.lun1 --login
iscsiadm -m node --targetname iqn.2012-12.local.mynet:storage.lun1 --logout
vieyahn2017 commented 6 years ago
# BEGIN RECORD 2.0-873
node.name = iqn.2012-12.local.mynet:storage.lun1
node.tpgt = 1
node.startup = manual
node.leading_login = No
iface.hwaddress = <empty>
iface.ipaddress = <empty>
iface.iscsi_ifacename = default
iface.net_ifacename = <empty>
iface.transport_name = tcp
iface.initiatorname = <empty>
iface.bootproto = <empty>
iface.subnet_mask = <empty>
iface.gateway = <empty>
iface.ipv6_autocfg = <empty>
iface.linklocal_autocfg = <empty>
iface.router_autocfg = <empty>
iface.ipv6_linklocal = <empty>
iface.ipv6_router = <empty>
iface.state = <empty>
iface.vlan_id = 0
iface.vlan_priority = 0
iface.vlan_state = <empty>
iface.iface_num = 0
iface.mtu = 0
iface.port = 0
node.discovery_address = 127.0.0.1
node.discovery_port = 3260
node.discovery_type = send_targets
node.session.initial_cmdsn = 0
node.session.initial_login_retry_max = 8
node.session.xmit_thread_priority = -20
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.nr_sessions = 1
node.session.auth.authmethod = None
node.session.auth.username = <empty>
node.session.auth.password = <empty>
node.session.auth.username_in = <empty>
node.session.auth.password_in = <empty>
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 30
node.session.err_timeo.tgt_reset_timeout = 30
node.session.err_timeo.host_reset_timeout = 60
node.session.iscsi.FastAbort = Yes
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.DefaultTime2Wait = 2
node.session.iscsi.MaxConnections = 1
node.session.iscsi.MaxOutstandingR2T = 1
node.session.iscsi.ERL = 0
node.conn[0].address = 192.168.0.103
node.conn[0].port = 3260
node.conn[0].startup = manual
node.conn[0].tcp.window_size = 524288
node.conn[0].tcp.type_of_service = 0
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.auth_timeout = 45
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD
# BEGIN RECORD 2.0-873
node.name = iqn.2012-12.local.mynet:storage.lun1
node.tpgt = 1
node.startup = manual
node.leading_login = No
iface.hwaddress = <empty>
iface.ipaddress = <empty>
iface.iscsi_ifacename = default
iface.net_ifacename = <empty>
iface.transport_name = tcp
iface.initiatorname = <empty>
iface.bootproto = <empty>
iface.subnet_mask = <empty>
iface.gateway = <empty>
iface.ipv6_autocfg = <empty>
iface.linklocal_autocfg = <empty>
iface.router_autocfg = <empty>
iface.ipv6_linklocal = <empty>
iface.ipv6_router = <empty>
iface.state = <empty>
iface.vlan_id = 0
iface.vlan_priority = 0
iface.vlan_state = <empty>
iface.iface_num = 0
iface.mtu = 0
iface.port = 0
node.discovery_address = 127.0.0.1
node.discovery_port = 3260
node.discovery_type = send_targets
node.session.initial_cmdsn = 0
node.session.initial_login_retry_max = 8
node.session.xmit_thread_priority = -20
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.nr_sessions = 1
node.session.auth.authmethod = None
node.session.auth.username = <empty>
node.session.auth.password = <empty>
node.session.auth.username_in = <empty>
node.session.auth.password_in = <empty>
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 30
node.session.err_timeo.tgt_reset_timeout = 30
node.session.err_timeo.host_reset_timeout = 60
node.session.iscsi.FastAbort = Yes
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.DefaultTime2Wait = 2
node.session.iscsi.MaxConnections = 1
node.session.iscsi.MaxOutstandingR2T = 1
node.session.iscsi.ERL = 0
node.conn[0].address = 127.0.0.1
node.conn[0].port = 3260
node.conn[0].startup = manual
node.conn[0].tcp.window_size = 524288
node.conn[0].tcp.type_of_service = 0
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.auth_timeout = 45
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD
vieyahn2017 commented 6 years ago

fdisk -l

vieyahn2017 commented 6 years ago

iscsitarget/tgt/STGT/SCST/LIO 是常见的几种iscsi target

vieyahn2017 commented 6 years ago

Ubuntu搭建iscsi target登陆挂载存储全过程 https://wenku.baidu.com/view/46f3a8ffa2161479161128bf.html

vieyahn2017 commented 6 years ago

iscsiadm -m session 查看登录的session

vieyahn2017 commented 6 years ago

iscsiadm -m discovery -t sendtargets -p 100.133.10.21

iscsiadm -m node -T iqn.2006-08.com.huawei:oceanstor:01018310717042029::0:100.133.10.21 -p 100.133.10.21:3260 --login