Openstack 云计算 : kvm 虚拟机配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Openstack 云计算 : kvm 虚拟机配置相关的知识,希望对你有一定的参考价值。

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

标签(空格分隔):openstack系列


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

一、 关于虚拟化

1.1、虚拟化的概念

1. 系统虚拟化是将底层物理设备与上层操作系统,软件分离的一种去藕合技术,在一台物理集群上路径的划分出多台机器

2. 虚拟化的目录表是实现IT 资源利用效率和灵活的最大化

3. 产品vmware vsphere  esxi 就是最典型的产品

技术分享图片

技术分享图片


1.2 虚拟化Hypervisor

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

技术分享图片

1.3 服务器的虚拟化

技术分享图片

二、 kvm 虚拟化

2.1 kvm 介绍

1. kvm 全称 是基于内核的虚拟机(kernel-based  Virtual machine), 它是一个Linux的一个内核模块,该内核模块使得LINUX 变成一个Hypervisor

2.它是由Quramnet 开发,该公司于2008 年被Redhat 收购。

3. 支持X86(32 and 64 位),s390,powerpc 等CPU 

4。 从Linux2.6.30 起就是作为一个模块被包含在Linux内核中
5. 需要支持虚拟化扩展的CPU,完全开源

2.2 cpu 指针测试

1.开启硬件的虚拟化 VT技术
2. egrep -c "(vmx |svm)" /proc/cpuinfo

3. 命令结果大于0 表示 cpu 支持虚拟化

技术分享图片

2.3 KVM 虚拟化安装

2.3.1 创建一个本地源

更改本地的源,改为阿里云的源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all && yum makecache 

yum install  httpd createrepo reposync -y

yum repolist

cd /var/www/html

mkdir base 
cd /var/www/html/
reposync --repoid = base 

技术分享图片

cd /var/www/html/base/Packages/
ls 

createrepo --update /var/www/html/base  ## 生成repodata包

技术分享图片

2.3.2 安装kvm

1.安装kvm 
yum install qemu-kvm

2.安装配置管理工具

yum install virt-manager libvirt libvirt-python python-virtinst bridge-utils

技术分享图片
技术分享图片

3. libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, php, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。

4. Virsh:基于 libvirt 的 命令行工具 (CLI)

5. Virt-Manager:基于 libvirt 的 GUI 工具
lsmod | grep kvm

技术分享图片

6.如果上面的命令看不到KVM 的模块就使用下面的命令加载

modprobe kvm
modprobe kvm-intel
7.启动libvirt:

service libvirtd start 

chkconfig libvirtd on 

技术分享图片
技术分享图片

7. 创建安装盘:

mkdir -p /kvmtest

qemu-img create -f qcow2 /kvmtest/centos-6.9.qcow2 30G

上传centos 6.9x64 的iso 到 Linux kvm 下面

默认网络配置文件:
/etc/libvirt/qemu/networks

技术分享图片

8. 创建虚拟机

virt-install --virt-type kvm --name centos-6.9 --ram 1024 --vcpus 1 --cdrom=/kvmtest/CentOS-6.9-x86_64-minimal.iso --disk /kvmtest/centos-6.9.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel6

技术分享图片

技术分享图片


virt-install 常用参数一览表
  1.-n NAME

指定虚拟机的名称

2.-r MEMORY

指定虚拟机的内存用量

3.-u UUID

指定虚拟机的唯一通用标识符

(Universally Unique Identifier,UUID)。省略这个参数时,virt-install 将会自动产生

4.--vcpus=VCPUS

指定虚拟机的虚拟 CPU (Virtual CPU,VCPU) 数量
-f DISKFILE

指定虚拟磁盘的文件路径名称

-s DISKSIZE

用来指定虚拟磁盘的大小,这个参数需配合-f 使用。
DISKSIZE为虚拟磁盘的大小,单位是GB

-m MAC

指定虚拟机的网络卡之硬件地址。

这个参数可以省略,省略时virt-install 将自动产生

-p 以半虚拟化的方式建立虚拟机

-l LOCATION 指定安装来源
virt-manager  ##### x-shell回打开一个被动的端口页面 打开即可安装系统

