CentOS 7下KVM虚拟机简易配置
因测试需求,需在CentOS 7环境下配置一桥接网络的linux虚拟机。
默认安装的KVM虚拟机的网络模式为桥接模式:
宿主机(物理)主要网络配置文件如下:
vi /etc/sysconfig/network-scripts/ifcfg-em1 //这块网卡连通外网,并负责桥接流量给虚拟机 TYPE=Ethernet BRIDGE=br0 BOOTPROTO=none PROXY_METHOD=none BROWSER_ONLY=no DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=em1 DEVICE=em1 ONBOOT=yes HWADDR=<按实际生成值,可不定义该条> UUID=<按实际生成值> vi /etc/sysconfig/network-scripts/ifcfg-br0 //新建桥接网卡的配置文件 TYPE=Bridge BOOTPROTO=dhcp //此处开启dhcp后,桥接口将通过em1的网络获取路由器的dhcp分配的地址 PROXY_METHOD=none BROWSER_ONLY=no DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=br0 DEVICE=br0 ONBOOT=yes
执行命令:
sysctl -w net.ipv4.ip_forward = 0
虚拟机(VM)网络配置文件如下:
vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BROWSER_ONLY=no BOOTPROTO=dhcp //如需要定义静态则修改为static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eth0 UUID=<按实际生成值> DEVICE=eth0 ONBOOT=no IPADDR=<静态ip时需定义,按实际填写> PERFIX=24 GATEWAY=<静态ip时需定义,按实际填写>
执行命令:
sysctl -w net.ipv4.ip_forward = 1 或 vi /usr/lib/sysctl.d/00-system.conf 里增加
安装KVM套件
yum install epel-release qemu-kvm libvirt virt-install systemctl start libvirtd.service systemctl enable libvirtd.service
把系统安装iso镜像文件准备好,如果没有,可以用物理机光驱和dd命令组合实现。dd命令如果读取的是满容量的dvd盘,需要一段时间
dd if=/dev/cdrom of=/home/centos7.iso
起一个KVM虚拟机
virt-install --virt-type=kvm --name=centos7 --vcpus=2 --memory=2048 --location=/home/centos7.iso --disk path=/home/centos7.qcow2,size=20,format=qcow2 --network bridge=br0 --graphics none --extra-args='console=ttyS0' --force 参数说明 –name指定虚拟机名称 –memory分配内存大小。 –vcpus分配CPU核心数,最大与实体机CPU核心数相同 –disk指定虚拟机镜像,size指定分配大小单位为G。 –network网络类型,此处用的是默认,一般用的应该是bridge桥接。 –accelerate加速 –cdrom指定安装镜像iso –vnc启用VNC远程管理,一般安装系统都要启用。 –vncport指定VNC监控端口,默认端口为5900,端口不能重复。 –vnclisten指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。 –os-type=linux,windows –os-variant=rhel6 --name 指定虚拟机名称 --ram 虚拟机内存大小,以 MB 为单位 --vcpus 分配CPU核心数,最大与实体机CPU核心数相同 –-vnc 启用VNC远程管理,一般安装系统都要启用。 –-vncport 指定VNC监控端口,默认端口为5900,端口不能重复。 –-vnclisten 指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。 --network 虚拟机网络配置 # 其中子选项,bridge=br0 指定桥接网卡的名称。–os-type=linux,windows –os-variant=rhel7.2--disk 指定虚拟机的磁盘存储位置 # size,初始磁盘大小,以 GB 为单位。--location 指定安装介质路径,如光盘镜像的文件路径。 --graphics 图形化显示配置 # 全新安装虚拟机过程中可能会有很多交互操作,比如设置语言,初始化 root 密码等等。 # graphics 选项的作用就是配置图形化的交互方式,可以使用 vnc(一种远程桌面软件)进行链接。 # 我们这列使用命令行的方式安装,所以这里要设置为 none,但要通过 --extra-args 选项指定终端信息, # 这样才能将安装过程中的交互信息输出到当前控制台。--extra-args 根据不同的安装方式设置不同的额外选项
随后将开始linux虚拟机的安装,任何过程中可以使用ctrl+】组合键回到原本的宿主机命令行,也可以通过virsh console centos7回到虚拟机界面。
需要注意的是
Installation 1) [x] Language settings 2) [!] Timezone settings (English (United States)) (Timezone is not set.) 3) [!] Installation source 4) [!] Software selection (Processing...) (Processing...) 5) [!] Installation Destination 6) [x] Kdump (No disks selected) (Kdump is enabled) 7) [ ] Network configuration 8) [!] Root password (Not connected) (Password is not set.) 9) [!] User creation (No user will be created) Please make your choice from above ['q' to quit | 'b' to begin installation | 'r' to refresh]:
文字安装界面中任何[]括号内含有!的条目都必须一一进入配置,否则无法开始安装系统。
基本使用命令
virsh list # 查看在运行的虚拟机 virsh dumpxml vm-name # 查看kvm虚拟机配置文件 virsh start vm-name # 启动kvm虚拟机 virsh shutdown vm-name # 正常关机 virsh destroy vm-name # 非正常关机,强制关闭虚拟机(相当于物理机直接拔掉电源) virsh undefine vm-name # 删除vm的配置文件 ls /etc/libvirt/qemu # 查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除 virsh define file-name.xml # 根据配置文件定义虚拟机 virsh suspend vm-name # 挂起,终止 virsh resumed vm-name # 恢复被挂起的虚拟机 virsh autostart vm-name # 开机自启动 vmvirsh console <虚拟机名称> # 连接虚拟机 brctl show \\可以查看当前虚机网络桥接模式下的接口 virsh net-list --all \\可以查看当前虚机网络NAT转址模式下的接口 如上一条命令没有输出,可以使用下面的命令重新安装 virsh net-define /usr/share/libvirt/networks/default.xml exit \\在虚拟机bash下输入后退出虚拟机 ctrl+ 5 从虚拟机登陆界面退出回宿主机 ctrl+] 功能同上
虚拟机配置文件修改
vi /etc/libvirt/qemu/centos7.xml 或 virsh edit centos7
克隆虚拟机
virt-clone -o centos7 -n centos.112 -f /home/new/centos.112.qcow2 -m 00:00:00:00:00:01 virt-clone -o centos88 -n centos.112 --file /home/new/centos.112.qcow2 --nonsparse virt-clone 参数介绍 --version 查看版本。 -h,--help 查看帮助信息。 --connect=URI 连接到虚拟机管理程序 libvirt 的URI。 -o 原始虚拟机名称 原始虚拟机名称,必须为关闭或者暂停状态。 -n 新虚拟机名称 –name 新虚拟机名称。 --auto-clone 从原来的虚拟机配置自动生成克隆名称和存储路径。 -u NEW_UUID, --uuid=NEW_UUID 克隆虚拟机的新的UUID,默认值是一个随机生成的UUID。 -m NEW_MAC, --mac=NEW_MAC 设置一个新的mac地址,默认为随机生成 MAC。 -f NEW_DISKFILE, --file=NEW_DISKFILE 为新客户机使用新的磁盘镜像文件地址。 --force-copy=TARGET 强制复制设备。 --nonsparse 不使用稀疏文件复制磁盘映像。
通过镜像创建虚拟机
# 复制第一次安装的干净系统镜像,作为基础镜像文件, # 后面创建虚拟机使用这个基础镜像 cp /home/new/centos.88.qcow2 /home/new/centos7.base.qcow2 # 使用基础镜像文件,创建新的虚拟机镜像 cp /home/new/centos7.base.qcow2 /home/new/centos7.113.qcow2 创建配置文件 # 复制第一次安装的干净系统镜像,作为基础配置文件。 virsh dumpxml centos.88 > /home/new/centos7.base.xml # 使用基础虚拟机镜像配置文件,创建新的虚拟机配置文件 cp /home/new/centos7.base.xml /home/new/centos7.113.xml # 编辑新虚拟机配置文件 vi /home/new/centos7.113.xml # 修改虚拟机文件名,UUID,镜像地址和网卡地址,其中 UUID 在 Linux 下可以使用 uuidgen 命令生成 <domain type='kvm'> <name>centos7.113</name> <uuid>1e86167a-33a9-4ce8-929e-58013fbf9122</uuid> <devices> <disk type='file' device='disk'> <source file='/home/vms/centos7.113.img'/> </disk> <interface type='bridge'> <mac address='00:00:00:00:00:04'/> </interface> </devices></domain> virsh define /home/vms/centos7.113.xml # Domain centos.113 defined from /home/vms/centos7.113.xml
创建并挂载虚拟机磁盘
qemu-img create /home/vms/centos78.img # 创建 guest 所需的磁盘 # create 表示创建,-f qcow2 表示创建一个格式为 qcow2 的磁盘, # /home/vms/centos78.qcow2 表示创建的磁盘名称及磁盘文件,40G 表示该磁盘可用大小。 qemu-img create -f qcow2 -o preallocation=metadata /home/vms/centos78.qcow2 40G
本文参考文章:
https://blog.csdn.net/github_27924183/article/details/76914322?locationNum=5&fps=1
https://www.chenyudong.com/archives/libvirt-kvm-bridge-network.html