kvm虛擬化2-qemu-kvm

來源:互聯網
上載者:User

標籤:soc   記憶體   $1   -name   1.2   tap   啟動   router   模組   

Kvm  只支援x86 64的硬體虛擬化    要求cpu必須支援硬體虛擬化 HVM

Kvm兩個組件:

1 kvm.ko模組裝入後為/dev/kvm 工作為hypervisor ,在使用者空間通過系統調用loctl()與核心中的kvm模組互動,從而完成虛擬機器的建立,啟動

2qemu-kvm進程:在使用者空間用於實現IO裝置類比,用於實現一個虛擬機器執行個體

Kvm架構

Virtio:開源的半虛擬化解決方案

KSM:掃描記憶體,如發現有多個虛擬機器執行個體的記憶體有共同的資料記憶體空間,將其合唯一(用的不多)

Kvm管理工具

1 使用qemu-kvm管理kvm

qemu: 

  處理器模擬器

      模擬各IO裝置

      將模擬裝置串連至主機的物理裝置

      提供使用者介面

 

想命令使用qemu  建立連結 ln   -sv   /usr/libexec/qemu-kvm    /usr/bin

Qemu-kvm  

  -machine [type=]name:-machine help來擷取列表,用於指定類比的主控件類型;

   -cpu cpu:-cpu help來擷取列表;用於指定要類比的CPU型號;

  -smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]:指明虛擬機器上vcpu的數量及拓撲;

  -boot [order=drives][,once=drives][,menu=on|off] [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]

      order:各裝置的引導次序:c表示第一塊硬碟,d表示第一個光碟機裝置;-boot order=dc,once=d

  -m megs:虛擬機器的記憶體大小;

  -name NAME:當前虛擬機器的名稱,要惟一;

塊裝置相關的選項:

  -hda/-hdb file:指明IDE匯流排類型的磁碟對應檔路徑;第0和第1個;

      -hdc/-hdd file:第2和第3個;

      -cdrom file:指定要使用光碟片映像檔案;

  -drive [file=file][,if=type][,media=d][,index=i][,cache=writethrough|writeback|none|directsync|unsafe][,format=f]:

  file=/PATH/TO/SOME_IMAGE_FILE:映像檔案路徑;

  if=TYPE:塊裝置匯流排類型,ide, scsi, sd, floppy, virtio,...

      media=TYPE:介質類型,cdrom和disk;

      index=i:設定同一類型裝置多個裝置的編號;

  cache=writethrough|writeback|none|directsync|unsafe:緩衝方式;

      format=f:磁碟映像檔案的格式;

顯示選項:

  -display type:顯示的類型,sdl, curses, none和vnc;

  -nographic:不使用圖形介面;

  -vga [std|cirrus|vmware|qxl|xenfb|none]:類比出的顯卡的型號;

  -vnc display[,option[,option[,...]]]]:啟動一個vnc server來顯示虛擬機器介面; 讓qemu進程監聽一個vnc介面;

      display:

   (1) HOST:N

           在HOST主機的第N個案頭號輸出vnc;

           5900+N

      (2) unix:/PATH/TO/SOCK_FILE

      (3) none

      options:

           password:串連此服務所需要的密碼;

-monitor stdio:在標準輸出上顯示monitor介面;

      Ctrl-a, c:在console和monitor之間切換;

      Ctrl-a, h

類比:

網路選項:

-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]

為虛擬機器建立一個網路介面,並將其添加至指定的VLAN;

model=type:指明類比出的網卡的型號,ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio

建立個磁碟影像檔案:

qemu-img   create  -f   qcow2  -o  perallocation=metadate,size=80g   /vms/centos/centos.img

建立虛擬網路:

建立虛擬網卡,都是成對出現的一個在虛擬機器上,另一個添加到橋上這樣就可以通訊了

ip  link  add  vethm.1  type veth  peer  name  vethm.2

ip  link  show   顯示

ip  link  del  vethx.1  type  veth  peer  name  vethx.2   刪除

這裡可以類比個空間,然後將一個網卡放進去

ip  netns   add  router1    建立

ip   netns   list     查看

ip  link  set   dev  vethm.2  netns  router1    vethm.2 添加 router1 中

在router1 中查看

ip netns  exec  router1  ifconfig  -a

配置 ip 後啟用就可以通訊了

一般虛擬機器都會將另一個網卡添加到橋中

brctl  show    顯示

建立一個橋:brctl   addbr    br-int

 Ifconfig    br-int   up     啟用

 

指令碼:

#!/bin/bash

Bridge=br-int

If  [ -n  “$1” ]; then

      Ip   link  set  $1  up

      Sleep  1

      Brctl   addif  $bridge   $1

      [ $?  -eq  0]  &&  exit 0 ||  exit 1

Else

      Echo  “no  interface  specified”

      Exit 2

 

Fi

 

啟動虛擬機器執行個體:

#qemu-kvm  -name  c1  -m  256  -smp  2  -drive  file=/vms/ cirros1.img,media=disk,if=virtio,format=qcow2   -net  nic,model=virtio,macaddr=52:54:00:00:00  -net  tap,script=/etc/qemu-ifup   -vnc  :0  -daemonize

 

再起一個

~]# qemu-kvm  -name  c2  -m  256  -smp  2  -drive  file=/vms/cirros/cirros1.img,media=disk,if=virtio,format=qcow2   -net  nic,model=virtio,macaddr=52:54:00:00:01  -net  tap,script=/etc/qemu-ifup   -vnc  :2  -daemonize

此時看在橋中關聯了兩個網卡tap01  tap02

# vncviewer  :0 &    進入虛擬機器

基於net與外面互動

開啟核心轉寄:sysctl  -w   net.ipv4.ip_forward=1

在虛擬機器中,指定網關  :route  add  default   gw  10.1.1.254

iptables -t nat –vnL

ping  進行抓包發現是宿主機在訪問

tcpdump   -i  ens33  icmp

如何將外面伺服器串連到虛擬機器,添加dnat規則

Iptables   -t  nat  -A  preroutung   -d  172.16.0.67  -p  tcp   --dport  22922   -j  DNAT  --to  destination  10.1.1.1:22

#ssh  -p  22922  [email protected]    

 

Dnsmasq   是一個輕量級的dns和dhcp伺服器

#dnsmasq   -i  br-int  -F  10.1.1.11,10.1.1.100  -o  3,10.1.1.254

 

kvm虛擬化2-qemu-kvm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.