[关闭]
@zhangyy 2020-01-02T07:47:51.000000Z 字数 7850 阅读 757

Openstack 云计算 (一): kvm 虚拟机配置

openstack系列


  • 一:关于虚拟化
  • 二:kvm 虚拟机

一、 关于虚拟化

1.1、虚拟化的概念

  1. 1. 系统虚拟化是将底层物理设备与上层操作系统,软件分离的一种去藕合技术,在一台物理集群上路径的划分出多台机器
  2. 2. 虚拟化的目录表是实现IT 资源利用效率和灵活的最大化
  3. 3. 产品vmware vsphere esxi 就是最典型的产品

image_1c5mutt94jv1ue714v1eo96sh9.png-447.3kB

image_1c5muupi83k1168p1q9813tsqndm.png-101kB


1.2 虚拟化Hypervisor

  1. 在一台物理机上虚拟出多个虚拟计算机(虚拟机,Virtaul Machine , VM),其上能同时运行多个独立的操作系统,这些客户机操作系统(Guest os)通过 虚拟机管理器(Virtual Machine Monitor, VMM , 也称作 Hypervisor) 访问实际的物理资源

image_1c5mvbnfkc4ciov58r1224sbj13.png-107.8kB

1.3 服务器的虚拟化

image_1c5mvdfq91i091i3l17drpfe2t91g.png-1177.5kB

二、 kvm 虚拟化

2.1 kvm 介绍

  1. 1. kvm 全称 是基于内核的虚拟机(kernel-based Virtual machine), 它是一个Linux的一个内核模块,该内核模块使得LINUX 变成一个Hypervisor
  2. 2.它是由Quramnet 开发,该公司于2008 年被Redhat 收购。
  3. 3. 支持X86(32 and 64 位),s390,powerpc 等CPU
  4. 4。 从Linux2.6.30 起就是作为一个模块被包含在Linux内核中
  5. 5. 需要支持虚拟化扩展的CPU,完全开源

2.2 cpu 指针测试

  1. 1.开启硬件的虚拟化 VT技术
  2. 2. egrep -c "(vmx |svm)" /proc/cpuinfo
  3. 3. 命令结果大于0 表示 cpu 支持虚拟化

image_1c5n2a6q41s8nc1q1lpv2m4srg1t.png-63.4kB

2.3 KVM 虚拟化安装

2.3.1 创建一个本地源

  1. 更改本地的源,改为阿里云的源
  2. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  3. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  4. yum clean all && yum makecache
  5. yum install httpd createrepo reposync -y
  6. yum repolist
  7. cd /var/www/html
  8. mkdir base
  9. cd /var/www/html/
  10. reposync --repoid = base

image_1c5netmvt197n19up1q8d9hh3pc8c.png-517.8kB

  1. cd /var/www/html/base/Packages/
  2. ls
  3. createrepo --update /var/www/html/base ## 生成repodata包

image_1c5nevbvl8gnkmnqu21dkj29t8p.png-232.6kB

2.3.2 安装kvm

  1. 1.安装kvm
  2. yum install qemu-kvm
  3. 2.安装配置管理工具
  4. yum install virt-manager libvirt libvirt-python python-virtinst bridge-utils

image_1c5n2drel1ss81mqa1vpov6il3j2a.png-269.1kB
image_1c5n2hg5k1ptn72ftiii63oo2n.png-495.8kB

  1. 3. libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
  2. 4. Virsh:基于 libvirt 的 命令行工具 (CLI)
  3. 5. Virt-Manager:基于 libvirt 的 GUI 工具
  1. lsmod | grep kvm

image_1c5n2j9as127v1l341omif31krs3k.png-102kB

  1. 6.如果上面的命令看不到KVM 的模块就使用下面的命令加载
  2. modprobe kvm
  3. modprobe kvm-intel
  1. 7.启动libvirt:
  2. service libvirtd start
  3. chkconfig libvirtd on

image_1c5n2ohg41dmctm3130k1ia4ee04e.png-83.3kB

image_1c5n2p45e1ap6nat1eob1g6m1men5b.png-97.1kB

  1. 7. 创建安装盘:
  2. mkdir -p /kvmtest
  3. qemu-img create -f qcow2 /kvmtest/centos-6.9.qcow2 30G
  4. 上传centos 6.9x64 的iso 到 Linux kvm 下面
  5. 默认网络配置文件:
  6. /etc/libvirt/qemu/networks

