1、构造空镜像
qemu-img create -f qcow2 centos-7-guest.qcow2 10G
qcow2、raw都可以;还能相互转换。
2、创建虚拟机 根据指定的跟镜像
virt-install --virt-type kvm --name centos-7-guest --ram 1024 --disk centos-7-guest.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --location=CentOS-7-x86_64-Minimal-2009.iso
virt-install命令:
[[root@controller guest]# 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.
[root@svr ~]#
3、查看kvm虚拟机
[root@controller guest]$ virsh list
Id Name State
----------------------------------------------------
1 instance-00000c0e running
2 centos-7-guest running
4、virt-manager
virt-maneger
进入虚拟机 dhcpclient 配置网络 修改虚拟机(自我定制,爱咋改咋改) 关闭虚拟机
5、清理
virt-sysprep -d centos-7-guest
[root@controller guest]$ virt-sysprep -d centos-7-guest
[ 0.0] Examining the guest ...
[ 3.4] Performing "abrt-data" ...
[ 3.4] Performing "backup-files" ...
[ 4.1] Performing "bash-history" ...
[ 4.1] Performing "blkid-tab" ...
[ 4.1] Performing "crash-data" ...
[ 4.1] Performing "cron-spool" ...
[ 4.1] Performing "dhcp-client-state" ...
[ 4.2] Performing "dhcp-server-state" ...
[ 4.2] Performing "dovecot-data" ...
[ 4.2] Performing "logfiles" ...
[ 4.2] Performing "machine-id" ...
[ 4.2] Performing "mail-spool" ...
[ 4.2] Performing "net-hostname" ...
[ 4.2] Performing "net-hwaddr" ...
[ 4.3] Performing "pacct-log" ...
[ 4.3] Performing "package-manager-cache" ...
[ 4.3] Performing "pam-data" ...
[ 4.3] Performing "passwd-backups" ...
[ 4.3] Performing "puppet-data-log" ...
[ 4.3] Performing "rh-subscription-manager" ...
[ 4.3] Performing "rhn-systemid" ...
[ 4.3] Performing "rpm-db" ...
[ 4.3] Performing "samba-db-log" ...
[ 4.3] Performing "script" ...
[ 4.3] Performing "smolt-uuid" ...
[ 4.4] Performing "ssh-hostkeys" ...
[ 4.4] Performing "ssh-userdir" ...
[ 4.4] Performing "sssd-db-log" ...
[ 4.4] Performing "tmp-files" ...
[ 4.4] Performing "udev-persistent-net" ...
[ 4.4] Performing "utmp" ...
[ 4.4] Performing "yum-uuid" ...
[ 4.4] Performing "customize" ...
[ 4.4] Setting a random seed
[ 4.4] Setting the machine ID in /etc/machine-id
[ 4.5] Performing "lvm-uuids" ...
6、压缩镜像文件
virt-sparsify --compress centos-7-guest.qcow2 centos-7-guest01.qcow2
[root@controller guest]$ virt-sparsify --compress centos-7-guest.qcow2 centos-7-guest01.qcow2
[ 0.3] Create overlay file in /tmp to protect source disk
[ 0.4] Examine source disk
[ 2.6] Fill free space in /dev/centos/root with zero
100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
[ 11.7] Clearing Linux swap on /dev/centos/swap
[ 12.6] Fill free space in /dev/sda1 with zero
[ 15.2] Copy to destination and make sparse
[ 102.9] Sparsify operation completed with no errors.
virt-sparsify: Before deleting the old disk, carefully check that the
target disk boots and works correctly.
[root@controller guest]$ ll -h
-rw-r--r-- 1 qemu qemu 973M Mar 14 15:29 CentOS-7-x86_64-Minimal-2009.iso
-rw-r--r-- 1 root root 692M Mar 14 16:40 centos-7-guest01.qcow2
-rw-r--r-- 1 qemu qemu 1.9G Mar 14 16:34 centos-7-guest.qcow2
7、上传镜像 open stack
glance image create --name centos7-guest --container-format bare --disk-format qcow2 --file centos-7-guest01.qcow2
注:在环境直接创建虚拟机:
virt-install --virt-type kvm --name centos-7-guest --ram 1024 --disk centos-7-guest01.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --import