kvm详解


KVM
硬件: cpu必须64位
cpu必须支持虚拟化: vmx , svm


软件平台:
rhel6 64位



内存虚拟是由 Kernel 中的kvm模块来完成。
cpu虚拟直接有硬件的cpu虚拟化技术来完成。
I/O设备是由qemu系统进程来完成,每个客户机都有一个独立的进程。

让系统支持kvm虚拟化
# yum install qemu-kvm -y
# ll /dev/kvm
crw-rw-rw-+ 1 root kvm 10, 232 1月 12 13:59 /dev/kvm


安装一些工具,方便使用
# yum install libvirt libvirt-python python-virtinst virt-manager virt-viewer qemu-kvm-tools -y

libvirt ---》 提供libvritd服务,提供标准虚拟化接口库
python-virtinst 命令行安装客户机
virt-manager 图形界面管理kvm
virt-viewer 使用vnc协议连接客户机的工具
qemu-kvm-tools 镜像管理,快照等工具

确保libvirtd服务是启动,kvm才能工作正常。






例子1: 在宿主机上为kvm建立一个桥接网络


# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.1.21
NETMASK=255.255.255.0
NM_CONTROLLED=no <--- 该接口不接受NetworkManager服务管理
TYPE=Bridge <--- 这是一个桥接接口,注意:B一定是大写。


DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.1.21
NETMASK=255.255.255.0
NM_CONTROLLED=no
TYPE=Bridge

vim /etc/sysconfig/network-scripts/ifcfg-eth0


# mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok

# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=14:da:e9:eb:a9:61
NM_CONTROLLED=no <--- 该接口不接受NetworkManager服务管理
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0 <---被虚拟网卡br0所桥接


强烈建议关闭NetworkManager 服务,并且开机不启动
# chkconfig NetworkManager off
# service NetworkManager stop


# service network restart



查看桥接信息

# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.14dae9eba961 no eth0 <---#### 说明成功
...
virbr0 8000.52540041211c yes virbr0-nic
virbr1 8000.525400f71ee1 yes virbr1-nic
virbr2 8000.525400a59d57 yes virbr2-nic


命令管理桥接网络:

删除桥接接口:
# ifconfig br0 down
# brctl delbr br0
# ifconfig eth0 10.1.1.21 netmask 255.255.255.0 取消桥接,直接使用物理网卡通讯


重建建立个桥接接口
# brctl addbr br0
# brctl addif br0 eth0
# ifconfig br0 10.1.1.21 netmask 255.255.255.0 up

例子1: 通过图形界面安装客户机

安装操作系统的媒介来源:
CD-ROM / ISO
PXE <--- 网络引导,一般引导后都会kickstar无人值守自动安装
网卡必须支持网络引导才行(虚拟出来的都支持)
网络中必须存在安装服务器(DHCP+TFTP)
网络源: 在网络上有个安装光盘的源(已经挂载光盘的目录结构)
形式: nfs,ftp ,http


通过网络源(包含PXE)的形式去安装客

户机,必须让kvm支持桥接网络。


客户机默认的磁盘镜像是存放在/var/lib/libvirt/images


# virt-manager


建立划分一个独立分区或者使用其他存储设备存放客户机的磁盘镜像,如果考虑大型虚拟化平台,
考虑到客户机可以平滑在不同的宿主机上做迁移,客户机磁盘镜像必须存放在共享存储上。

sda6 100G ---> /kvm_images


客户机的名字:
每个客户机的名字不能冲突
建议 : 宿主机-应用-客户机编号
宿主机器的主机名是 https://www.360docs.net/doc/867961399.html, --> www
应用: web
客户机编号: virt1
--> www-web-virt1
--> www-el6-virt1



网络的形式:
URL :
http://10.1.1.29/cblr/links/rhel6u3-x86_64/ 《---有效
ftp://10.1.1.29/path/to/rhel6u3-x86_64/ <--语法对,但是29服务器没有提供
nfs:10.1.1.29:/path/to/rhel6 <--语法对,但是29服务器没有提供



就算关闭了客户机的图形管理界面,都可以随时打开:
# virt-viewer www-el6-virt3


# virsh list
Id 名称 状态
----------------------------------
1 www-el6-virt3 running


# virsh list
Id 名称 状态
----------------------------------
1 www-el6-virt3 running


例子:用命令行安装客户机

# virt-install -n www-el6-virt3 -r 1024 --vcpus=2 --cpuset=0,1 --location=http://10.1.1.29/cblr/links/rhel6u3-x86_64/
-x ks=nfs:10.1.1.21:/share/pub/el6-ks.cfg --disk path=/vmdk/www-el6-virt3.img,size=10 --network bridge=br0
--graphics vnc






客户机的配置文件:
# ls /etc/libvirt/qemu/
networks/ www-el6-virt2.xml
rhce-test2.xml www-el6-virt4.xml www-virt3.xml
rhci-server1.xml www-virt1.xml www-virt4.xml
www-el6-virt1.xml www-virt2.xml


使用命令去管理客户机

启动客户机
# virsh start www-el6-virt1
域 www-el6-virt1 已开始

create
# virsh create /etc/libvirt/qemu/www-virt1.xml

list
# virsh list
Id 名称 状态
----------------------------------
5 www-el6-virt1 running
6 www-virt1 running

reboot
# virsh reboot www-virt1

shutdown <--友好的关机
# virsh shutdown www-virt1

