multipath多路径实验01-构建iSCSI模拟环境
multipath多路径实验01-构建iSCSI模拟环境
前几天跟同事网上闲聊技术,吐槽之前自己没有配置过多路径的经历,虽然多路径的配置过程很简单,职责划分也应是主机或存储工程师来搞定,DBA只需要直接拿来用,但这样总感觉少了些踏实感。
本着学习的心态,在虚拟环境下模拟,来做一个多路径的实验。
本文主要描述使用iscsi模拟存储划出的1个LUN,最终由两条链路连接到主机,显示为两个磁盘的场景。为后续配置multipath提供前置环境。
首先虚拟一个linux服务器,用作搭建iSCSI服务器。然后客户端直接就使用我之前的一套RAC环境的第1个节点,在这里就相当于普普通通的一个iSCSI客户端。
要求如下:
客户端(192.168.56.150),需要新增配置两块网卡;
服务端(192.168.56.99),需要新增配置两块网卡.
这里实际使用Virtual Box给每台机器新增两个内部网络即可。
客户端配置2块网卡:
--复制现有网卡配置 [root@jyrac1 network-scripts]# cat ifcfg-eth3DEVICE=eth3 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=10.10.10.11 NETMASK=255.255.255.0 [root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth4[root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth5--修改DEVICE名称和IPADDR信息,其他不变 eth4 10.10.1.150 eth5 10.10.2.150 --启动新配置的两块网卡 ifup eth4 ifup eth5
这里的eth4和eth5可以想象成是和存储连接的内部网络。
服务端配置2块网卡:
--复制现有网卡配置 [root@Storage network-scripts]# cat ifcfg-eth2 DEVICE=eth2 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=192.168.56.99 NETMASK=255.255.255.0 [root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth3[root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth4--修改DEVICE名称和IPADDR信息,其他不变 eth3 10.10.1.99 eth4 10.10.2.99 --启动新配置的两块网卡 ifup eth3 ifup eth4
测试服务端和客户端的IP互通没问题。
2.准备软件环境各自安装scsi相关的软件包。
引用鸟哥的iSCSI搭建说明:
scsi-target-utils:用來將 Linux 系統模擬成為 iSCSI target 的功能;
iscsi-initiator-utils:掛載來自 target 的磁碟到 Linux 本機上。
这样我们就知道服务端需要安装scsi-target-utils这个包,客户端需要安装iscsi-initiator-utils这个包。
现在来直接yum安装对应软件,如果yum本地源配置有问题,可以参考之前文章:
配置yum本地源:http://www.cnblogs.com/jyzhao/p/3938290.html
--服务端
yum安装scsi-target-utils
yum install scsi-target-utils
--客户端
yum安装iscsi-initiator-utils
yum install iscsi-initiator-utils3.模拟存储加盘
--服务端操作
填加一个50G的盘, 实际就是用来模拟存储新增实际的一块盘 。我这里选择固定大小存储50G。
我这里新增加的盘显示为/dev/sdb,我将它创建成lvm,并先分出一个10g的lv,供后续使用。
[root@Storage ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created[root@Storage ~]# vgcreate vg_storage /dev/sdb Volume group "vg_storage" successfully created[root@Storage ~]# lvcreate -L 10g -n lv_lun1 vg_storage Logical volume "lv_lun1" created
lvm的信息:
[root@Storage ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg_linuxbase lvm2 a-- 29.51g 0 /dev/sdb vg_storage lvm2 a-- 50.00g 40.00g [root@Storage ~]# vgs VG #PV #LV #SN Attr VSize VFree vg_linuxbase 1 2 0 wz--n- 29.51g 0 vg_storage 1 1 0 wz--n- 50.00g 40.00g [root@Storage ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_root vg_linuxbase -wi-ao---- 27.54g lv_swap vg_linuxbase -wi-ao---- 1.97g lv_lun1 vg_storage -wi-a----- 10.00g [root@Storage ~]# lvscan ACTIVE '/dev/vg_storage/lv_lun1' [10.00 GiB] inherit ACTIVE '/dev/vg_linuxbase/lv_root' [27.54 GiB] inherit ACTIVE '/dev/vg_linuxbase/lv_swap' [1.97 GiB] inherit
从上面LVM相关信息的输出可以看到,我这里新建的lv已经是正常状态, 可以理解成为模拟存储上划分出的一个10g大小的LUN 。
4.配置iSCSI服务端iSCSI服务端主要配置文件:/etc/tgt/targets.conf
iSCSI 有一套自己分享 target 檔名的定義,基本上,藉由 iSCSI 分享出來的 target 檔名都是以 iqn 為開頭,意思是:『iSCSI Qualified Name (iSCSI 合格名稱)』的意思(註5)。那麼在 iqn 後面要接啥檔名呢?通常是這樣的:
iqn.yyyy-mm.
所以我这里按照规范设置的名称,添加好如下配置:
<target iqn.2017-07.com.cnblogs.jyzhao:alfreddisk> backing-store /dev/vg_storage/lv_lun1 # Becomes LUN 1</target>
配置完成后,就启动服务和设置开机自启动:
[root@Storage ~]# service tgtd startStarting SCSI target daemon: [ OK ] [root@Storage ~]# chkconfig tgtd on[root@Storage ~]# chkconfig --list|grep tgtdtgtd 0:off 1:off 2:on 3:on 4:on 5:on 6:off[root@Storage ~]# service tgtd statustgtd (pid 1763 1760) is running...
然后查询下相关的信息,比如占用的端口、LUN信息(Type:disk):
[root@Storage ~]# netstat -tlunp |grep tgttcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1760/tgtd tcp 0 0 :::3260 :::* LISTEN 1760/tgtd [root@Storage ~]# tgt-admin --showTarget 1: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk 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: 10737 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: rdwr Backing store path: /dev/vg_storage/lv_lun1 Backing store flags: Account information: ACL information: ALL5.配置iSCSI客户端
确认开机启动项设置开启:
[root@jyrac1 ~]# chkconfig --list|grep scsiiscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:offiscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
使用iscsiadm命令扫描服务端的LUN
iscsiadm -m discovery -t sendtargets -p 10.10.1.99
--报错[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.99[ OK ] iscsid: [ OK ]iscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: cannot make connection to 10.10.1.99: No route to hostiscsiadm: connection login retries (reopen_max) 5 exceedediscsiadm: Could not perform SendTargets discovery: encountered connection failure[root@jyrac1 ~]# --ping可以通[root@jyrac1 ~]# ping 10.10.1.99PING 10.10.1.99 (10.10.1.99) 56(84) bytes of data.64 bytes from 10.10.1.99: icmp_seq=1 ttl=64 time=0.789 ms64 bytes from 10.10.1.99: icmp_seq=2 ttl=64 time=0.536 ms^C--- 10.10.1.99 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1073msrtt min/avg/max/mdev = 0.536/0.662/0.789/0.129 ms
上面这个报错是因为scsi服务端的主机防火墙没有关闭,端口受到限制,关闭防火墙后,再尝试,就可以正常发现如下内容:
[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.9910.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.2.9910.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
查看/var/lib/iscsi/nodes/下的文件:
[root@jyrac1 ~]# ll -R /var/lib/iscsi/nodes/ /var/lib/iscsi/nodes/:total 4drw------- 4 root root 4096 Jul 18 12:13 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk:total 8drw------- 2 root root 4096 Jul 18 12:12 10.10.1.99,3260,1drw------- 2 root root 4096 Jul 18 12:13 10.10.2.99,3260,1/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.1.99,3260,1:total 4-rw------- 1 root root 1822 Jul 18 12:12 default/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.2.99,3260,1:total 4-rw------- 1 root root 1822 Jul 18 12:13 default
查看iscsiadm -m node
[root@jyrac1 ~]# iscsiadm -m node10.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk10.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
iscsiadm -m node -T target名称 --login
iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --login
[root@jyrac1 ~]# iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --loginLogging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] (multiple)Logging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] (multiple)Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] successful.Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] successful.
最后查询 fdisk -l结果:
省略之前无关内容... Disk /dev/sdi: 10.7 GB, 10737418240 bytes64 heads, 32 sectors/track, 10240 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000Disk /dev/sdj: 10.7 GB, 10737418240 bytes64 heads, 32 sectors/track, 10240 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
发现通过两条链路( 10.10.1.*和10.10.2.*
), 已经正常识别到两个大小为10G的磁盘,而实际上这两个磁盘对应到存储上的一个底层LUN 。
这其实就是多路径。后续我会再根据这个环境测试multipath(Linux自带的多路径软件)的使用。
重启主机测试,这两个磁盘信息依然存在,说明iSCSI的配置没有问题。
-
http://linux.vbird.org/linux_server/0460iscsi.php
multipath多路径实验02-配置多路径软件
在上一篇文章《 multipath多路径实验01-构建iSCSI模拟环境 》,我构建了iSCSI的模拟环境,在文章最后,已经成功配置并在主机上认出多个链路分别映射出的盘。而本文我就要对这样的多路径环境,通过Linux自带multipath多路径软件聚合成可以方便我们后期使用的形式。
1.安装多路径软件包查询是否安装了多路径软件包:
rpm -qa |grep device-mapper-multipath
如果没有安装,则用yum安装即可:
yum install device-mapper-multipath
[root@jyrac1 ~]# yum install device-mapper-multipath Loaded plugins: product-id, security, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Setting up Install Proce***esolving Dependencies--> Running transaction check---> Package device-mapper-multipath.x86_64 0:0.4.9-72.el6 will be installed--> Processing Dependency: device-mapper-multipath-libs = 0.4.9-72.el6 for package: device-mapper-multipath-0.4.9-72.el6.x86_64--> Processing Dependency: libmultipath.so()(64bit) for package: device-mapper-multipath-0.4.9-72.el6.x86_64--> Processing Dependency: libmpathpersist.so.0()(64bit) for package: device-mapper-multipath-0.4.9-72.el6.x86_64--> Running transaction check---> Package device-mapper-multipath-libs.x86_64 0:0.4.9-72.el6 will be installed--> Finished Dependency ResolutionDependencies Resolved ================================================================================================================== Package Arch Version Repository Size ================================================================================================================== Installing: device-mapper-multipath x86_64 0.4.9-72.el6 ISO 116 k Installing for dependencies: device-mapper-multipath-libs x86_64 0.4.9-72.el6 ISO 180 k Transaction Summary ================================================================================================================== Install 2 Package(s) Total download size: 297 k Installed size: 653 kIs this ok [y/N]: y Downloading Packages:------------------------------------------------------------------------------------------------------------------Total 2.8 MB/s | 297 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : device-mapper-multipath-libs-0.4.9-72.el6.x86_64 1/2 Installing : device-mapper-multipath-0.4.9-72.el6.x86_64 2/2 Verifying : device-mapper-multipath-libs-0.4.9-72.el6.x86_64 1/2 Verifying : device-mapper-multipath-0.4.9-72.el6.x86_64 2/2 Installed: device-mapper-multipath.x86_64 0:0.4.9-72.el6 Dependency Installed: device-mapper-multipath-libs.x86_64 0:0.4.9-72.el6 Complete!
如果不方便配置yum,也可以直接rpm安装这两个包:
[root@jyrac2 Packages]# rpm -ivh device-mapper-multipath-libs-0.4.9-72.el6.x86_64.rpmwarning: device-mapper-multipath-libs-0.4.9-72.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Preparing... ########################################### [100%] 1:device-mapper-multipath########################################### [100%][root@jyrac2 Packages]# rpm -ivh device-mapper-multipath-0.4.9-72.el6.x86_64.rpmwarning: device-mapper-multipath-0.4.9-72.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Preparing... ########################################### [100%] 1:device-mapper-multipath########################################### [100%]2.设置服务开机启动
查询当前开机自启用设置:
chkconfig --list|grep multipathd
确认内核成功加载:
modprobe -l |grep multipath
确认开启开机自启动:
[root@jyrac1 ~]# chkconfig multipathd on[root@jyrac1 ~]# chkconfig --list|grep multipathdmultipathd 0:off 1:off 2:on 3:on 4:on 5:on 6:off3.生成multipath配置文件
生成multipath配置文件:
/sbin/mpathconf --enable
确认服务状态:
service multipathd status4.multipath的常用命令
常用命令:
--生成multipath配置文件/sbin/mpathconf --enable--显示多路径的布局multipath -ll--重新刷取multipath -v2--清空所有多路径multipath -F
针对上述常用命令,实际操作的记录,供参考:
[root@jyrac1 ~]# multipath -llJul 18 15:57:18 | DM multipath kernel driver not loaded Jul 18 15:57:18 | /etc/multipath.conf does not exist, blacklisting all devices. Jul 18 15:57:18 | A sample multipath.conf file is located at Jul 18 15:57:18 | /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf Jul 18 15:57:18 | You can run /sbin/mpathconf to create or modify /etc/multipath.conf Jul 18 15:57:18 | DM multipath kernel driver not loaded [root@jyrac1 ~]# chkconfig --list|grep multipathdmultipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off[root@jyrac1 ~]# modprobe -l |grep multipath kernel/drivers/md/dm-multipath.ko [root@jyrac1 ~]# service multipathd statusmultipathd is stopped [root@jyrac1 ~]# service multipathd startStarting multipathd daemon: [ OK ] [root@jyrac1 ~]# multipath -llJul 18 15:59:00 | /etc/multipath.conf does not exist, blacklisting all devices. Jul 18 15:59:00 | A sample multipath.conf file is located at Jul 18 15:59:00 | /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf Jul 18 15:59:00 | You can run /sbin/mpathconf to create or modify /etc/multipath.conf [root@jyrac1 ~]# /sbin/mpathconf --enable[root@jyrac1 ~]# multipath -v2Jul 18 16:02:52 | mpatha: ignoring map Jul 18 16:02:52 | mpathb: ignoring map Jul 18 16:02:52 | mpathc: ignoring map Jul 18 16:02:52 | mpathd: ignoring map Jul 18 16:02:52 | mpathe: ignoring map Jul 18 16:02:52 | mpathf: ignoring mapcreate: mpathg (1IET 00010001) undef IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=undef|-+- policy='round-robin 0' prio=1 status=undef| `- 10:0:0:1 sdi 8:128 undef ready running `-+- policy='round-robin 0' prio=1 status=undef `- 11:0:0:1 sdj 8:144 undef ready running [root@jyrac1 ~]# multipath -ll mpathg (1IET 00010001) dm-2 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=1 status=active | `- 10:0:0:1 sdi 8:128 active ready running`-+- policy='round-robin 0' prio=1 status=enabled `- 11:0:0:1 sdj 8:144 active ready running [root@jyrac1 ~]#
这里测试没有问题后, 为了后续方便测试ASM磁盘组,在iSCSI服务端又分了一个10g的lv,模拟存储端分出的一个LUN,最后在这边就应该有两个多路径聚合盘了 。同样的方法在RAC的另一个节点也都配置好。
5.udev绑定权限 我这里系统是RHEL6.5,对于multipath的权限,手工去修改几秒后会变回root。所以需要使用udev去绑定好权限。
搜索对应的配置文件模板:
[root@jyrac1 ~]# find / -name 12-*/usr/share/doc/device-mapper-1.02.79/12-dm-permissions.rules
根据模板新增12-dm-permissions.rules文件在/etc/udev/rules.d/下面:
vi /etc/udev/rules.d/12-dm-permissions.rules # MULTIPATH DEVICES # # Set permissions for all multipath devices ENV{DM_UUID}=="mpath-?*", OWNER:="grid", GROUP:="asmadmin", MODE:="660"# Set permissions for first two partitions created on a multipath device (and detected by kpartx) # ENV{DM_UUID}=="part[1-2]-mpath-?*", OWNER:="root", GROUP:="root", MODE:="660"
查看多路径对应的底层dm设备:
[root@jyrac2 rules.d]# ls -lh /dev/dm*brw-rw---- 1 root disk 253, 0 Jul 19 16:40 /dev/dm-0brw-rw---- 1 root disk 253, 1 Jul 19 16:40 /dev/dm-1brw-rw---- 1 root disk 253, 2 Jul 19 21:20 /dev/dm-2brw-rw---- 1 root disk 253, 3 Jul 19 21:20 /dev/dm-3--启动start_udev[root@jyrac2 rules.d]# start_udev Starting udev: [ OK ]--查看权限:[root@jyrac2 rules.d]# ls -lh /dev/dm*brw-rw---- 1 root disk 253, 0 Jul 19 21:35 /dev/dm-0brw-rw---- 1 root disk 253, 1 Jul 19 21:35 /dev/dm-1brw-rw---- 1 grid asmadmin 253, 2 Jul 19 21:35 /dev/dm-2brw-rw---- 1 grid asmadmin 253, 3 Jul 19 21:35 /dev/dm-3--等30s后再查,权限固定:[root@jyrac2 rules.d]# ls -lh /dev/dm*brw-rw---- 1 root disk 253, 0 Jul 19 21:35 /dev/dm-0brw-rw---- 1 root disk 253, 1 Jul 19 21:35 /dev/dm-1brw-rw---- 1 grid asmadmin 253, 2 Jul 19 21:35 /dev/dm-2brw-rw---- 1 grid asmadmin 253, 3 Jul 19 21:35 /dev/dm-3
发现权限固定不变没有问题了,在RAC的另一个节点也同样设置。
这时多路径的信息再查看下:
[root@jyrac1 ~]# multipath -ll mpathi (1IET 00010002) dm-2 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=1 status=active | `- 13:0:0:2 sdk 8:160 active ready running`-+- policy='round-robin 0' prio=1 status=enabled `- 12:0:0:2 sdl 8:176 active ready runningmpathg (1IET 00010001) dm-3 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=1 status=active | `- 13:0:0:1 sdi 8:128 active ready running`-+- policy='round-robin 0' prio=1 status=enabled `- 12:0:0:1 sdj 8:144 active ready running[root@jyrac1 ~]#
在另一个节点也要达到同样效果。
6.新建ASM磁盘组测试 使用grid用户登录xmanager图形界面调出asmca,创建一个新的磁盘组data2,使用这两个盘。冗余度选择Normal冗余:
最终加磁盘组成功,对应查询磁盘组和磁盘的相关信息如下:
SQL> select group_number, disk_number, name, path, mode_status, voting_file from v$asm_disk order by 1,2; GROUP_NUMBER DISK_NUMBER NAME PATH MODE_ST V ------------ ----------- ------------------------------ -------------------------------------------------- ------- - 1 0 DATA1_0000 /dev/asm-diske ONLINE N 1 1 DATA1_0001 /dev/asm-diskf ONLINE N 1 2 DATA1_0002 /dev/asm-diskg ONLINE N 2 0 FRA1_0000 /dev/asm-diskh ONLINE N 3 0 OCR1_0000 /dev/asm-diskb ONLINE Y 3 1 OCR1_0001 /dev/asm-diskc ONLINE Y 3 2 OCR1_0002 /dev/asm-diskd ONLINE Y 4 0 DATA2_0000 /dev/mapper/mpathg ONLINE N 4 1 DATA2_0001 /dev/mapper/mpathi ONLINE N9 rows selected. SQL> select group_number, name, total_mb, free_mb, usable_file_mb, offline_disks, state, type from v$asm_diskgroup; GROUP_NUMBER NAME TOTAL_MB FREE_MB USABLE_FILE_MB OFFLINE_DISKS STATE TYPE------------ ------------------------------ ---------- ---------- -------------- ------------- ----------- ------ 1 DATA1 15360 13204 13204 0 CONNECTED EXTERN 2 FRA1 5120 3773 3773 0 CONNECTED EXTERN 3 OCR1 3072 2146 561 0 MOUNTED NORMAL 4 DATA2 20480 20290 10145 0 MOUNTED NORMAL
至此,有关Linux自带的multipath多路径软件相关的实验已经全部完成。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2214388/,如需转载,请注明出处,否则将追究法律责任。