image_1c5n380bl1p6q1u4s3b1d301gat5o.png-128.8kB

  1. 8. 创建虚拟机
  2. virt-install --virt-type kvm --name centos-6.9 --ram 1024 \
  3. --vcpus 1 \
  4. --cdrom=/kvmtest/CentOS-6.9-x86_64-minimal.iso \
  5. --disk /kvmtest/centos-6.9.qcow2,format=qcow2 \
  6. --network network=default \
  7. --graphics vnc,listen=0.0.0.0 --noautoconsole \
  8. --os-type=linux --os-variant=rhel6

image_1c5nd000p1e3d10vr1k84kjk19e66l.png-283.2kB

image_1c5nd59fgv4hfep2s31lad1vld72.png-517kB


  1. virt-install 常用参数一览表
  2. 1.-n NAME
  3. 指定虚拟机的名称
  4. 2.-r MEMORY
  5. 指定虚拟机的内存用量
  6. 3.-u UUID
  7. 指定虚拟机的唯一通用标识符
  8. (Universally Unique Identifier,UUID)。省略这个参数时,virt-install 将会自动产生
  9. 4.--vcpus=VCPUS
  10. 指定虚拟机的虚拟 CPU (Virtual CPU,VCPU) 数量
  11. -f DISKFILE
  12. 指定虚拟磁盘的文件路径名称
  13. -s DISKSIZE
  14. 用来指定虚拟磁盘的大小,这个参数需配合-f 使用。
  15. DISKSIZE为虚拟磁盘的大小,单位是GB
  16. -m MAC
  17. 指定虚拟机的网络卡之硬件地址。
  18. 这个参数可以省略,省略时virt-install 将自动产生
  19. -p 以半虚拟化的方式建立虚拟机
  20. -l LOCATION 指定安装来源
  1. virt-manager ##### x-shell回打开一个被动的端口页面 打开即可安装系统

image_1c5nddg9t1m061vmm11eg19bra0o7f.png-144.7kB

  1. # virsh list

image_1c5nffev8kq3me09r8tr11n4596.png-120.7kB

  1. 进入 virsh 模式
  2. # virsh
  3. virsh # list

image_1c5nfhbrm1148ubn9g66vv1j079j.png-201.4kB


  1. Id 名称 状态
  2. ----------------------------------------------------
  3. 2 centos-6.9 running

  1. 关于virsh 的命令
  2. • virsh list # 显示本地活动虚拟机
  3. • virsh start openSuse # 启动名字为ubuntu的非活动虚拟机
  4. • virsh create ubuntu.xml # 创建虚拟机(创建后,虚拟机立即执行,成为活
  5. 动主机)
  6. • virsh suspend openSuse # 暂停虚拟机
  7. • virsh resume ubuntu # 启动暂停的虚拟机
  8. • virsh shutdown ubuntu # 正常关闭虚拟机
  9. • virsh destroy ubuntu # 强制关闭虚拟机
  10. • virsh dominfo openSuse # 显示虚拟机的基本信息
  11. • virsh dumpxml openSuse # 显示虚拟机的当前配置文件
  12. • virsh setmem ubuntu 51200 # 给不活动虚拟机设置内存大小
  13. • virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数
  14. • virsh edit ubuntu # 编辑配置文件(一般用在刚定义完VM)

  1. dominfo 3

image_1c5nju2mhfok1k999no1i0qq2iag.png-234.4kB

2.4 kvm 的网络

2.4.1 kvm 的NAT 共享网络

  1. iptables -t nat -S

image_1c5nkeija1lkr4u32ml1qnlf5eat.png-282.4kB

  1. yum install -y tcpdump
  2. tcpdump -i vnet0 icmp

image_1c5nktf4pd8kqqs17kf17r9o5tba.png-672.3kB


  1. tcpdump -n -i vnet0 icmp

image_1c5nl21m51bfli3hdjasbpbb4bn.png-458kB

