Skip to content

天楚锐齿

人工智能 云计算 大数据 物联网 IT 通信 嵌入式

天楚锐齿

  • 下载
  • 物联网
  • 云计算
  • 大数据
  • 人工智能
  • Linux&Android
  • 网络
  • 通信
  • 嵌入式
  • 杂七杂八

安装KVM虚拟机

2018-03-13
KVM方式的虚拟机是redhat主导的,基于硬件的虚拟化。
1. 查看硬件是否支持虚拟化
KVM需要CPU支持虚拟化,执行以下命令查看是否支持虚拟化:

# egrep ‘(vmx|svm)’ -color=always /proc/cpuinfo
如果含有vmx或者svm字样,则表示支持CPU虚拟化,Intel是vmx,AMD是svm。

2. 安装KVM
直接在线安装KVM,最好yum安装,需要的包非常多:
# yum groupinstall KVM

安装完成后重启主机:
# reboot

重启完成后,检查kvm模块是否加载:
# lsmod | grep kvm

显示结果如下表示kvm模块已经加载,如果没有输出信息,则表示没有加载成功:
# lsmod |grep kvm
kvm_intel              85256  0
kvm                   224928  2 ksm,kvm_intel
如果没有显示kvm_intel或kvm_amd,而且用下面的命令会报错,则应该是BIOS里面没有Enable虚拟化,需要从BIOS里面打开:
# modprobe kvm_intel
FATAL: Error inserting kvm_intel (/lib/modules/2.6.18-274.7.1.el5/weak-updates/kmod-kvm/kvm-intel.ko): Operation not supported

3. 配置网络
配置桥接
安装tunctl:
# yum install -y tunctl

桥接网络配置文件,从ifcfg-bond0复制现有网卡的配置文件,改名为ifcfg-br0:
# cp /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/sysconfig/network-scripts/ifcfg-br0

修改ifcfg-br0,只要修改DEVICE=xxx并增加TYPE=Bridge,其他部分不要修改。
# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=static
IPADDR=10.24.1.40
NETMASK=255.255.255.0
GATEWAY=10.24.1.1
ONBOOT=yes
TYPE=Bridge

修改ifcfg-bond0,增加一行BRIDAGE=br0,其他部分不要修改,注意到这里跟上面br0配置的ip地址、掩码、网关相同。
# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=10.24.1.40
NETMASK=255.255.255.0
GATEWAY=10.24.1.1
ONBOOT=yes
BRIDGE=br0

重启network服务
# service network restart

这里需要注意,如果启用了NetworkManager,最好关闭该服务,因为该服务与network有冲突。

4. 配置转发
执行以下命令:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# sysctl -w net.ipv4.ip_forward=1

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
这一步虽然只有简单的一条命令,但却很关键。如果不执行这一步,所有的虚拟机将无法上网。发现虚拟机无法上网的时候,也可以检查一下ip_forward值。

5. 禁用SELinux
# system-config-securitylevel-tui
选择Disabled这个SELinux。
至此,KVM已经安装完毕,接下去可以创建虚拟机,安装系统。

6. 配置虚拟机
写一个脚本,首先定义变量,然后执行virt-install 进行安装,不定义变量也可以,但是命令会很长。
# vi vm_install.sh
#/bin/env bash

set -x
NAME=vm1
PORT=6900
IMG_PATH=/data2/vms/vm1
IMG=vm1.dsk
OSTYPE=linux
OSVARIANT=rhel6
RAM_M=1024
CPUS=2
SIZE_G=50
ITF=br0
ISO=/root/CentOS-6.0-x86_64-bin-DVD1.iso

echo 1 > /proc/sys/net/ipv4/ip_forward
mkdir -p $IMG_PATH
umount /mnt/cdrom
mount -o loop -t iso9660 $ISO  /mnt/cdrom

echo “/mnt/cdrom *(rw,sync,no_root_squash,anonuid=65534,anongid=65534)” >> /etc/exports
service nfs restart
#mkdir -p /mnt/cdrom-nfs
#mount -t nfs -o hard,intr,bg,timeo=50 127.0.0.1:/mnt/cdrom /mnt/cdrom-nfs

