Closed vieyahn2017 closed 5 years ago
存储知识学习之--IP网络存储iSCSI的概念与工作原理 https://blog.csdn.net/lqx0405/article/details/44777565
基于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
【上面tgt的方式 暂时失败的】
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 呢?这正是下一节要说的。
配置 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。
netstat -anlpt | grep 3260
配置 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
配置 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
# 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
fdisk -l
iscsitarget/tgt/STGT/SCST/LIO 是常见的几种iscsi target
Ubuntu搭建iscsi target登陆挂载存储全过程 https://wenku.baidu.com/view/46f3a8ffa2161479161128bf.html
iscsiadm -m session 查看登录的session
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
11