2.4.2 修改kvm的网络变为桥接

  1. 宿主机修改
  2. 前置条件:
  3. 在保证桥接网: ens33 网卡口能够获取到IP地址,然后创建桥接网卡(br100)
  4. 此处网卡地址为:192.168.3.131
  5. cd /etc/sysconfig/network-script/
  6. cp -p ifcfg-ens33 ifcfg-br100
  7. 复制之后br100 先使用自动获取IP 地址
  8. ---
  9. vim ifcfg-br100 # 在保证ip 能够获取得到的在定IP地址
  10. ---
  11. DEVICE=br100
  12. TYPE=Bridge
  13. BOOTPROTO=static
  14. #IPADDR=192.168.3.131
  15. #NETMASK=255.255.255.0
  16. #GATEWAY=192.168.3.1
  17. #DNS1=114.114.114.114
  18. #DNS2=8.8.8.8
  19. ONBOOT=yes
  20. ---
  21. vim ifcfg-br100
  22. ----
  23. DEVICE=br100
  24. TYPE=Bridge
  25. BOOTPROTO=static
  26. IPADDR=192.168.3.131
  27. NETMASK=255.255.255.0
  28. GATEWAY=192.168.3.1
  29. DNS1=114.114.114.114
  30. DNS2=8.8.8.8
  31. ONBOOT=yes
  32. ----
  33. 更改ifcfg-ens33 网卡 增加BRIDGE="br100"
  34. vim ifcfg-ens33
  35. ---
  36. DEVICE="ens33"
  37. BRIDGE="br100"
  38. ONBOOT="yes"
  39. ---
  40. 之后重启网卡:
  41. service network restart
  42. 测试上网连接:
  43. ping www.baidu.com
  44. brctl show

image_1c5pgc1r9mcj1mopmeg1ct61t3m9.png-118.2kB


2.4.3 新建kvm 虚拟机

  1. 修改虚拟机:
  2. cd /etc/libvirt/qemu
  3. cp -p centos-6.9.xml centos-6.9-03.xml
  4. vim centos-6.9-03.xml
  5. 更改三处: 虚拟机的命名,删掉UUID, 存储的磁盘, 网络连接方式
  6. ---
  7. <domain type='kvm'>
  8. <name>centos-6.9-03</name> ---> 更改名字
  9. # <uuid>d7422aae-d7b4-4d38-8775-2dd0efd6191d</uuid> -- uuid 删掉
  10. <memory unit='KiB'>1048576</memory>
  11. <currentMemory unit='KiB'>1048576</currentMemory>
  12. <vcpu placement='static'>1</vcpu>
  13. <os>
  14. <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
  15. <boot dev='hd'/>
  16. </os>
  17. <features>
  18. <acpi/>
  19. <apic/>
  20. </features>
  21. <cpu mode='custom' match='exact' check='partial'>
  22. <model fallback='allow'>Broadwell</model>
  23. </cpu>
  24. <clock offset='utc'>
  25. <timer name='rtc' tickpolicy='catchup'/>
  26. <timer name='pit' tickpolicy='delay'/>
  27. <timer name='hpet' present='no'/>
  28. </clock>
  29. <on_poweroff>destroy</on_poweroff>
  30. <on_reboot>restart</on_reboot>
  31. <on_crash>destroy</on_crash>
  32. <pm>
  33. <suspend-to-mem enabled='no'/>
  34. <suspend-to-disk enabled='no'/>
  35. </pm>
  36. <devices>
  37. <emulator>/usr/libexec/qemu-kvm</emulator>
  38. <disk type='file' device='disk'>
  39. <driver name='qemu' type='qcow2'/>
  40. <source file='/kvmtest/centos-6.9-03.qcow2'/> --》更改磁盘
  41. <target dev='vda' bus='virtio'/>
  42. <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
  43. </disk>
  44. <disk type='file' device='cdrom'>
  45. <driver name='qemu' type='raw'/>
  46. <target dev='hda' bus='ide'/>
  47. <readonly/>
  48. <address type='drive' controller='0' bus='0' target='0' unit='0'/>
  49. </disk>
  50. <controller type='usb' index='0' model='ich9-ehci1'>
  51. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
  52. </controller>
  53. <controller type='usb' index='0' model='ich9-uhci1'>
  54. <master startport='0'/>
  55. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
  56. </controller>
  57. <controller type='usb' index='0' model='ich9-uhci2'>
  58. <master startport='2'/>
  59. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
  60. </controller>
  61. <controller type='usb' index='0' model='ich9-uhci3'>
  62. <master startport='4'/>
  63. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
  64. </controller>
  65. <controller type='pci' index='0' model='pci-root'/>
  66. <controller type='ide' index='0'>
  67. <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
  68. </controller>
  69. <controller type='virtio-serial' index='0'>
  70. <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  71. </controller>
  72. <interface type='bridge'> ----> 更改网络方式,删掉MAC   
  73. <source brdge='br100'/> ----> 桥接到br100
  74. <model type='virtio'/>
  75. <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  76. </interface>
  77. <serial type='pty'>
  78. <target port='0'/>
  79. </serial>
  80. <console type='pty'>
  81. <target type='serial' port='0'/>
  82. </console>
  83. <channel type='unix'>
  84. <target type='virtio' name='org.qemu.guest_agent.0'/>
  85. <address type='virtio-serial' controller='0' bus='0' port='1'/>
  86. </channel>
  87. <input type='tablet' bus='usb'>
  88. <address type='usb' bus='0' port='1'/>
  89. </input>
  90. <input type='mouse' bus='ps2'/>
  91. <input type='keyboard' bus='ps2'/>
  92. <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
  93. <listen type='address' address='0.0.0.0'/>
  94. </graphics>
  95. <video>
  96. <model type='cirrus' vram='16384' heads='1' primary='yes'/>
  97. <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
  98. </video>
  99. <memballoon model='virtio'>
  100. <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  101. </memballoon>
  102. </devices>
  103. </domain>
  104. ---
  105. cd /kvmtest/
  106. cp -p centos-6.9.qcow2 centos-6.9-03.qcow2
  107. cd /etc/libvirt/qemu/
  108. virsh define centos-6.9-03.xml

