内容简介:此文已由作者刘超授权网易云社区发布。欢迎访问看这篇文章之前,保证看过以下文章:
此文已由作者刘超授权网易云社区发布。
欢迎访问 网易云社区 ,了解更多网易技术产品运营经验
看这篇文章之前,保证看过以下文章:
裸用KVM创建虚拟机,体验virtualbox为你做的10件事情
大家从OpenStack页面上,轻松一点就创建了一个虚拟机,但是当你登陆到一台物理机上ps查看的时候,却发现参数复杂之极。
qemu-system-x86_64 -enable-kvm -name instance-00000024 -machine pc-i440fx-trusty,accel=kvm,usb=off -cpu SandyBridge,+erms,+smep,+fsgsbase,+pdpe1gb,+rdrand,+f16c,+osxsave,+dca,+pcid,+pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme -m 2048 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 1f8e6f7e-5a70-4780-89c1-464dc0e7f308 -smbios type=1,manufacturer=OpenStack Foundation,product=OpenStack Nova,version=2014.1,serial=80590690-87d2-e311-b1b0-a0481cabdfb4,uuid=1f8e6f7e-5a70-4780-89c1-464dc0e7f308 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/instance-00000024.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/var/lib/nova/instances/1f8e6f7e-5a70-4780-89c1-464dc0e7f308/disk,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=32,id=hostnet0,vhost=on,vhostfd=37 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=fa:16:3e:d1:2d:99,bus=pci.0,addr=0x3 -chardev file,id=charserial0,path=/var/lib/nova/instances/1f8e6f7e-5a70-4780-89c1-464dc0e7f308/console.log -device isa-serial,chardev=charserial0,id=serial0 -chardev pty,id=charserial1 -device isa-serial,chardev=charserial1,id=serial1 -device usb-tablet,id=input0 -vnc 0.0.0.0:12 -k en-us -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
参数一:-enable-kvm
启用硬件辅助虚拟化
参数二:-name instance-00000024
虚拟机的名称
参数三:-machine pc-i440fx-trusty,accel=kvm,usb=off
machine是什么呢,其实是计算机体系结构
还记得大学学的这门课么?
QEMU会模拟多种体系结构,常用的有:
-
普通PC机,也即x86的32位或者64位的体系结构
-
MAC电脑PowerPC的体系结构
-
Sun的体系结构
-
MIPS的体系结构,精简指令集的
如果使用KVM hardware-assisted virtualization,也即BIOS中VD-T是打开的,则参数中accel=kvm
如果不使用hardware-assisted virtualization,用的是纯模拟,则有参数accel = tcg,-no-kvm
参数四:-cpu SandyBridge,+erms,+smep,+fsgsbase,+pdpe1gb,+rdrand,+f16c,+osxsave,+dca,+pcid,+pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme
设置CPU,SandyBridge是Intel处理器,后面的加号都是添加的CPU的参数,这些参数会显示在/proc/cpuinfo里面
参数五:-m 2048
这是内存
guest真正运行态的占用的内存的大小,是用MemoryBallooning来调整-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
参数六:-smp 1,sockets=1,cores=1,threads=1
SMP是什么呢?全称Symmetrical Multi-Processing,名为对称多处理器
指在一个计算机上汇集了一组处理器(多CPU),多个CPU之间通过系统总线共享内存。
但是这种方式也有缺点,就是所有的CPU访问内存都需要经过总线,所以总线就会成为瓶颈,导致CPU访问内存的速度变慢。
为了解决这个问题,后来有了NUMA结构,全称为Non Uniform Memory Access Architecture
在NUMA结构下,每个CPU有直连的本地内存,访问本地的内存非常快,而且不用过系统总线,如果写程序的时候,能够保证每个CPU指令尽量访问本地的内存,可以大大提高性能。通过命令numactl可以查看NUMA架构。
我们的参数中有-smp1,sockets=1,cores=1,threads=1
qemu仿真了一个具有1个vcpu,一个socket,一个core,一个threads的处理器。
socket,core, threads是什么概念呢。socket就是主板上插cpu的槽的数目,也即常说的“路”,core就是我们平时说的“核”,即双核,4核等,thread就是每个core的硬件线程数,即超线程。
具体例子,某个服务器是:2路4核超线程(一般默认为2个线程),通过cat /proc/cpuinfo看到的是2*4*2=16个processor,很多人也习惯成为16核了
参数七:-uuid 1f8e6f7e-5a70-4780-89c1-464dc0e7f308
给每个虚拟机设置一个UUID
参数八: -smbios type=1,manufacturer=OpenStack Foundation,product=OpenStack Nova,version=2014.1,serial=80590690-87d2-e311-b1b0-a0481cabdfb4,uuid=1f8e6f7e-5a70-4780-89c1-464dc0e7f308
SM BIOS全称System Management BIOS,用于表示x86体系结构的硬件信息。
在unix系统上,可以使用命令dmidecode得到,SMBIOS的信息被分为多个table中,称为type。
type0是BIOS信息
type 1是系统信息
type 2是主板信息
这个参数设置了type 1的信息
参数九:-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/instance-00000024.monitor,server,nowait
参数十:-mon chardev=charmonitor,id=monitor,mode=control
这两个参数是一对,都是指定qemu的monitor接口到一个文件的。
用qemu启动的虚拟机本来就是带monitor的,本来通过monitor就是可以管理虚拟机的。
访问qemu monitor console有两种方式:
-
用VNC连接到虚拟机, Ctrl+Alt+2进入,Ctrl+Alt+1返回普通console
-
在 QEMU 启动的时候指定-monitor参数。比如-monitor stdio将允许使用标准输入作为monitor命令源
qemu-system-x86_64 -enable-kvm-name ubuntutest -m 2048 -hda ubuntutest.qcow2 -vnc :19 -net nic,model=virtio -nettap,ifname=tap0,script=no,downscript=no -monitor stdio
可以在monitor里面查看Block设备: 看到Image文件
查看Network
在这个命令中将monitor映射到一个文件,就是为了将来virsh console连接这个虚拟机的时候,可以从bash里面输入命令,输入的命令通过这个文件传入monitor,从而在monitor中执行这个命令。
参数十一:-rtc base=utc,driftfix=slew
参数十二:-no-hpet
系统时间由参数-rtc指定 -rtc[base = utc | localtime |date] [, clock = host | vm] [, driftfix =none | slew]
HighPrecision Event Timer (HPET)是可以更准确的设定时间的
参数十三:-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2
参数十四:-device usb-tablet,id=input0
USB的好处就是即插即用,参数-usb,可以模拟一个PCI UHCI USB控制器,通过tablet,鼠标可以在HOST和GUEST机器之间自由的切换
参数十五:-device cirrus-vga,id=video0,bus=pci.0,addr=0x2
显示器用参数-vga设置,默认为cirrus,它模拟了CL-GD5446PCI VGA card
参数十六,十七:有关网卡
使用-net参数和-device
从HOST角度:-netdev tap,fd=32,id= hostnet0 ,vhost=on,vhostfd=37
从GUEST角度:-device virtio-net-pci,netdev= hostnet0 ,id=net0,mac=fa:16:3e:d1:2d:99,bus=pci.0,addr=0x3
有关网卡的virtio是半虚拟化的驱动,后面的文章会仔细说
参数十八,十九:有关硬盘
使用-hda -hdb
使用-drive和-device
从HOST角度:-drive file=/var/lib/nova/instances/1f8e6f7e-5a70-4780-89c1-464dc0e7f308/disk,if=none,id= drive-virtio-disk0 ,format=qcow2,cache=none
从GUEST角度:-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive= drive-virtio-disk0 ,id=virtio-disk0,bootindex=1
有关存储的virtio是半虚拟化的驱动,后面的文章会仔细说
参数二十,二十一:有关console的log
从HOST角度:-chardev file,id= charserial0 ,path=/var/lib/nova/instances/1f8e6f7e-5a70-4780-89c1-464dc0e7f308/console.log
从GUEST角度:-device isa-serial,chardev= charserial0 ,id=serial0
当然需要在image里面做如下的配置才能将boot log写入console
/boot/grub/grub.cfg中有linux/boot/vmlinuz-3.2.0-49-virtual root=UUID=6d2231e4-0975-4f35-a94f-56738c1a8150 ro console=ttyS0
参数二十二,二十三:PTY
-chardev pty,id= charserial1
-device isa-serial,chardev= charserial1 ,id=serial1
参数二十四:VNC
-vnc0.0.0.0:12
更多网易技术、产品、运营经验分享请 点击 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS12界面设计指南之功能(System Capabilities)–虚拟现实
- CentOS 图形界面和字符界面切换
- GUI 界面如何设计?
- 小程序新请假界面
- webflux 用户管理界面
- 用户图形界面(GUI)入门
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
High Performance Python
Micha Gorelick、Ian Ozsvald / O'Reilly Media / 2014-9-10 / USD 39.99
If you're an experienced Python programmer, High Performance Python will guide you through the various routes of code optimization. You'll learn how to use smarter algorithms and leverage peripheral t......一起来看看 《High Performance Python》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
HTML 编码/解码
HTML 编码/解码