首页 文章 精选 留言 我的

精选列表

搜索[列存储],共10000篇文章
优秀的个人博客,低调大师

构建Hadoop+Hbase+ZooKeeper分布式存储

前言*Hadoop是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook和Yahoo等等。对于我来说,最近的一个使用点就是服务集成平台的日志分析。服务集成平台的日志量将会很大,而这也正好符合了分布式计算的适用场景(日志分析和索引建立就是两大应用场景)。 今天我们来实际搭建一下Hadoop 2.2.0版,实战环境为目前主流服务器操作系统CentOS 6.5系统。 一、实战环境 1 2 3 4 5 6 系统版本:CentOS6.5x86_64 JAVA版本:JDK-1.7.0_25 Hadoop版本:hadoop-2.2.0 192.168.172.59namenode(充当namenode、secondarynamenode和ResourceManager角色) 192.168.172.88datanode1(充当datanode、nodemanager角色) 192.168.172.89datanode2(充当datanode、nodemanager角色) 二、系统准备 1)Hadoop可以从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src源码自行编译。(如果是真实线上环境,请下载64位hadoop版本,这样可以避免很多问题,这里我实验采用的是32位版本) 1 2 3 4 Hadoop下载地址 http: //apache .claz.org /hadoop/common/hadoop-2 .2.0/ Java下载下载 http: //www .oracle.com /technetwork/java/javase/downloads/index .html 2)我们这里采用三台CnetOS服务器来搭建Hadoop集群,分别的角色如上已经注明。 第一步:我们需要在三台服务器的/etc/hosts里面设置对应的主机名如下(真实环境可以使用内网DNS解析) 1 2 3 4 5 6 7 [root@node1hadoop] #cat/etc/hosts #Donotremovethefollowingline,orvariousprograms #thatrequirenetworkfunctionalitywillfail. 127.0.0.1localhost.localdomainlocalhost 192.168.172.59node1 192.168.172.88node2 192.168.172.89node3(注*我们需要在namenode、datanode三台服务器上都配置hosts解析) 3)从namenode上无密码登陆各台datanode服务器,需要做如下配置: 1 2 3 4 在namenode128上执行 ssh -keygen,一路Enter回车即可。 然后把公钥 /root/ . ssh /id_rsa .pub拷贝到datanode服务器即可,拷贝方法如下: ssh -copy- id -i. ssh /id_rsa .pubroot@192.168.172.88 ssh -copy- id -i. ssh /id_rsa .pubroot@192.168.172.89 三、Java安装配置 1 2 3 4 5 tar -xvzfjdk-7u25-linux-x64. tar .gz&& mkdir -p /usr/java/ ; mv /jdk1 .7.0_25 /usr/java/ 即可。 安装完毕并配置java环境变量,在 /etc/profile 末尾添加如下代码: export JAVA_HOME= /usr/java/jdk1 .7.0_25/ export PATH=$JAVA_HOME /bin :$PATH export CLASSPATH=$JAVE_HOME /lib/dt .jar:$JAVE_HOME /lib/tools .jar:./ 保存退出即可,然后执行source/etc/profile生效。在命令行执行java -version如下代表JAVA安装成功。 1 2 3 4 [root@node1~] #java-version javaversion "1.7.0_25" Java(TM)SERuntimeEnvironment(build1.7.0_25-b15) JavaHotSpot(TM)64-BitServerVM(build23.25-b01,mixedmode) (注*我们需要在namenode、datanode三台服务器上都安装Java JDK版本) 四、Hadoop版本安装 官方下载的hadoop2.2.0版本,不用编译直接解压安装就可以使用了,如下: 1)解压: tar-xzvfhadoop-2.2.0.tar.gz&&mvhadoop-2.2.0/data/hadoop/ (注*先在namenode服务器上都安装hadoop版本即可,datanode先不用安装,待会修改完配置后统一安装datanode) 2)配置变量: 1 2 3 4 5 在 /etc/profile 末尾继续添加如下代码,并执行 source /etc/profile 生效。 export HADOOP_HOME= /data/hadoop/ export PATH=$PATH:$HADOOP_HOME /bin/ export JAVA_LIBRARY_PATH= /data/hadoop/lib/native/ (注*我们需要在namenode、datanode三台服务器上都配置Hadoop相关变量) 五、配置Hadoop 在namenode上配置,我们需要修改如下几个地方: 1)修改vi/data/hadoop/etc/hadoop/core-site.xml内容为如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <? xml version = "1.0" ?> <? xml-stylesheet type = "text/xsl" href = "configuration.xsl" ?> <!--Putsite-specificpropertyoverridesinthisfile.--> < configuration > < property > < name >fs.default.name</ name > < value >hdfs://node1:9000</ value > </ property > < property > < name >hadoop.tmp.dir</ name > < value >/tmp/hadoop-${user.name}</ value > < description >Abaseforothertemporarydirectories.</ description > </ property > </ configuration > 2)修改vi/data/hadoop/etc/hadoop/mapred-site.xml内容为如下: 1 2 3 4 5 6 7 8 9 <? xml version = "1.0" ?> <? xml-stylesheet type = "text/xsl" href = "configuration.xsl" ?> <!--Putsite-specificpropertyoverridesinthisfile.--> < configuration > < property > < name >mapred.job.tracker</ name > < value >node1:9001</ value > </ property > </ configuration > 3)修改vi/data/hadoop/etc/hadoop/hdfs-site.xml内容为如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <? xml version = "1.0" encoding = "UTF-8" ?> <? xml-stylesheet type = "text/xsl" href = "configuration.xsl" ?> < configuration > < property > < name >dfs.name.dir</ name > < value >/data/hadoop/data_name1,/data/hadoop/data_name2</ value > </ property > < property > < name >dfs.data.dir</ name > < value >/data/hadoop/data_1,/data/hadoop/data_2</ value > </ property > < property > < name >dfs.replication</ name > < value >2</ value > </ property > </ configuration > 4)在/data/hadoop/etc/hadoop/hadoop-env.sh文件末尾追加JAV_HOME变量: 1 echo "exportJAVA_HOME=/usr/java/jdk1.7.0_25/" >> /data/hadoop/etc/hadoop/hadoop-env .sh 5)修改vi /data/hadoop/etc/hadoop/masters文件内容为如下: 1 node1 6)修改vi/data/hadoop/etc/hadoop/slaves文件内容为如下: 1 2 node2 node3 如上配置完毕,以上的配置具体含义在这里就不做过多的解释了,搭建的时候不明白,可以查看一下相关的官方文档。 如上namenode就基本搭建完毕,接下来我们需要部署datanode,部署datanode相对简单,执行如下操作即可。 1 for i in ` seq 8889`; do scp -r /data/hadoop/ root@192.168.172.$i: /data/ ; done 自此整个集群基本搭建完毕,接下来就是启动hadoop集群了。 六、启动hadoop并测试 在启动hadoop之前,我们需要做一步非常关键的步骤,需要在namenode上执行如下命令初始化name目录和数据目录。 1 cd /data/hadoop/ ;. /bin/hadoop namenode- format 那如何算初始化成功呢,如下截图成功创建name目录即正常: 然后启动hadoop所有服务,如下命令: [root@node1hadoop]#./sbin/start-all.sh 我们还可以查看相应的端口是否启动:netstat -ntpl 访问如下地址:http://192.168.172.59:50070/ 访问地址:http://192.168.172.59:8088/ 搭建完成后,我们简单的实际操作一下,如下图: 自此hadoop基本搭建完毕。 七、部署ZooKeeper服务 在node1上配置: 下载zookeeper3.4.6版本: 1 2 wgethttp: //apache .fayea.com /zookeeper/zookeeper-3 .4.6 /zookeeper-3 .4.6. tar .gz tar -xzfzookeeper-3.4.6. tar .gz-C /export/servers/ #vim /export/servers/ zookeeper-3.4.6/conf/zoo.cfg写入如下内容: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #Thenumberofmillisecondsofeachtick tickTime=2000 #Thenumberofticksthattheinitial #synchronizationphasecantake initLimit=10 #Thenumberofticksthatcanpassbetween #sendingarequestandgettinganacknowledgement syncLimit=5 #thedirectorywherethesnapshotisstored. dataDir= /export/zookeeper #theportatwhichtheclientswillconnect clientPort=2181 initLimit=5 syncLimit=2 dataLogDir= /export/zookeeper/logs server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 注意:zk里面的node节点名称要一一对应哦,然后创建zk数据目录和日志路径: 1 2 mkdir -p /export/zookeeper/logs echo 1> /export/zookeeper/myid 如上在node1上配置好zk后,把zk整个程序同步到另外两台node2、node3。 执行如下脚本: 1 for i in ` seq 8889`; do rsync -aP--delete /export/servers/zookeeper-3 .4.6/root@192.168.172.$i: /export/servers/zookeeper-3 .4.6/; rsync -av /export/zookeeper/ root@192.168.172.$i: /export/ ; done 然后分别修改node2、node3的myid为2和3,命令如下: 在node2上执行: 1 echo 2> /export/zookeeper/myid 在node3上执行: 1 echo 3> /export/zookeeper/myid 执行完后,分别启动三台服务器的zk服务: 1 cd /export/servers/zookeeper-3 .4.6/;. /bin/zkServer .shstart 如上配置,zookeeper配置完毕。 八、部署Hbase服务 在node1上配置: 1 2 3 4 下载软件:hbase-0.96.2-hadoop2. tar .gz,然后执行如下命令: tarxfhbase-0.96.2-hadoop2. tar .gz; mv hbase-0.96.2-hadoop2 /export/hbase 然后进入hbase配置文件目录,如下图: cd /export/hbase/conf/ vim hbase-site.xml内容如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 < configuration > < property > < name >hbase.tmp.dir</ name > < value >/export/hbase/tmp</ value > </ property > < property > < name >zookeeper.session.timeout</ name > < value >3600000</ value > </ property > < property > < name >hbase.zookeeper.property.tickTime</ name > < value >180000</ value > </ property > < property > < name >hbase.rootdir</ name > < value >hdfs://node1:9000/hbase</ value > </ property > < property > < name >hbase.cluster.distributed</ name > < value >true</ value > </ property > < property > < name >hbase.zookeeper.quorum</ name > < value >node1,node2,node3</ value > </ property > <!--禁止magorcompaction--> < property > < name >hbase.hregion.majorcompaction</ name > < value >0</ value > </ property > <!--禁止split--> < property > < name >hbase.hregion.max.filesize</ name > < value >536870912000</ value > </ property > <!----> < property > < name >hbase.hstore.blockingStoreFiles</ name > < value >2100000000</ value > </ property > < property > < name >hbase.regionserver.handler.count</ name > < value >100</ value > </ property > </ configuration > vim hbase-env.sh内容如下: 1 2 3 4 exportJAVA_HOME= /export/servers/jdk1 .6.0_25/ exportHBASE_OPTS= "-XX:+UseConcMarkSweepGC" exportHBASE_MANAGES_ZK= false exportHADOOP_HOME= /export/hadoop/ vim regionservers内容如下: 1 2 node2 node3 然后将node1 habse配置同步至node2、node3: 1 for i in ` seq 8889`; do rsync -av /export/hbase/ root@192.168.172.$i: /export/ ; done 最好在node1启动整个集群hbase即可: 1 cd /export/hbase/ ;shbin /start-hbase .sh 查看node1 JAVA进程信息如下: 最好查看hbase日志如下: 通过web查看hbase截图如下: NODE2状态: ----------------------------------------------------------- 你若觉得作者的文章写得不错,请奖励作者几锭银子,让作者感受到来自你满满的鼓励和继续创作的动力!我们支持原创!鼓励原创! 打赏之后,文章底部显示参与打赏者的记录,可以直接通过微信扫描打赏哟,直接按打赏根据提示操作。 自定义打赏金额,友情提示打赏金额不要超过50元哦,土豪可以随意哦,51CTO谢谢您对作者的支持!谢谢你的慷慨大方! 本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1899771

