Linux Study Lab !

当前位置:   网站首页 >> Linux 应用实践

CentOS 7下KVM虚拟机简易配置

因测试需求,需在CentOS 7环境下配置一桥接网络的linux虚拟机。

默认安装的KVM虚拟机的网络模式为桥接模式:

图片.png

宿主机(物理)主要网络配置文件如下:

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


发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项