{"id":320,"date":"2018-03-14T09:03:21","date_gmt":"2018-03-14T01:03:21","guid":{"rendered":"http:\/\/www.max-shu.com\/blog\/?p=320"},"modified":"2018-03-14T09:03:21","modified_gmt":"2018-03-14T01:03:21","slug":"openstack-%e5%ae%89%e8%a3%85%e5%92%8c%e4%bd%bf%e7%94%a8%ef%bc%88%e5%9b%9b%ef%bc%89","status":"publish","type":"post","link":"http:\/\/www.max-shu.com\/blog\/?p=320","title":{"rendered":"OpenStack \u5b89\u88c5\u548c\u4f7f\u7528\uff08\u56db\uff09"},"content":{"rendered":"<div><b>\u67e5\u770b\u9879\u76ee(\u79df\u6237)\u914d\u989d\uff1a<\/b><\/div>\n<div>#\u00a0<b><span style=\"color: #ff0000;\">nova-manage project quota hanborq<\/span><\/b><br \/>\nmetadata_items: 128<br \/>\nvolumes: 10<br \/>\ngigabytes: 1000<br \/>\nram: 51200<br \/>\nsecurity_group_rules: 20<br \/>\ninstances: 10<br \/>\nsecurity_groups: 10<br \/>\ninjected_file_content_bytes: 10240<br \/>\nfloating_ips: 10<br \/>\ninjected_files: 5<br \/>\ncores: 20<\/div>\n<div><\/div>\n<div><\/div>\n<div><b><span style=\"color: #8600a4;\">\u6ce8\u610f\u70b9\uff1a<\/span><\/b><\/div>\n<div>1. nova \u4e0d\u63d0\u4f9b shutdown \u6216 stop \u547d\u4ee4\uff0c\u53ef\u4ee5\u4f7f\u7528 nova suspend \u547d\u4ee4\u548c nova reboot \u547d\u4ee4\u7ec4\u5408\u6765\u5b9e\u73b0\u76f8\u540c\u7684\u6548\u679c\u3002<\/div>\n<div>2. nova suspend \u547d\u4ee4\u4f1a\u8ba9VM\u6302\u8d77\uff0c\u800c\u4e14host\u7684qemu-kvm\u8fdb\u7a0b\u4f1a\u9000\u51fa\uff0c\u76f8\u5f53\u4e8e\u7535\u8111\u7684\u4f11\u7720\u72b6\u6001\u3002<\/div>\n<div>3. nova suspend\u628aVM\u7684\u5185\u5b58\u5185\u5bb9\u5199\u5165\u786c\u76d8\uff0c\u518d\u6302\u8d77\uff0chost\u7684qemu-kvm\u8fdb\u7a0b\u4f1a\u9000\u51fa\uff1b\u800cnova pause \u662fVM\u505c\u6b62\u6267\u884c\u4efb\u52a1\uff0c\u4f46\u4e0d\u4f1a\u628aVM\u5185\u5b58\u5185\u5bb9\u5199\u5165\u786c\u76d8\uff0chost\u7684qemu-kvm\u8fdb\u7a0b\u4e5f\u4e0d\u9000\u51fa\u3002<\/div>\n<div>4. VM\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e\uff1a\/etc\/libvirt\/qemu\/instance-XXXXXX.xml\u4ee5\u53ca\u00a0\/var\/lib\/nova\/instances\/instance-XXXXXX\/libvirt.xml\u3002<\/div>\n<div>5.\u00a0<b>VM\u5728flavor\u91cc\u9762\u914d\u7f6e\u7684\u786c\u76d8\u7684\u9ed8\u8ba4\u4f4d\u7f6e\uff1a\/var\/lib\/nova\/instances\/\uff0c\u6240\u4ee5\u6700\u597d\u628a\/var\/lib\/nova\/instances\/\u6302\u8f7d\u5230\u6bd4\u8f83\u5927\u7684\u5b58\u50a8\u4e0a\uff0c\u4ee5\u514d\u4ea7\u751f\u7a7a\u95f4\u4e0d\u591f\u7684\u95ee\u9898\uff0c\u540e\u6765\u589e\u52a0\u7684VM\u6570\u636e\u76d8\u5f53\u7136\u662f\u4eceVG\u91cc\u9762\u5206\u914d\u51fa\u6765\u7684\u3002<\/b><\/div>\n<div>6. \u5982\u679c\u8981\u5b9e\u73b0live-migration\uff0c\u5fc5\u987b\u4f7f\u7528NFS\u6216\u5176\u4ed6\u5171\u4eab\u5b58\u50a8\u65b9\u5f0f\u6765mount \/var\/lib\/nova\/instances\/\u76ee\u5f55\uff0c\u8fd9\u6837\u6240\u6709compute\u8282\u70b9\u7528\u7684\u90fd\u662f\u76f8\u540c\u7684\u5b58\u50a8\uff0cmigrate\u65f6VM\u786c\u76d8\u5185\u5bb9\u5c31\u4e0d\u4f1a\u53d8\u3002<\/div>\n<div>7. nova\u5b9e\u9645\u8c03\u7528\u7684\u662f\u7cfb\u7edfqemu-kvm\u547d\u4ee4\u6765\u5b9e\u73b0\u865a\u62df\u673a\u8fd0\u884c\u7684\u3002<\/div>\n<div>8. \u53ef\u4ee5\u4f7f\u7528# nova-manage project quota \u6765\u8bbe\u7f6e\u6bcf\u4e2a\u9879\u76ee(\u79df\u6237)\u7684\u914d\u989d\u3002<\/div>\n<div><\/div>\n<div><\/div>\n<div><b>\u89e3\u51b3\u5982\u4e0b\u95ee\u9898\uff1a<\/b><\/div>\n<div><b>1. \u73b0\u8c61\uff1a<\/b><\/div>\n<div># vi \/var\/log\/nova\/network.log<\/div>\n<div>2012-07-08 03:27:02 TRACE nova.rpc.amqp\u00a0\u00a0\u00a0\u00a0 raise exception.NetworkNotFound(network_id=network_id)<br \/>\n2012-07-08 03:27:02 TRACE nova.rpc.amqp NetworkNotFound: Network 3 could not be found.<\/div>\n<div>\u89e3\u51b3\uff0c\u8c61\u91cd\u65b0\u5b89\u88c5\u4e00\u6837\uff0c\u5148\u628a\u6570\u636e\u5e93\u6e05\u7406\u6389\uff0c\u518d\u5efa\u7acb\uff1a<\/div>\n<div>mysql&gt; drop database nova;<br \/>\nmysql&gt;\u00a0create database nova;<\/div>\n<div>#nova-manage db sync<\/div>\n<div>\u540e\u9762\u7684\u6b65\u9aa4\u90fd\u9700\u8981\u3002<\/div>\n<div><\/div>\n<div><b>2. \u73b0\u8c61\uff1a<\/b><\/div>\n<div># vi \/var\/log\/nova\/compute.log<\/div>\n<div>nova.rpc.amqp libvirtError: Unable to read from monitor: Connection reset by peer<\/div>\n<div>\u89e3\u51b3\u65b9\u6cd5\uff1a<\/div>\n<div>\u8fd9\u4e2a\u5e94\u8be5\u662f\u914d\u7f6e\u9519\u4e86\u4e0b\u9762\u56db\u4e2a\u53c2\u6570\uff1a<\/div>\n<div>novncproxy_base_url =\u00a0<a href=\"http:\/\/10.24.1.47:6080\/vnc_auto.html\" rel=\"nofollow\">http:\/\/10.24.1.47:6080\/vnc_auto.html<\/a>\u00a0 \u5fc5\u987b\u662fcc\u7684\u5730\u5740<br \/>\nvnc_enabled = true<br \/>\nvncserver_listen = 10.24.1.49 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u5fc5\u987b\u662f\u8be5compute\u8282\u70b9\u7684\u5730\u5740<br \/>\nvncserver_proxyclient_address = 10.24.1.49 \u00a0 \u00a0 \u00a0\u00a0\u5fc5\u987b\u662f\u8be5compute\u8282\u70b9\u7684\u5730\u5740<\/div>\n<div><\/div>\n<div><b>3. \u73b0\u8c61\uff1a<\/b><\/div>\n<div>nova delete\u65f6\u51fa\u73b0\uff1a<\/div>\n<div># vi \/var\/log\/nova\/compute.log<\/div>\n<div>nova.rpc.amqp TypeError: expected string or buffer<\/div>\n<div>\u89e3\u51b3\u65b9\u5f0f\uff0c\u53c2\u8003\uff1a<a href=\"https:\/\/review.openstack.org\/#\/c\/8062\/1\/nova\/compute\/manager.py\" rel=\"nofollow\">https:\/\/review.openstack.org\/#\/c\/8062\/1\/nova\/compute\/manager.py<\/a><\/div>\n<div>\u589e\u52a0\u7ea2\u5b57\u4ee3\u7801\uff1a<\/div>\n<div># vi \/usr\/lib\/python2.7\/site-packages\/nova\/compute\/manager.py<\/div>\n<div>\u00a0 \u00a0 def _get_instance_volume_block_device_info(self, context, instance_id):<br \/>\nbdms = self._get_instance_volume_bdms(context, instance_id)<br \/>\nblock_device_mapping = []<br \/>\nfor bdm in bdms:<br \/>\n<span style=\"color: #ff0000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try:<br \/>\n<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cinfo = utils.loads(bdm[&#8216;connection_info&#8217;])<br \/>\nblock_device_mapping.append({&#8216;connection_info&#8217;: cinfo,<br \/>\n&#8216;mount_device&#8217;:<br \/>\nbdm[&#8216;device_name&#8217;]})<br \/>\n<span style=\"color: #ff0000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 except TypeError:<br \/>\n# if the block_device_mapping has no value in connection_info<br \/>\n# (returned as None), don&#8217;t include in the mapping<\/span><\/div>\n<div><span style=\"color: #ff0000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pass<br \/>\n<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # NOTE(vish): The mapping is passed in so the driver can disconnect<br \/>\n#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 from remote volumes if necessary<br \/>\nreturn {&#8216;block_device_mapping&#8217;: block_device_mapping}<\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u67e5\u770b\u9879\u76ee(\u79df\u6237)\u914d\u989d\uff1a #\u00a0nova-manage project quota hanborq metadat &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[210,209,94],"class_list":["post-320","post","type-post","status-publish","format-standard","hentry","category-4","tag-nova","tag-openstack","tag-94"],"views":1663,"_links":{"self":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=320"}],"version-history":[{"count":1,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/320\/revisions"}],"predecessor-version":[{"id":321,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/320\/revisions\/321"}],"wp:attachment":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=320"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}