当前位置:   article > 正文

OpenStack问题集锦(持续更新中...)_libvirt disk cache mode

libvirt disk cache mode
(文章来自作者维护的社区微信公众号【虚拟化云计算】)
目前有两个微信群《kvm虚拟化》和《openstack》,扫描二维码点击“云-交流”,进群交流提问
如何再添加一个管理员用户
# keystone-manage bootstrap --bootstrap-username myadmin --bootstrap-password mypasswd
 

 

如何登陆虚拟机的控制台界面:
1.查看某个实例的url(例如访问前面创建的名为instance-a 的实例)
$ openstack console url show 5b08017b-00d4-4476-9380-4f5b6165c6d7
+-------+---------------------------------------------------------------------------------+
| Field | Value                                                                           |
+-------+---------------------------------------------------------------------------------+
| type  | novnc                                                                           |
| url   | http://controller:6080/vnc_auto.html?token=6643713d-f4c8-411c-ac9e-2c5b5a419935 |
+-------+---------------------------------------------------------------------------------+
(5b08017b-00d4-4476-9380-4f5b6165c6d7 通过openstack server list 查看,是要启动实例的ID)
2.访问一个实例
(在浏览器中输入http://controller:6080/vnc_auto.html?token=6643713d-f4c8-411c-ac9e-2c5b5a419935 就可以访问虚拟机了,前提是controller主机名能被识别,或直接换成ip)

 

 
如何设置虚拟机磁盘类型,如ide、virtio
创建虚拟机时直接传入"disk_bus": "ide" :
 
Action: 'create', calling method: <bound method ServersController.create of <nova.api.openstack.compute.servers.ServersController object at 0x7f1e5c008510>>, body: {"server": {"name": "test-1", "imageRef": "", "availability_zone": "nova", "block_device_mapping_v2": [{"disk_bus": "ide", "source_type": "image", "boot_index": "0", "uuid": "907bcb20-7623-446f-b19c-ab135a0ac2d6", "destination_type": "volume", "volume_size": 400, "delete_on_termination": true, "disk_name": "test-1-disk1", "device_name": "vda"}], "flavorRef": "8a6558a8-2d36-48d9-bd0d-2fbe1ac25a2e", "max_count": 1, "interface_disconnect_names": [], "min_count": 1, "networks": "none"}}
 
如何设置虚拟机的cpu拓扑
$ openstack flavor set FLAVOR-NAME \
    --property hw:cpu_sockets=FLAVOR-SOCKETS \
    --property hw:cpu_cores=FLAVOR-CORES \
    --property hw:cpu_threads=FLAVOR-THREADS \
    --property hw:cpu_max_sockets=FLAVOR-SOCKETS \
    --property hw:cpu_max_cores=FLAVOR-CORES \
    --property hw:cpu_max_threads=FLAVOR-THREADS
 
或者
$ nova flavor-key m2.nano set hw:cpu_sockets=3  hw:cpu_cores=4  hw:cpu_threads=5
 
如何设置虚拟机的操作系统类型
# openstack image set --property os_type=windows 950420e3-98ae-454b-b073-9f75b275fcc8
或者
# nova image-meta 950420e3-98ae-454b-b073-9f75b275fcc8 set os_type=linux
 
这样在镜像的属性里面就能看到os_type
 
如何设置虚拟机磁盘的cache类型
修改配置文件中的disk_cachemodes:
/etc/nova/nova-compute.conf
[libvirt]
disk_cachemodes = "network=writeback"
 
其中network和writeback分别对应虚拟机xml中的type和cache:
  <devices>
    <disk type=' network' device='disk'>
      <driver name='qemu' type='raw' cache=' writeback'/>
这个配置是不会写入数据库的,每次虚拟机启动时根据这个配置文件动态生成。
 
如何设置虚拟机cpu类型
修改配置文件中的cpu_mode:
/etc/nova/nova-compute.conf
[libvirt]
cpu_mode=none
这个配置是不会写入数据库的,每次虚拟机启动时根据这个配置文件动态生成。
如果cpu_mode=none:
  <cpu>
      <topology sockets='1' cores='1' threads='1'/>                           
   </cpu>
如果cpu_mode=host-model:
  <cpu mode='host-model'>
      <model fallback='allow'/>
      <topology sockets='1' cores='1' threads='1'/>                           
   </cpu>
 
如何设置虚拟机cpu的亲和性
修改/etc/nova/nova.conf
[DEFAULT]
vcpu_pin_set = 0-1
使用上面的配置后虚拟机的xml文件如下:
  <vcpu placement='static' cpuset='0-1'>2</vcpu>
其作用主要是让openstack的虚拟机使用指定的几个物理cpu核,给物理机操作系统适当留下若干物理核,保证物理机的性能。
说明:另外openstack还可以通过flavor隐式的做虚拟机cpu的绑定,通过做host的aggregate:
The flavor extra specs will be enhanced to support twonew parameters
hw:cpu_policy=shared|dedicated
hw:cpu_threads_policy=avoid|separate|isolate|prefer
 
如何设置虚拟机的关联组与反关联组
nova可以通过命令创建一个server group,在server group中的vm可以指定一些policy。
这些policy包括affinity和anti-affinity。affinity表示尽量把vm都安排到一个host上面,anti-ffinity表示尽量把vm安排到不同的host上面。
创建server-group的命令:
nova server-group-create group_name anti-afffinity
 
创建vm的时候通过hint指定group名字:
nova boot --image cirros --flavor m1.small --hint group=group_name
这样就能把创建的vm放到某个指定的group里面了
 
如何更新网络的ip地址池的范围
neutron subnet-update --allocation-pool start=192.168.105.35,end=192.168.105.39 --allocation-pool start=192.168.105.40,end=192.168.105.49 subnet_01
 
如何使用floating ip
neutron floatingip-create providernet01
neutron floatingip-associate  fbc76a22-4a2e-43bb-982b-6e42575eebe9 12b50cb3-18c8-4c08-8caf-1203e3183406
(floating_id   port_id)
 
如何在subnet中创建port
neutron port-create --fixed-ip subnet_id=$SUBNET_ID $NET_ID
 
如何控制磁盘qos(cinder)
一。首先创建一个带限速功能的类型
# cinder type-create my-type 
# cinder qos-create my-qos consumer="front-end" read_iops_sec=2000 write_iops_sec=1000
# cinder qos-associate $QOS_ID $VOLUME_TYPE_ID
# cinder qos-get-association $QOS_ID
 
二。把创建的类型赋给磁盘
如果是已经存在的磁盘:
1.从虚拟机分离磁盘
2.#  cinder retype $VOLUME_ID  $VOLUME_TYPE_ID
3.给虚拟机挂载磁盘
 
如果是要新创建磁盘:
1.# cinder create --name $VOLUME_NAME --volume-type $VOLUME_TYPE_ID 
2.给虚拟机挂载磁盘
说明:
  1. consumer的合法值为front-end、back-end、both。front-end表示使用前端控制(hypervisor控制,会在libvirt xml文件中定义), 而back-end表示使用后端控制(cinder drivers,需要driver支持),both表示前后端同时进行QoS控制。
  1. libvirt中disk中配置:
      <iotune>
        <read_iops_sec>2000</read_iops_sec>
        <write_iops_sec>1000</write_iops_sec>
      </iotune>
 
如何控制磁盘qos(nova)
# openstack flavor create  --vcpus 1 --ram 4096 --disk 5 qqq
# openstack flavor set qqq --property quota:disk_read_bytes_sec=20480 --property quota:disk_write_bytes_sec=10240
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
      <source protocol='rbd' name='images/1a956ba7-25fe-49f1-9513-7adb8928036c'>
        <host name='192.168.107.50' port='6789'/>
        <host name='192.168.107.51' port='6789'/>
        <host name='192.168.107.52' port='6789'/>
        <host name='192.168.107.53' port='6789'/>
      </source>
      <target dev='vda' bus='virtio'/>
      <iotune>
        <read_bytes_sec>20480</read_bytes_sec>
        <write_bytes_sec>10240</write_bytes_sec>
      </iotune>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </disk>
# openstack flavor create  --vcpus 1 --ram 4096 --disk 5 qqqq
# openstack flavor set qqqq --property quota:disk_read_iops_sec=20480 --property quota:disk_write_iops_sec=10240
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
      <source protocol='rbd' name='images/1a956ba7-25fe-49f1-9513-7adb8928036c'>
        <host name='192.168.107.50' port='6789'/>
        <host name='192.168.107.51' port='6789'/>
        <host name='192.168.107.52' port='6789'/>
        <host name='192.168.107.53' port='6789'/>
      </source>
      <target dev='vda' bus='virtio'/>
      <iotune>
        <read_iops_sec>20480</read_iops_sec>
        <write_iops_sec>10240</write_iops_sec>
      </iotune>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </disk>
 
如何控制网络qos(neutorn)
 
 
如何控制网络qos(nova)
# openstack flavor create  --vcpus 1 --ram 512 --disk 1 q
# openstack flavor set q --property quota:vif_inbound_average=2048  --property quota:vif_outbound_average=1024
    <interface type='bridge'>
      <mac address='fa:16:3e:8f:6a:c9'/>
      <source bridge='brq5233ef6c-62'/>
       <bandwidth>
        <inbound average='2048'/>
        <outbound average='1024'/>
      </bandwidth>
      <target dev='tap9573c869-24'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
 
如何在数据库中删除虚拟机
MariaDB [nova]> delete from instance_actions_events where action_id="129";
MariaDB [nova]> delete from instance_actions_events where action_id="138";
 
MariaDB [nova]> delete from instance_actions where instance_uuid="67b6044b-bbdc-4120-b2c7-c6faf540da29"; (id和action_id关联)
 
MariaDB [nova]> delete from block_device_mapping where instance_uuid="67b6044b-bbdc-4120-b2c7-c6faf540da29";
 
MariaDB [nova]> delete from instance_extra where instance_uuid="67b6044b-bbdc-4120-b2c7-c6faf540da29";
 
MariaDB [nova]> delete from instance_info_caches where instance_uuid="67b6044b-bbdc-4120-b2c7-c6faf540da29";     
 
MariaDB [nova]> delete from instance_system_metadata where instance_uuid="67b6044b-bbdc-4120-b2c7-c6faf540da29";
 
MariaDB [nova]> delete from instances where display_name="test-1";  
 
快速创建网络脚本
#!/bin/bash
function create_providernet()
{
    openstack router create router01
    neutron net-create --shared --router:external=true --provider:physical_network provider01 --provider:network_type flat providernet01
    openstack subnet create --network providernet01 --dns-nameserver 219.146.1.66 --gateway 192.168.5.254 --subnet-range 192.168.5.0/24 --no-dhcp providernet01_subnet01
    #neutron router-gateway-set router01 providernet01
    neutron router-gateway-set --fixed-ip ip_address=192.168.5.89 router01 providernet01
}
 
function create_net()
{
    neutron net-create --shared  --provider:segmentation_id 188 --provider:physical_network provider02 --provider:network_type vlan net01
    openstack subnet create --network net01 --dns-nameserver 219.146.1.66 --gateway 172.16.1.1 --subnet-range 172.16.1.0/24  net01_subnet01
    neutron router-interface-add router01 net01_subnet01
}
 
function clear_all()
{   
    neutron router-gateway-clear router01
    neutron router-interface-delete router01 net01_subnet01
    neutron router-delete router01
 
    neutron net-delete providernet01
    neutron net-delete net01
}
 
. admin-openrc
create_providernet
create_net
#clear_all

 

 

持续更新中...
===============================================================
关注微信公众号【虚拟化云计算】,阅读更多虚拟化云计算知识

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/217523
推荐阅读
相关标签
  

闽ICP备14008679号