回覆列表
  • 1 # 橘生淮南品茗薄荷微

    OpenStack幾乎支援現在所有主流的虛擬技術和Hypervisor,如KVM,Hyper-V,LXC,QEMU,UML,VMWareESX/ESXi,Xen/XenServer等,未來還會支援OpenVZ和VirtualBox.不過OpenStack首選的Hypervisor是KVM,OpenStack安裝後預設使用的是KVM(–libvirt_type=kvm),不需要特別配置。如果由於某種原因,比如伺服器CPU不支援IntelVT-x/AMD-V不能使用KVM或者想簡單嘗試一下另外一種Hypervisor怎麼辦呢?方法很容易,1、更改OpenStackNova的配置檔案(–libvirt_type);2、給所有的Compute結點裝上相應的Hypervisor就可以了。以下以LXC為例來說明如何更換OpenStackNova的Hypervisor,LXC使用的是與Xen和KVM完全不同的虛擬技術,和OpenVZ的容器技術有點類似。

      首先在所有openstacknovacompute結點上替換現有的nova-compute-kvm到nova-compute-lxc:

      $sudoapt-getinstallnova-compute-lxc

      LXC使用cgroup檔案系統來限制資源和程序,libvirt需要cgroup檔案系統來執行LXC,我們只要在novacompute上建立一個ctroups目錄並且在/etc/fstab最後加上none/cgroupscgroupcpuacct,memory,devices,cpu,freezer,blkio00這行就可以了,別忘了重啟系統:

      $sudomkdir/cgroups

    $vi/etc/fstab

    none/cgroupscgroupcpuacct,memory,devices,cpu,freezer,blkio00

    $sudoreboot

      重啟後可以看到/cgroups下面多了很多東西:

      $ls/cgroup/

    blkio.io_mergedcpu.shares

    blkio.io_queueddevices.allow

    blkio.io_service_bytesdevices.deny

    blkio.io_serviceddevices.list

    blkio.io_service_timelibvirt

    blkio.io_wait_timememory.failcnt

    blkio.reset_statsmemory.force_empty

    blkio.sectorsmemory.limit_in_bytes

    blkio.throttle.io_service_bytesmemory.max_usage_in_bytes

    blkio.throttle.io_servicedmemory.memsw.failcnt

    blkio.throttle.read_bps_devicememory.memsw.limit_in_bytes

    blkio.throttle.read_iops_devicememory.memsw.max_usage_in_bytes

    blkio.throttle.write_bps_devicememory.memsw.usage_in_bytes

    blkio.throttle.write_iops_devicememory.move_charge_at_immigrate

    blkio.timememory.numa_stat

    blkio.weightmemory.oom_control

    blkio.weight_devicememory.soft_limit_in_bytes

    cgroup.clone_childrenmemory.stat

    cgroup.event_controlmemory.swappiness

    cgroup.procsmemory.usage_in_bytes

    cpuacct.statmemory.use_hierarchy

    cpuacct.usagenotify_on_release

    cpuacct.usage_percpurelease_agent

    cpu.rt_period_ustasks

    cpu.rt_runtime_us

      修改OpenStackNova配置,將nova-compute.conf裡面的–libvirt_type=kvm改成lxc:

      $sudovi/etc/nova/nova-compute.conf

    --libvirt_type=lxc

    $sudorestartnova-compute

      重啟所有novacompute結點上的nova-compute服務,有必要的話重啟所有novacompute結點。

      那映象怎麼辦呢?以前為KVM上傳的映象也可以用在LXC上嗎?嗯,可以。下載oneiric-server-cloudimg-amd64.tar.gz解壓並映象到OpenStack:

      $wget

    $tarzxvfoneiric-server-cloudimg-amd64.tar.gz

    $euca-bundle-image-ioneiric-server-cloudimg-amd64.img

    $euca-upload-bundle-boneiric-m/tmp/oneiric-server-cloudimg-amd64.img.manifest.xml

    $euca-registeroneiric/oneiric-server-cloudimg-amd64.img.manifest.xml

    $euca-describe-images

    IMAGEami-00000001oneiric/oneiric-server-cloudimg-amd64.img.manifest.xmlavailableprivatex86_64machineinstance-store

    $euca-run-instances-kvpsee-tm1.tinyami-00000001

    $euca-describe-instances

    RESERVATIONr-4bbu7bd7sanbidefault

    INSTANCEi-00000001ami-00000001172.16.39.6172.16.39.6runningvpsee(vpseecloud,node00)0m1.tiny2012-01-20T08:04:05Znovaami-00000000ami-00000000

      需要注意的是,OpenStack目前不支援混合Hypervisor,也就是說所有novacompute結點上必須使用同一種Hypervisor,不過支援混合Hypervisor的OpenStack正在計劃開發中。

  • 中秋節和大豐收的關聯?
  • 怎樣看待最近上映的肖央主演的《誤殺》的結局?