RUI个人博客 首页>>Openstack>>【转】CentOS7 Juno Cinder块重启后 实例起不来 --rescan Exit code: 21

【转】CentOS7 Juno Cinder块重启后 实例起不来 --rescan Exit code: 21

转自:http://blog.csdn.net/evandeng2009/article/details/50582330

Cinder块节点重启后,在Dashboard上不能启动附带了云硬盘(券)的实例,报错:

  1. Unexpected error while running command. Command: sudo nova-rootwrap /etc/nova/rootwrap.conf   
  2. iscsiadm -m node -T iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78 -p block_node_IP:3260 --rescan   
  3. Exit code: 21 Stdout: u'' Stderr: u'iscsia].  


错误代码21表示:ISCSI_ERR_NO_OBJS_FOUND - no records/targets/sessions/portals found to execute operation on,找不到目标对象。而在实例关机状态下,不能卸载挂载的卷。

一、计算节点

# tail /var/log/nova/nova-compute.log -n 500 | grep iscsi /*没有发现会话*/

  1. Unexpected error while running command.  
  2. Command: sudo nova-rootwrap /etc/nova/rootwrap.conf   
  3. iscsiadm -m node -T iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78 -p block_node_IP:3260 --rescan  
  4. Exit code: 21  
  5. Stdout: u''  
  6. Stderr: u'iscsiadm: No session found.  
  7. <pre name="code" class="html"><pre name="code" class="html">......  

# tail -n 50 /var/log/messages | grep auth /*登陆拒绝*/

  1. Jan 25 14:53:43 compute3 iscsid: conn 0 login rejected: initiator failed authorization with target  
  2. Jan 25 14:57:29 compute3 iscsid: conn 0 login rejected: initiator failed authorization with target  
  3. Jan 25 16:06:40 compute3 iscsid: conn 0 login rejected: initiator failed authorization with target  
  4. Jan 25 17:10:51 compute3 iscsid: conn 0 login rejected: initiator failed authorization with target  
  5. Jan 25 17:17:37 compute3 iscsid: conn 0 login rejected: initiator failed authorization with target  
  6. Jan 25 17:41:02 compute3 iscsiadm: iscsiadm: initiator reported error (24 - iSCSI login failed due to authorization failure)  
  7. Jan 25 17:41:02 compute3 iscsiadm: iscsiadm: initiator reported error (24 - iSCSI login failed due to authorization failure)  
  8. Jan 25 17:41:03 compute3 iscsid: conn 0 login rejected: initiator failed authorization with target  
  9. Jan 25 17:41:03 compute3 iscsid: conn 0 login rejected: initiator failed authorization with target  


# systemctl status iscsid -l /*认证失败*/
  1. 1月 25 17:17:37 compute3 iscsid[1730]: conn 0 login rejected: initiator failed authorization with target  
  2. 1月 25 17:17:37 compute3 iscsid[1730]: Connection63:0 to   
  3. [target: iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78, portal: block_node_IP,3260]   
  4. through [iface: default] is shutdown.  
  5. ......  

其中:       

        1. iqn.2010-10.org.openstack是块节点的iscsi的target标示  

        2. volume-369865bb-0714-4ab2-a96c-7a91b7483e78是块节点上为实例创建的卷名(lvdisplay可以看到)  

# iscsiadm -m node -T iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78 -p block_node_IP:3260 --login /*手工登陆验证*/

  1. Logging in to [iface: default, target: iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78,   
  2. portal: block_node_IP,3260] (multiple)  
  3. iscsiadm: Could not login to [iface: default,   
  4. target: iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78, portal: block_node_IP,3260].  
  5. iscsiadm: initiator reported error (24 - iSCSI login failed due to authorization failure)  
  6. iscsiadm: Could not log into all portals  

二、块节点

# tail -n 1000 /var/log/messages | grep auth /*系统日志*/

  1. Jan 25 17:10:50 block1 kernel: iSCSI Initiator Node: iqn.1994-05.com.redhat:a5fd80c5a912 is not authorized to access iSCSI target portal group: 1.  
  2. Jan 25 17:17:37 block1 kernel: iSCSI Initiator Node: iqn.1994-05.com.redhat:a5fd80c5a912 is not authorized to access iSCSI target portal group: 1.  
  3. Jan 25 17:41:02 block1 kernel: iSCSI Initiator Node: iqn.1994-05.com.redhat:a5fd80c5a912 is not authorized to access iSCSI target portal group: 1.  
  4. Jan 25 17:41:02 block1 kernel: iSCSI Initiator Node: iqn.1994-05.com.redhat:a5fd80c5a912 is not authorized to access iSCSI target portal group: 1.  