virsh destroy $NAME
virsh undefine $NAME
virt-install -d –name=$NAME –ram=$RAM_M –vcpus=$CPUS –os-type=$OSTYPE –os-variant=$OSVARIANT \
–location=/mnt/cdrom –extra-args=’console=ttyS0 ks=ftp://172.16.1.137/tftpd_v6/ks-kvm.cfg initrd=/initrd.img devfs=nomount ramdisk_size=16384 nofb ip=10.24.1.170 netmask=255.255.255.0 gateway=10.24.1.1 noipv6 ksdevice=eth0′ \

     –connect qemu:///system –accelerate –nographics \
–disk path=$IMG_PATH/$IMG,size=$SIZE_G \
–network bridge:$ITF
set +x

注意:–extra-args的console=ttyS0一定需要,否则文本方式下看不到安装界面及进度,后面的ks之类的参数是为了实现自动化安装,不用的话就是手动安装,也是可以的。
执行以上脚本,如果没有错误的话,就会打开虚拟系统安装界面。

如果需要用vnc来控制安装过程,则virt-install必须修改:
virt-install -d –name=$NAME –ram=$RAM_M –vcpus=$CPUS –os-type=$OSTYPE –os-variant=$OSVARIANT \
–cdrom $ISO \
     –connect qemu:///system –accelerate –vnc –vncport=$VNC_PORT \
     –disk path=$IMG_PATH/$IMG,size=$SIZE_G \
     –network bridge:$ITF –network bridge:$ITF
使用vnc连接:如果是宿主机,直接用vnc连接,如果用非宿主机,比如secureCRT所在的机器,则需要在secureCRT上配置一个本地端口前转(5901,对应$VNC_PORT),然后用vnc连接127.0.0.1:1(5901对应:1)。

安装完之后自动进入console方式,需要用ssh登录一个新的属主机,然后用virsh停止或关闭虚拟机:

# virsh shutdown vm1
# virsh start vm1
7. 查看及管理正在运行的虚拟机:
# virsh list

虚拟机的主要管理命令式virsh,进入virsh管理shell,输入help可以得到帮助:

# virsh
# virsh console vm1
监控虚拟机的屏幕,很重要的,尤其是虚拟机不能启动之类的处理。
8. 启动、停止及删除虚拟机:
# virsh reboot vm1
# virsh start vm1
# virsh shutdown vm1
# virsh suspend vm1
# virsh resume vm1
删除:
# virsh destroy vm1
# virsh undefine vm1
9. 虚拟机配置文件及备份、恢复
虚拟机重新配置
虚拟机的配置文件保存在/etc/libvirt/qemu目录下,扩展名是xml。修改相应的文件即可重新配置虚拟机。
# ls /etc/libvirt/qemu/
networks  vm1.xml
这里vm1.xml就是vm1这个虚拟机的配置文件。
虚拟机备份及恢复
备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。
恢复:进入virsh,执行define:# virsh define vm1,然后可以启动虚拟机:# virsh start vm1,这两部可以用# virsh create vm1.xml这一步来代替。
10. 复制一个虚拟机:
# virsh dumpxml vm1 > /etc/libvirt/qemu/vm2.xml
# cp -r /data2/vms/vm1 /data2/vms/vm2
# mv /data2/vms/vm2/vm1.dsk /data2/vms/vm2/vm2.dsk
# vi /etc/libvirt/qemu/vm2.xml
<name>vm2</name>
<uuid>fcd6904b-98b5-5a97-757c-162d90c98cae</uuid>
<source file=’/data2/vms/vm2/vm2.dsk‘/>
<mac address=’54:52:00:2a:a8:6f‘/>
# virsh define /etc/libvirt/qemu/vm2.xml
# virsh start vm2
# virsh list
 Id Name                 State
