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

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. 支持X8632 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 等语言调用。可以操作包括 KVMvmwareXENHyper-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 IdentifierUUID)。省略这个参数时,virt-install 将会自动产生
  9. 4.--vcpus=VCPUS
  10. 指定虚拟机的虚拟 CPU Virtual CPUVCPU 数量
  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
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注