一、虚拟化技术之KVM:
KVM 是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen(https://zhuanlan.zhihu.com/p/33324585),其核心源码很少。KVM目前已成为学术界的主流VMM之一。 KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESXI系列是Full-Virtualization,IBM文档:http://www.ibm.comdeveloperworks/cn/linux/l-using-kvm/
- Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被KVM置于一种受限制的CPU模式下运行。
- KVM:运行在内核空间,提供 CPU 和内存的虚级化,以及客户机的 I/O拦截,Guest的部分I/O被KVM拦截后,交给 QEMU处理。
- QEMU:修改过的被KVM虚机使用的QEMU代码,运行在用户空间,提供硬件I/O虚拟化,通过IOCTL/dev/kvm设备和KVM交互,但是,KVM本身不执行任何硬件模拟,需要用户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是QEMU

虚拟机磁盘的格式:
根据存储数据方式的不同可以分为两种格式,一种是稀疏模式。一种是全镜像模式,全镜像模式无法做快照,IO层面是有qemu模拟的,CPU和内存是有KVM实现的,以下是KVM的功能:
KVM 所支持的功能包括:
支持CPU 和 memory 超分(Overcommit)
支持半虚拟化I/O (virtio)
支持热插拔 (cpu,块设备、网络设备等)
支持实时迁移(Live Migration)
支持 PCI 设备直接分配和 单根I/O 虚拟化 (SR-IOV)
支持 内核同页合并 (KSM )
支持 NUMA (Non-Uniform Memory Access,非一致存储访问结构 )
KVM工具集合:
libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP,
Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
Virsh:基于 libvirt 的 命令行工具 (CLI)
Virt-Manager:基于 libvirt 的 GUI 工具
virt-v2v:虚机格式迁移工具
virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer (连接到虚机屏幕的
工具),Virt-clone(虚机克隆工具),virt-top 等
sVirt:安全工具
磁盘格式:
raw:指定多大就创建多大,直接占用指定大小的空间:
随便dd一个file就可以模拟一个raw格式的镜像。性能还是不错的。到目前看来,KVM和XEN默认的格式好像还是这个格式。因为其原始,有很多原生的特性,例如:
– 直接挂载也是一件简单的事情。
– 支持转换成其它格式的虚拟机镜像。(如果其它格式需要转换,有时候还是需要它做为中间格式)
– 空间使用来看,这个很像磁盘,使用多少就是多少(du -h看到的大小就是使用大小)
– 如果把整块磁盘都拿走的话得全盘拿了(copy镜像的时候),会比较消耗网络带宽和I/O。
– 空间不够用?raw格式的就比较犀利,可以在原来的盘上追加空间:
# dd if=/dev/zero of=zeros.raw bs=1024k count=4096(先创建4G的空间)
# cat foresight.img zeros.raw > new-foresight.img(追加到原有的镜像之后)
由于原生的裸格式,不支持snapshot也是很正常的。目前来LVM的snapshot、性能、可扩展性方面都还是有相当的效果的。目前来看的话,备份的话也问题不大。就是在虚拟机迁移方面还是有很大的限制。但目前虚拟化的现状来看,真正需要热迁移的情况目前需求还不是很强烈。虽然使用LVM做虚拟机镜像的相关公开资料比较少,但目前来看牺牲一点灵活性,换取性能和便于管理还是不错的选择。对于LVM相关的特性及使用可以参考如下链接:
http://www.ibm.com/developerworks/linux/library/l-lvm2/index.html
cow:
曾经qemu的写时拷贝的镜像格式,目前由于历史遗留原因不支持窗口模式。从某种意义上来说是个弃婴,还没得它成熟就死在腹中,后来被qcow格式所取代。
qcow:
一代的qemu的cow格式,刚刚出现的时候有比较好的特性,但其性能和raw格式对比还是有很大的差距,目前已经被新版本的qcow2取代。其性能可以查看如下链接:
http://www.linux-kvm.org/page/Qcow2
qcow2:
openstack默认也是比较推荐的格式,将差异保存在一个文件,文件比较小而且做快照也比较小,空间是动态增长的:
现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw裸格式的性能,这个也算是redhat的官方渠道了,对于qcow2的格式,几点还是比较突出的,qcow2的snapshot,可以在镜像上做N多个快照:更小的存储空间,即使是不支持holes的文件系统也可以(这下du -h和ls -lh看到的就一样了),支持多个snapshot,对历史snapshot进行管理,支持zlib的磁盘压缩,支持AES的加密
vmdk:
VMware的格式,原本VMware就是做虚拟化起家,自己做了一个集群的VMDK的pool,做了自己的虚拟机镜像格式。又拉着一些公司搞了一个OVF的统一封包。从性能和功能上来说,vmdk应该算最出色的,由于vmdk结合了VMware的很多能力,目前来看,KVM和XEN使用这种格式的情况不是太多。但就VMware的Esxi来看,它的稳定性和各方面的能力还是可圈可点。
vdi:
VirtualBox 1.1 compatible image format, for exchanging images with VirtualBox.SUN收购了VirtualBox,Oracle又收购了SUN,这么说呢,vdi也算虚拟化这方面的一朵奇葩,可惜的是入主的两家公司。SUN太专注于技术(可以说是IT技术最前端也不为过),Oracle又是开源杀手(mysql的没落)。单纯从能力上来说vdi在VirtualBox上的表现还是不错的。也是不错的workstation级别的产品。
磁盘格式的转换:
raw转换为qcow2:
此步骤使用qemu-img工具实现,如果机器上没有,可以通过rpm或yum进行安装,包名为qemu-img。
qemu-img是专门虚拟磁盘映像文件的qemu命令行工具。
具体命令如下:
qemu-img convert -f raw centos.img -O qcow2 centos.qcow2
参数说明:convert 将磁盘文件转换为指定格式的文件
-f 指定需要转换文件的文件格式
-O 指定要转换的目标格式
转换完成后,将新生产一个目标映像文件,原文件仍保存。
qcow2转换为raw:
# qemu-img convert -O qcow2 my.raw myqow.qcow
VMDK转换为qcow2:
# qemu-img convert -f vmdk -O qcow2 xxx.vmdk xxx.img
http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm3/index.html
qcow2转换为VMDK:
# qemu-img convert -f qcow2 centos7_mini_1.qcow2 -O vmdk centos7.6_mini.vmdk
查看磁盘详细信息:
[root@kvm-1 images]# qemu-img info centos7_mini.qcow2
image: centos7_mini.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
宿主机环境准备:
KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能。
CPU开启虚拟化:

确认CPU指令集:
X86/x86_64-Intel、AMD
ARM-手机、pad、机顶盒,https://baike.baidu.com/item/ARM/5907?fr=aladdin
Power-IBM
http://tech.sina.com.cn/it/2005-06-07/0701628180.shtml
[root@kvm-1 ~]# grep -E "vmx|svm" /proc/cpuinfo | wc -l
4
安装KVM工具包:
[root@kvm-1 ~]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install -y
[root@kvm-1 ~]# systemctl start libvirtd
[root@kvm-1 ~]# systemctl enable libvirtd
[root@kvm-1 ~]# ifconfig virbr0 #生成NAT网卡
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:f8:8b:ab txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@kvm-1 ~]# grep "192.168.122.1" /etc/libvirt/ -R
/etc/libvirt/qemu/networks/autostart/default.xml: <ip address='192.168.122.1'
netmask='255.255.255.0'>
/etc/libvirt/qemu/networks/default.xml: <ip address='192.168.122.1'
netmask='255.255.255.0'>
更改NAT模式默认地址:
[root@kvm-1 src]# vim /etc/libvirt/qemu/networks/default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh net-edit default
or other application using the libvirt API.
-->
<network>
<name>default</name>
<uuid>8f8b3b7a-abe3-44ea-b878-5167b9f57daa</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:f8:8b:ab'/>
<ip address='192.168.122.1' netmask='255.255.255.0'> #NAT地址
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/> #DHCP分配IP范围
</dhcp>
</ip>
</network>
创建NAT网络虚拟机:
创建磁盘:
[root@kvm-1 ~]# ll /var/lib/libvirt/images/ #默认保存虚拟机磁盘的路径
total 0
[root@kvm-1 ~]# qemu-img create -f raw /var/lib/libvirt/images/CentOS-7-x86_64.raw
10G #创建一个格式为raw大小为10G的裸磁盘
Formatting '/var/lib/libvirt/images/CentOS-7-x86_64.raw', fmt=raw size=10737418240
[root@kvm-1 ~]# ll -h /var/lib/libvirt/images/CentOS-7-x86_64.raw
-rw-r--r-- 1 root root 10G Jun 15 2019 /var/lib/libvirt/images/CentOS-7-x86_64.raw
[root@kvm-1 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G
Formatting '/var/lib/libvirt/images/centos.qcow2', fmt=qcow2 size=10737418240
encryption=off cluster_si
ze=65536 lazy_refcounts=off [root@s1 ~]# ll -h /var/lib/libvirt/images/centos.qcow2
-rw-r--r-- 1 root root 193K Jun 14 16:36 /var/lib/libvirt/images/centos.qcow2
virsh-install命令使用帮助:
[root@kvm-1 ~]# virt-install --help
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 Connect to hypervisor with libvirt URI
General Options:通用选项
-n NAME, --name NAME Name of the guest instance
客户端事件名称
--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 数。例如:
--vcpus 5
--vcpus 5,maxcpus=10,cpuset=1-4,6,8
--vcpus sockets=2,cores=4,threads=2,
--cpu CPU CPU model and features. Ex:
CPU 型号及功能。例如:
--cpu coreduo,+x2apic
--cpu host-passthrough
--cpu host
--metadata METADATA Configure guest metadata. Ex:
配置虚拟机元数据。例如:
--metadata name=foo,title="My pretty title",uuid=...
--metadata description="My nice long description"
Installation Method Options:安装方法选项:
--cdrom CDROM CD-ROM installation media
光驱安装介质
-l LOCATION, --location LOCATION
Installation source (eg, nfs:host:/path,
http://host/path, ftp://host/path)
安装源(例如:nfs:host:/path、http://host/path
ftp://host/path)
--pxe Boot from the network using the PXE protocol
使用 PXE 协议从网络引导
--import Build guest around an existing disk image
在磁盘映像中构建虚拟机
--livecd Treat the CD-ROM media as a Live CD
将光驱介质视为 Live CD
-x EXTRA_ARGS, --extra-args EXTRA_ARGS
Additional arguments to pass to the install kernel
booted from --location
附加到使用 --location 引导的内核的参数
--initrd-inject INITRD_INJECT
Add given file to root of initrd from --location
使用 --location 为 initrd 的 root添加给定文件
--os-variant DISTRO_VARIANT
The OS variant being installed guests, e.g.
'fedora18', 'rhel6', 'winxp', etc.
在其中安装 OS 变体的虚拟机,
比如'fedora18'、'rhel6'、'winxp' 等等。
--boot BOOT Configure guest boot settings. Ex:
配置虚拟机引导设置。例如:
--boot hd,cdrom,menu=on
--boot init=/sbin/init (for containers)
--idmap IDMAP Enable user namespace for LXC container. Ex:
为 LXC 容器启用用户名称空间。例如:
--idmap uid_start=0,uid_target=1000,uid_count=10
Device Options:设备选项:
--disk DISK Specify storage with various options. Ex.
使用不同选项指定存储。例如:
--disk size=10 (new 10GiB image in default location)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
Configure a guest network interface. Ex:
配置虚拟机网络接口。例如:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS Configure guest display settings. Ex:
配置虚拟机显示设置。例如:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--controller CONTROLLER
Configure a guest controller device. Ex:
配置虚拟机控制程序设备。例如
--controller type=usb,model=ich9-ehci1
--input INPUT Configure a guest input device. Ex:
配置虚拟机输入设备。例如:
--input tablet
--input keyboard,bus=usb
--serial SERIAL Configure a guest serial device配置虚拟机串口设备
--parallel PARALLEL Configure a guest parallel device配置虚拟机并口设备
--channel CHANNEL Configure a guest communication channel配置虚拟机沟通频道
--console CONSOLE Configure a text console connection between the guest
and host配置虚拟机与主机之间的文本控制台连接
--hostdev HOSTDEV Configure physical USB/PCI/etc host devices to be
shared with the guest
将物理 USB/PCI/etc主机设备配置为与虚拟机共享
--filesystem FILESYSTEM
Pass host directory to the guest. Ex:
将主机目录传递给虚拟机。例如:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
--sound [SOUND] Configure guest sound device emulation
配置虚拟机声音设备模拟
--watchdog WATCHDOG Configure a guest watchdog device
配置虚拟机 watchdog 设备
--video VIDEO Configure guest video hardware.
配置虚拟机视频硬件。
--smartcard SMARTCARD
Configure a guest smartcard device. Ex:
配置虚拟机智能卡设备。例如:
--smartcard mode=passthrough
--redirdev REDIRDEV Configure a guest redirection device. Ex:
配置虚拟机重定向设备。例如:
--redirdev usb,type=tcp,server=192.168.1.1:4000
--memballoon MEMBALLOON
Configure a guest memballoon device. Ex:
配置虚拟机 memballoon 设备。例如:
--memballoon model=virtio
--tpm TPM Configure a guest TPM device. Ex:
配置虚拟机 TPM 设备。例如:
--tpm /dev/tpm
--rng RNG Configure a guest RNG device. Ex:
配置虚拟机 RNG 设备。例如:
--rng /dev/urandom
--panic PANIC Configure a guest panic device. Ex:
配置虚拟机 panic 设备。例如:
--panic default
--memdev MEMDEV Configure a guest memory device. Ex:
--memdev dimm,target_size=1024
Guest Configuration Options:虚拟机配置选项:
--security SECURITY Set domain security driver configuration.
设定域安全驱动器配置。
--cputune CPUTUNE Tune CPU parameters for the domain process.
为域进程调整 NUMA 策略。
--numatune NUMATUNE Tune NUMA policy for the domain process.
为域进程调整内粗策略。
--memtune MEMTUNE Tune memory policy for the domain process.
--blkiotune BLKIOTUNE Tune blkio policy for the domain process.
为域进程调整 blkio 策略。
--memorybacking MEMORYBACKING
Set memory backing policy for the domain process. Ex:
为域进程设置内存后备策略。例如:
--memorybacking hugepages=on
--features FEATURES Set domain <features> XML. Ex:
设置域 <features> XML。例如:
--features acpi=off
--features apic=on,eoi=on
--clock CLOCK Set domain <clock> XML. Ex:
设置域 <clock> XML。例如:
--clock offset=localtime,rtc_tickpolicy=catchup
--pm PM Configure VM power management features
配置 VM 电源管理功能
--events EVENTS Configure VM lifecycle management policy
配置 VM 生命周期管理策略
--resource RESOURCE Configure VM resource partitioning (cgroups)
配置 VM 资源分区(cgroups)
--sysinfo SYSINFO Configure SMBIOS System Information. Ex:
配置 SMBIOS 系统信息
--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
Virtualization Platform Options:虚拟化平台选项:
-v, --hvm This guest should be a fully virtualized guest
客户端应该是一个全虚拟客户端
-p, --paravirt This guest should be a paravirtualized guest
这个客户端一个是一个半虚拟客户端
--container This guest should be a container guest
这台虚拟机需要一个容器客户端
--virt-type HV_TYPE Hypervisor name to use (kvm, qemu, xen, ...)
要使用的管理程序名称(kvm、qemu、xen等等)
--arch ARCH The CPU architecture to simulate
模拟的 CPU 构架
--machine MACHINE The machine type to emulate
要模拟的机器类型
Miscellaneous Options:其它选项:
--autostart Have domain autostart on host boot up.
引导主机时自动启动域。
--transient Create a transient domain.
创建临时域。
--wait WAIT Minutes to wait for install to complete.
等待安装完成的分钟数。
--noautoconsole Don't automatically try to connect to the guest
console
不要自动尝试连接到客户端控制台
--noreboot Don't boot guest after completing install.
完成安装后不要引导虚拟机。
--print-xml [XMLONLY]
Print the generated domain XML rather than create the
guest.
输出所生成域 XML,而不是创建虚拟机。
--dry-run Run through install process, but do not create devices
or define the guest.
完成安装步骤,但不要创建设备或者定义虚拟机。
--check CHECK Enable or disable validation checks. Example:
启用或禁用验证检查。例如:
--check path_in_use=off
--check all=off
-q, --quiet Suppress non-error output
禁止无错误输出
-d, --debug Print debugging information
输入故障排除信息
Use '--option=?' or '--option help' to see available suboptions
See man page for examples and full option syntax.
创建NAT网络虚拟机:
上传镜像并安装虚拟机:
#提前上传镜像
[root@kvm-1 src]# ll /usr/local/src/CentOS-7-x86_64-Minimal-1810.iso
-rw-r--r-- 1 root root 962592768 Jun 15 23:47 /usr/local/src/CentOS-7-x86_64-Minimal-1810.iso
#创建磁盘
[root@kvm-1 src]# qemu-img create -f qcow2 /var/lib/libvirt/images/centos7_mini.qcow2 10G
#创建默认网络虚拟机
[root@kvm-1 src]# virt-install --virt-type kvm \
--name centos7 \
--memory 1024 \
--vcpus 2 \
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1810.iso \
--disk path=/var/lib/libvirt/images/centos7_mini.qcow2 \
--network network=default \
--graphics vnc,listen=172.16.36.70 \
--noautoconsole
#创建windows虚拟机:
[root@kvm-1 src]# qemu-img create -f qcow2 /var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2 200G
[root@kvm-1 src]# virt-install --virt-type kvm \
--name Win_2008_r2-x86_64 \
--ram 3072 \
--vcpus=2 \
--os-type=windows \
--cdrom=/usr/local/src/windows_server_2008_r2.iso \
--disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio \
--disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
通过VNC客户端连并安装虚拟机:
在VNC连接栏输入地址:如172.16.36.70:5900,即可进入熟悉的安装界面。kernel添加命令:net.ifname=0,重命名网卡名称为eth0,安装时,把中文语言包安装,以方后续使用中文乱码,其余选项自行脑补。安装完成后,需要手动重启虚拟机,


登录到虚拟机:


安装一个电源管理工具程序:
acpid(电源管理工具),用于管理虚拟主机电源操作
[root@kvm-1 images]# yum install acpid -y
[root@kvm-1 images]# virsh list --all
Id Name State
----------------------------------------------------
- centos7 shut off
[root@kvm-1 images]# virsh start centos7
Domain centos7 started
虚拟机管理命令:
[root@s1 src]# virsh list #列出当前开机的
[root@s1 src]# virsh list --all #列出所有
[root@s1 src]# virsh shutdown CentOS-7-x86_64 #正常关机
[root@s1 src]# virsh start CentOS-7-x86_64 #正常关机
[root@s1 src]# virsh destroy centos7 #强制停止/关机=poweroff
[root@s1 src]# virsh undefine Win_2008_r2-x86_64#强制删除
[root@s1 src]# virsh autostart centos7 #设置开机自启动
通过virt-manager管理虚拟机:
执行virt-manager通常会报错:
(virt-manager:23111): Gtk-WARNING **: 15:48:20.549: cannot open display:
此处介绍securCRT+Xmanager启动virt-manager:
1.启动xmanager的passive
2.在secureCRT中执行以下的命令
export DISPLAY=172.16.36.1:0.0 ip地址是本机(真实主机,你摸得到)的客户端地址
3.写一个.sh文件,放到/etc/profile.d/,例如:
[root@kvm-1 images]# vim /etc/profile.d/display.sh
export DISPLAY=172.16.36.1:0.0
[root@kvm-1 images]# source /etc/profile.d/display.sh #读取生效
[root@kvm-1 images]# virt-manager #启动virt-manager

虚拟机查看详情:

可以设置一些虚拟机配置详情,例如添加设备,修改设备情况等

配置虚拟机网卡:
新装虚拟机网卡默认不自动启动,修改如下:ONBOOT=yes,BOOTPROTO=dhcp,退出保存重启网络服务。
[root@bogon ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
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=054b949a-ec05-405f-bc10-aa62c5383647
DEVICE=eth0
ONBOOT=yes
[root@bogon ~]# systemctl restart network