KVM折腾记...https://lengjibo.github.io/KVM%E6%8A%98%E8%85%BE%E8%AE%B0/
每个人都会有缺陷,就像被上帝咬过的苹果,有的人缺陷比较大,正是因为上帝特别喜欢他的芬芳。
——《战争与和平》
唉,最近迷上这玩意儿了,可怕,一直瞎折腾…
多图预警,此文毫无逻辑,纯手打纯瞎写
测试系统:centos7
装系统的时候比较迷,连个ifconfig都忘了装…
就像我们所知道的,“ifconfig”命令用于配置GNU/Linux系统的网络接口。它显示网络接口卡的详细信息,包括IP地址,MAC地址,以及网络接口卡状态之类。但是,该命令已经过时了,而且在最小化版本的RHEL 7以及它的克隆版本CentOS 7,Oracle Linux 7和Scientific Linux 7中也找不到该命令。
要查看网卡细节,输入以下命令:
ip addr
输出样例:
1: lo: <loopback,up,lower_up> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: venet0: <broadcast,pointopoint,noarp,up,lower_up> mtu 1500 qdisc noqueue state UNKNOWN
link/void
inet 127.0.0.1/32 scope host venet0
inet 192.168.1.101/32 brd 192.168.1.101 scope global venet0:0
在网络畅通的情况下我们可以使用以下命令,安装ifconfig
yum provides ifconfig
输出样例:
net-tools包提供了ifconfig命令。因此,让我们安装net-tools包来使用ifconfig命令。
yum install net-tools
现在,你就可以像以往一样使用ifconfig命令了。
ifconfig -a
上图
因为KVM在图形下操作比较方便,我这里又装了一下界面
首先安装X(X Window System),命令为
yum groupinstall “X Window System” 回车(注意有引号)
安装完成会显示completed!
检查一下我们已经安装的软件以及可以安装的软件,用命令
yum grouplist 回车
然后安装我们需要的图形界面软件,GNOME(GNOME Desktop)
yum groupinstall + “桌面”
这里需要特别注意!!!!
一定要注意 名称必须对应 不同版本的centOS的软件名可能不同 其他Linux系统类似
否则会出现No packages in any requested group available to install or update 的错误。
安装完成后我们开始搞kvm
首先查看cpu是否支持虚拟化
grep vmx /proc/cpuinfo
如果有vmx信息输出,就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机。
注:若为虚拟机环境,请在cpu哪里勾选虚拟化选项
然后确保BIOS里开启虚拟化功能,即查看是否加载KVM模块
如果没有加载,运行以下命令:
[root@kevin ~]# modprobe kvm
[root@kevin ~]# modprobe kvm-intel
内核模块导出了一个名为/dev/kvm的设备,这个设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间。
安装KVM插件
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
其实这些是可以在系统安装的时候选择的,若未选择,可以现在安装
安装图形化界面:
yum install -y virt-manager
systemctl enable libvirtd && systemctl start libvirtd #设置开机自启并且启动lbvired服务
禁用防火墙:
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
关闭selinux:
[root@localhost ~]# vi /etc/selinux/config
将selinux设置为diabled,保存退出 挂载一块硬盘并且格式化
mkfs.ext4 /dev/sdb
添加之后还不能用,需要格式化
[root@localhost ~]# mkfs.ext4 /dev/sdb #使用ext4文件格式进行格式化
[root@localhost ~]# mkdir /ios #在根目录下创建一个挂载点目录
[root@localhost ~]# mount /dev/sdb /ios/ #将sdb挂载到该目录下,就可以使用了
[root@localhost ~]# df -h #查看一下是否挂载成功
[root@localhost ~]# vi /etc/fstab #开机自动挂载
编辑完如下
如果没有输出结果,可以使用下面这条命令加载一下kvm模块
[root@localhost ~]# modprobe kvm
到目前为止,kvm平台已经基本安装完成,接下来需要创建桥接网卡
编辑主机原网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33,在文件末尾添加一行:BRIDGE=”br0”
复制ifcfg-ens33配置文件并重命名为ifcfg-br0
[root@localhost network-scripts]# cp -rvf ifcfg-ens33 ifcfg-br0
修改ifcfg-br0配置文件 ![](https://i.screenshot.net/8oo82in) 重启下网络
[root@localhost ~]# systemctl restart network #重启网络
若出现以下提示的解决方法
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
解决:
[root@mina0 hadoop]# journalctl -xe
[root@mina0 hadoop]# systemctl stop NetworkManager
[root@mina0 hadoop]# systemctl disable NetworkManager
然后重启网络
可以看到ens33已经获取到了IP地址
然后开始一些基本的操作
[root@localhost ~]# virt-manager #打开虚拟机管理器
双击QEMU/KVM
创建一个镜像存储池用来存放ISO镜像文件,并命名
然后设置存储池所在的目录
创建一个虚拟机
将iso文件上传到存储池所在的目录,然后单击“浏览”按钮选择镜像文件,再选择操作系统类型及版本
至此一个虚拟机完成
虚拟机的部分操作:开始、暂停、重启、关闭等
Virsh命令
virsh list –all
查看在运行的所有的虚拟机
virsh dumpxml vm-name
查看kvm虚拟机配置文件
virsh start vm-name
启动kvm虚拟机
virsh shutdown vm-name
正常关机
virsh destroy vm-name
强制关机
virsh undefine vm-name
删除vm的配置文件
virsh define file-name.xml
根据配置文件定义虚拟机
virsh suspend vm-name
挂起虚拟机
virsh resumed vm-name
恢复被挂起的虚拟机
virsh snapshot-create
创建快照
virt-df -h vm-name
查看虚拟机的磁盘信息
virt-clone -o rhel7.0 -n rhel7.0-01 -f /var/rhel7.0-01.qcow2
查看快照信息(如果要恢复的话或者删除必须要看名称是什么)
virsh snapshot-revert rhel7.0 1537275180
恢复快照
virsh snapshot-delete rhel7.0 1537275180
删除快照