技术分享图片

# virsh list 

技术分享图片

进入 virsh 模式
# virsh 

virsh # list 

技术分享图片


 Id    名称                         状态
----------------------------------------------------
 2     centos-6.9                     running

关于virsh 的命令

?   virsh list  # 显示本地活动虚拟机
?   virsh start openSuse    # 启动名字为ubuntu的非活动虚拟机
?   virsh create ubuntu.xml # 创建虚拟机(创建后,虚拟机立即执行,成为活
    动主机)    
?   virsh suspend openSuse  # 暂停虚拟机
?   virsh resume ubuntu # 启动暂停的虚拟机
?   virsh shutdown ubuntu   # 正常关闭虚拟机
?   virsh destroy ubuntu    # 强制关闭虚拟机
?   virsh dominfo openSuse  # 显示虚拟机的基本信息
?   virsh dumpxml openSuse  # 显示虚拟机的当前配置文件

?   virsh setmem ubuntu 51200 # 给不活动虚拟机设置内存大小

?   virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数

?   virsh edit ubuntu   # 编辑配置文件(一般用在刚定义完VM)

dominfo 3

技术分享图片

2.4 kvm 的网络

2.4.1 kvm 的NAT 共享网络

iptables -t nat -S 

技术分享图片

yum install -y tcpdump 

tcpdump -i vnet0 icmp 

技术分享图片


tcpdump -n -i vnet0 icmp 

技术分享图片

2.4.2 修改kvm的网络变为桥接

宿主机修改
前置条件: 
在保证桥接网: ens33 网卡口能够获取到IP地址,然后创建桥接网卡(br100)
此处网卡地址为:192.168.3.131

cd /etc/sysconfig/network-script/
cp -p ifcfg-ens33 ifcfg-br100
复制之后br100 先使用自动获取IP 地址 
---
vim ifcfg-br100  # 在保证ip 能够获取得到的在定IP地址 

---
DEVICE=br100
TYPE=Bridge
BOOTPROTO=static
#IPADDR=192.168.3.131
#NETMASK=255.255.255.0
#GATEWAY=192.168.3.1
#DNS1=114.114.114.114
#DNS2=8.8.8.8
ONBOOT=yes

---
vim ifcfg-br100
----
DEVICE=br100
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.3.131
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=114.114.114.114
DNS2=8.8.8.8
ONBOOT=yes
----

更改ifcfg-ens33 网卡 增加BRIDGE="br100"
vim ifcfg-ens33
---
DEVICE="ens33"
BRIDGE="br100"
ONBOOT="yes"
---
之后重启网卡:
service network restart

测试上网连接:
ping www.baidu.com 

brctl show 

技术分享图片


2.4.3 新建kvm 虚拟机

修改虚拟机: 

cd /etc/libvirt/qemu

cp -p centos-6.9.xml centos-6.9-03.xml

vim centos-6.9-03.xml 

更改三处: 虚拟机的命名,删掉UUID, 存储的磁盘, 网络连接方式
---
<domain type=‘kvm‘>
  <name>centos-6.9-03</name>   ---> 更改名字