其中:
  1. 1. iqn.1994-05.com.redhat:a5fd80c5a912是实例所在<strong>计算节点</strong>的iscsi名字,可以在计算节点上查看  
  2.     $ cat /etc/iscsi/initiatorname.iscsi  
  3.     InitiatorName=iqn.1994-05.com.redhat:a5fd80c5a912  

看到这里就是表明:实例所在的计算节点不能成功认证去连接块节点的卷。

$ targetcli ls /*块节点上查看target,这里我有两个卷,分别500G*/

为了验证这些卷最初建立和挂载到实例上时的状态,这里新建一个卷并挂载到另一个位于不同计算节点(iqn.1994-05.com.redhat:11f29647866a)的实例上,截图

/> cd iscsi/

/iscsi> ls /*只看iscsi列表,方便看*/

发现新卷有两个地方不同:

  1. 1. 有acls(访控列表),指定谁能访问这个卷,图中看指明了是上面测试用的另一个实例所在的计算节点  
  2. 2. 下面还有个mapped_lun0,mapping在于指定能访问谁,也就是上面acls中的主机能够访问谁(对应的还有个masking指定不能访问谁)  

类似地,现在对之前的两个卷,作同样的更改

# targetcli

/> cd iscsi/iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78/tpg1/acls/ /*转到对应的卷的acls中*/

/iscsi/iqn.20...e78/tpg1/acls> create iqn.1994-05.com.redhat:a5fd80c5a912 /*指定实例所在计算节点可以访问*/

  1. Created Node ACL for iqn.1994-05.com.redhat:a5fd80c5a912  
  2. Created mapped LUN 0.  
/iscsi/iqn.20...e78/tpg1/acls> ls
  1. o- acls .................................................................................................................. [ACLs: 1]  
  2.   o- iqn.1994-05.com.redhat:a5fd80c5a912 .............................................................. [1-way auth, Mapped LUNs: 1]  
  3.     o- mapped_lun0 ......................... [lun0 block/iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78 (rw)]  
OK,上面说的两个东西都有了。对另一个卷作同样处理。


        1. o- acls .................................................................................................................. [ACLs: 1]  

        2.   o- iqn.1994-05.com.redhat:a5fd80c5a912 .............................................................. [1-way auth, Mapped LUNs: 1]                3.               3.     o- mapped_lun0 ......................... [lun0 block/iqn.2010-10.org.openstack:volume-446d70fc-c3f8-43cd-a0b9-dfd5eee934b9 (rw)]  


/iscsi/iqn.20...4b9/tpg1/acls> exit
  1. Global pref auto_save_on_exit=true  
  2. Last 10 configs saved in /etc/target/backup.  
  3. Configuration saved to /etc/target/saveconfig.json  
# targetcli saveconfig /*再保存下*/
  1. Last 10 configs saved in /etc/target/backup.  
  2. Configuration saved to /etc/target/saveconfig.json  

# systemctl restart target /*重启target服务*/

硬重启实例(步骤看文章底部的控制节点),还是同样报错,并且在块节点上发现:

# tail /var/log/messages

  1. Jan 26 11:06:00 block1 cinder-volume: 2016-01-26 11:06:00.356 2785 INFO cinder.volume.manager [-] Updating volume replication status.  
  2. Jan 26 11:06:08 block1 kernel: CHAP user or password not set for Initiator ACL  
  3. Jan 26 11:06:08 block1 kernel: Security negotiation failed.  
  4. Jan 26 11:06:08 block1 kernel: iSCSI Login negotiation failed.  


# vim /etc/iscsi/iscsid.conf /*查看计算节点上的配置,默认就没有设置用户名和密码*/

  1. # *************  
  2. # CHAP Settings  
  3. # *************  
  4.   
  5. # To enable CHAP authentication set node.session.auth.authmethod  
  6. # to CHAP. The default is None.  
  7. #node.session.auth.authmethod = CHAP  
  8.   
  9. # To set a CHAP username and password for initiator  
  10. # authentication by the target(s), uncomment the following lines:  
  11. #node.session.auth.username = username  
  12. #node.session.auth.password = password  
