1.安装所需软件:
apt-get install qemu-kvm
apt-get install qemu
apt-get install libvirt-bin
apt-get install bridge-utils
apt-get install virt-manager
apt-get install virt-viewer
- 创建虚拟机镜像文件(相当于虚拟机磁盘文件):
qemu-img create -f qcow2 mydisk-img.qcow2 20G
3.创建虚拟机xml文件vm.xml
<domain type='kvm'> //如果是Xen,则type=‘xen’
<name>vm0</name> //虚拟机名称,同一物理机唯一
<uuid>e996891e-179b-11ec-9621-0242ac130002</uuid> //同一物理机唯一,可用uuidgen生成
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory> //memory这两个值最好设成一样
<vcpu>2</vcpu> //虚拟机可使用的cpu个数,查看物理机可用CPU个数:cat /proc/cpuinfo |grep processor | wc -l
<os>
<type arch='x86_64' machine='pc-i440fx-1.5'>hvm</type> //arch指出系统架构类型,machine 则是机器类型,查看机器类型:qemu-system-x86_64 -M ?
<boot dev='hd'/> //启动介质,第一次需要装系统可以选择cdrom光盘启动
<bootmenu enable='yes'/> //表示启动按F12进入启动菜单
</os>
<features>
<acpi/> //Advanced Configuration and Power Interface,高级配置与电源接口
<apic/> //Advanced Programmable Interrupt Controller,高级可编程中断控制器
<pae/> //Physical Address Extension,物理地址扩展
</features>
<clock offset='localtime'/> //虚拟机时钟设置,这里表示本地本机时间
<on_poweroff>destroy</on_poweroff> //突发事件动作
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices> //设备配置
<emulator>/usr/bin/qemu-system-x86_64</emulator> //如果是Xen则是/usr/lib/xen/binqemu-dm
<disk type='file' device='disk'> //硬盘
<driver name='qemu' type='qcow2'/>
<source file='/path/mydisk-img.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> //域、总线、槽、功能号,slot值同一虚拟机上唯一
</disk>
<disk type='file' device='cdrom'>//光盘
<driver name='qemu' type='raw'/>
<source file='/path/CentOS-7-x86_64-DVD-2009.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
/* 利用Linux网桥连接网络 */
<interface type='bridge'>
<mac address='fa:92:01:33:d4:fa'/>
<source bridge='br0'/> //配置的网桥网卡名称
<target dev='vnet0'/> //同一网桥下相同
<alias name='net0'/> //别名,同一网桥下相同
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> //注意slot值唯一
</interface>
/* 利用NAT方式连接网络 */
<interface type='network'>
<mac address='fa:92:01:33:d6:fa'/>
<source network='default'/> //配置的网桥名称
<target dev='vnet2'/> //同一网桥下相同
<alias name='net1'/> //别名,同一网桥下相同
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> //注意slot值唯一
</interface>
<serial type='pty'>
<source path='/dev/pts/2'/>
<target type='isa-serial' port='0'/>
<alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/2'>
<source path='/dev/pts/2'/>
<target type='serial' port='0'/>
<alias name='serial0'/>
</console>
<graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'> //配置vnc,windows下可以使用vncviewer登录,获取vnc端口号:virsh vncdisplay vm0
<listen type='address' address='0.0.0.0'/>
</graphics>
<!--
/* 利用ovs网桥连接网络 */
<interface type='bridge'>
<source bridge='br-ovs0'/>
<virtualport type='openvswitch'/>
<target dev='tap0'/>
<model type='virtio'/>
</interface>
/* 配置成pci直通虚拟机连接网络,SR-IOV网卡的VF场景 */
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</source>
</hostdev>
/* 利用vhostuser连接ovs端口 */
<interface type='vhostuser'>
<mac address='fa:92:01:33:d4:fa'/>
<source type='unix' path='/var/run/vhost-user/tap0' mode='client'/>
<model type='virtio'/>
<driver vringbuf='2048'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='network'> //基于虚拟局域网的网络
<mac address='52:54:4a:e1:1c:84'/> //可用命令生成,见下面的补充
<source network='default'/> //默认
<target dev='vnet1'/> //同一虚拟局域网的值相同
<alias name='net1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> //注意slot值
</interface>
<graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'/> //配置vnc,windows下可以使用vncviewer登录,获取vnc端口号:virsh vncdisplay vm0
<listen type='address' address='0.0.0.0'/>
</graphics>
-->
</devices>
</domain>
3.创建网卡配置文件network.xml:
<network>
<name>default</name>
<bridge name="virbr0" />
<forward/>
<ip address="192.168.122.1" netmask="255.255.255.0">
<dhcp>
<range start="192.168.122.2" end="192.168.122.254" />
</dhcp>
</ip>
</network>
virsh启动虚拟网络设备
virsh net-define network.xml
virsh net-autostart default #设置自动启动
virsh net-start #启动网桥
使用virsh启动虚拟机
virsh define vm.xml #创建虚拟机
此时可以通过virsh list --all查看虚拟机
virsh start vm0 #启动虚拟机
需要注意的是,首次启动虚拟机在xml中设置从cdrom中启动,cdrom是系统镜像,因为这时虚拟机尚未在磁盘中安装操作系统,因此无法从hd硬盘中启动,安装完系统之后就可以设置从hd启动了。同时,我们也无法通过console或者ssh登录,因为还没有系统。我们可以通过vnc的方式远程登录虚拟机完成操作系统的安装,之后就可以通过ssh等方式正常登录了。
virsh vncdisplay vm0 #查看vnc端口,这样就可以通过vnc远程控制了
安装完操作系统之后,由于我们的虚拟机有两张网卡,一张网卡net0是以桥接模式连接,一张网卡net1是以NAT方式连接,net0网卡需要我们手动配置ip地址,net1由dhcp服务器自动配置ip地址。
若virsh console的方式无法进入虚拟机,可以尝试:
通过vnc进入虚拟机:
vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet" #在这一句最后面添加 console=ttyS0,115200
grub2-mkconfig -o /boot/grub2/grub.cfg
sudo systemctl start [email protected]
sudo systemctl enable [email protected]
NAT端口映射
iptables -t nat -I PREROUTING -p tcp -d 10.248.155.204 -dport 5233 -j DNAT --to-destination 192.168.122.177:22
iptables -I FORWARD -m state -d 10.0.0.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp -m tcp --dport 5233 -j DNAT --to-destination 192.168.122.177:22
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.177 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.122.1
————————————————
版权声明:本文为CSDN博主「xiaoju233」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38600065/article/details/121974663