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, 存储的磁盘, 网络连接方式
---
centos-6.9-03 ---> 更改名字
# d7422aae-d7b4-4d38-8775-2dd0efd6191d -- uuid 删掉
1048576
1048576
1
hvm
Broadwell
destroy
restart
destroy
/usr/libexec/qemu-kvm
--》更改磁盘
----> 更改网络方式,删掉MAC
----> 桥接到br100
---
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 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 下面增加:
# 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