———————————-
17 vm1                  running
18 vm2                  running
可以看到有两个虚拟机在运行。
# virsh console vm2
修改vm2的IP地址,然后就可以ssh上去了。
11. xml配置文件:
# cat /etc/libvirt/qemu/vm1.xml 
<domain type=’kvm’>
<name>vm1</name>
<uuid>fcd6904b-98b5-5a97-757c-162d90c98cad</uuid>
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch=’x86_64′ machine=’rhel5.4.0′>hvm</type>
<boot dev=’hd’/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset=’utc’>
<timer name=’pit’ tickpolicy=’delay’/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’raw’ cache=’none’/>
<source file=’/data2/vms/vm1/vm1.dsk‘/>
<target dev=’vda‘ bus=’virtio’/>
</disk>
<interface type=’bridge’>
<mac address=’54:52:00:2a:a8:6e’/>
<source bridge=’br0’/>
<model type=’virtio’/>
</interface>
<serial type=’pty’>
<target port=’0’/>
</serial>
<console type=’pty’>
<target port=’0’/>
</console>
<input type=’tablet’ bus=’usb’/>
</devices>
</domain>
1,246次阅读

Post navigation

前一篇:

使用heartbeat、PaceMaker、drbd实现hadoop的namenode热备份HA

后一篇:

Storm(实时Hadoop)指南

发表回复 取消回复

要发表评论,您必须先登录。

个人介绍

需要么,有事情这里找联系方式:关于天楚锐齿

=== 美女同欣赏,好酒共品尝 ===

微信扫描二维码赞赏该文章:

扫描二维码分享该文章:

分类

  • Linux&Android (81)
  • Uncategorized (1)
  • 下载 (28)
  • 云计算 (38)
  • 人工智能 (9)
  • 大数据 (35)
  • 嵌入式 (34)
  • 杂七杂八 (35)
  • 物联网 (65)
  • 网络 (25)
  • 通信 (22)

归档

近期文章

  • 飞书机器人发送卡片interactive消息
  • Springboot JPA实现对数据库表统一的增删改查
  • WEB的内容安全策略CSP(Content-Security-Policy)
  • CSS利用@media和viewport实现响应式布局自动适配手机电脑等
  • VUE前端增加国际化支持

近期评论

  • linux爱好者 发表在《Linux策略路由及iptables mangle、ip rule、ip route关系及一种Network is unreachable错误》
  • maxshu 发表在《使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序》
  • Ambition 发表在《使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序》
  • Ambition 发表在《使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序》
  • maxshu 发表在《Android9下用ethernet 的Tether模式来做路由器功能》

阅读量

  • 使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序 - 23,810次阅读
  • 卸载深信服Ingress、SecurityDesktop客户端 - 18,519次阅读
  • 车机技术之车规级Linux-Automotive Grade Linux(AGL) - 10,569次阅读
  • linux下的unbound DNS服务器设置详解 - 9,323次阅读
  • 在Android9下用ndk编译vSomeIP和CommonAPI以及使用例子 - 9,136次阅读
  • linux的tee命令导致ssh客户端下的shell卡住不动 - 8,639次阅读
  • Linux策略路由及iptables mangle、ip rule、ip route关系及一种Network is unreachable错误 - 8,126次阅读
  • 车机技术之360°全景影像(环视)系统 - 8,088次阅读
  • 车机技术之Android Automotive - 7,940次阅读
  • Windows下安装QEMU并在qemu上安装ubuntu和debian - 7,840次阅读

其他操作

  • 注册
  • 登录
  • 条目 feed
  • 评论 feed
  • WordPress.org

联系方式

地址
深圳市科技园

时间
周一至周五:  9:00~12:00,14:00~18:00
周六和周日:10:00~12:00

标签

android AT命令 CAN centos docker Hadoop hdfs ip java kickstart linux mapreduce mini6410 modem nova OAuth openstack os python socket ssh uboot 内核 协议 安装 嵌入式 性能 报表 授权 操作系统 数据 数据库 月报 模型 汽车 深信服 源代码 统计 编译 脚本 虚拟机 调制解调器 车机 金融 鉴权
© 2025 天楚锐齿