虚拟化技术之kvm虚拟机创建工具virt-install
在前边的博客中,我们创建KVM虚拟机用到了virt-manager,这个工具是一个图形化工具,创建虚拟机很方便;除此我们还是用virsh define/create +虚拟机配置文件来创建虚拟机,这种方式是通过配置文件的方式,我们把定义虚拟机的信息写成一个.xml格式的描述文件,然后使用virsh这个工具来读取配置文件,从而根据我们定义的配置文件创建虚拟机;今天我们来了解下直接在命令行使用virt-install命令的方式来创建虚拟机;
1、virt-install的帮助信息
[root@node1 ~]# virt-install -h
usage: virt-install --name NAME --memory MB STORAGE INSTALL [options] 从指定安装源创建新虚拟机。 optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--connect URI 通过 libvirt URI 连接到虚拟机管理程序 通用选项:
-n NAME, --name NAME 客户机实例名称
--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 配置客户机元数据。例如:
--metadata name=foo,title="My pretty title",uuid=...
--metadata description="My nice long description" 安装方法选项:
--cdrom CDROM 光驱安装介质
-l LOCATION, --location LOCATION
安装源 (例如:nfs:host:/path, http://host/path,
ftp://host/path)
--pxe 使用 PXE 协议从网络引导
--import 在已有的磁盘镜像中构建客户机
--livecd 将光驱介质视为 Live CD
-x EXTRA_ARGS, --extra-args EXTRA_ARGS
将附加参数添加到由 --location
引导的内核中
--initrd-inject INITRD_INJECT
添加指定文件到由 --location 指定的 initrd
根中
--os-variant DISTRO_VARIANT
在客户机上安装的操作系统,例如:'fedor
a18'、'rhel6'、'winxp' 等。
--boot BOOT 配置客户机引导设置。例如:
--boot hd,cdrom,menu=on
--boot init=/sbin/init (针对容器)
--idmap IDMAP 为 LXC 容器启用用户名称空间。例如:
--idmap uid_start=0,uid_target=1000,uid_count=10 设备选项:
--disk DISK 指定存储的各种选项。例如:
--disk size=10 (在默认位置创建 10GiB 镜像)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
配置客户机网络接口。例如:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS 配置客户机显示设置。例如:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--controller CONTROLLER
配置客户机控制器设备。例如:
--controller type=usb,model=ich9-ehci1
--input INPUT 配置客户机输入设备。例如:
--input tablet
--input keyboard,bus=usb
--serial SERIAL 配置客户机串口设备
--parallel PARALLEL 配置客户机并口设备
--channel CHANNEL 配置客户机通信通道
--console CONSOLE 配置文本控制台连接主机与客户机
--hostdev HOSTDEV 配置物理 USB/PCI 等主机设备与客户机共享
--filesystem FILESYSTEM
传递主机目录到客户机。例如:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
--sound [SOUND] 配置客户机声音设备仿真
--watchdog WATCHDOG 配置客户机 watchdog 设备
--video VIDEO 配置客户机视频硬件。
--smartcard SMARTCARD
配置客户机智能卡设备。例如:
--smartcard mode=passthrough
--redirdev REDIRDEV 配置客户机重定向设备。例如:
--redirdev usb,type=tcp,server=192.168.1.1:4000
--memballoon MEMBALLOON
配置客户机 memballoon 设备。例如:
--memballoon model=virtio
--tpm TPM 配置客户机 TPM 设备。例如:
--tpm /dev/tpm
--rng RNG Configure a guest RNG device. Ex:
--rng /dev/urandom
--panic PANIC 配置客户机 panic 设备。例如:
--panic default
--memdev MEMDEV Configure a guest memory device. Ex:
--memdev dimm,target_size=1024 客户机配置选项:
--security SECURITY 设置域安全驱动配置。
--cputune CPUTUNE Tune CPU parameters for the domain process.
--numatune NUMATUNE 为域进程调整 NUMA 策略。
--memtune MEMTUNE 为域进程调整内存策略。
--blkiotune BLKIOTUNE
为域进程调整 blkio 策略。
--memorybacking MEMORYBACKING
为域进程设置内存后备策略。例如:
--memorybacking hugepages=on
--features FEATURES 设置域 <features> XML。例如:
--features acpi=off
--features apic=on,eoi=on
--clock CLOCK 设置域 <clock> XML。例如:
--clock offset=localtime,rtc_tickpolicy=catchup
--pm PM 配置 VM 电源管理功能
--events EVENTS 配置 VM 生命周期管理策略
--resource RESOURCE 配置 VM 资源分区(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 虚拟化平台选项:
-v, --hvm 这个客户机应该是一个全虚拟化客户机
-p, --paravirt 这个客户机应该是一个半虚拟化客户机
--container 这个客户机应该是一个容器客户机
--virt-type HV_TYPE 要使用的管理程序名称 (kvm, qemu, xen, ...)
--arch ARCH 模拟 CPU 架构
--machine MACHINE 机器类型为仿真类型 其它选项:
--autostart 主机启动时自动启动域。
--transient Create a transient domain.
--wait WAIT 请等待数分钟以便完成安装。
--noautoconsole 不要自动尝试连接到客户端控制台
--noreboot 安装完成后不启动客户机。
--print-xml [XMLONLY]
打印生成的 XML 域,而不是创建客户机。
--dry-run 运行安装程序,但不创建设备或定义客户
机。
--check CHECK 启用或禁用验证检查。例如:
--check path_in_use=off
--check all=off
-q, --quiet 抑制非错误输出
-d, --debug 输入故障排除信息 使用 '--option=?' 或 '--option help' 来查看可用的子选项
请参考 man 手册,以便了解示例和完整的选项语法。
[root@node1 ~]#
提示:如果要查看某一个选项的子选项,可以使用选项加?或者选项加--help来查看,如下所示
[root@node1 ~]# virt-install --memorybacking ?
--memorybacking options:
clearxml
hugepages
locked
nodeset
nosharepages
size
unit [root@node1 ~]# virt-install --memorybacking help
--memorybacking options:
clearxml
hugepages
locked
nodeset
nosharepages
size
unit [root@node1 ~]#
2、创建一个虚拟机
2.1、上传一个镜像到宿主机
[root@node1 ~]# cd /kvm/iso/
[root@node1 iso]# ls
[root@node1 iso]# rz
rz waiting to receive.
zmodem trl+C ȡ 100% 811008 KB 26161 KB/s 00:00:31 0 Errors-1708.iso... [root@node1 iso]# ls
CentOS-7-x86_64-Minimal-1708.iso
[root@node1 iso]#
提示:建议把镜像单独放在一个目录下;
2.2、创建磁盘
[root@node1 iso]# cd
[root@node1 ~]# cd /kvm/images/
[root@node1 images]# ls
c1.qcow2 c2.qcow2 c3.qcow2 cirros-0.5.0-x86_64-disk.img
[root@node1 images]# qemu-img create -f qcow2 ./centos7.qcow2 10G
Formatting './centos7.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
[root@node1 images]# ll
总用量 41989476
-rw-r--r-- 1 root root 197120 8月 15 13:23 c1.qcow2
-rw------- 1 qemu qemu 21478375424 8月 18 13:07 c2.qcow2
-rw------- 1 root root 21478375424 8月 17 00:23 c3.qcow2
-rw-r--r-- 1 root root 197120 8月 18 13:08 centos7.qcow2
-rw-r--r-- 1 qemu qemu 40108032 8月 18 13:01 cirros-0.5.0-x86_64-disk.img
[root@node1 images]#
提示:创建磁盘可以使用-o preallocation来指定磁盘分配策略,它支持 off, metadata, falloc, full,其中off表示不预分配(默认不指定就是这个),metadate,表示分配元素据信息,falloc表示随文件的增大而增大,full表示全部分配;
2.3、创建虚拟机,并指定使用我们刚才上传的镜像
[root@node1 images]# virt-install --virt-type kvm --name c7 --ram 1024 --vcpus 2 --cdrom=/kvm/iso/CentOS-7-x86_64-Minimal-1708.iso --disk path=/kvm/images/centos7.qcow2 --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole 开始安装......
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
[root@node1 images]# virsh list --all
Id 名称 状态
----------------------------------------------------
1 generic running
2 c2 running
3 centos7.0 running
4 c7 running [root@node1 images]#
提示:--virt-type用来指定虚拟机类型,--name用来指定创建的虚拟机名称,--ram 用于指定内存大小 --vcpus用于指定虚拟cpu核心数量 --cdrom用于指定关盘镜像文件位置 --disk path用于指定磁盘路径,--network用于指定网络名称 --graphics用于指定虚拟图形显卡,--noaustart用于指定不随宿主机启动而启动;到此虚拟机就创建好了,接下来我们需要用图像软件VNC或者virt-manager连接到虚拟机的控制台界面进行安装系统操作;
3、使用vnc连接虚拟机安装操作系统
3.1、查看宿主机上的监听端口情况
[root@node1 images]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 1 *:5903 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:5900 *:*
LISTEN 0 128 127.0.0.1:5901 *:*
LISTEN 0 128 127.0.0.1:5902 *:*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
[root@node1 images]#
提示:默认情况vnc的第一个虚拟显示器(窗口)监听在5900这个端口,第二个窗口监听5901,依次类推;从上面的信息可以看到,我们宿主机上有4个vnc窗口,我们最后创建的虚拟机应该是第四个窗口,监听在5903这个端口;
3.2、使用VNC连接宿主机的5903端口

提示:使用tightvnc viewer连接宿主机上的非第一个窗口需要在后面用双冒号+端口的方式来连接指定窗口;如果是第一个窗口直接写宿主机的ip地址即可;这里需要注意一点,用virsh或virt-manager创建的虚拟机,默认它是把vnc监听在127.0.0.1上,所以用外部的vnc软件是无法正常连接进去的;

提示:至此我们就可以安装虚拟机操作了,安装完成后重启即可;安装系统的过程就不过多演示了;
3.3、创建windows系统虚拟机
virtio 是一种 I/O 半虚拟化解决方案,是一套通用 I/O 设备虚拟化的程序,是对半虚拟化 Hypervisor 中的一组通用I/O 设备的抽象。提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware等)之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率,windows 系统需要单独安装virtio驱动,linux系统自带virtio驱动。
3.3.1、创建目录,并下载virtio驱动(根据安装的windos版本架构下载驱动)下载地址https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.96/;
[root@node1 kvm]# ls
images iso
[root@node1 kvm]# mkdir virtio
[root@node1 kvm]# cd virtio
[root@node1 virtio]# wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.96/virtio-win_amd64.vfd
--2020-08-18 13:58:51-- https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.96/virtio-win_amd64.vfd
正在解析主机 fedorapeople.org (fedorapeople.org)... 152.19.134.199, 2610:28:3090:3001:5054:ff:fea7:9474
正在连接 fedorapeople.org (fedorapeople.org)|152.19.134.199|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 301 Moved Permanently
位置:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.96/virtio-win-0.1.96_amd64.vfd [跟随至新的 URL]
--2020-08-18 13:58:54-- https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.96/virtio-win-0.1.96_amd64.vfd
再次使用存在的到 fedorapeople.org:443 的连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2949120 (2.8M) [application/x-troff-man]
正在保存至: “virtio-win_amd64.vfd” 100%[====================================================================>] 2,949,120 8.04KB/s 用时 6m 8s 2020-08-18 14:05:03 (7.83 KB/s) - 已保存 “virtio-win_amd64.vfd” [2949120/2949120]) [root@node1 virtio]# ls
virtio-win_amd64.vfd
[root@node1 virtio]# pwd
/kvm/virtio
[root@node1 virtio]#
3.3.2、上传镜像
[root@node1 images]# cd ../iso/
[root@node1 iso]# ls
CentOS-7-x86_64-Minimal-1708.iso
[root@node1 iso]# rz
rz waiting to receive.
zmodem trl+C ȡ 100% 3189038 KB 27025 KB/s 00:01:58 0 Errors_with_sp1_x64_dvd_u_677685.iso... [root@node1 iso]# ll
总用量 4000048
-rw-r--r-- 1 qemu qemu 830472192 2月 22 2018 CentOS-7-x86_64-Minimal-1708.iso
-rw-r--r-- 1 root root 3265574912 3月 6 2018 cn_windows_7_enterprise_with_sp1_x64_dvd_u_677685.iso
[root@node1 iso]#
3.3.3、创建磁盘
[root@node1 iso]# cd ../virtio/
[root@node1 virtio]# qemu-img create -f qcow2 /kvm/images/win7.qcow2 50G
Formatting '/kvm/images/win7.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off
[root@node1 virtio]# ls /kvm/images/win7.qcow2
/kvm/images/win7.qcow2
[root@node1 virtio]#
3.3.4、创建虚拟机
[root@node1 virtio]# virt-install --virt-type kvm --name win7 --ram 1024 --vcpus=2 --os-type=windows --cdrom=/kvm/iso/cn_windows_7_enterprise_with_sp1_x64_dvd_u_677685.iso --disk path=/kvm/images/win7.qcow2,format=qcow2,bus=virtio --disk path=/kvm/virtio/virtio-win_amd64.vfd,device=floppy --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole 开始安装......
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
[root@node1 virtio]# virsh list --all
Id 名称 状态
----------------------------------------------------
1 win7 running
- c2 关闭
- c7 关闭
- centos7.0 关闭
- generic 关闭 [root@node1 virtio]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 1 *:5900 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
[root@node1 virtio]#
提示:可以看到虚拟机已经创建好了,并跑起来了,对应vnc5900端口也处于监听状态;
3.3.5、用vnc连接虚拟机控制台,安装系统







