一 KVM对用户提供的命令主要在/usr/bin/目录下
[root@centoskvm ~]# ls /usr/bin/vir*
/usr/bin/virsh /usr/bin/virt-manager
/usr/bin/virt-clone /usr/bin/virt-pki-validate
/usr/bin/virt-convert /usr/bin/virt-top
/usr/bin/virt-host-validate /usr/bin/virt-viewer
/usr/bin/virt-p_w_picpath /usr/bin/virt-who
/usr/bin/virt-install /usr/bin/virt-xml-validate
[root@centoskvm ~]# ls /usr/bin/qe*
/usr/bin/qemu-img /usr/bin/qemu-io /usr/bin/qemu-kvm
常用的命令有:virsh,virsh-install,virsh-clone,virsh-convert,virsh-p_w_picpath,qemu-img和qemu-kvm
二 virsh常用的管理命令
使用xml配置文件开启虚拟机
[root@centoskvm kvm]# virsh create 1003vm.xml
Domain 1003vm created from 1003vm.xml
列出虚拟机:
[root@centoskvm kvm]# virsh list
Id Name State
----------------------------------------------------
13 1003vm running
Id和Name可以作为控制虚拟机的主键
列出域中全部的虚拟机:
[root@centoskvm kvm]# virsh list --all
Id Name State
----------------------------------------------------
13 1003vm running
- 1001vm shut off
关闭虚拟机:
[root@centoskvm kvm]# virsh shutdown 13
或者
[root@centoskvm kvm]# virsh shutdown 1003vm
重启虚拟机:
[root@centoskvm kvm]#virsh reboot 13
或者
[root@centoskvm kvm]# virsh reboot 1003vm
强制关闭虚拟机:(不建议使用,这样容易破坏虚拟机的文件系统)
[root@centoskvm kvm]#virsh destroy 13
或者
[root@centoskvm kvm]# virsh destroy 1003vm
添加虚拟机:
[root@centoskvm kvm]#virsh define /home/kvm/1002vm.xml #根据主机配置文档添加虚拟机
Domain 1002vm defined from /home/kvm/1002vm.xml
[root@centoskvm kvm]# virsh list --all
Id Name State
----------------------------------------------------
13 1003vm running
- 1001vm shut off
- 1002vm shut off #1002vm已被添加到域中
移除虚拟机:
[root@centoskvm kvm]#virsh undefine 1002vm
Domain 1002vm has been undefined
[root@centoskvm kvm]# virsh list --all
Id Name State
----------------------------------------------------
13 1003vm running
- 1001vm shut off
#1002vm已被从域中移除
导出虚拟机的配置信息xml文件
[root@centoskvm kvm]# virsh dumpxml 1003vm > ~/1003vm.xml
[root@centoskvm kvm]# cat ~/1003vm.xml
<domaintype='kvm' id='13'>
<name>1003vm</name>
<uuid>323286df-2fa9-9864-4754-b51df76bd336</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='rhel6.2.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/home/kvm/1003vm.img'/>
<target dev='vda' bus='virtio'/>
<shareable/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:88:f8:03'/>
<source bridge='br0'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<source path='/dev/pts/1'/>
<target port='0'/>
<alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/1'>
<source path='/dev/pts/1'/>
<target type='serial' port='0'/>
<alias name='serial0'/>
</console>
<input type='tablet' bus='usb'>
<alias name='input0'/>
</input>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5900' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
</devices>
<seclabel type='dynamic' model='selinux' relabel='yes'>
<label>system_u:system_r:svirt_t:s0:c97,c672</label>
<p_w_picpathlabel>system_u:object_r:svirt_p_w_picpath_t:s0:c97,c672</p_w_picpathlabel>
</seclabel>
</domain>
也可以使用xml配置来启动虚拟机:
[root@centoskvm kvm]# virsh shutdown 1003vm
[root@centoskvm kvm]# virsh list --all
Id Name State
----------------------------------------------------
- 1003vm shut off
- 1001vm shut off
[root@centoskvm kvm]# virsh create ~/1003vm.xml
[root@centoskvm kvm]# virsh list --all
Id Name State
----------------------------------------------------
14 1003vm running
- 1001vm shut off
三 使用命令接口创建虚拟机
创建镜像文件:
[root@centoskvm kvm]# qemu-img create -f qcow2 /home/kvm/1001vm.img 16G
查看img文件信息:
[root@centoskvm img]# qemu-img info 1001vm.img
p_w_picpath: 1001vm.img
file format: qcow2
virtual size: 16G (17179869184 bytes)
disk size: 5.9G
cluster_size: 65536
其中参数 -f 表示镜像文件的格式[qcow2],具体介绍如下:
[root@centoskvm img]# qemu-img create --help
create: invalid option -- '-'
qemu-img version 0.12.1, Copyright (c) 2004-2008 Fabrice Bellard
usage: qemu-img command [command options]
QEMU disk p_w_picpath utility
Command syntax:
check [-f fmt] filename
create [-f fmt] [-o options] filename [size]
commit [-f fmt] [-t cache] filename
convert [-c] [-p] [-f fmt] [-t cache] [-O output_fmt] [-o options] [-S sparse_size] filename [filename2 [...]] output_filename
info [-f fmt] filename
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
resize filename [+ | -]size
Command parameters:
'filename' is a disk p_w_picpath filename
'fmt' is the disk p_w_picpath format. It is guessed automatically in most cases
'cache' is the cache mode used to write the output disk p_w_picpath, the valid
options are: 'none', 'writeback' (default), 'writethrough' and 'unsafe'
'size' is the disk p_w_picpath size in bytes. Optional suffixes
'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G' (gigabyte, 1024M)
and T (terabyte, 1024G) are supported. 'b' is ignored.
'output_filename' is the destination disk p_w_picpath filename
'output_fmt' is the destination format
'options' is a comma separated list of format specific options in a
name=value format. Use -o ? for an overview of the options supported by the
used format
'-c' indicates that target p_w_picpath must be compressed (qcow format only)
'-u' enables unsafe rebasing. It is assumed that old and new backing file
match exactly. The p_w_picpath doesn't need a working backing file before
rebasing in this case (useful for renaming the backing file)
'-h' with or without a command shows this help and lists the supported formats
'-p' show progress of command (only certain commands)
'-S' indicates the consecutive number of bytes that must contain only zeros
for qemu-img to create a sparse p_w_picpath during conversion
Parameters to snapshot subcommand:
'snapshot' is the name of the snapshot to create, apply or delete
'-a' applies a snapshot (revert disk to saved state)
'-c' creates a snapshot
'-d' deletes a snapshot
'-l' lists all snapshots in the given p_w_picpath
Supported formats: raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 qed parallels nbd blkdebug host_cdrom host_floppy host_device file
常用的格式为raw和qcow2,推荐使用qcow2格式。
raw格式:可以简单、容易地导出到其它模拟器中,但是立即分配占用空间大。
qcow2格式:是qcow格式的升级版本,是目前最万能的格式。使用它可获得较小映像,也是虚拟池一直在使用的镜像格式,支持镜像快照,方便的恢复管理。
安装虚拟机客户操作系统:
[root@centoskvm img]#virt-install --name 1001vm --ram=1024 --arch=x86_64 --vcpus=2 --check-cpu --os-type=linux --os-variant='rhel6' -c /home/mysoft/os/CentOS-6.2-x86_64-bin-DVD1.iso --disk path=/home/img/1001vm.img,device=disk,bus=virtio,format=qcow2 --bridge=br0 --noautoconsole --vnc --vncport=5902 --vnclisten=0.0.0.0
[root@centoskvm img]# virt-install --help
Usage: virt-install --name NAME --ram RAM STORAGE INSTALL [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
--connect=URI Connect to hypervisor with libvirt URI
General Options:
-n NAME, --name=NAME
Name of the guest instance
-r MEMORY, --ram=MEMORY
Memory to allocate for guest instance in megabytes
--vcpus=VCPUS Number of vcpus to configure for your guest. Ex:
--vcpus 5
--vcpus 5,maxcpus=10
--vcpus sockets=2,cores=4,threads=2
--cpuset=CPUSET Set which physical CPUs domain can use.
--cpu=CPU CPU model and features. Ex: --cpu coreduo,+x2apic
--description=DESCRIPTION
Human readable description of the VM to store in the
generated XML.
--security=SECURITY
Set domain security driver configuration.
--numatune=NUMATUNE
Tune NUMA policy for the domain process.
Installation Method Options:
-c CDROM, --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 p_w_picpath
--init=INIT Path to init binary for container guest. Ex:
--init /path/to/app (to contain an application)
--init /sbin/init (for a full OS container)
--livecd Treat the CD-ROM media as a Live CD
-x EXTRA, --extra-args=EXTRA
Additional arguments to pass to the install kernel
booted from --location
--initrd-inject=INITRD_INJECTIONS
Add given file to root of initrd from --location
--os-type=DISTRO_TYPE
The OS type being installed, e.g. 'linux', 'unix',
'windows'
--os-variant=DISTRO_VARIANT
The OS variant being installed guests, e.g. 'fedora6',
'rhel5', 'solaris10', 'win2k'
--boot=BOOTOPTS Optionally configure post-install boot order, menu,
permanent kernel boot, etc.
Storage Configuration:
--disk=DISKOPTS Specify storage with various options. Ex.
--disk path=/my/existing/disk
--disk path=/my/new/disk,size=5 (in gigabytes)
--disk vol=poolname:volname,device=cdrom,bus=scsi,...
--nodisks Don't set up any disks for the guest.
--filesystem=FILESYSTEMS
Pass host directory to the guest. Ex:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
Networking Configuration:
-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...
--nonetworks Don't create network interfaces for the guest.
Graphics Configuration:
--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
--noautoconsole Don't automatically try to connect to the guest
console
Device Options:
--serial=SERIALS Configure a guest serial device
--parallel=PARALLELS
Configure a guest parallel device
--channel=CHANNELS Configure a guest communication channel
--console=CONSOLES Configure a text console connection between the guest
and host
--host-device=HOSTDEVS
Configure physical host devices attached to the guest
--soundhw=SOUNDHW 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
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
--noapic Disables APIC for fully virtualized guest (overrides
value in os-type/os-variant db)
--noacpi Disables ACPI for fully virtualized guest (overrides
value in os-type/os-variant db)
-u UUID, --uuid=UUID
UUID for the guest.
Miscellaneous Options:
--autostart Have domain autostart on host boot up.
--print-xml Print the generated domain XML rather than define the
guest.
--print-step=XMLSTEP
Print XML of a specific install step (1, 2, 3, all)
rather than define the guest.
--noreboot Don't boot guest after completing install.
--wait=WAIT Time to wait (in minutes)
--dry-run Run through install process, but do not create devices
or define the guest.
--force Forces 'yes' for any applicable prompts, terminates
for all others
-q, --quiet Suppress non-error output
--prompt Request user input for ambiguous situations or
required options.
-d, --debug Print debugging information
四 使用console登录虚拟机
[root@centoskvm img]#virsh list
Id Name State
----------------------------------------------------
13 1003vm running
[root@centoskvm img]# virshconsole 13
若出现无法从console登录的情况,会卡在“
Escape character is ^]”处无法继续。请从桌面以root登录做如下操作:
1、添加ttyS0的安全许可,允许root登录:
[root@1001vm img]# echo "ttyS0" >> /etc/securetty
[root@1001vm ~]# cat /etc/securetty
console
vc/1
vc/2
。。。。。。
vc/10
vc/11
tty1
tty2
。。。。。。
tty11
ttyS0
2、在/etc/grub.conf文件中为内核添加参数:console=ttyS0
[root@1001vm ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_1001vm-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-220.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/vg_1001vm-lv_root rd_NO_LUKS rd_LVM_LV=vg_1001vm/lv_root LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto rd_LVM_LV=vg_1001vm/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM console=ttyS0
initrd /initramfs-2.6.32-220.el6.x86_64.img
3、在/etc/inittab中添加agetty:
S0:12345:respawn:/sbin/agetty ttyS0 115200
[root@1001vm ~]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#。。。。。。。。。。。。。
#。。。。。。。。。。。。。
id:5:initdefault:
S0:12345:respawn:/sbin/agetty ttyS0 115200
4、重启客户虚拟机:
[root@1001vm img]# reboot
此时,再次尝试console命令可以正常使用:
[root@centoskvm img]# virsh console 1001vm
Connected to domain 1001vm
Escape character is ^]
[ OK ]
Setting hostname 1001vm: [ OK ]
Setting up Logical Volume Management: 2 logical volume(s) in volume group "vg_1001vm" now active
[ OK ]
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Starting atd: [ OK ]
Starting up CIM server: [ OK ]
CentOS release 6.2 (Final)
Kernel 2.6.32-220.el6.x86_64 on an x86_64
1001vm login: root
Password:
[root@1001vm ~]#
转载于:https://blog.51cto.com/silencezone/1944578