kvm的命令是非常多的,但,主要使用的关于创建虚拟机,启动虚拟机的命令必定是 virt-install。那么,我们想要学习一个命令,当然最快速简捷的方式就是通过帮助文档啦。
下面就是virt-install 的帮助文档。可以看到,该命令是有六个部分组成:
(1)基本选项General Options,
(2)Installation Method Options安装方法选项,
(3)Device Options设备选项
(4)虚拟机配置选项Guest Configuration Options
(5)Virtualization Platform Options虚拟模式选项
(6)其它辅助选项Miscellaneous Options
这里需要注意啦,该命令是比较详细的给每个选项都给出了示例,
[root@centos1 ~]# virt-install --help
usage: virt-install --name NAME --memory MB STORAGE INSTALL [options]
Create a new virtual machine from specified install media.
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--connect URI Connect to hypervisor with libvirt URI
General Options:
-n NAME, --name NAME Name of the guest instance
--memory MEMORY Configure guest memory allocation. Ex:
--memory 1024 (in MiB)
--memory 512,maxmemory=1024
--memory 512,maxmemory=1024,hotplugmemorymax=2048,hotplugmemoryslots=2
--vcpus VCPUS Number of vcpus to configure for your guest. Ex:
--vcpus 5
--vcpus 5,maxvcpus=10,cpuset=1-4,6,8
--vcpus sockets=2,cores=4,threads=2
--cpu CPU CPU model and features. Ex:
--cpu coreduo,+x2apic
--cpu host-passthrough
--cpu host
--metadata METADATA Configure guest metadata. Ex:
--metadata name=foo,title="My pretty title",uuid=...
--metadata description="My nice long description"
Installation Method Options:
--cdrom CDROM CD-ROM installation media
-l LOCATION, --location LOCATION
Installation source (eg, nfs:host:/path,
http://host/path, ftp://host/path)
--pxe Boot from the network using the PXE protocol
--import Build guest around an existing disk image
--livecd Treat the CD-ROM media as a Live CD
-x EXTRA_ARGS, --extra-args EXTRA_ARGS
Additional arguments to pass to the install kernel
booted from --location
--initrd-inject INITRD_INJECT
Add given file to root of initrd from --location
--os-variant DISTRO_VARIANT
The OS variant being installed guests, e.g.
'fedora18', 'rhel6', 'winxp', etc.
--boot BOOT Configure guest boot settings. Ex:
--boot hd,cdrom,menu=on
--boot init=/sbin/init (for containers)
--idmap IDMAP Enable user namespace for LXC container. Ex:
--idmap uid_start=0,uid_target=1000,uid_count=10
Device Options:
--disk DISK Specify storage with various options. Ex.
--disk size=10 (new 10GiB image in default location)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
Configure a guest network interface. Ex:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS Configure guest display settings. Ex:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--controller CONTROLLER
Configure a guest controller device. Ex:
--controller type=usb,model=ich9-ehci1
--input INPUT Configure a guest input device. Ex:
--input tablet
--input keyboard,bus=usb
--serial SERIAL Configure a guest serial device
--parallel PARALLEL Configure a guest parallel device
--channel CHANNEL Configure a guest communication channel
--console CONSOLE Configure a text console connection between the guest
and host
--hostdev HOSTDEV Configure physical USB/PCI/etc host devices to be
shared with the guest
--filesystem FILESYSTEM
Pass host directory to the guest. Ex:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
--sound [SOUND] Configure guest sound device emulation
--watchdog WATCHDOG Configure a guest watchdog device
--video VIDEO Configure guest video hardware.
--smartcard SMARTCARD
Configure a guest smartcard device. Ex:
--smartcard mode=passthrough
--redirdev REDIRDEV Configure a guest redirection device. Ex:
--redirdev usb,type=tcp,server=192.168.1.1:4000
--memballoon MEMBALLOON
Configure a guest memballoon device. Ex:
--memballoon model=virtio
--tpm TPM Configure a guest TPM device. Ex:
--tpm /dev/tpm
--rng RNG Configure a guest RNG device. Ex:
--rng /dev/urandom
--panic PANIC Configure a guest panic device. Ex:
--panic default
--memdev MEMDEV Configure a guest memory device. Ex:
--memdev dimm,target_size=1024
Guest Configuration Options:
--security SECURITY Set domain security driver configuration.
--cputune CPUTUNE Tune CPU parameters for the domain process.
--numatune NUMATUNE Tune NUMA policy for the domain process.
--memtune MEMTUNE Tune memory policy for the domain process.
--blkiotune BLKIOTUNE
Tune blkio policy for the domain process.
--memorybacking MEMORYBACKING
Set memory backing policy for the domain process. Ex:
--memorybacking hugepages=on
--features FEATURES Set domain <features> XML. Ex:
--features acpi=off
--features apic=on,eoi=on
--clock CLOCK Set domain <clock> XML. Ex:
--clock offset=localtime,rtc_tickpolicy=catchup
--pm PM Configure VM power management features
--events EVENTS Configure VM lifecycle management policy
--resource RESOURCE Configure VM resource partitioning (cgroups)
--sysinfo SYSINFO Configure SMBIOS System Information. Ex:
--sysinfo emulate
--sysinfo host
--sysinfo bios_vendor=Vendor_Inc.,bios_version=1.2.3-abc,...
--sysinfo system_manufacturer=System_Corp.,system_product=Computer,...
--sysinfo baseBoard_manufacturer=Baseboard_Corp.,baseBoard_product=Motherboard,...
--qemu-commandline QEMU_COMMANDLINE
Pass arguments directly to the qemu emulator. Ex:
--qemu-commandline='-display gtk,gl=on'
--qemu-commandline env=DISPLAY=:0.1
Virtualization Platform Options:
-v, --hvm This guest should be a fully virtualized guest
-p, --paravirt This guest should be a paravirtualized guest
--container This guest should be a container guest
--virt-type HV_TYPE Hypervisor name to use (kvm, qemu, xen, ...)
--arch ARCH The CPU architecture to simulate
--machine MACHINE The machine type to emulate
Miscellaneous Options:
--autostart Have domain autostart on host boot up.
--transient Create a transient domain.
--wait WAIT Minutes to wait for install to complete.
--noautoconsole Don't automatically try to connect to the guest
console
--noreboot Don't boot guest after completing install.
--print-xml [XMLONLY]
Print the generated domain XML rather than create the
guest.
--dry-run Run through install process, but do not create devices
or define the guest.
--check CHECK Enable or disable validation checks. Example:
--check path_in_use=off
--check all=off
-q, --quiet Suppress non-error output
-d, --debug Print debugging information
Use '--option=?' or '--option help' to see available suboptions
See man page for examples and full option syntax.
那么,相对于kvm镜像来说,有两种情况,第一是镜像文件已经安装了操作系统,也就是已经虚拟化完成了,第二种是仅仅有一个磁盘虚拟文件,在这个文件内并没有安装操作系统,并不能使用,这两种情况需要virt-install 命令进行启动或者安装。
第一,
已经安装好了操作系统的磁盘映像文件
例如,OpenStack常用的测试文件cirros-0.3.4-x86_64-disk.img ,假设这个文件存放在了opt目录下,那么,启动这个kvm镜像的命令应该如下:
virt-install --name test01 --virt-type qemu --ram 1024 --accelerate --disk path=/opt/cirros-0.3.4-x86_64-disk.img --network=default --force --import --autostart --vnc --vnclisten=0.0.0.0 --vncport=5922
以上命令,主要使用了 --name --virt-type --ram --accelerate --disk --import 这些参数,如果将--virt-type 改成kvm,此kvm镜像也可以启动。
那么,一个kvm镜像install的时候必定需要一个name,--ram ,disk,其实基本有这三个也就可以了,剩下的net和vnc仅仅是出于使用这个kvm虚拟机的目的而设置,毕竟kvm镜像启动后我们是需要使用的,对吧。上面的命令将会开启一个端口5922,这个端口并不是默认的5900端口。
--accelerate参数是加速
例如,这个命令也可以启动一个已存在安装过操作系统的镜像,如果有安装virt-viewer命令,将会直接打开一个kvm终端窗口。
virt-install --name test06 --ram 1024 --accelerate --disk path=/opt/cirros-0.3.4-x86_64-disk.img --import --check all=off
--check all=off 这个参数是表示允许多次启动kvm镜像,以上命令中,name是test06,name应该是唯一的不重复的,仅此一个要求,因为前面我们使用了test1 2 3 4 5
第二,
通过qemu-img 命令生成一个全新的磁盘镜像文件,并通过挂载操作系统安装包,开始一个全新安装kvm镜像。
说人话也就是全新的kvm镜像安装需要至少两个文件,一个是qemu-img命令生成的磁盘文件,一个是ISO操作系统安装文件。例如全新安装一个Windows的kvm镜像:
[root@centos1 opt]# virt-install --name win7 --os-variant=win7 --memory 512 --vcpus=1 --cpu host-model --vcpus 2 --disk path=/opt/win7.vmdk,size=30,bus=ide --accelerate --disk device=cdrom,path=/opt/cn_windows_7_ultimate_with_sp1_x64_dvd_618537\(1\).iso --disk device=cdrom,path=/opt/virtio-win-0.1.102.iso --vnc --vncport=5922 --vnclisten=0.0.0.0 --network=default --noautoconsole
Starting install...
Allocating 'win7.vmdk' | 30 GB 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
这里的提示就和启动一个已安装操作系统的kvm镜像不一样了,有提示:to complete the installation process.
安装Windows需要挂载两个cdrom,一个是系统安装ISO文件,一个是驱动文件,如果有要挂载成cdrom的文件,写的形式是:
--disk device=cdrom,path=/opt/virtio-win-0.1.102.iso
而硬盘文件是这样的:
--disk path=/opt/linux.img,size=30,format=qcow2,bus=ide
当然,Windows安装和linux安装是不一样的,因此,bus这里使用了ide,使用ide的原因是为了提高兼容性,并没有其它的意思,如果是安装linux系统的kvm镜像,可以不用指定bus,直接使用默认,默认为virtio,这里的bus是指的使用的驱动类型,而format=qcow2,是因为我们前面建立的kvm磁盘镜像格式是qcow2,如果忘记了也没关系,通过qemu-img info 命令可以查看到到底是哪种格式的磁盘文件:
[root@centos1 opt]# qemu-img info linux.img
image: linux.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
关于kvm的磁盘文件格式,大体情况是这样的:
虚拟机常用镜像格式介绍
目前,虚拟机的主流镜像格式有raw、cow、qcow、qcow2以及vmdk,下面,我就详细介绍一下这些主流的虚拟机镜像格式。
(一)raw格式
raw格式是一种很早的镜像格式,格式比较原始、简单,性能上也还不错。并且raw格式镜像的一个突出好处是它支持转换成其他格式的镜像,或者作为其他格式镜像转换的中间格式。但是,raw格式的一个突出缺点就是不支持快照。 CentOS6的虚拟机KVM和XEN默认使用raw格式。
(二)cow、qcow和qcow2格式
cow、qcow和qcow2是另外的镜像格式,cow格式、qcow格式目前已经逐步被qcow2格式所取代,qcow2格式是目前的一种主流镜像格式,性能上与raw格式相差无几,但是支持虚拟机快照。CentOS7的KVM虚拟机镜像默认使用qcow2格式。
(三)vmdk格式
vmdk是Vmware虚拟的镜像格式,其整体性能非常出色,稳定性和其他方面的能力很好,也支持快照。
因此,--disk path=/opt/win7.img,size=30,format=qcow2,bus=ide这里必须要format=qcow2,如果不指定将会使用raw。
Linus的安装比较简单了,通常的安装命令为:
virt-install --virt-type kvm --name centos --ram 1024 --disk /tmp/centos.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=centos7.0 --location=/root/CentOS-7-x86_64-DVD-1708.iso
以上为kvm的virt-install 命令的大概介绍,希望各位网友指出写的不足的地方。