OpenStack02 | 您所在的位置:网站首页 › centos71 › OpenStack02 |
1、什么是虛拟化?
虚拟化是一种具体技术,把实体资源进行虚拟化。
虚拟化技术根据对象可以分成计算虚拟化、存储虚拟化、网络虚拟化等。虚拟化是一种具体技术,指是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。
虚拟化软件:
qemu:(全虚拟)几乎可以模拟所有的硬件和操作系统。性能特别差,兼容性好。xen:(半虚拟)需要使用专门修改之后的内核。性能特别好,兼容性差。(redhat 5.5之前使用的就是xen)KVM:(全虚拟)基于内核,而且不需要使用专门的内核。性能较好,兼容较好。(centos6使用的是kvm)
2、创建KVM虚拟机
环境要求
可以使用centos7.4、7.6等,但不要使用7.5。CPU开启虚拟化。在10.1.1.13上创建虚拟机
2.1、安装创建虚拟机的工具
1、安装KVM工具 1 ]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install libvirt:管理KVM虚拟机。可以操作KVM、vmware、XEN、Hyper-v、LXC等Hypervisor。 virsh:创建、暂停和关闭domain(域)。libvirt的命令行工具(CLI)。virt-manager:管理虚拟机的桌面工具。libvirt的GUI工具。virt-install:创建KVM虚拟机的命令行工具。virt-clone:克隆虚拟机的命令行工具。qemu-img:允许离线创建、转换和修改镜像。可以处理QEMU格式的的所有镜像。2、启动libvirtd 1 2 ]# systemctl start libvirtd.service ]# systemctl status libvirtd.service 2.2、创建虚拟机 下载centos的ISO镜像 http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso 2.2.1、使用nat网络创建虚拟机1 2 3 ]# virt-install --name CentOS71-x86_64 --virt-type kvm --os-variant rhel7 --boot hd \ --memory 1024 --vcpus 1 --disk /apps/images/CentOS71-x86_64.raw,format=raw,size=10 --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole --cdrom /apps/iso/CentOS-7-x86_64-Minimal-2009.iso 参数说明: --name:虚拟机的名称--virt-type:虚拟化的类型 (kvm, qemu, xen, ...),默认qemu。--os-variant:虚拟机的操作系统,例如fedora18、rhel6、winxp等。(rhel7是RedHat Enterprise Linux 7)--memory:虚拟机的内存大小,单位MB。--vcpus:虚拟机的cpu核数--disk PATH,format=raw,size=10:PATH虚拟机磁盘在宿主机的路径,format磁盘的格式(raw和qcow2),size磁盘的大小(单位GB) raw:分配多少空间就立即占用多少。不支持快照,不方便传输,性能较好。qcow2:不会立即占用所有分配的空间,而是使用多少就占用多少,直到使用完毕。支持快照,方便传输,性能比raw差一点。--network network=defaul:虚拟机的网络类型,默认是nat。--graphics vnc,listen=0.0.0.0:显示器通过VNC输出--noautoconsole:不要自动尝试连接到客户端控制台--cdrom:操作系统镜像也可以先创建磁盘,再创建虚拟机(与上等价)。1 2 3 4 5 6 7 //(1)创建虚拟机镜像文件 ]# qemu-img create -f raw /apps/images/CentOS71-x86_64.raw 10G //(2)创建虚拟机 ]# virt-install --name CentOS71-x86_64 --virt-type kvm --os-variant rhel7 --boot hd \ --memory 1024 --vcpus 1 --disk /apps/images/CentOS71-x86_64.raw --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole --cdrom /apps/iso/CentOS-7-x86_64-Minimal-2009.iso 2.2.2、使用桥接网络创建虚拟机1、创建桥接网络 1 2 3 4 //将eth0网络接口 桥接 到br0网桥上 ]# virsh iface-bridge eth0 br0 Created bridge br0 with attached device eth0 Bridge interface br0 started 2、创建虚拟机 1 2 3 ]# virt-install --name CentOS72-x86_64 --virt-type kvm --os-variant rhel7 --boot hd \ --memory 1024 --vcpus 1 --disk /apps/images/CentOS72-x86_64.raw,format=raw,size=10 --network bridge=br0 \ --graphics vnc,listen=0.0.0.0 --noautoconsole --cdrom /apps/iso/CentOS-7-x86_64-Minimal-2009.iso 参数说明: --network bridge=br0:虚拟机的网络类型,使用桥接网络。 2.2.3、查看虚拟机 两种网络的虚拟机可以同时存在。两种网络之间转换,只需修改虚拟机配置文件的如下内容:1 2 3 4 5 6 7 //nat网络
//桥接网络
1、查看虚拟机 1 2 3 4 5 ]# virsh list --all Id Name State ---------------------------------------------------- 1 CentOS71-x86_64 running 2 CentOS72-x86_64 running 2、查看以太网网桥 1 2 3 4 5 6 ]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c292158ff yes eth0 vnet1 virbr0 8000.52540042df18 yes virbr0-nic vnet0 2.3、安装虚拟机 使用VNC Viewer连接虚拟机进行安装1、获取连接虚拟机的VNC编号 1 2 ]# virsh vncdisplay CentOS71-x86_64 :0 2、连接到虚拟机 在进入安装界面的时候把光标移动到Install CentOS7,按下tab键,在后面输入“net.ifnames=0 biosdevname=0”回车即可。 virt-install命令执行后,要赶紧连接到虚拟机,否则看不到该页面。3、配置虚拟机 1、查看虚拟机 1 virsh list --all 2、开关虚拟机 1 2 3 4 5 6 7 8 9 10 //开启虚拟机 virsh start //重启虚拟机 virsh reboot //关闭虚拟机(正常关机) virsh shutdown //关闭虚拟机(关闭电源) virsh destroy 3、将虚拟机设置为开机自启 1 2 3 4 5 6 7 8 //将虚拟机设置为开机自启 virsh autostart //取消开机自启 virsh autostart --disable //设置开机自启后,会创建该目录,并创建其软链 ]# ls -l /etc/libvirt/qemu/autostart/ 4、挂起和恢复虚拟机 1 2 3 4 5 //挂起虚拟机 virsh suspend //恢复虚拟机 virsh resume 5、VNC连接虚拟机 VNC可以通过虚拟机的编号或虚拟机的端口连接虚拟机。1 2 3 4 5 6 7 8 9 //显示连接虚拟机的URI virsh domdisplay //显示虚拟机的VNC编号 virsh vncdisplay //当有多个虚拟机时,端口会从5900递增 ]# sudo netstat -ntpl | sort -k 7 tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 1897/qemu-kvm tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1937/qemu-kvm 6、使用console登录虚拟机(命令行控制台,代替VNC) 1 2 3 4 5 6 7 8 //(1)修改KVM虚拟机的内核参数(/boot/grub2/grub.cfg) ]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8" //(2)重启KVM虚拟机 ]# reboot //(3)连接虚拟机(“Ctrl + ]”退出虚拟机) virsh console 7、虚拟机的配置文件 一个虚拟机有两个文件: 磁盘文件:配置文件:/etc/libvirt/qemu1 2 3 4 5 6 7 8 //备份配置文件 virsh dumpxml > .xml //修改配置文件 virsh edit .xml //导入配置文件 virsh define .xml 8、删除虚拟机 1 2 3 4 5 6 7 8 //(1)关闭虚拟机 virsh destroy //(2)删除虚拟机的配置文件 virsh undefine //(3)删除虚拟机的磁盘文件 rm /apps/images/.raw 9、迁移虚拟机到其他磁盘 1 2 3 //(1)将虚拟机镜像文件迁移到其他磁盘 //(2)修改虚拟机的配置文件中的磁盘路径 3.2、管理快照1 2 3 4 5 6 7 8 9 10 11 //查看快照 virsh snapshot-list //还原快照 virsh snapshot-revert --snapshotname Snapshot_Name //创建快照 virsh snapshot-create-as --name Snapshot_Name //删除快照 virsh snapshot-revert --name Snapshot_Name 4、virt-clone命令-克隆虚拟机1 2 3 4 5 ]# virsh list --all Id Name State ---------------------------------------------------- 1 CentOS71-x86_64 running 2 CentOS72-x86_64 running 1、完整克隆(自动) 1 2 3 4 5 //(1)完整克隆(克隆前要关闭虚拟机) ]# virt-clone --auto-clone -o CentOS71-x86_64 -n CentOS73-x86_64 //(2)启动虚拟机 ]# virsh start CentOS73-x86_64 2、完整克隆(手动) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //(1)复制虚拟机磁盘 ]# cp /apps/images/CentOS71-x86_64.qcow2 /apps/images/CentOS74-x86_64.qcow2 //(2)创建虚拟机配置文件 ]# virsh dumpxml CentOS71-x86_64 > /etc/libvirt/qemu/CentOS74-x86_64.xml ]# vim /etc/libvirt/qemu/CentOS74-x86_64.xml #修改虚拟机的名字 #删除虚拟机uuid #删除mac地址 #修改磁盘路径 //(3)导入虚拟机配置文件 ]# virsh define /etc/libvirt/qemu/CentOS74-x86_64.xml //(4)启动虚拟机 ]# virsh start CentOS74-x86_64 3、连接克隆(手动) 1 2 3 4 5 6 7 //(1)基于磁盘CentOS71-x86_64.raw创建磁盘CentOS75-x86_64.qcow2(新创建的磁盘的格式必须是qcow2) ]# qemu-img create -f qcow2 -b /apps/images/CentOS71-x86_64.raw /apps/images/CentOS75-x86_64.qcow2 //(2)启动CentOS75-x86_64虚拟机 ]# virt-install --name CentOS75-x86_64 --virt-type kvm --os-variant rhel7 --boot hd \ --memory 1024 --vcpus 1 --disk /apps/images/CentOS75-x86_64.qcow2 --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole 5、qemu-img命令-管理虚拟磁盘1 2 3 4 5 ]# virsh list --all Id Name State ---------------------------------------------------- 1 CentOS71-x86_64 running 2 CentOS72-x86_64 running 1、qemu-img常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //创建磁盘 ]# qemu-img create -f qcow2 /apps/images/CentOS73-x86_64.qcow2 10G Formatting '/apps/images/CentOS73-x86_64.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off //查看磁盘信息 ]# qemu-img info /apps/images/CentOS73-x86_64.qcow2 image: /apps/images/CentOS73-x86_64.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false //扩容磁盘。raw格式的镜像支持增大或缩小,而qcow2格式只支持增大。(注意,一定不要进行缩容) ]# qemu-img resize /apps/images/CentOS73-x86_64.qcow2 100G //将raw格式转换为qcow2(转换格式后,KVM虚拟机的配置文件要修改磁盘路径和格式两个地方) ]# qemu-img convert -f raw -O qcow2 /apps/images/CentOS71-x86_64.raw /apps/images/CentOS74-x86_64.qcow2 2、转换磁盘格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //将raw格式转换为qcow2(转换格式后,KVM虚拟机的配置文件要修改磁盘路径和格式两个地方) ]# qemu-img convert -f raw -O qcow2 /apps/images/CentOS71-x86_64.raw /apps/images/CentOS75-x86_64.qcow2 ]# virsh dumpxml CentOS71-x86_64 > CentOS75-x86_64.xml ]# vim CentOS75-x86_64.xml #修改虚拟机的名字 #删除虚拟机uuid #删除mac地址 #修改磁盘格式 #修改磁盘路径 ]# virsh define CentOS75-x86_64.xml ]# virsh start CentOS75-x86_64 学习地址:Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家(免费订阅,永久学习) 【文章福利】需要更多DPDK/SPDK学习资料加群793599096(资料包括C/C++,Linux,golang技术,内核,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,大厂面试题 等)可以自行添加学习交流群点击这里噢~
1 2 3 4 5 6 7 8 9 //添加磁盘,临时生效 virsh attach-disk [--subdriver ] //添加磁盘,永久生效 virsh attach-disk [--subdriver ] [--config] //剥离磁盘,临时生效 virsh detach-disk //剥离磁盘,永久生效 virsh detach-disk [--config] 参数说明: :虚拟机:磁盘设备的来源(绝对路径):磁盘设备的目标[--subdriver ]:磁盘设备的子驱动器[--config]:重启生效 6.1.2、动态添加和扩容磁盘示例1、查看虚拟机 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //(1)查看虚拟机名称 ]# virsh list --all Id Name State ---------------------------------------------------- 1 CentOS71-x86_64 running //(2)查看虚拟机现有的磁盘文件 ]# ls -lh /apps/images/ -rw------- 1 qemu qemu 10G Mar 3 02:15 CentOS71-x86_64.raw //(3)查看虚拟机的VNC编号 ]# virsh vncdisplay CentOS71-x86_64 :0 //(4)连接到虚拟机中,查看磁盘大小 ]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/vda1 10G 1.4G 8.7G 14% / ... 2、创建一个磁盘 1 ]# qemu-img create -f qcow2 /apps/images/CentOS71-x86_64-2.qcow2 20G 3、将新磁盘添加到虚拟机上 1 2 3 //临时和永久生效都要执行 ]# virsh attach-disk CentOS71-x86_64 /apps/images/CentOS71-x86_64-2.qcow2 vdb --subdriver qcow2 ]# virsh attach-disk CentOS71-x86_64 /apps/images/CentOS71-x86_64-2.qcow2 vdb --subdriver qcow2 --config 4、格式化并挂载新磁盘 连接到虚拟机中,进行操作。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //(1)查看磁盘信息 ]# fdisk -l Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors Device Boot Start End Blocks Id System /dev/vda1 * 2048 20971519 10484736 83 Linux Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors //(2)查看磁盘格式 ]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT vda └─vda1 xfs c4d392df-d657-4103-a3b3-0a77752f1c9b / vdb //(3)格式化新磁盘 ]# mkfs.xfs /dev/vdb //(4)挂载新磁盘 ]# mount /dev/vdb /mnt //(5)查看磁盘大小 ]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/vda1 10G 1.4G 8.7G 14% / /dev/vdb 20G 33M 20G 1% /mnt ... 5、向新磁盘中写入数据 1 2 //模拟数据,用于扩容后观察数据是否丢失 ]# cp -rf /etc/yum.repos.d /mnt 6、扩容新磁盘 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //(1)在虚拟机中,将要扩容的磁盘卸载掉 ]# umount /mnt/ //(2)临时剥离磁盘 ]# virsh detach-disk CentOS71-x86_64 vdb //(3)调整磁盘容量 ]# qemu-img resize /apps/images/CentOS71-x86_64-2.qcow2 +10G //(4)将磁盘临时添加到虚拟机上 ]# virsh attach-disk CentOS71-x86_64 /apps/images/CentOS71-x86_64-2.qcow2 vdb --subdriver qcow2 //(5)在虚拟机中,再次挂载磁盘 ]# mount /dev/vdb /mnt //(6)在虚拟机中,更新扩容磁盘的超级块信息(resize2fs用于ext4) ]# xfs_growfs /dev/vdb 7、验证是否扩容成功 1 2 3 4 5 6 7 8 ]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/vda1 10G 1.4G 8.7G 14% / /dev/vdb 30G 33M 30G 1% /mnt ... ]# ls -lh /mnt drwxr-xr-x. 2 root root 220 Mar 3 02:44 yum.repos.d 6.2、动态添加网卡 6.2.1、常用命令1 2 3 4 5 6 7 8 9 //添加网卡,临时生效 virsh attach-interface [--model ] //添加网卡,临时生效 virsh attach-interface [--model ] [--config] //剥离网卡,临时生效 detach-interface [--mac ] //剥离网卡,永久生效 detach-interface [--mac ] [--config] 参数说明: :虚拟机:网络接口类型:网络接口来源(绝对路径)[--model ]:模型类型[--config]:重启生效[--mac ]:MAC地址 6.2.2、动态添加网卡示例1、查看虚拟机信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //查看虚拟机 ]# virsh list --all Id Name State ---------------------------------------------------- 1 CentOS71-x86_64 running 2 CentOS72-x86_64 running //查看以太网网桥 ]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c292158ff yes eth0 vnet1 virbr0 8000.52540042df18 yes virbr0-nic vnet0 2、添加网络接口 1 2 3 4 5 6 7 //为虚拟机添加nat网络接口 ]# virsh attach-interface CentOS71-x86_64 network default --model virtio ]# virsh attach-interface CentOS71-x86_64 network default --model virtio --config //为虚拟机添加桥接网络接口 ]# virsh attach-interface CentOS71-x86_64 bridge br0 --model virtio ]# virsh attach-interface CentOS71-x86_64 bridge br0 --model virtio --config 3、验证添加网卡是否成功 (1)查看以太网网桥1 2 3 4 5 6 7 8 ]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c292158ff yes eth0 vnet1 vnet3 virbr0 8000.52540042df18 yes virbr0-nic vnet0 vnet2 (2)连接到虚拟机上,查看网络接口1 2 3 4 //添加CPU,临时有效 setvcpus //添加CPU,永久有效 setvcpus [--config] 6.3.2、动态添加CUP1、查看虚拟机 1 2 3 4 5 6 //查看虚拟机 ]# virsh list --all Id Name State ---------------------------------------------------- - CentOS71-x86_64 shut off - CentOS72-x86_64 shut off 2、创建虚拟机 要动态添加CUP,在创建虚拟机时必须使用特殊的选项“--vcpus 1,maxvcpus=5”1 2 3 4 5 ]# qemu-img create -f qcow2 -b /apps/images/CentOS71-x86_64.raw /apps/images/CentOS73-x86_64.qcow2 ]# virt-install --name CentOS73-x86_64 --virt-type kvm --os-variant rhel7 --boot hd \ --memory 1024 --vcpus 1,maxvcpus=5 --disk /apps/images/CentOS73-x86_64.qcow2 --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole 3、动态添加CPU 1 2 ]# virsh setvcpus CentOS73-x86_64 2 ]# virsh setvcpus CentOS73-x86_64 2 --config 6.3、动态添加内存 6.3.1、常用命令 内存可以动态扩缩容。1 2 3 4 //修改内存大小,临时有效 setmem //修改内存大小,永久有效 setmem [--config] 6.3.2、动态添加内存示例1、查看虚拟机 1 2 3 4 5 6 //查看虚拟机 ]# virsh list --all Id Name State ---------------------------------------------------- - CentOS71-x86_64 shut off - CentOS72-x86_64 shut off 2、创建虚拟机 要动态扩缩容内存,在创建虚拟机时必须使用特殊的选项“--memory 512,maxmemory=2048”1 2 3 4 5 ]# qemu-img create -f qcow2 -b /apps/images/CentOS71-x86_64.raw /apps/images/CentOS73-x86_64.qcow2 ]# virt-install --name CentOS73-x86_64 --virt-type kvm --os-variant rhel7 --boot hd \ --memory 512,maxmemory=2048 --vcpus 1 --disk /apps/images/CentOS73-x86_64.qcow2 --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole 3、修改内存大小 1 2 3 //修改内存大小 ]# virsh setmem CentOS73-x86_64 1024 ]# virsh setmem CentOS73-x86_64 1024 --config 1 1 # # 转自:https://www.cnblogs.com/maiblogs/p/17163611.html |
CopyRight 2018-2019 实验室设备网 版权所有 |