zoukankan      html  css  js  c++  java
  • Cinder错误解决方案

    很多初学者在进行OpenStack Havana 安装过程中进行设置Cinder时,进行重启服务

    service iscsitarget start
    service open-iscsi start
    

    经常出现 “modules iscsi_trgt not found”这样的错误,很多情况下是因为 /lib/modules/3.1.0-32-generic/kernel/iscsi文件中缺少iscsi_trgt.ko文件。所以接下来要通过以下办法来解决这个错误。

    Target端的配置

    下载iscsitarget

    进入终端,输入
    #wget http://sourceforge.net/projects/iscsitarget/files/

    创建iscsi_trgt.ko文件

    输入#ls,会发现在当前目录下出现 branchs tags trunks三个文件夹然后#cd trunks进入trunks文件目录,输入 以下两条命令

    #sudo make
    #sudo make install

    查看当前目录,会发现文件中iscsi_trgt.ko已经创建。
    该包会将iscsitarget需要的内核模块,用户层工具,服务启动脚本,配置文件,man手册等安装到系统中
      包括:
      

        iscsi_trgt.ko 内核模块
      ietd iscsitarget的守护进程
      ietadm iscsitarget的用户层管理工具
      /etc/init.d/iscsi-target iscsitarget的启动脚本
      /etc/ietd.conf iscsitarget的配置文件
      /etc/initiators.allow 控制initiator对target的访问权限。
      /etc/initiators.deny 控制initiator对target的访问权限。
      /etc/iet/targets.allow 控制不同target的被访问权限。

    配置/etc/ietd.conf

      Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
      Lun 0 Path=/dev/sda1,Type=fileio
      Alias lun0

      大致说明:
      Target iqn.2001-04.com.example:storage.disk2.sys1.xyz 表示该ISCSI Target 的命名,命名在同一子网内应该是唯一的,标准命名方式为:
      “Target “+ target名字 (格式如下: iqn.yyyy-mm.[:identifier] )
      “Lun 0 Path=/dev/sda1”表示块设备号为0,映射的磁盘为/dev/sda1。
      本次配置中 Type 的设定为”fileio”,我主要用来对一个磁盘进行存储共享。
      当然也可以针对需要设置为: “file” or “LVM”。
      除此之外还有很多其他参数可以设置,具体参考:
    启动iscsitarget

    /etc/init.d/iscsi-target start

    iscsi_trgt.ko复制到内核

    在iscsi_trgt.ko所在文件夹中执行以下命令

    #mkdir /lib/modules/`uname -r`/kernel/iscsi
    #find / -name “iscsi_trgt.ko”
    #cp iscsi_trgt.ko /lib/modules/`uname -r`/kernel/iscsi
    #depmod -aq

    这样重新启动服务,就不会出现上述错误了。


    当前网络架构

    inititor端配置

    软件包

      源码包是open-iscsi,经过rpm包封装后,名字是iscsi-initiator-utils。

    安装文件

      /etc/iscsi/iscsid.conf
      /etc/rc.d/init.d/iscsi
      /etc/rc.d/init.d/iscsid
      /sbin/iscsi-iname
      /sbin/iscsiadm
      /sbin/iscsid
      /sbin/iscsistart
      /var/lib/iscsi
      /var/lib/iscsi/ifaces
      /var/lib/iscsi/isns
      /var/lib/iscsi/nodes
      /var/lib/iscsi/send_targets
      /var/lib/iscsi/slp
      /var/lib/iscsi/static
      /var/lock/iscsi

    连接target

      首先要保证iscsid守护进程启动,否测iscsiadm的一系列操作都会失败:
      /etc/init.d/iscsid start
      发现target:
      iscsiadm -m discovery -t sendtargets -p :
      默认情况下是3260,除非你有特殊的设置。
      与target建立连接:
      iscsiadm -m node -T -p : –login
      此处target-name为上一步发现target时的获得的
    此时通过fdisk -l就可以看到映射过来的磁盘,该磁盘可以像使用本地磁盘一样进行格式化,分区等操作。
      可以通过以下命令实验:
      

       fdisk /dev/sdc
      mkfs.ext3 /dev/sdc1
      mount /dev/sdc1 /mnt
      dd if=/dev/zero of=100M.img bs=1M count=100

    target和initiator间使用CHAP验证。

      CHAP验证有两种,一种是针对discovery的,即如果不符合验证的用户名和密码,则initiator端便无法通过”-m discovery”发现指定主机上的任何一个target。
      命令会返回验证失败,如下:
     

     $  iscsiadm -m discovery -t sendtargets -p 192.168.29.224
      iscsiadm: Login failed to authenticate with target
      iscsiadm: discovery login to 192.168.29.224 rejected:     initiator error (02/01), non-retryable, giving up

     
      另一种是针对node login的,即果不符合验证的用户名和密码,则initiator端编无法通过–login登录指定主机上的某一个target。
      命令会返回验证失败,如下:
      

    
      $ iscsiadm -m discovery -t sendtargets -p 192.168.29.224  #成功discover指定主机上的target
      192.168.29.224:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
      $ iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.29.224 --login  #无法通过验证,登录失败
      Logging in to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.29.224,3260]
      iscsiadm: Could not login to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.29.224,3260]:
      iscsiadm: initiator reported error (15 - already exists)

    initiator端配置/etc/iscsi/iscsid.conf

    添加如下选项:

    #以下三个是针对discovery的。
      #discovery时启用CHAP验证
      discovery.sendtargets.auth.authmethod = CHAP
      #initiator的名字,也可以是别的字符串,只要和target端IncomingUse配置的名字一样就行
      discovery.sendtargets.auth.username = iqn.1994-05.com.fedora:ba72af8aaf5
      #验证密码,要和target端相同
    discovery.sendtargets.auth.password = 1234567890ab
      #以下三个是针对login的。
      #login时启用CHAP验证
      node.session.auth.authmethod = CHAP
      #initiator的名字,也可以是别的字符串,只要和target端IncomingUse配置的名字一样就行
      node.session.auth.username = iqn.1994-   05.com.fedora:ba72af8aaf5
      #验证密码,要和target端相同
      node.session.auth.password = 1234567890
      然后重启initiator。
      /etc/init.d/iscsid stop
      /etc/init.d/iscsid start

    target端针对discovery配置/etc/ietd.conf

    在全局参数处(定义第一个target之前),添加如下一行:
    IncomingUser iqn.1994-05.com.fedora:ba72af8aaf5 1234567890ab
    IncomingUser 和 OutgoingUser 表示ISCSI 客户端的用户名和密码,用户名和密码都可以为空,默认为allow权限,密码最长可为12个字符。
     此处iqn.1994-05.com.fedora:ba72af8aaf5是initiator的名字(也可以是别的字符串),1234567890ab是initiator的密码,名字和密码必须和initiator上/etc/iscsi/iscsid.conf
     中的用户名密码一致。如果不一致,则initiator执行”-m discovery” 是就会失败。
     针对login配置/etc/ietd.conf,既然是针对login的,那么添加IncomingUser是就应该添加的指定的target上。如下:
     

     Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
     Lun 0 Path=/dev/sda1,Type=fileio
     IncomingUser iqn.1994-05.com.fedora:ba72af8aaf5 1234567890

     然后重启iscsitarget
     /etc/init.d/iscsi-target stop
     /etc/init.d/iscsi-target start
     参考文档:OpenStack Havana 安装指南

  • 相关阅读:
    手机电池mAh和Wh概念
    运行中的iOS应用创建的文件们
    iOS分辨率的那些事儿
    为什么判断UITextField判断为空不能用isEqualToString:@""
    iOS开发里的Bundle是个啥玩意?!
    XCode里的模拟器到底在哪里?我的App被放到哪里了?
    iOS推送消息报错误“Domain=NSCocoaErrorDomain Code=3000”的可能问题
    让你的WordPress支持嵌入ObjectiveC代码
    升级 Mountain Lion 后,svn服务无法使用的解决方法
    对于javascript的词法作用域的思考
  • 原文地址:https://www.cnblogs.com/ainima/p/6331870.html
Copyright © 2011-2022 走看看