时间:2020-08-18来源:www.pcxitongcheng.com作者:电脑系统城
在前边的博客中,我们创建KVM虚拟机用到了virt-manager,这个工具是一个图形化工具,创建虚拟机很方便;除此我们还是用virsh define/create +虚拟机配置文件来创建虚拟机,这种方式是通过配置文件的方式,我们把定义虚拟机的信息写成一个.xml格式的描述文件,然后使用virsh这个工具来读取配置文件,从而根据我们定义的配置文件创建虚拟机;今天我们来了解下直接在命令行使用virt-install命令的方式来创建虚拟机;
1、virt-install的帮助信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
[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来查看,如下所示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[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、上传一个镜像到宿主机
1 2 3 4 5 6 7 8 9 10 11 |
[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、创建磁盘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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、创建虚拟机,并指定使用我们刚才上传的镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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、查看宿主机上的监听端口情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[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/;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[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、上传镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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、创建磁盘
1 2 3 4 5 6 |
[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、创建虚拟机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[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服务器的搭建,
2024-07-18
Centos 7 二进制安装配置 MariaDB数据库2024-07-18
Centos7默认firewalld防火墙使用命令大全2024-07-07
四种执行python系统命令的方法常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x...
2024-07-07
然而,如果我们遵循通常的 WordPress 最佳实践,这些安全问题可以避免。在本篇中,我们会向你展示如何使用 WPSeku,一个 Linux 中的 WordPress 漏洞扫描器,它可以被用来找出你安装...
2024-07-03