#  <uuid>d7422aae-d7b4-4d38-8775-2dd0efd6191d</uuid> -- uuid  删掉
  <memory unit=‘KiB‘>1048576</memory>
  <currentMemory unit=‘KiB‘>1048576</currentMemory>
  <vcpu placement=‘static‘>1</vcpu>
  <os>
    <type arch=‘x86_64‘ machine=‘pc-i440fx-rhel7.0.0‘>hvm</type>
    <boot dev=‘hd‘/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode=‘custom‘ match=‘exact‘ check=‘partial‘>
    <model fallback=‘allow‘>Broadwell</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>destroy</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=‘qcow2‘/>
      <source file=‘/kvmtest/centos-6.9-03.qcow2‘/>  --》更改磁盘
      <target dev=‘vda‘ bus=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x0‘/>
    </disk>
    <disk type=‘file‘ 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=‘0x04‘ function=‘0x7‘/>
    </controller>
    <controller type=‘usb‘ index=‘0‘ model=‘ich9-uhci1‘>
      <master startport=‘0‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x04‘ function=‘0x0‘ multifunction=‘on‘/>
    </controller>
    <controller type=‘usb‘ index=‘0‘ model=‘ich9-uhci2‘>
      <master startport=‘2‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x04‘ function=‘0x1‘/>
    </controller>
    <controller type=‘usb‘ index=‘0‘ model=‘ich9-uhci3‘>
      <master startport=‘4‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x04‘ 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=‘0x05‘ function=‘0x0‘/>
    </controller>
    <interface type=‘bridge‘>  ----> 更改网络方式,删掉MAC   
      <source brdge=‘br100‘/> ----> 桥接到br100
      <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‘>
      <target type=‘virtio‘ name=‘org.qemu.guest_agent.0‘/>
      <address type=‘virtio-serial‘ controller=‘0‘ bus=‘0‘ port=‘1‘/>
    </channel>
    <input type=‘tablet‘ bus=‘usb‘>
      <address type=‘usb‘ bus=‘0‘ port=‘1‘/>
    </input>
    <input type=‘mouse‘ bus=‘ps2‘/>
    <input type=‘keyboard‘ bus=‘ps2‘/>
    <graphics type=‘vnc‘ port=‘-1‘ autoport=‘yes‘ listen=‘0.0.0.0‘>
      <listen type=‘address‘ address=‘0.0.0.0‘/>
    </graphics>
    <video>
      <model type=‘cirrus‘ vram=‘16384‘ heads=‘1‘ primary=‘yes‘/>
      <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>

---

cd /kvmtest/
cp -p centos-6.9.qcow2 centos-6.9-03.qcow2
cd /etc/libvirt/qemu/
virsh define centos-6.9-03.xml

技术分享图片

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

技术分享图片

技术分享图片

cd /etc/udev/rules.d/
vi 70-persistent-net.rules

注释掉第一行, 将最后的eth1 改为eth0

mac 地址可以看生成的centos-6.9-03.xml 文件

技术分享图片

删掉虚拟机网卡的MAC 地址

cd /etc/sysconfig/network-scirpt/
vi ifcfg-eth0
删掉mac 地址将虚拟机重启
reboot

-------------
重启之后一般就可以获到ip地址就可以ping 通百度可以上网

ifconfig |more 

技术分享图片

技术分享图片

技术分享图片

2.4.4 虚拟机的快照

kvm 虚拟机的快照: 

virsh # snapshot-create centos-6.9   ----> 创建快照
Domain snapshot 1420286390 created
virsh # snapshot-list     ---> 列出快照
error: command ‘snapshot-list‘ requires <domain> option
virsh # snapshot-list centos-6.9  
Name Creation Time State ------------------------------------------------------------
14202863902015-01-03 19:59:50 +0800 running
virsh # snapshot-revert centos-6.9 1420286390  ---> 恢复快照
snapshot-create-as centos-6.6 testsnap001  --- 快照名字

技术分享图片
技术分享图片

2.4.5 kvm 扩展磁盘

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

技术分享图片

cd /etc/libvirt/qemu

virsh 

# list --all
# edit 5

技术分享图片

在disk 下面增加:
 <disk type=‘file‘ device=‘disk‘>
      <driver name=‘qemu‘ type=‘qcow2‘/>
      <source file=‘/kvmtest/add-centos-6.9.qcow2‘/>
      <target dev=‘vdb‘ bus=‘virtio‘/>
    </disk>

技术分享图片

# destory 5 

#start centos-6.9

技术分享图片

查看虚拟机配置: 

fdisk -l 

下面分区格式化磁盘,挂载即可用了

技术分享图片

大于2tb磁盘的gpt分区方式:

– http://www.cnblogs.com/qlwang/p/4600276.html

– http://www.cnblogs.com/JimMoriarty/p/3669256.html

以上是关于Openstack 云计算 : kvm 虚拟机配置的主要内容,如果未能解决你的问题,请参考以下文章

[云计算] OpenStack 发展史

云计算:文章汇总和白皮书下载

OpenStack入门篇之KVM介绍及安装

kvm虚拟机映射磁盘设备

openstack之kvm常用操作

云计算管理平台之OpenStack启动虚拟机实例