一:传统的物理机部署方案、虚拟化与云计算定义:
服务器选型及采购—IdC选择及上架-系统选择及安装–应用规划及部署–域名选择及注册–DNS映射–外网访问:
工信部备案-公安部备案–ICP备案(电子商务网站–>ICP证经营性ICP备案),游戏公司文化部(文网文)备案等,在备案没有成功之前网站是不能上线访问的,论坛BBS有BBS公告备案是备案的前置审批,没有的话备案不成功,还要在公安局系统备案,另外域名接入到一个地方比如机房还要做接入备案,备案在个人名下的备案不能直接转公司,个人注销后网站属于未备案状态随时可能会被封,域名备案一般可以找代理,因为过程比较复杂:
传统数据中心面临的问题:
服务器资源利用率低下,CPU、内存等不能共享
资源分配不合理
初始化成本高
自动化能力差
集群环境需要大量的服务器主机
1.1:云计算的定义
云计算是一种交付模式
云计算必须通过网络使用
支持弹性横向扩展、按需付费和快速扩展
无需关心基础设置,服务器硬件、存储、机房安全、硬件监控、底层数据安全等无需考虑
1.2:云计算的概念与分类:
云计算是概念最早是由Google 前首席执行官埃里克•施密特(Eric Schmidt)在2006 年8 月9 日的搜索引擎大会上首次提出的一种构想,而“云计算”就是这种构想的代名词,云计算以虚拟化为基础,以网络为中心,为用户提供安全、快速、便捷的数据存储和网络计算服务,包括所需要的硬件、平台、软件及服务等资源,而提供资源的网络就被称为“云”。
公有云:比如aws、阿里云以及azure、金山云、腾讯云等都属于公有云,每个人都可以付费使用,不需要自己关心底层硬件,但是数据安全需要考利。
私有云:在自己公司内部或IDC自建Openstack、VMware等环境
混合云:临时需求使用公有云,但是主要业务放在自己的私有云,即自己的私有云的部分业务和公有云有交接,这部分称为混合云
1.3:云计算的分层:
1.4:虚拟化的分类:
服务器虚拟化-虚拟服务器
桌面虚拟化-瘦客户机连接win7 实现普通办公
存储虚拟化-SAN(基于磁盘)/NAS(NFS/Samba)/GlusterFS
应用虚拟化-将办公软件虚拟化,最典型的就是office
网络虚拟化-SDN
1.5:kvm
kmv是一种技术,云计算是一种模式,虚拟化是利用相应的技术方法在一台物理机器上将其按照不同的需求划分成多个相同或者不同的虚拟操作系统,并且各个虚拟系统可以同时运行,互不干扰,其中任何一个虚拟系统的损坏都不影响同一物理服务器上的其他虚拟系统。
1.6:虚拟化的前生与今世:
1964年,IBM推出了专为 System/360 Mainframe 量身订造的操作系统 CP-40,首次实现了虚拟内存和虚拟机。 1967 年,第一个管理程序(hypervisor)诞生,5年之后,IBM 发布用于创建灵活大型主机的虚拟机(VM)技术,该技术可根据动态的需求快速而有效地使用各种资源。从此,虚拟化这一词汇正式被引入了IT的现实世界。 20世纪 90 年代 Windows 的广泛使用以及 Linux 作为服务器系统的出现奠定了 x86 服务器的行业标准地位。 1998年VMware公司在美国成立, 1999年VMware发布了它的第一款产品VMware Workstation、 2001年发布VMware GSX Server和VMware ESX Server宣布进入服务器虚拟化市场, 2003年VMware推出了VMware Virtual Center, 2004年推出了64位支持版本,同年被EMC收购,2013年收入52.1亿美元。 2007年8月21日,思杰宣布5亿美元收购XenSource公司,并推出服务器虚拟化XenServer、桌面虚拟化XenDesktop和应用虚拟化XenApp,2013年收入29亿美元。 2008年3月13日微软在北京发布Windows Server 2008,内置虚拟化技术hyper-v。 2008年9月,红帽以1.07亿美元的价格收购KVM的母公司Qumranet,并推出企业级虚拟化解决方案RHEV,目前最新版本3.3,2013年收入超过13亿美元
1.7:目前全球主要的虚拟化厂商:
1.8:各厂商对比:
1、Vmware是目前市场上服务器虚拟化占有率最高的厂商,原因是其起步早、并且优先于其他厂商推出X86虚拟化产品、产品功能相对完善从而有限占据市场,但是其代码不公开,并且严重依赖Windows服务器系统,也就是厂商绑定,一旦用了Vmware就得购买微软的系统,购买了微软的系统就处处受微软的限制,另外Vmware的授权费用较高(每颗CPU授权78000元,两颗起售)。 2、微软针对WindowsServer2008标准版、企业版与数据中心版,各推出内建Hyper-V的虚拟化环境,需要购买Win Server 2008、Hyper-Vmanager与CPU授权等,其总体花费较高,而且稳定性不高,目前使用市场较小。 3、思杰看到Vmwae在虚拟化领域的成果之后在2007年收购XenSource公司(Xen虚拟化),随后推出针对服务器虚拟化的XenServer、桌面虚拟化XenDesktop以及针对应用虚拟化的XenApp,但是思杰的虚拟化方案成本比较高,配置和管理非常复杂,Xen Desktop也严重依赖微软的WinServer系统,也就是要先购买微软的服务器授权,然后在WinServer上安装Xendesktop,因此产生了较高的费用而且稳定性也不是很好。 4、 红帽的虚拟化基于KVM,而KVM(kernel-based Virtual Machne )是红帽在2008年收购而来,其代码完全开源,工作原理是将模块kvm.ko加载到kernel里运行,从而获得最高效的虚拟能力,红帽成立于1995年是全球最大的Linux开源技术厂家, KVM 是基于虚拟化扩展(intel VT 或AMD-V)的X86 硬件,是Linux 完全原生的全虚拟化解决方案,主要是通过准虚拟网络驱动程序的形式用于 Linux 和 Windows 客户机系统的,KVM支持广泛的客户机操作系统,比如 Linux、BSD、Solaris、Windows XP、windows 7、windows 8、ubuntu等大多数操作系统,目前KVM已经是各大linux发行版本所支持的虚拟化产品。
二:虚拟化技术之KVM:
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
IBM,文档:
lxd容器虚拟化:
qume是软件虚拟化,即使用软件完全模拟出一个具备CPU/内存/和硬盘的等设备的服务器,KVM是全虚拟化,Xen是半虚拟化,KVM在部分设备也支持半虚拟化
2.1:环境准备:
2:2.1:确认CPU已经支持虚拟化,intel的CPU虚拟化技术交vmx,AMD的CPU交svm:
[root@localhost ~]# grep -E "vmx|svm" /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase tsc_adjust smep
2.2.2:安装kvm平台及工具包:
[root@localhost ~]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
2.2.3:启动libvirtsd并设置为开机启动,librirtd会创建一个桥接的网卡virbr0而且IP地址是192.168.122.1:
[root@localhost ~]# systemctl start libvirtd [root@localhost ~]# systemctl enable libvirtd [root@localhost ~]# ifconfig virbr0 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:cb:ca:b0 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.2.4:为虚拟机分配IP地址的服务:
[root@localhost ~]# ps -aux | grep dns nobody 2877 0.0 0.0 15552 888 ? S 13:06 0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 2878 0.0 0.0 15524 180 ? S 13:06 0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 4546 0.0 0.0 112664 980 pts/0 S+ 13:29 0:00 grep --color=auto dns
2.2.5:创建磁盘:
[root@llocalhost ~]# qemu-img create -f raw /o 10G #创建一个格式为raw大小为10G的裸磁盘 Formatting '/o', fmt=raw size=10737418240
2.2.6:开始安装:
#默认网络 [root@linux-node1 ~]# virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024 --cdrom=/o --disk path=/o --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole #桥接网络: virt-install --virt-type kvm --name openstack-middleware1 --ram 4096 --vcpus 4 --cdrom=/usr/local/src --disk path=/var/lib/libvirt/image --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole #安装Windows: # qemu-img create -f qcow2 /var/lib/libvirt/image 200G # virt-install --virt-type kvm --name Win_2008_r2-x86_64 --ram 3072 --vcpus=2 --os-type=windows --cdrom=/usr/local/src --disk path=/var/lib/libvirt/image,format=qcow2,bus=virtio --disk path=/usr/local/src --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole 开始安装...... 创建域...... | 0 B 00:00:01 域安装仍在进行。您可以重新连接 到控制台以便完成安装进程。 #virsh-install命令帮助: [root@linux-node1 ~]# virt-install --help usage: virt-install --name NAME --ram RAM STORAGE INSTALL [options] 使用指定安装介质新建虚拟机。 optional arguments: -h, --help show this help message and exit --version show program's version number and exit --connect URI 使用 libvirt URI 连接到 hypervisor 通用选项: -n NAME, --name NAME 客户端事件名称 --memory MEMORY 配置虚拟机内存分配。例如: --memory 1024 (in MiB) --memory 512,maxmemory=1024 --vcpus VCPUS 为虚拟机配置的 vcpus 数。例如: --vcpus 5 --vcpus 5,maxcpus=10,cpuset=1-4,6,8 --vcpus sockets=2,cores=4,threads=2, --cpu CPU CPU 型号及功能。例如: --cpu coreduo,+x2apic --cpu host --metadata METADATA 配置虚拟机元数据。例如: --metadata name=foo,title="My pretty title",uuid=... --metadata description="My nice long description" 安装方法选项: --cdrom CDROM 光驱安装介质 -l LOCATION, --location LOCATION 安装源(例如:nfs:host:/path、http://host/path ftp://host/path) --pxe 使用 PXE 协议从网络引导 --import 在磁盘映像中构建虚拟机 --livecd 将光驱介质视为 Live CD -x EXTRA_ARGS, --extra-args EXTRA_ARGS 附加到使用 --location 引导的内核的参数 --initrd-inject INITRD_INJECT 使用 --location 为 initrd 的 root 添加给定文件 --os-variant DISTRO_VARIANT 在其中安装 OS 变体的虚拟机,比如 'fedora18'、'rhel6'、'winxp' 等等。 --boot BOOT 配置虚拟机引导设置。例如: --boot hd,cdrom,menu=on --boot init=/sbin/init (for containers) --idmap IDMAP 为 LXC 容器启用用户名称空间。例如: --idmap uid_start=0,uid_target=1000,uid_count=10 设备选项: --disk DISK 使用不同选项指定存储。例如: --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 配置虚拟机网络接口。例如: --network bridge=mybr0 --network network=my_libvirt_virtual_net --network network=mynet,model=virtio,mac=00:11... --network none --network help --graphics GRAPHICS 配置虚拟机显示设置。例如: --graphics vnc --graphics spice,port=5901,tlsport=5902 --graphics none --graphics vnc,password=foobar,port=5910,keymap=ja --controller controller 配置虚拟机控制程序设备。例如: --controller type=usb,model=ich9-ehci1 --input INPUT 配置虚拟机输入设备。例如: --input tablet --input keyboard,bus=usb --serial SERIAL 配置虚拟机串口设备 --parallel PARALLEL 配置虚拟机并口设备 --channel CHANNEL 配置虚拟机沟通频道 --console CONSOLE 配置虚拟机与主机之间的文本控制台连接 --hostdev HOSTDEV 将物理 USB/PCI/etc 主机设备配置为与虚拟机共享 --filesystem FILESYSTEM 将主机目录传递给虚拟机。例如: --filesystem /my/source/dir,/dir/in/guest --filesystem template_name,/,type=template --sound [SOUND] 配置虚拟机声音设备模拟 --watchdog WATCHDOG 配置虚拟机 watchdog 设备 --video VIDEO 配置虚拟机视频硬件。 --smartcard SMARTCARD 配置虚拟机智能卡设备。例如: --smartcard mode=passthrough --redirdev REDIRDEV 配置虚拟机重定向设备。例如: --redirdev usb,type=tcp,server=192.168.1.1:4000 --memballoon MEMBALLOON 配置虚拟机 memballoon 设备。例如: --memballoon model=virtio --tpm TPM 配置虚拟机 TPM 设备。例如: --tpm /dev/tpm --rng RNG 配置虚拟机 RNG 设备。例如: --rng /dev/random --panic PANIC 配置虚拟机 panic 设备。例如: --panic default 虚拟机配置选项: --security SECURITY 设定域安全驱动器配置。 --numatune NUMATUNE 为域进程调整 NUMA 策略。 --memtune MEMTUNE 为域进程调整内粗策略。 --blkiotune BLKIOTUNE 为域进程调整 blkio 策略。 --memorybacking MEMORYBACKING 为域进程设置内存后备策略。例如: --memorybacking hugepages=on --features FEATURES 设置域 <features> XML。例如: --features acpi=off --features apic=on,eoi=on --clock CLOCK 设置域 <clock> XML。例如: --clock offset=localtime,rtc_tickpolicy=catchup --pm PM 配置 VM 电源管理功能 --events EVENTS 配置 VM 生命周期管理策略 --resource RESOURCE 配置 VM 资源分区(cgroups) 虚拟化平台选项: -v, --hvm 客户端应该是一个全虚拟客户端 -p, --paravirt 这个客户端一个是一个半虚拟客户端 --container 这台虚拟机需要一个容器客户端 --virt-type HV_TYPE 要使用的管理程序名称(kvm、qemu、xen 等等) --arch ARCH 模拟的 CPU 构架 --machine MACHINE 要模拟的机器类型 其它选项: --autostart 引导主机时自动启动域。 --wait WAIT 等待安装完成的分钟数。 --noautoconsole 不要自动尝试连接到客户端控制台 --noreboot 完成安装后不要引导虚拟机。 --print-xml [XMLONLY] 输出所生成域 XML,而不是创建虚拟机。 --dry-run 完成安装步骤,但不要创建设备或者定义 虚拟机。 --check CHECK 启用或禁用验证检查。例如: --check path_in_use=off --check all=off -q, --quiet 禁止无错误输出 -d, --debug 输入故障排除信息 使用 '--option=?' 或者 '--option help' 查看可用子选项 有关示例及完整选项语法,请查看 man page。
2.2.7:通过vnc客户端连接到安装界面,kvm虚拟机的默认端口从5900开始
2.2.8:选择安装centos安装界面:
2.2.9:开始正常安装旅程,以下为给内核传递net.ifnames=0以及biosdevname=0使网卡的命名为eth*,否则为em*:
2.2.10:安装过程中。。。。。。:
2.2.11:安装完成:
2.3:查看正在运行的虚拟机:
[root@linux-node1 ~]# virsh -help #获取命令帮助 [root@linux-node1 ~]# virsh list --all #当前正在运行的所有虚拟机 Id 名称 状态 ---------------------------------------------------- 2 CentOS-7-x86_64 running - CentOS-x86_64 关闭 - CentOS_x86_64 关闭 [root@linux-node1 ~]# virsh list --help #命令帮助 OPTIONS --inactive 列出不活跃的域 --all 不活跃和活跃的域列表 --transient 列出临时域 --persistent 列出持久域 --with-snapshot 列出现有快照的域 --without-snapshot 列出没有快照的域 --state-running 运行状态的域列表 --state-paused 列出暂停状态的域 --state-shutoff 列出关闭状态的域 --state-other 列出其他状态的域 --autostart 列出启用 autostart 的域 --no-autostart 列出禁用 autostart 的域 --with-managed-save 列出有管理的保存状态的域 --without-managed-save 列出没有管理的保存状态的域 --uuid 只列出 uuid --name 只列出域名 --table 列出表格(默认) --managed-save 标记有管理的保存状态的域 --title show domain title [root@linux-node1 ~]# virsh list --inactive #列出关闭的虚拟机 Id 名称 状态 ---------------------------------------------------- - CentOS-x86_64 关闭 - CentOS_x86_64 关闭
三:虚拟机管理工具libvirt:
是一个免费开源的主流的虚拟化管理工具,有两个组成进程,一个后台主进程,另外提供API,openstack就是通过libvirt的API管理虚拟机,virt-install就是通过libvirt完成的,服务名称叫做libvirtd,即使此服务down了虚拟机不受影响,但是无法管理,openstack挂了虚拟机不受影响
3.1:配置文件路径:
[root@linux-node1 ~]# cd /etc/libvirt/qemu/
[root@linux-node1 qemu]# ls #保存了虚拟机的配置xml配置文件,不能使用vim直接更改虚拟机配置文件,需要使用virsh edit xxx编辑Cen Cen Cen networks
3.2:一个完整的虚拟机配置文件:
[root@linux-node1 qemu]# cat Cen <!-- 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 edit CentOS-7-x86_64 or other application using the libvirt API. --> <domain type='kvm'> #虚拟化类型kvm <name>CentOS-7-x86_64</name> #虚拟机名称 <uuid>2d92275e-4dab-4f10-adea-c874ea49c9a6</uuid> #唯一标示UUID <memory unit='KiB'>1048576</memory> #内存 <currentMemory unit='KiB'>1048576</currentMemory> #当前内存 <vcpu placement='static'>1</vcpu> #1个cpu并且是静态分配 <os> <type arch='x86_64' machine=';>hvm</type> #hvm标示是硬件虚拟化 <boot dev='hd'/> #从硬盘启动 </os> <features> <acpi/> <apic/> </features> <cpu mode='custom' match='exact'> <model fallback='allow'>IvyBridge</model> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> #磁盘信息 <driver name='qemu' type='raw'/> <source file='/o'/> <target dev='vda' bus='virtio'/> #虚拟磁盘,半虚拟化 <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> <disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hda' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> #usb信息 <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'/> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </controller> <interface type='network'> #网络信息 <mac address='52:54:00:60:84:d0'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-CentOS-7-x86_64;/> <target type='virtio' name='org.qemu.gue;/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> #鼠标和键盘 <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'> #vnc接口,从5900开始,可以自定义 <listen type='address' address='0.0.0.0'/> </graphics> <video> <model type='cirrus' vram='16384' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </memballoon> </devices> </domain>
3.3:dumpxml命令,导出虚拟机的xml文件:
3.3.1:命令帮助:
[root@linux-node1 qemu]# virsh dumpxml --help NAME dumpxml - XML 中的域信息 SYNOPSIS dumpxml <domain> [--inactive] [--security-info] [--update-cpu] [--migratable] DESCRIPTION 把域信息作为一个 XML 输出到 stdout。 OPTIONS [--domain] <string> 域名,id 或 uuid --inactive 显示不活跃定义的 XML --security-info 包括 XML 转储中与安全性相关的信息 --update-cpu 根据主机 CPU 更新虚拟机 CPU --migratable 为迁移提供 XML 可用性
3.3.2:导出虚拟机xml配置文件,xml是虚拟机的静态描述文件,如果虚拟机磁盘未被删除则可以恢复,如果虚拟机磁盘被删除则即使有描述文件也难以恢复:
[root@linux-node1 qemu]# virsh dumpxml CentOS-7-x86_64 > Cen
3.4:undefine:彻底摧毁一个虚拟机
3.4.1:命令帮助信息
[root@linux-node1 ~]# virsh undefine --help NAME undefine - 取消定义一个域 SYNOPSIS undefine <domain> [--managed-save] [--storage <string>] [--remove-all-storage] [--wipe-storage] [--snapshots-metadata] [--nvram] DESCRIPTION 取消定义一个域或者将持久转换为临时。 OPTIONS [--domain] <string> 域名或 uuid --managed-save 删除域管理的状态文件 --storage <string> 删除关联的存储卷(用逗号分开的目标或者源路径列表)(查看 domblklist) --remove-all-storage 删除关联的存储卷(小心使用) --wipe-storage 擦除删除卷中的数据 --snapshots-metadata 如果不活跃则删除所有域快照元数据 --nvram remove nvram file, if inactive
3.4.2:删除一个虚拟机:
3.4.2:一个完整的备份删除和恢复的过程:
[root@linux-node1 ~]# virsh list --all #当前所有的虚拟机有两个 Id 名称 状态 ---------------------------------------------------- 2 CentOS-7-x86_64 running - CentOS-x86_64 关闭 [root@linux-node1 ~]# virsh dumpxml CentOS-x86_64 > Cen.bak #备份 [root@linux-node1 ~]# virsh undefine CentOS-x86_64 #摧毁一个虚拟机 域 CentOS-x86_64 已经被取消定义 [root@linux-node1 ~]# virsh list --all #当前所有的虚拟机还有一个了 Id 名称 状态 ---------------------------------------------------- 2 CentOS-7-x86_64 running [root@linux-node1 ~]# virsh define /root/Cen.bak #从备份的xml文件中恢复虚拟机 定义域 CentOS-x86_64(从 /root/Cen.bak) [root@linux-node1 ~]# virsh list --all #当前有俩虚拟机了,欧耶! Id 名称 状态 ---------------------------------------------------- 2 CentOS-7-x86_64 running - CentOS-x86_64 关闭
四:CPU管理:
4.1:命令帮助,在安装的时候指定CPU的特性:
[root@linux-node1 ~]# virt-install --help | grep cpu --vcpus VCPUS 为虚拟机配置的 vcpus 数。例如: --vcpus 5 #指定CPU的数量 --vcpus 5,maxcpus=10,cpuset=1-4,6,8 #默认是5最大是10,set为设值的某一个物理CPU核心上,相当于Nginx的CPU绑定 --vcpus sockets=2,cores=4,threads=2, --cpu CPU CPU 型号及功能。例如: --cpu coreduo,+x2apic --cpu host
4.2:修改已经存在虚拟机的CPU:
4.2.1:修改宿主机的CPU数量并重启宿主机;
4.2.2:修改虚拟机的xml描述文件:
[root@linux-node1 ~]# virsh edit CentOS-7-x86_64 #必须通过vim编辑配置文件
4.2.3:修改CPU配置如下:
4.2.4:重启虚拟机验证CPU数量:
4.2.5:动态修改CPU数量:
[root@linux-node1 ~]# virsh setvcpus CentOS-7-x86_64 2 –live #需要宿主机有足够的CPU支撑,即修改的数量不能大于宿主机的CPU数量:
# [root@linux-node1 ~]# cat /sys/devices/system/cpu/cpu3/online #查看新添加的CPU是否在线,即是否处于工作状态
1
4.2.6:减小内存,如果创建虚拟机的时候内存是固定的,那么只能减少内存而不能动态添加内存:
[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon #查看当前内存 balloon: actual=1024 [root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd balloon 2048 #尝试增加内存 [root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon #增加之后还是之前的大小 balloon: actual=1024 [root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd balloon 512 #尝试减少内存 [root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon #减少之后的大小 balloon: actual=512
4.2.7:增加和减小内存之后的效果: