使用kvm创建和管理虚拟机
使用Linuxkvm
模块的相关笔记
安装和配置KVM
KVM与XEN区别
OPENVZ就不说了,是半虚拟化,不能安装Windows操作系统
KVM是内核模块,从2.6.20内核开始,kvm模块就包含在Linux内核中,只需加载此模块即可
#查看宿主机CPU是否在硬件上支持虚拟化扩展特性
cat /proc/cpuinfo | grep -E "(vmx|svm)"
#加载kvm模块(Intel VT)
modprobe kvm
modprobe kvm-intel
#注意:如果加载失败,说明服务器硬件不支持或BIOS中未开启虚拟化扩展
运行命令lsmod | grep kvm
检查 KVM 模块是否成功安装
XEN是一套虚拟化方案,可以直接安装,不需要先安装操作系统.
KVM起步较晚,XEN起步早发展成熟,但目前KVM潜力较大.
KVM 与 qemu
yum install qemu-kvm libvirt virt-install bridge-utils
qemu-kvm 该软件包主要包含KVM内核模块和适用于KVM的QEMU模拟器。KVM模块负责CPU和内存的调度,QEMU负责虚拟机I/O设备的模拟。
libvirt 提供Hypervisor和虚拟机的管理功能。
virt-install 创建和克隆虚拟机的命令行工具包。
bridge-utils 网桥管理工具包,负责桥接网络的创建、配置和管理等工作。
激活并启动libvirtd服务
systemctl enable libvirtd
systemctl start libvirtd
安装CentOS7
diskutil list
查看所有磁盘
diskutil unmountdisk /dev/disk1
解除其挂载
用dd将ISO文件写入
sudo dd if=/data/files/iso/CentOS-7-x86_64-Minimal-1511.iso of=/dev/disk2 bs=1m
安装好系统后,更换网易的源 http://mirrors.163.com/.help/centos.html
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cd /etc/yum.repos.d
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all
yum makecache
搜狐也有,但版本太老 http://mirrors.sohu.com/help/centos.html
可以使用清华大学的. https://lug.ustc.edu.cn/wiki/mirrors/help/centos 速度都十分快.
启用KVM后,需要配置网卡
cd /etc/sysconfig/network-scripts/
桥接网卡
brctl addbr br0
添加一个虚拟网卡
brctl addif br0 em2
将网卡br0
桥接到em2
,这一步将会导致em2断网,远程ssh将会断开
brctl stp br0 on
将br0设置为启用STP协议
ifconfig em2 0
#将em2的IP设置为0
dhclient br0
#将br0网络配置好
brctl show
然后systemctl restart network
route
查看默认网关
https://wiki.centos.org/zh/HowTos/KVM
创建虚拟机磁盘镜像文件
不能创建太小,建议5G-50G
qcow2格式是kvm支持的标准格式,raw格式为虚拟磁盘文件通用格式。有测试数据表明raw格式的I/O性能略高于qcow2格式,但是在加密,容量,快照方面qcow2格式有优势
qemu-img create -f qcow2 test.qcow2 20G //建立qcow2格式磁盘文件
qemu-img create -f raw test.raw 20G //建立raw格式磁盘文件
qemu-img info test.qcow2 //查看已经创建的虚拟磁盘文件
创建虚拟机
使用osinfo-query os
可以查看os-variant
都有哪些代号
https://raymii.org/s/articles/virt-install_introduction_and_copy_paste_distro_install_commands.html
创建 Ubuntu
virt-install \
--name ubuntu \
--ram 512 --vcpus 1 \
--boot network,cdrom,menu=on \
--disk path=/disk/kvm/disk1,size=10,format=qcow2,bus=virtio \
--os-type linux \
--os-variant generic \
--nographics --accelerate \
--bridge=br0,model=virtio --keymap=en-us \
--console pty,target_type=serial \
--cdrom=/data/iso/ubuntu-16.04.1-server-amd64.iso \
--extra-args='console=tty0 console=ttyS0,115200n8 serial' \
--hvm --dry-run
创建CentOS
virt-install \
--name centos \
--ram 512 --vcpus 1 \
--disk path=/disk/kvm/disk1,size=10,format=qcow2,bus=virtio \
--os-type linux \
--os-variant generic \
--accelerate \
--bridge=br0,model=virtio --keymap=en-us \
--console pty,target_type=serial \
--location=/data/iso/CentOS-7-x86_64-Minimal-1511.iso \
--extra-args='console=tty0 console=ttyS0,115200n8 serial' \
--hvm --dry-run
virsh –connect qemu:///system
创建Debain
先挂载 sudo mount -o loop,unhide -t iso9660 -r /data/iso/debian-8.6.0-amd64-CD-1.iso /mnt/cdrom
需要nfs启动 service nfs start
添加/mnt/cdrom *(ro,insecure,all_squash)
到文件/etc/exports
并刷新exportfs -r
virt-install \
--name debain \
--ram 512 --vcpus 1 \
--boot network,cdrom,menu=on \
--disk path=/disk/kvm/disk4,size=10,format=qcow2,bus=virtio \
--os-type linux \
--os-variant generic \
--bridge=br0,model=virtio --keymap=en-us \
--console pty,target_type=serial \
--accelerate \
--location=/mnt/cdrom \
--extra-args='console=tty0 console=ttyS0,115200n8 serial' \
--vnc --vncport=5911 --vnclisten=0.0.0.0 \
--hvm --dry-run
创建Windows Server
qemu-img create -f qcow2 /disk/kvm/windisk1 50G
针对Windows需要安装一些驱动
sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
sudo yum install virtio-win
https://fedoraproject.org/wiki/Windows_Virtio_Drivers
virt-install \
--name windows2012 \
--ram 4096 --vcpus 2 \
--disk path=/data/iso/cn_windows_server_2012_r2_with_update_x64_dvd_4048415.iso,device=cdrom \
--disk path=/disk/kvm/windisk1,size=50,format=qcow2,bus=virtio,cache=writeback \
--cdrom=/usr/share/virtio-win/virtio-win-0.1.126.iso \
--os-type windows \
--os-variant win2k12r2 \
--bridge=br0,model=virtio \
--accelerate \
--graphics vnc,port=5999,listen=0.0.0.0 \
--console pty,target_type=serial \
--hvm --dry-run
virt-install \
--name xp1 \
--ram 1024 --vcpus 1 \
--disk path=/data/iso/Deepin_Windows_LiteXP_v6.2_SP3.iso,device=cdrom \
--disk path=/disk/kvm/winxp1,size=10,format=qcow2,bus=virtio,cache=writeback \
--cdrom=/usr/share/virtio-win/virtio-win-0.1.126.iso \
--os-type windows \
--os-variant winxp \
--bridge=br0,model=virtio \
--accelerate \
--graphics vnc,port=5999,listen=0.0.0.0 \
--console pty,target_type=serial \
--hvm --dry-run
出现ERROR 不能混用 --graphics 和旧式的图形选项
可能是需要去掉--keymap
关于 加载 virtio 驱动可以参考 http://www.ilanni.com/?p=5877
选择加载viostor
磁盘驱动
disk属性就是指虚拟机使用哪一个磁盘镜像文件作为存储地方,指定刚才创建的镜像文件位置即可,size=10,format=qcow2,bus=virtio分别是指大小,格式(跟镜像格式一致),磁盘总线类型(指Value can be ’ide’, ’scsi’, ’usb’, ’virtio’ or ’xen’,virtio是专门为kvm制定的bus,比较常用),大小需要比镜像文件大小要小,相当于镜像是容器,这个disk是里面的水,水太多就溢出了。
bridge=br0,model=virtio –keymap=en-us分别指网卡使用,网卡模式即驱动模式,和键盘制式,桥接模式都使用br0,而虚拟机需要使用virtio这个驱动才能使用虚拟网卡,这个虚拟网卡驱动在linux下支持很好,在windows下支持一般,键盘制式如果不指定的话会出现键位错乱的情况,一般我们使用英式。
使用virsh
可以管理已创建的虚拟机
virsh shutdown demo 正常关闭虚拟机
virsh destroy demo 直接销毁虚拟机
可见 http://www.cnblogs.com/lin1/p/5776280.html
启动并进入虚拟机
virsh start 域名 --console
10,彻底删除虚拟机
1,删除虚拟机 virsh destroy +域名
2,解除标记 virsh undefine +域名
3,删除虚拟机文件
virsh destroy windows2012 && virsh undefine windows2012
通过virt-clone命令克隆虚拟机
virt-clone -o centos -n centos2 -f /disk/kvm/disk2
virsh -c qemu:///system list
可以查看正在运行的机器
virsh vncdisplay windows2012
查看vnc端口
可以使用其他机器上的vnc viewer 连接
本机 virt-viewer --connect qemu:///system windows2012
windows系统可使用 vncviewer (http://share.suconghou.cn/files/bin/vncviewer.zip) 连接
全屏下用F8键可唤出菜单.
修改相关
hostnamectl
可以查看主机相关信息,主机名,内核版本,64位等
只查看静态、瞬态或灵活主机名,分别使用--static
,--transient
或--pretty
选项
要同时修改所有三个主机名:静态、瞬态和灵活主机名:
hostnamectl set-hostname Linuxidc
hostname -I
可以获取所有网卡上配置的IP