提示:这个根据自己安装的系统来选就可以了;

提示:如果能够把我们创建的磁盘识别到,说明我们的驱动选择是正确的,否则你需要更改驱动;

提示:等这个安装完成后重启,windows系统就装到我们创建的虚拟机上了;需要注意一点这个界面重启,虚拟机不会自动启动,需要我们手动的去启动虚拟机,才能下面的安装,安装完成后如下图所示;

到此基于virt-install工具在命令行创建windows虚拟机,结合vnc连接到虚拟机上安装操作系统的过程就结束了;其实在生产中,我们更本不会这样用,因为生产上用的虚拟机数量往往很大,用人为手动的方式去安装显然是不行的;我们可以借助自动化工具pxe+kickstart 或者使用cobbler配合这些自动化安装系统的工具来安装系统,我们只需要使用脚本把创建虚拟机的命令写好,创建好网络配置好网络,磁盘创建命令写好,一个脚本我们可以批量创建很多台虚拟机;有关pxe服务器和cobbler服务器的搭建,有兴趣的可以参考本人博客《Linux系统自动化安装之pxe实现》和《Linux系统自动化安装之cobbler实现》;
虚拟化技术之kvm虚拟机创建工具virt-install的更多相关文章
- 虚拟化技术之kvm虚拟机创建工具qemu-kvm
在前边的博客中我们介绍了如何创建kvm虚拟机,以及一些常用的工具的介绍和使用,今天我们来了解下kvm原始工具qemu-kvm:为什么说qemu-kvm是一个原始的工具呢,如果你用kvm虚拟机,心细的你 ...
- 虚拟化技术之kvm磁盘管理工具qemu-img
在前边的博客中,我们大致了解了virsh这个工具对kvm虚拟机的一些操作,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/virsh/:今天我们来了解下kvm ...
- 虚拟化技术之kvm WEB管理工具kimchi
在前面的博客中,我们介绍了kvm的各种工具,有基于图形管理的virt-manager.有基于命令行管理的virt-install .qemu-kvm.virsh等等:今天我们来介绍一款基于web界面的 ...
- 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具
1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是 ...
- 虚拟化技术之KVM
虚拟化技术之KVM 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是虚拟化 其实虚拟化技术已经不是一个新技术了,上个世纪六十年代IBM公司已经在使用,只不过后来(上个世纪八 ...
- 虚拟化技术之kvm管理工具virsh常用基础命令(一)
在上一篇博客中,我们了解了KVM基础架构和部署以及图形管理工具virt-manager安装虚拟机的过程,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13499 ...
- 虚拟化技术之kvm镜像模板制作工具virt-sysprep
virt-sysprep这个工具来自libguest-tools这个工具包,它能够把kvm虚拟机对应的磁盘文件做成一个模板,后续我们启动虚拟机就可以基于这个镜像模板启动:什么是镜像模板呢?所谓模板就是 ...
- 虚拟化技术之kvm管理工具virsh常用基础命令(二)
上一篇博客我们主要聊了下virsh 管理kvm虚拟机的命令相关用法和说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13508231.html:今天我们来继 ...
- 虚拟化技术之kvm基础
一.KVM简介 KVM的全称是kernel base virtual machine(基于内核的虚拟机)是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中. ...
随机推荐
- 水题----根据O出现次数判断分数
There is an objective test result such as \OOXXOXXOOO". An `O' means a correct answer of a prob ...
- text输入框
https://blog.csdn.net/renhong20121314/article/details/51906555
- python基础--小数据池,代码块的最详细、深入剖析
本文转至太白金星 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存 ...
- Glide:重新加载失败的问题
Glide在url不变,内容改变的时候重新加载还会显示第一张图片, 解决方法: https://blog.csdn.net/u013420865/article/details/53197788?de ...
- 360随身WiFi3:纯净版无线网卡驱动下载及安装教程(Windows10版本)
对于不带无线网卡的台式机,买一个360随身WiFi当无线网卡是很省钱的方法.但是这个随身WiFi3用的芯片较为奇葩,Win10下不太好找驱动.什么,你问我为啥不用360官网上的驱动?那个“驱动”装了之 ...
- PHP flock() 函数
定义和用法 flock() 函数锁定或释放文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 flock(file,lock,block) 参数 描述 file 必需.规定要 ...
- Skill 脚本演示 ycAlignAll.il
https://www.cnblogs.com/yeungchie/ ycAlignAll.il 将版图整体对齐至 指定象限 / 原点,可以忽略 Label 干扰带来的 offGrid 的风险. 回到 ...
- P4383 [八省联考2018]林克卡特树 树形dp Wqs二分
LINK:林克卡特树 作为树形dp 这道题已经属于不容易的级别了. 套上了Wqs二分 (反而更简单了 大雾 容易想到还是对树进行联通情况的dp 然后最后结果总和为各个联通块内的直径. \(f_{i,j ...
- SET DYNAMICS 365 COLORS AND LOGO USING THEMES
https://carldesouza.com/dynamics-365-colors-logo-themes/ BEFORE WE START, I NEED YOUR HELP. I AM SPE ...
- 【好文推荐】黑莓OS手册是如何详细阐述底层的进程和线程模型的?
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...