优秀的个人博客,低调大师

OpenStack CEPH Liberty 统一存储 bug解决

1, 问题: glance 镜像 raw 格式,启动云主机报错 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2015 - 12 - 13 11 : 53 : 27.597 11654 INFOnova.virt.libvirt.driver[req - db7b8ac1 - 8218 - 4ab0 - b769 - 9c4d4379843b e198d9f41e784308858a52b174fc822aa7fc63796b934498ba9b6d1a918cb2c7 - - - ][instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]Creatingimage 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[req - db7b8ac1 - 8218 - 4ab0 - b769 - 9c4d4379843b e198d9f41e784308858a52b174fc822aa7fc63796b934498ba9b6d1a918cb2c7 - - - ][instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]Instancefailedtospawn 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]Traceback(mostrecentcalllast): 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py" ,line 2155 , in _build_resources 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] yield resources 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py" ,line 2009 , in _build_and_run_instance 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]block_device_info = block_device_info) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py" ,line 2437 , in spawn 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]admin_pass = admin_password) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py" ,line 2861 , in _create_image 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]instance,size,fallback_from_host) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py" ,line 6282 , in _try_fetch_image_cache 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]size = size) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py" ,line 240 , in cache 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] * args, * * kwargs) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py" ,line 777 , in create_image 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]prepare_template(target = base,max_size = size, * args, * * kwargs) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/oslo_concurrency/lockutils.py" ,line 254 , in inner 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] return f( * args, * * kwargs) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py" ,line 230 , in fetch_func_sync 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]fetch_func(target = target, * args, * * kwargs) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py" ,line 2853 , in clone_fallback_to_fetch 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]backend.clone(context,disk_images[ 'image_id' ]) 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py" ,line 808 , in clone 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] if self .driver.is_cloneable(location,image_meta): 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/storage/rbd_utils.py" ,line 193 , in is_cloneable 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a] if image_meta.disk_format! = 'raw' : 2015 - 12 - 13 11 : 53 : 27.932 11654 ERRORnova.compute.manager[instance: 18efe519 - e86b - 43e9 - 842a - f974a751e29a]AttributeError: 'dict' object hasnoattribute 'disk_format' 2,问题分析 1,查找问题定位:/usr/lib/python2.7/site-packages/nova/virt/libvirt/storage/rbd_utils.py 1 2 3 4 5 6 7 import ipdb;ipdb.set_trace() if image_meta.disk_format! = 'raw' : reason = ( "rbdimageclonerequiresimageformattobe" "'raw'butimage{0}is'{1}'" ). format ( url,image_meta.disk_format) LOG.debug(reason) return False 2, ipdb 启动服务追踪 1 [root@AthComputeLiberty10325~] #ipdb/usr/bin/nova-compute--config-file=/etc/nova/nova.conf 3,发现蛛丝马迹 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 AttributeError: "'dict'objecthasnoattribute'disk_format'" >/usr/lib/python2.7/site-packages/nova/virt/libvirt/storage/rbd_utils.py(194)is_cloneable() 193 -->194 if image_meta.disk_format!= 'raw' : 195reason=( "rbdimageclonerequiresimageformattobe" ipdb>args self=<nova.virt.libvirt.storage.rbd_utils.RBDDriverobjectat0x5f41850> image_location={ 'url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'metadata' :{}} image_meta={ 'status' :u 'active' , 'deleted_at' :None, 'name' :u 'Ceph-linux6.6.v2.0' , 'deleted' :None, 'container_format' :u 'ovf' , 'created_at' :datetime.datetime(2015,12,12,8,47,40,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'disk_format' :u 'raw' , 'updated_at' :datetime.datetime(2015,12,12,9,35,22,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'locations' :[{ 'url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'metadata' :{}}], 'owner' :u 'a7fc63796b934498ba9b6d1a918cb2c7' , 'id' :u '05cfd97d-f0d8-43b4-9796-180f650e79ce' , 'min_ram' :0, 'checksum' :u '0909ad3eebe539efc2054196abffdb41' , 'min_disk' :0, 'is_public' :None, 'direct_url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'properties' :{}, 'size' :128849018880} ipdb>image_meta.disk_format ***AttributeError: 'dict' object has no attribute 'disk_format' ipdb>image_meta.disk_format() ***AttributeError: 'dict' object has no attribute 'disk_format' ipdb>image_meta.disk_format. values () ***AttributeError: 'dict' object has no attribute 'disk_format' ipdb>dir(image_meta.disk_format) ***AttributeError: 'dict' object has no attribute 'disk_format' ipdb>args self=<nova.virt.libvirt.storage.rbd_utils.RBDDriverobjectat0x5f41850> image_location={ 'url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'metadata' :{}} image_meta={ 'status' :u 'active' , 'deleted_at' :None, 'name' :u 'Ceph-linux6.6.v2.0' , 'deleted' :None, 'container_format' :u 'ovf' , 'created_at' :datetime.datetime(2015,12,12,8,47,40,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'disk_format' :u 'raw' , 'updated_at' :datetime.datetime(2015,12,12,9,35,22,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'locations' :[{ 'url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'metadata' :{}}], 'owner' :u 'a7fc63796b934498ba9b6d1a918cb2c7' , 'id' :u '05cfd97d-f0d8-43b4-9796-180f650e79ce' , 'min_ram' :0, 'checksum' :u '0909ad3eebe539efc2054196abffdb41' , 'min_disk' :0, 'is_public' :None, 'direct_url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'properties' :{}, 'size' :128849018880} ipdb>image_meta { 'status' :u 'active' , 'deleted_at' :None, 'name' :u 'Ceph-linux6.6.v2.0' , 'deleted' :None, 'container_format' :u 'ovf' , 'created_at' :datetime.datetime(2015,12,12,8,47,40,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'disk_format' :u 'raw' , 'updated_at' :datetime.datetime(2015,12,12,9,35,22,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'locations' :[{ 'url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'metadata' :{}}], 'owner' :u 'a7fc63796b934498ba9b6d1a918cb2c7' , 'id' :u '05cfd97d-f0d8-43b4-9796-180f650e79ce' , 'min_ram' :0, 'checksum' :u '0909ad3eebe539efc2054196abffdb41' , 'min_disk' :0, 'is_public' :None, 'direct_url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'properties' :{}, 'size' :128849018880} ipdb>type(image_meta) <type 'dict' > ipdb>image_meta { 'status' :u 'active' , 'deleted_at' :None, 'name' :u 'Ceph-linux6.6.v2.0' , 'deleted' :None, 'container_format' :u 'ovf' , 'created_at' :datetime.datetime(2015,12,12,8,47,40,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'disk_format' :u 'raw' , 'updated_at' :datetime.datetime(2015,12,12,9,35,22,tzinfo=<iso8601.iso8601.Utcobjectat0x604ae90>), 'locations' :[{ 'url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'metadata' :{}}], 'owner' :u 'a7fc63796b934498ba9b6d1a918cb2c7' , 'id' :u '05cfd97d-f0d8-43b4-9796-180f650e79ce' , 'min_ram' :0, 'checksum' :u '0909ad3eebe539efc2054196abffdb41' , 'min_disk' :0, 'is_public' :None, 'direct_url' :u 'rbd://03e180bd-7504-4883-8d0f-5506c63d4a4f/images/05cfd97d-f0d8-43b4-9796-180f650e79ce/snap' , 'properties' :{}, 'size' :128849018880} ipdb>image_meta[ 'disk_format' ] u 'raw' 3,解决问题bug: 修改前: if image_meta.disk_format != 'raw': 修改后: if image_meta['disk_format'] != 'raw': 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 179 180 def is_cloneable( self ,image_location,image_meta): 181 import ipdb;ipdb.set_trace() 182 url = image_location[ 'url' ] 183 try : 184 fsid,pool,image,snapshot = self .parse_url(url) 185 except exception.ImageUnacceptablease: 186 LOG.debug( 'notcloneable:%s' ,e) 187 return False 188 189 if self ._get_fsid()! = fsid: 190 reason = '%sisinadifferentcephcluster' % url 191 LOG.debug(reason) 192 return False 193 194 #Addwilliam,image_meta.disk_format!='raw' 195 #so... 196 if image_meta[ 'disk_format' ]! = 'raw' : 197 reason = ( "rbdimageclonerequiresimageformattobe" 198 "'raw'butimage{0}is'{1}'" ). format ( 199 url,image_meta.disk_format) 200 LOG.debug(reason) 201 return False 4, 完成操作 1 2 3 4 5 2015 - 12 - 13 13 : 18 : 36.659 19827 INFOnova.virt.libvirt.firewall[req - 7d3b097b - 701d - 4352 - a8cc - 87bc6fb3f9f1 e198d9f41e784308858a52b174fc822aa7fc63796b934498ba9b6d1a918cb2c7 - - - ][instance: 36025fe9 - 5abe - 44de - bdb8 - 71983a3645f2 ]Calledsetup_basic_filtering in nwfilter 2015 - 12 - 13 13 : 18 : 36.660 19827 INFOnova.virt.libvirt.firewall[req - 7d3b097b - 701d - 4352 - a8cc - 87bc6fb3f9f1 e198d9f41e784308858a52b174fc822aa7fc63796b934498ba9b6d1a918cb2c7 - - - ][instance: 36025fe9 - 5abe - 44de - bdb8 - 71983a3645f2 ]Ensuringstaticfilters 2015 - 12 - 13 13 : 18 : 37.418 19827 INFOnova.compute.manager[ - ][instance: 36025fe9 - 5abe - 44de - bdb8 - 71983a3645f2 ]VMStarted(LifecycleEvent) 2015 - 12 - 13 13 : 18 : 37.441 19827 INFOnova.virt.libvirt.driver[ - ][instance: 36025fe9 - 5abe - 44de - bdb8 - 71983a3645f2 ]Instancespawnedsuccessfully. 2015 - 12 - 13 13 : 18 : 37.525 19827 INFOnova.compute.manager[req - a92e6077 - 014c - 421c - 9fcc - 9d21e6f7d420 - - - - - ][instance: 36025fe9 - 5abe - 44de - bdb8 - 71983a3645f2 ]Duringsync_power_statetheinstancehasapendingtask(spawning).Skip. 本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1722459

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册