vim /etc/target/saveconfig.json /*回到块节点发现新建测试卷有用户名和密码,之前的卷在块节点主机重启后却没有*/

  1. "dev": "/dev/cinder-volumes/volume-01519b87-3036-4b6e-8174-c4a86030b370",  
  2.       "name": "iqn.2010-10.org.openstack:volume-01519b87-3036-4b6e-8174-c4a86030b370",  
  3.       "plugin": "block",  
  4.       "readonly": false,  
  5. /password  
  6.             "login_timeout": 15,  
  7.             "netif_timeout": 2,  
  8.             "prod_mode_write_protect": 0,  
  9.             "t10_pi": 0  
  10.           },  
  11.           "enable": true,  
  12.           "luns": [  
  13.             {  
  14.               "index": 0,  
  15.               "storage_object": "/backstores/block/iqn.2010-10.org.openstack:volume-01519b87-3036-4b6e-8174-c4a86030b370"  
  16.             }  
  17.           ],  
  18.           "node_acls": [  
  19.             {  
  20.               "attributes": {  
  21.                 "dataout_timeout": 3,  
  22.                 "dataout_timeout_retries": 5,  
  23.                 "default_erl": 0,  
  24.                 "nopin_response_timeout": 30,  
  25.                 "nopin_timeout": 15,  
  26.                 "random_datain_pdu_offsets": 0,  
  27.                 "random_datain_seq_offsets": 0,  
  28.                 "random_r2t_offsets": 0  
  29.               },  
  30.               "chap_password": "5k4DnHHcJd3SyvaF",  
  31.               "chap_userid": "xZrcAF8GH5P6smJmYceN",  
  32.               "mapped_luns": [  
  33.                 {  
  34.                   "index": 0,  
  35.                   "tpg_lun": 0,  
  36.                   "write_protect": false  
  37.                 }  
  38.               ],  
  39.               "node_wwn": "iqn.1994-05.com.redhat:11f29647866a"  
  40.             }  
  41.           ],  

# reboot /*验证块节点重启后,新建卷没有变化,还是能正常识别使用:acls有;默认的用户名和密码也都在配置文件中,那么这个问题没有重现*/

最后,既然是认证失败,那么我就在块节点上设置这两个卷的用户名和密码,然后在对应计算节点上去配置对应的帐号

/> cd iscsi/iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78/tpg1/acls/iqn.1994-05.com.redhat:a5fd80c5a912/

/iscsi/iqn.20...:a5fd80c5a912> set auth userid=username

  1. Parameter userid is now 'username'.  
/iscsi/iqn.20...:a5fd80c5a912> set auth password=password
  1. Parameter password is now 'password'.  
/iscsi/iqn.20...:a5fd80c5a912> exit /*另一个卷同样设置*/
  1. Global pref auto_save_on_exit=true  
  2. Last 10 configs saved in /etc/target/backup.  
  3. Configuration saved to /etc/target/saveconfig.json  
# systemctl restart target
# ss -napt | grep 3260
  1. LISTEN     0      256          *:3260                     *:*                               
# vim /etc/iscsi/iscsid.conf /*然后在计算节点去配置iscsid.conf,去掉注释开启CHAP*/
# *************  
  1. # CHAP Settings  
  2. # *************  
  3.   
  4. # To enable CHAP authentication set node.session.auth.authmethod  
  5. # to CHAP. The default is None.  
  6. node.session.auth.authmethod = CHAP  
  7.   
  8. # To set a CHAP username and password for initiator  
  9. # authentication by the target(s), uncomment the following lines:  
  10. node.session.auth.username = username  
  11. node.session.auth.password = password  
# iscsiadm -m discovery -t sendtargets -p block_node_IP /*计算节点上再手工连接验证*/


# iscsiadm -m node -l

  1. Login to [iface: default, target: iqn.2010-10.org.openstack:volume-446d70fc-c3f8-43cd-a0b9-dfd5eee934b9, portal: block_node_IP,3260] successful.  
  2. Login to [iface: default, target: iqn.2010-10.org.openstack:volume-369865bb-0714-4ab2-a96c-7a91b7483e78, portal: block_node_IP,3260] successful.  


最后再硬重启实例,起来了。但是呢这里会有个潜在问题,以后这个计算节点上的其他实例需要挂载卷的时候,可能就需要对卷进行同样的用户名和密码设置。而如果匿名不需要认证,那就不太安全。

三、控制节点

在Dashboard上硬启动启动失败的实例,直接进入了error状态,需要reset-state重置状态再hard reboot

# nova list /*获取实例ID*/

# nova reset-state 2d6fc5be-a95e-4959-a16a-45f126b0217a --active /*重置为active活动状态*/

现在到Dashboard上硬重启实例。

昵  称:
邮  箱:
评论内容:
验 证 码:
可用[code][/code]插入代码
点击刷新验证码