destroy <---直接强制关机,就如拔电源一样



使用图形界面管理客户机
建立隔离网络hostonly
每个虚拟网络都有一个对应的配置文件:
# ls /etc/libvirt/qemu/networks/
autostart/ virbr1.xml virbr3.xml virbr5.xml
default.xml virbr2.xml virbr4.xml virbr6.xml

# cd /etc/libvirt/qemu/networks/
# cp virbr6.xml virbr7.xml
# vim virbr7.xml
注意修改文件里的内容

# ln -s /etc/libvirt/qemu/networks/virbr7.xml /etc/libvirt/qemu/networks/autostart/virbr7.xml

重启libvirtd服务

# ifconfig virbr7



修改客户机的配置

添加网卡
添加硬盘设备

命令添加磁盘镜像文件:
# qemu-img create -f raw /vmdk/www-virt2-di

sk2.img 2G
Formatting '/vmdk/www-virt2-disk2.img', fmt=raw size=2147483648

也可以通过virt-manager


=================================================================================

两台客户机:
一个网卡,都是隔离网络
其中一台机器有两个硬盘,其中一个仅仅需要2G


==================================================================================


Linux存储模式

应用程序 产生数据,操作数据
虚拟文件系统 由操作系统来管理、协调应用程序和文件系统,为他们提供相互操作的接口
文件系统驱动 ext3/ext4 ntfs fat32 gfs/gfs2 ocfs
硬件驱动 sda sda1 sdb
硬件

软件raid/LVM:
应用程序
虚拟文件系统
文件系统驱动
软raid驱动/LVM
硬件驱动
硬件

# mdadm --create /dev/md0 --level 5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
# mkfs.ext4 /dev/md0

# pvcreate /dev/sda1
# vgcreate ...
# lvcreate -n lv1 ..
# mkfs.ext4 /dev/myvg/lv1

硬件raid:

应用程序
虚拟文件系统
文件系统驱动
硬件驱动 sda
硬件raid
硬件 disk1,disk2




存储设备分类:
普通硬盘 : ide, sata , scsi , sas , ssd

直连存储:
硬件直接连接主板上,或者若干硬盘放在一个磁盘柜上,但磁盘柜没有高级芯片,只是把硬盘简单的并联起来。
典型标记: 磁盘没有做任何阵列,磁盘是通过磁盘数据线连接。

磁盘阵列: 有专门的硬件芯片对多个硬盘做阵列,可以提供硬盘的读写效率

SAN: 存储区域网络 ,存储设备和服务器之间的连接使用光纤网络

IPSAN: 存储设备和服务器之间的连接使用传统的IP网络
典型:iscsi

SAN适合使用IO吞吐量高,IO并发大的应用: 大型数据库oracle
不是适合连接节点特别多的环境:
存储设备的连接接口有限,限制最大连接节点,最高读写速度峰值是固定,连接节点越多,
每个节点平均读写速度就越低。
2G/s 《---- 200web服务器 ,平均20M/s
不适合cpu密集型,内存密集型的应用

连接之后,服务器把存储设备识别为硬盘,要使用,必须分区和格式化


NAS 网络附加存储
可以支持网络连接,可以光纤连接
连接之后,服务把它识别为某个目录,直接就能使用
比较适合web服务器连接使用。它可以为web服务器节省cpu开销

2G/s <--- 少数10台web服务器 , 平均200M/s


分布式存储
由很多普通服务器通过特殊分布式软件构造出一个文件系统(存储)

client1 | |---node1(raid5--100M/s)
.... |---> |....
client200 | |---node200(raid5--100M/s)

连接节点比较多,存储数据海量




============================================================================
rhel6u3 的yum
http://10.1.1.29/cblr/links/rhel6u3-x86_64/



使用iscsi实现IPSAN



应用服务器 <--------------> iscsi存储服务器



应用服务器:
一个网卡 virbr6 192.168.29.12

iscsi存储服务器
一个网卡 virbr6 192.168.29.1
增加一个2G以上硬盘(导出去,共享给别的机器使用)



一、部署iscsi存储服务器


# yum install scsi-target-utils -y

# vim /etc/tgt/targets.conf


backing-store /dev/sda7 <--把本机的sda7分区共享出去,作为共享存储使用



# service tgtd start


# tgtadm --lld iscsi --mode target --op show
Target 1: https://www.360docs.net/doc/867961399.html,.upl:webdata
....

LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 2155 MB, Block size: 512 <---
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sda7 <----
Backing store flags:
Account information:
ACL information:
ALL


注意:实验初期关闭iptables

二、配置应用服务器(使用存储的那一端)
# yum install iscsi-initiator-utils -y

# service iscsi restart

1、发现目标

# iscsiadm -m discovery -t st -p 192.168.29.1
192.168.29.1:3260,1 https://www.360docs.net/doc/867961399.html,.upl:webdata

2、登录目标

# iscsiadm -m node -p 192.168.29.1 -T https://www.360docs.net/doc/867961399.html,.upl:webdata -l
....
192.168.29.1,3260] successful.


查看已经登录了哪些目标
# iscsiadm -m session
tcp: [2] 192.168.29.1:3260,1 https://www.360docs.net/doc/867961399.html,.upl:webdata


发现多了一个硬盘sda

分区、格式化、挂载、使用



取消登录:
# iscsiadm -m node -u






相关主题
相关文档
最新文档