为什么卸载iscsi设备后linux iscsi重启需要很长时间

2012年9月 Linux/Unix社区大版内专家分月排行榜第二2012年7月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 Linux/Unix社区大版内专家分月排行榜第三2009年4月 硬件/嵌入开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。用户名:wwtcn
文章数:112
评论数:15
访问量:470343
注册日期:
阅读量:1297
阅读量:3317
阅读量:429118
阅读量:1117115
[匿名]lamp:
51CTO推荐博文
3.0.0&本章简介:
&&&&&-描述iSCSI存储的工作原理和机制;
&&&&&-如何定义iSCSI的服务器端和客户端;
&&&&&-解释说明iSCSI的配置和相关工具;
3.0.1&红帽的iSCSI驱动器:
&&&&&在第一章中我们就了解到了什么是iSCSI。iSCSI(ip&Over&SCSI)业内也常叫作ipSAN,即是通过TCP/IP的网络协议来传输磁盘的SCSI数据,随着以太网技术的发展,千兆万兆都将应用在企业中,而以iSCSI存储的性价比,很多中小型企业会更加倾向于使用。
&&&&&也就是说,iSCSI是基于TCP/IP下的网络存储解决方案,那么iSCSI和SCSI/FC存储机制有什么不同呢:
&&&&&左边的模型是iSCSI存储的整个数据流动模型,右边的是FC&SAN的模型,通过这个图可以清晰地看出iSCSI存储和FC光纤存储的对应关系。
&&&&&iSCSI驱动器提供了一个可以通过IP网络访问存储的主机,这个驱动器使用了iSCSI的协议(由IETF定义的)通过IP网络在主机和iSCSI服务器端来传输SCSI的请求和回应。如果你想了解更多关于iSCSI协议的信息,可以参考RFC&3720(http://www.ietf.org/rfc/rfc3720.txt)标准。
&&&&&从模型架构的角度来看,iSCSI驱动器结合了主机的TCP/IP协议栈、网络驱动器和网卡,提供了与SCSI/FC驱动器一样的功能。
&&&&&尽量用单独的网络来使用iSCSI存储。
3.02&iSCSI数据访问:
&&&&&iSCSI存储分为服务器端(targets)和客户端(initiators),客户端发送SCSI命令到远程的存储设备端(服务器端),iSCSI使用的是TCP/IP协议,默认使用TCP的3260端口。
&&&&&客户端:
&&&&&-通过discovery程序来请求远程的块设备;
&&&&&-客户端必须安装了iscsi设备驱动器;
&&&&&-要安装iscsi-initiator-utils-*.rpm软件包;
&&&&&服务器端:
&&&&&-发布一个或多个块设备给initiator访问;
&&&&&-从RHEL5.3以后开始支持iSCSI;
&&&&&-需要安装scsi-target-utils-*.rpm软件包;
&&&&&对于每个target来说,主机ID是唯一的,存储块设备的LUN&ID是由iSCSI&target来分配的。iSCSI驱动器为SCSI请求和回应提供了一个通过IP网络传输的渠道。
&&&&&一旦iSCSI驱动器安装了,主机将会对存储设备做discovery的处理,如下:
&&&&&-iscsi驱动器通过discovery机制请求存储网络中可用的target;
&&&&&-每个iscsi&target发送可用的iscsi&target名称到iscsi驱动器;
&&&&&-iscsi&target接受客户端登入,并且给客户端发送target&identitier作为确认;
&&&&&-iscsi驱动器查询target端的设备信息;
&&&&&-target端回复相关的设备信息;
&&&&&-iscsi驱动器为这些可用的target设备创建一个表;
&&&&&一旦这个表创建完成,iscsi&target端对于主机来说就像直连了一个存储设备一样是可用的。
3.03&iSCSI驱动器的特点:
&&&&&对包头和数据摘要支持加密:iSCSI协议在iSCSI数据包上定义了一个32位的CRC摘要来保护数据的传输,因为16位的校验值用于TCP数据传输显然太过弱了,所以需要更强壮的加密来保证远距离的数据传输安全。
&&&&&双向的CHAP(握手认证协议)认证:用于对target端做访问控制,并且用以确定客户端的可靠连接。
&&&&&支持R2T(ready-to-transfer)流控制:用于target端通信流控制的一种类型。
&&&&&支持多路径:iSCSI的target端通过多路径的使用来实现自动的failover错误轮转的机制。
&&&&&服务器端的discovery广播机制:一种驱动器可以给可用的target提交请求的机制。
&&&&&动态的target&discovery机制:可用的target信息可以动态的改变。
&&&&&为入口和target改变的异步事件通知:在target可以和initiator以异步的信息通信时发生的变化。
&&&&&快速数据支持:通过iSCSI命令PDU(Protocol&Data&Unit)发送一个未请求的数据的能力。
&&&&&动态的驱动器重配置:在initiator端做任何修改都不需要重启任何iSCSI的会话。
&&&&&重启后自动挂载iSCSI:要保证网络的畅通,不然开机自启动也挂载不起来。
3.0.4&iSCSI设备的命名和挂载:
&&&&&iSCSI驱动器为每个iSCSI设备使用默认的内核名,Linux内核在发现了iSCSI设备后将动态地分配SCSI设备名,但是系统重启之后命名将可能发生变化,SCSI命令可能发送到错误的逻辑单元。
&&&&&持久的设备命名可以使用UDEV,设备唯一的UUID以及设备卷标,通常为了开机后自动挂载iSCSI上的文件系统,都会将iSCSI设备挂载信息写入到/etc/fstab中,但必须加上_netdev参数,没有加入此参数的话,rc.sysinit会在系统的网络服务启动之前尝试去挂载iSCSI设备,此时挂载必然是失败的。
3.05&iSCSI服务器端的命名:
&&&&&iSCSI在target端对要发布出去的设备有专门的命名IQN(iSCSI&Qualified&Name),而且IQN必须在全局是唯一的。
&&&&&IQN命名的格式:
&&&&&iqn.&date_code&.&reversed_domain&.&string&[:&substring&]
&&&&&例如:iqn..example.sales:oracle.rac.disk2
3.06&配置iSCSI服务器端:
&&&&&首先是安装scsi-target-utils软件包,在安装完成后,用户程序tgtd服务必须启动了并且设置了开机自启动,接下来就可以在配置文件/etc/tgt/targets.conf中定义新的target条目。
&&&&&配置实例:
&&&&&&target&iqn..example.cluster2:iscsi&
&&&&&&&&Backing-store&&/dev/vol0/iscsi&&&指定要发布的设备;
&&&&&&&&Initiator-address&&192.168.0.1&&&对于客户端的访问控制;
&&&&&&&&Initiator-address&&192.168.0.2
&&&&&&/target&
3.07&手动的iSCSI配置:
&&&&&对于iSCSI服务器端的配置,既可以像上一节利用配置文件配置,也可以手动地用命令进行配置。
&&&&&创建一个新的target条目:
&&&&&#&tgtadm&--lld&iscsi&--op&new&--mode&target&--tid&1&-T&iqn..example.cluster2:iscsi
&&&&&发布本地的块设备以及配置target的访问控制:
&&&&&#&tgtadm&--lld&iscsi&--op&new&--mode&logicalunit&--tid&1&--lun&1&-b&/dev/vol1/iscsi
&&&&&设置访问权限:
&&&&&#&tgtadm&--lld&iscsi&--op&bind&--mode&target&--tid&1&-I&192.168.0.1
&&&&&删除target条目:
&&&&&#&tgtadm&--lld&iscsi&--op&delete&--mode&target&--tid&1&-T&iqn..example.cluster2:iscsi
3.08&配置iSCSI客户端驱动器:
&&&&&iSCSI客户端的配置文件是/etc/iscsi/iscsid.conf,其中有以下四大项可设置项:
&&&&&Startup:设置自动还是手动;
&&&&&CHAP:用户名和密码;
&&&&&Timeout:连接,登入/登出;
&&&&&iSCSI:流控制,负载大小,数据摘要检查;
&&&&&以下是CHAP项中的部分设置项:
&&&&&node.session.auth.authmethod&开启CHAP验证,默认是NONE;&
&&&&&node.session.auth.username&用于CHAP验证的用户名;
&&&&&discovery.sendtargets.auth.authmethod&为discovery会话开启CHAP验证;
&&&&&discovery.sendtargets.auth.username&为initiator端设置discovery会话的CHAP用户名;
3.09&iSCSI授权验证设置:
&&&&&可以使用CHAP配置双向授权验证。在不加密的通信中,基于CHAP的授权由以下特点:用户名和密码都是明文传输的;如果用户名和密码被嗅探,遭受攻击将是很大可能的;鉴于此,可以考虑将iSCSI置于一个独立的存储网络中。
3.10&配置open-iscsi客户端:
&&&&&Iscsiadm是iSCSI的客户端管理工具,可以用于管理discovery和登入iSCSI服务器端,可以管理访问控制和open-iscsi数据库的配置,本工具的很多操作都需要iscsid进程出于运行状态。
&&&&&客户端有几个重要文件:
&&&&&/etc/iscsi/iscsid.conf&-&客户端主配置文件;
&&&&&/etc/iscsi/initiatorname.iscsi&-&设置initiator名和别名;
&&&&&/var/lib/iscsi/nodes/&-&节点和target信息;
&&&&&/var/lib/iscsi/send_targets&-&target的入口信息;
3.11&首次连接到iSCSI服务器端:
&&&&&在initiator客户端启动iscsi服务:
&&&&&#&service&iscsi&start
&&&&&发现网络中可用的target:
&&&&&#&iscsiadm&-m&discovery&-t&sendtargets&-p&192.168.0.1:3260
&&&&&登入某可用的target会话:
&&&&&#&iscsiadm&-m&node&-T&iqn..example.cluster2:iscsi&-p&192.168.0.1:3260&-l
&&&&&查看target信息:
&&&&&#&iscsiadm&-m&node&-P&N&&查看节点信息(N=0,1)
&&&&&#&iscsiadm&-m&session&-P&N&&查看iscsi的会话信息(N=1-3)
&&&&&#&iscsiadm&-m&discovery&-P&N&&查看discovery信息(N=0,1)
3.12&管理iSCSI服务器端的连接:
&&&&&登出一个target会话:
&&&&&#&iscsiadm&-m&node&-T&iqn..example.cluster:iscsi&-p&192.168.0.1:3260&-u
&&&&&当需要重新进行连接时,可以重启iscsi服务,系统将自动进行连接,也可以通过以下的命令实现重新连接:
&&&&&#&iscsiadm&-m&node&-T&iqn..example.cluster:iscsi&-p&192.168.0.1:3260&-l
3.13&关闭iSCSI服务器端:
&&&&&关闭iSCSI在开机重启或重启iscsi服务时自动对target进行重新连接,就需要在该客户机彻底将该target条目信息删除:
&&&&&登出target会话:
&&&&&#&iscsiadm&-m&node&-T&iqn..example.cluster:iscsi&-p&192.168.0.1:3260&-u
&&&&&删除target条目的记录:
&&&&&#&iscsiadm&-m&node&-o&delete&-T&iqn..example.cluster:iscsi&-p&192.168.0.1:3260
&&&&&在客户端删除了之前discovery发现的可用的target条目,则重启或重启服务后将不会自动进行重连接。
了这篇文章
类别:┆阅读(0)┆评论(0)用户名:zhanghmjm
文章数:36
访问量:19003
注册日期:
阅读量:1297
阅读量:3317
阅读量:429118
阅读量:1117115
51CTO推荐博文
安装&不同的操作系统对应各自的iSCSI initiator,以CentOS 6.5为例。 &安装方法有两种:&1) 直接使用“yum install iscsi*”进行安装; 2) 到网上下载&iscsi-initiator-utils-devel-6.2.0.873-10.el6.x86_64 iscsi-initiator-utils-6.2.0.873-10.el6.x86_64 使用“ rpm -ivh iscsi-initiator”命令进行安装。 &安装完成后,启动iscsi守护进程&[root@CentOS1 桌面]#service iscsid start & &将iscsid添加到系统启动&[root@CentOS1 桌面]#chkconfig iscsid on&[root@CentOS1 桌面]#chkconfig iscsid --list (查看ISCSI启动状态) &挂载iSCSI主要用到的工具叫“iscsiadm”,iscsiadm是基于命令行的iscsi管理工具,提供了对iscsi节点、会话、连接以及发现记录的操作。 &iscsiadm的使用说明可以查看sr/share/doc/iscsi-initiator-utils-6.2.0.873/README,也可以运行man iscsiadm或iscsiadm --help & &使用&首先要在存储设备上做好RAID,设置好iSCSI 目标方(target)。由于只是做实验,我就使用了一个开源软件来模拟iSCSI存储设备,软件名称叫openfiler,可以使用虚拟机来安装,详细可以查阅相关的教程。 &下面来讲一下连接iscsi设备的步骤: &1)发现目标&默认情况下,iscsi发起方和目标方之间通过端口3260连接。假设已知iscsi的目标方IP是10.10.13.3,运行下列命令:&[root@CentOS1 桌面]#iscsiadm -m discovery -t sendtargets -p 10.10.13.3:3260 (若端口是默认端口,IP后面& wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();}); & &&&可以不跟端口号) &此时找到拥有一个或多个目标(target)&10.10.13.310.10.13.3:3260,1 iqn..openfiler:tsn.8edaa2.169.139.13:3260,1 iqn..openfiler:tsn.8edaa9212d3a 被发现的目标也叫做节点 &2)登入节点&以上面被发现的目标为例:&[root@CentOS1 桌面]# iscsiadm -m node -T &iqn..openfiler:tsn.8edaa9212d3a -p 10.10.13.3:3260 -l &其中iqn..openfiler:tsn.8edaa9212d3a是目标名 &注:如果要在系统启动时自动登入&[root@CentOS1 桌面]# iscsiadm -m node -T &iqn..openfiler:tsn.8edaa9212d3a -p 10.10.13.3:3260 --op update -n node.startup -v automatic &登入节点后,运行&[root@CentOS1 桌面]#fdisk -l &应该可以看到目标方的存储设备信息,如 &Disk /dev/sdb: 5268 MB,
bytes 163 heads, 62 sectors/track, 1018 cylinders&Units = cylinders of 10106 * 512 = 5174272 bytes&Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xc9ac33ab && &Device Boot & & &Start & & & & End & & &Blocks & Id &System &/dev/sdb即为连接的iscsi存储设备 &3)格式化设备&如欲将设备格式化为ext4文件系统,运行 [root@CentOS1 桌面]# mkfs.ext4 /dev/sdb &&&&4)挂接设备&a、 在/下创建data目录作为挂载目录 [root@CentOS1桌面]#mkdir /data &b、运行mount命令:&[root@CentOS1 桌面]# mount &/dev/sdb /data &c、运行df -h可以看到:&/dev/sdb & & & &4.9G &138M &4.5G & 3% /data &iscsi设备被成功挂接,可以当作常规存储设备使用了。 &注:如果要在系统启动时自动挂接 [root@CentOS1 桌面]# vi/etc/fstab &加入一行:&/dev/sdb & & & & & & & &/dataext4 & & default & & & &0 &0 &但是,Linux系统重启后,磁盘设备的名称可能会发生飘移,从而引起文件系统不能挂载上来或者不能正确挂载,使用UUID的方式进行挂载可以解决这个问题:&使用命令“tune2fs -l /dev/sdb”可以查到文件系统的UUID: &Filesystem UUID: & & & & &2cfe60-525f565 &然后在/etc/fstab中添加 &&UUID=2cfe60-525f565/dataext4 & & default & & & &0 &0 替换掉原来的&/dev/sdb & & & & & & & &/dataext4 & & default & & & &0 &0 &注:如何手动通过UUID来挂载磁盘 在/etc/fstab中添加 &&UUID=2cfe60-525f565/dataext4noauto & & & &0 &0 &这样系统启动后是不会挂载这个磁盘的,然后执行以下命令:&[root@CentOS1 桌面]#mount UUID=2cfe60-525f565 &这样就可以手动通过UUID来挂载磁盘了 & &&&5)登出节点&a、首先解除挂接&[root@CentOS1 桌面]#umount /data &b、登出&[root@CentOS1 桌面]# iscsiadm -m node -T iqn..openfiler:tsn.8edaa9212d3a -p 10.10.13.3-u & &&&---------------------------&注意:使用脚本实现开关机挂载或卸载iSCSI存储,把下面的脚本加入到/etc/rc.local 文件中,多个iSCSI存储的话 就加入多个IP地址。 &如下:&1:挂载iSCSI脚本&su - root -c “iscsiadm -m node -T &iqn..openfiler:tsn.8edaa9212d3a -p 10.10.13.3-l” sleep 10&su - root -c “mount /dev/sdb1 /data” &2:卸载iSCSI脚本&su - root -c “umount /data” sleep 10&su - root -c “iscsiadm -m node -T iqn..openfiler:tsn.8edaa9212d3a -p 10.10.13.3Cu” &&--------------------------------------&iSCSI initiator配置好后主要有以下两个配置文件: &配置文件 /etc/iscsi/iscsid.conf & &node.startup=auto&& &node.session.iscsi.InitialR2T=Yes & &node.session.iscsi.ImmediateData=No&& &node.session.timeo.replacement_timeout=60 &[root@CentOS2桌面]#cat /etc/iscsi/iscsid.conf &主机名/etc/iscsi/initiatorname.iscsi & &格式为InitiatorName=iqn.xxxx &[root@CentOS2桌面]# cat &/etc/iscsi/initiatorname.iscsi &InitiatorName=iqn..redhat:f426c211e826&
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 linux iscsi server 的文章

 

随机推荐