KVM是以色列初创公司Qumranet开发,2008年9月RedHat公司收购了Qumranet
[[email protected] ~]# fdisk -l [[email protected] ~]# mkfs.ext4 /dev/sdb [[email protected] ~]# blkid /dev/sdb /dev/sdb: UUID="378895da-ded5-4312-8194-748125c795db" TYPE="ext4" [[email protected] ~]# mount /dev/sdb /kvm_data/ [[email protected] ~]# vim /etc/fstab //增加如下: /dev/sdb /kvm_data ext4 defaults 0 0
grep -Ei 'vmx|svm' /proc/cpuinfo
yum install -y virt-* libvirt bridge-utils qemu-img
增加一块虚拟网卡,目的就是为了打通宿主机和虚拟机的通信。
[[email protected] ~]# cd /etc/sysconfig/network-scripts/ [[email protected] network-scripts]# cp ifcfg-ens33 br0 [[email protected] network-scripts]# vim br0 TYPE=Bridge BOOTPROTO=static NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.161.161 NETMASK=255.255.255.0 GATEWAY=192.168.161.2 DNS1=119.29.29.29 [[email protected] network-scripts]# vim ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static DEVICE=ens33 ONBOOT=yes BRIDGE=br0 [[email protected] ~]# ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.161.161 netmask 255.255.255.0 broadcast 192.168.161.255 inet6 fe80::d80e:8ff:fe32:4775 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:26:e9:ae txqueuelen 1000 (Ethernet) RX packets 46 bytes 4473 (4.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 46 bytes 5831 (5.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:0c:29:26:e9:ae txqueuelen 1000 (Ethernet) RX packets 153404 bytes 210172913 (200.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 35293 bytes 4746555 (4.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[[email protected]hdya01 ~]# systemctl start libvirtd [[email protected] ~]# ps axu |grep !$ ps axu |grep libvirtd root 9127 5.1 0.4 615520 18384 ? Ssl 14:28 0:00 /usr/sbin/libvirtd root 9260 0.0 0.0 112680 976 pts/1 S+ 14:29 0:00 grep --color=auto libvirtd
[[email protected] ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c2926e9ae no ens33 virbr0 8000.52540058db51 yes virbr0-nic
我这边测试是使用搭建的XFTP客户端直接上传的。这样快些。也就5分钟的样子。
virt-install --name=zhdya01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7.3-x86_64-DVD-1611.iso --disk path=/kvm_data/zhdya01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
virt-install :使用命令安装 --name=zhdya01 :名字为zhdya01 --memory=512,maxmemory=1024 :最小内存为512M 最大为1024M --vcpus=1,maxvcpus=2 :最大最小CPU --os-type=linux :系统类型 --os-variant=rhel7 :版本 --location=/tmp/CentOS-7.3-x86_64-DVD-1611.iso :镜像位置(注意你的可能和我的不一致) --disk path=/kvm_data/zhdya01.img,size=10 :安装路径 --bridge=br0 :桥接网卡 --graphics=none :是否为图形界面(图形界面建议使用vnc软件连接) --console=pty,target_type=serial :终端的属性 --extra-args="console=tty0 console=ttyS0"
经过一段时间的硬件检查,然后到了如下这个操作界面:
输入对应菜单的编号回车 即可进入设置。等我们设置完每一项,在每一项的前面对应的方括号内都会变成 [X] 注意磁盘设置的时候是选择LVM还是标准分区。
等待全部设置完毕,按 b 开始安装:
等待安装的差不多之后就会自动重启(当然宿主机也会重新启动!)。
[[email protected] network-scripts]# virsh list //查看虚拟机列表,只能看到运行的虚拟机 Id 名称 状态 ---------------------------------------------------- [[email protected] network-scripts]# virsh list --all //查看虚拟机列表,包括未运行的虚拟机 Id 名称 状态 ---------------------------------------------------- - zhdya01 关闭 [[email protected] network-scripts]# virsh start zhdya01 //启动zhdya01这个虚拟主机 v域 zhdya01 已开始 [[email protected] network-scripts]# virsh list Id 名称 状态 ---------------------------------------------------- 1 zhdya01 running [[email protected] network-scripts]# virsh console zhdya01 //进入主机的控制端 连接到域 zhdya01
一般第一次进入虚拟主机,需要重新获得一个新的IP地址:
[[email protected] ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:02:cf:d7 brd ff:ff:ff:ff:ff:ff [[email protected] ~]# dhclient eth0 [[email protected] ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:02:cf:d7 brd ff:ff:ff:ff:ff:ff inet 192.168.161.129/24 brd 192.168.161.255 scope global dynamic eth0
这样我就获得了一个和宿主机一个网段的IP地址(当然网络也是畅通的)
[[email protected] ~]# ping www.okay686.cn PING www.okay686.cn (122.190.3.199) 56(84) bytes of data. 64 bytes from 122.190.3.199 (122.190.3.199): icmp_seq=1 ttl=128 time=32.7 ms 64 bytes from 122.190.3.199 (122.190.3.199): icmp_seq=2 ttl=128 time=40.0 ms //安装一个net-tools 待会测试用 [[email protected] ~]# yum install -y net-tools 已加载插件:fastestmirror base | 3.6 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 (1/4): base/7/x86_64/group_gz | 156 kB 00:01 (2/4): extras/7/x86_64/primary_db | 166 kB 00:02 (3/4): base/7/x86_64/primary_db | 5.7 MB 00:15
更多操作经常使用的指令如下:
virsh shutdown zhdya01 //关闭虚拟机 virsh start zhdya01 //开启虚拟机 virsh destroy zhdya01 //类似stop,这个是强制停止 virsh undefine zhdya01 //彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到了 ls /etc/libvirt/qemu/ //可以查看虚拟机配置文件 virsh autostart zhdya01 //宿主机开机该虚拟机也开机 virsh autostart --disable zhdya01 //解除开机启动 virsh suspend zhdya01 //挂起 virsh resume zhdya01 //恢复
克隆虚拟机举个例子就和你在Vmware上面的操作差不多,是一个原理。使用场景:当我们在一台虚拟机搭建了台LNMP服务,后期一台虚拟主机可能扛不住那么大的使用压力,我们可以再次创建一台新的虚拟机来分担。这样我们只需要克隆一台修改下配置即可,大大缩短了时间,提高了工作效率!
首先需要把克隆的机器断电
[[email protected] ~]# virsh shutdown zhdya01 [[email protected] ~]# virt-clone --original zhdya01 --name zhdya02 --file /kvm_data/zhdya02 正在分配 'zhdya02' | 10 GB 00:01:15 成功克隆 'zhdya02'。 --original指定克隆源虚拟机 --name指定克隆后的虚拟机名字 --file指定目标虚拟机的虚拟磁盘文件 如果zhdya01虚拟机开机状态,则提示先关闭或者暂停虚拟机
针对刚刚克隆的机器 我们去测试下 刚刚安装的 net-tools 命令是否存在
[root@zhdya01 ~]# virsh start zhdya02 域 zhdya02 已开始 [root@zhdya01 ~]# virsh console zhdya02 连接到域 zhdya02 [root@localhost ~]# ifconfig //可以使用,但是没有IP地址 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 52:54:00:44:3b:f6 txqueuelen 1000 (Ethernet) [root@localhost ~]# dhclient eth0 [root@localhost ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.161.130 netmask 255.255.255.0 broadcast 192.168.161.255
这样就玩成了一个虚拟主机的克隆,且也可以成功获取一个和宿主机一样的IP地址。
但是随着工作的需要,未来我们可能需要使用咱们的宿主机(类似于跳板机...)然后搞个ansible 是不是就很方便的去管理了呢? 当然咱们的虚拟主机也可以使用 ssh 的方式去连接,没有必要使用 virsh console 这个语句了。
[[email protected] ~]# ssh-copy-id -i ./.ssh/id_rsa.pub [email protected]192.168.161.130 //这样我们就成功的在虚拟主机上面配置了宿主机的公钥。 [[email protected] ~]# ssh 192.168.161.130 Last login: Sun Feb 4 17:01:00 2018 [[email protected] ~]# ip addr //这样就成功的从宿主机登录到了虚拟主机。 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:44:3b:f6 brd ff:ff:ff:ff:ff:ff inet 192.168.161.130/24 brd 192.168.161.255 scope global dynamic eth0
未来的工作当中,当然我们也是使用这样方式来管理虚拟主机的。
快照的功能,不多说了,很方便,公司目前几乎所有的服务器均在阿里云,有时候我们的备份方式之一就是使用快照,简单_粗暴_效率!
[[email protected] ~]# virsh snapshot-create zhdya01 //创建一个zhdya02的快照 已生成域快照 1517735766 [[email protected] ~]# virsh snapshot-list zhdya01 //查看快照列表 名称 生成时间 状态 ------------------------------------------------------------ 1517735766 2018-02-04 17:16:06 +0800 running [[email protected] ~]# qemu-img info /kvm_data/zhdya01.img image: /kvm_data/zhdya01.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1.3G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: true file format: qcow2 //快照文件的类型。
看到了,如上的文件类型,我就需要说下这个:raw格式的虚拟磁盘不支持做快照,qcow2支持。
virsh snapshot-current zhdya01 //查看当前快照版本 [[email protected] ~]# ls /var/lib/libvirt/qemu/snapshot/ //查看所有快照配置文件(创建一次,就会在zhdya目录里面生成一个快照的配置文件) zhdya01 zhdya02 virsh snapshot-revert zhdya01 1517735766 //恢复指定快照 [[email protected] ~]# virsh snapshot-delete zhdya01 1517736361 //删除快照 已删除域快照 1517736361
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句