image_1c5phaoavl852igpe4l8dv0213.png-98.3kB

  1. 打开运行虚拟机: 
  2. virt-manager ---> 运行虚拟机

image_1c5phf3qvvdflqqhq0dc8h091g.png-196.9kB

image_1c5phrhe2q3ihdjd6b41pf13a.png-169.8kB

  1. cd /etc/udev/rules.d/
  2. vi 70-persistent-net.rules
  3. 注释掉第一行, 将最后的eth1 改为eth0
  4. mac 地址可以看生成的centos-6.9-03.xml 文件

image_1c5phkfne1m161jkk1fbs1kka1beq20.png-137kB

  1. 删掉虚拟机网卡的MAC 地址
  2. cd /etc/sysconfig/network-scirpt/
  3. vi ifcfg-eth0
  4. 删掉mac 地址将虚拟机重启
  5. reboot
  6. -------------
  7. 重启之后一般就可以获到ip地址就可以ping 通百度可以上网
  8. ifconfig |more

image_1c5phptnclij1tc41t756vhand2d.png-113kB

image_1c5pi6c03d0c1cqrhuppkmb1o47.png-184.8kB

image_1c5pi7gg41oj71kq71dpo12kt1tib54.png-57.4kB

2.4.4 虚拟机的快照

  1. kvm 虚拟机的快照: 
  2. virsh # snapshot-create centos-6.9 ----> 创建快照
  3. Domain snapshot 1420286390 created
  4. virsh # snapshot-list     ---> 列出快照
  5. error: command 'snapshot-list' requires <domain> option
  6. virsh # snapshot-list centos-6.9
  7. Name Creation Time State ------------------------------------------------------------
  8. 14202863902015-01-03 19:59:50 +0800 running
  9. virsh # snapshot-revert centos-6.9 1420286390  ---> 恢复快照
  10. snapshot-create-as centos-6.6 testsnap001  --- 快照名字

image_1c5pirctk8vb1m2n3thnsihrr6b.png-154.6kB
image_1c5piqcc11fajl9d6rcpunrvd5u.png-369.7kB

2.4.5 kvm 扩展磁盘

  1. file格式创建:
  2. qemu-img create -f qcow2 /kvmtest/add-centos-6.9.qcow2 20G

image_1c5pj6ob318fd1r0drkg8mgeho6o.png-152.5kB

  1. cd /etc/libvirt/qemu
  2. virsh
  3. # list --all
  4. # edit 5

image_1c5pjpi8q16vg7aa1v5i13no110l92.png-147.5kB

  1. 在disk 下面增加:
  2.  <disk type='file' device='disk'>
  3. <driver name='qemu' type='qcow2'/>
  4. <source file='/kvmtest/add-centos-6.9.qcow2'/>
  5. <target dev='vdb' bus='virtio'/>
  6. </disk>

image_1c5pjl770ade19tl169s1d2o1vj58l.png-508.2kB

  1. # destory 5
  2. #start centos-6.9

image_1c5pjur3j19tfq1f1j2j1o6014939f.png-123.4kB

  1. 查看虚拟机配置: 
  2. fdisk -l
  3. 下面分区格式化磁盘,挂载即可用了

image_1c5pkf3n5jrv79o1sveclrcbm9s.png-302.2kB

  1. 大于2tb磁盘的gpt分区方式:
  2. – http://www.cnblogs.com/qlwang/p/4600276.html
  3. – http://www.cnblogs.com/JimMoriarty/p/3669256.html
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注