zoukankan      html  css  js  c++  java
  • KVM虚拟机配置

    该系列文章只是本人的学习笔记,文章中的文字描述提取自《Linux鸟哥私房菜》《Linux运维之道》等书中的重点内容,部分内容是在培训Linux运维时总结的笔记,化繁为简能够在工作中快速复习掌握重点,并不代表个人立场,但转载请加出处,并注明参考文献。

    KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的,KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。在 x86 平台上最热门运用最广泛的虚拟化方案莫过于 KVM 了。其中云计算框架 OpenStack 对 KVM 支持得也最好,我们的教程也理所当然选择 KVM 作为 实验环境的 Hypervisor。

    ◆安装KVM虚拟机◆

    1.配置宿主机为网桥

    cd /etc/sysconfig/network-scripts
    
    cp -a ifcfg-eno16777728 ifcfg-br0
    
    vim ifcfg-br0
    
    TYPE=Bridge
    DEVICE=br0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.1.13
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=114.114.114.114
    
    reboot
    

    2.宿主机的软件安装和配置

    yum install -y qemu-kvm libvirt virt-install bridge-utils
    

    3.安装完毕之后,检查模块是否已经加载

    lsmod | grep kvm
    

    4.执行下列命令开启虚拟机

    systemctl start libvirtd.service 
    systemctl enable libvirtd.service
    

    ◆KVM的创建及管理◆

    创建并实现基本管理虚拟机

    virt-install -n lyshark -r 256 --vcpus 1 --disk /tmp/lyshark.img,format=qcow2,size=5 --network bridge=br0 --os-type=linux --os-variant=rhel7.0 --cdrom /tmp/rhel-server-7.0_x86_64-dvd.iso --vnc --vncport=5910 --vnclisten=0.0.0.0
    
    -------------------------------------------------------------------------------------------------
    [参数说明]
    
    --n					#指定虚拟机名称
    --r					#指定虚拟机内存,单位MB
    --disk					#指定存储设备及其属性 size:新建磁盘映像的大小单位为GB;磁盘映像格式,如raw、qcow2、vmdk
    --os-type				#操作系统类型,如linux、unix或windows等;
    --os-variant=				#某类型操作系统的变体,如rhel5、fedora8等; 
    --vcpus=				#VCPU个数及相关配置
    --cpu=					#CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?来获取支持的CPU模式;
    
    --os-variant=freebsd8
    --os-variant=win7
    --os-variant=win7 --disk path=/var/lib/libvirt/iso/virtio-win.iso,device=cdrom
    --os-variant=win2k8
    --os-variant=win2k8 --disk path=/var/lib/libvirt/iso/virtio-win.iso,device=cdrom
    --os-variant=rhel7
    
    -------------------------------------------------------------------------------------------------
    
    virsh list --all		#列出所有的虚拟机
    
    virsh dominfo			#显示虚拟机信息
    
    yum install virt-top -y
    virt-top			#显示虚拟机内存和cpu的使用情况
    
    virt-df				#显示虚拟机分区信息
    
    
    virsh destroy			#强制关闭
    
    virsh undefine			#删除虚拟机
    
    virsh start			#启动
    
    virsh shutdown			#关闭虚拟机
    
    
    virsh autostart			#设置虚拟机自启动
    virsh autostart --disable	#关闭虚拟机自启动
    
    virsh console			#通过控制窗口登录虚拟机
    
    
    virsh attach-disk kvm-1 /dev/sdb vbd --driver qemu --mode shareable		#给虚拟机添加硬盘
    -------------------------------------------------------------------------------------------------
    

    更改内存

    # 1. 查看虚拟机当前内存
    
    [root@sh-kvm-1 ~]# virsh dominfo kvm-1 | grep memory
    Max memory:     4194304 KiB
    Used memory:    4194304 KiB
    
    # 2、动态设置内存为512MB,内存减少
    
    virsh setmem kvm-1 524288
    # 注意单位必须是KB
    
    # 3、查看内存变化
    
    # virsh dominfo kvm-1 | grep memory
    Max memory: 14194304 KiB
    Used memory: 524288 kiB
    
    # 4、内存增加
    
    virsh shutdown kvm-1
    virsh edit kvm-1  # 直接更改memory
    virsh create /etc/libvirt/demu/kvm-1/xml
    # 之后操作1,2,3步骤增加内存
    

    更改CPU

    virsh shutdown kvm-1
    virsh edit kvm-1
    #  <vcpu>2</vcpu>  # 4 > 2
    virsh create /etc/libvirt/demu/kvm-1/xml
    

    磁盘扩容

    1. Create a 10-GB non-sparse file:
    # dd if=/dev/zero of=/vm-images/vm1-add.img bs=1M count=10240
    2. Shutdown the VM:
     # virsh shutdown vm1
    3. Add an extra entry for ‘disk’ in the VM's XML file in /etc/libvirt/qemu. You can look copy & paste
    the entry for your mail storage device and just change the target and address tags. For example:
     # virsh edit vm1
     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1.img'/>
     <target dev='vda' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
    function='0x0'/>
     </disk>
     Add:
     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1-add.img'/>
     <target dev='vdb' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
    function='0x0'/>
     </disk>
     # 这里建议使用上面的添加硬盘的方式添加
    

    虚拟机的克隆

    将一个虚拟机克隆完毕之后,就可以以此为模板进行克隆,其它虚拟机就不必在一一进行创建,安装操作系统等操作。虚拟机克隆操作的代码如下:

    #!/usr/bin/env bash
    set -eux
    set -o pipefail
    
    vm_path="/var/lib/libvirt/images/vm_os"
    for (( i = 0; i <= 9; i ++ ))
    do
        vm_dir=$vm_path/vm$i
        if [ ! -d $vm_dir ]; then
            mkdir -p $vm_dir
        fi
        virt-clone --connect qemu:///system --original vm00 --name vm$i --file $vm_dir/vm"$i"system.img
    done
    

    虚拟机磁盘挂载

    虚拟机挂载磁盘的命令是virsh attach-disk,卸载磁盘的命令是virsh detach-disk,同样,为了批量操作方便,我们写个脚本来进行处理。

    #!/usr/bin/env bash
    set -eux
    set -o pipefail
    
    vm_path="/var/lib/libvirt/images/vm_disk"
    for (( i = 0; i <= 9; i ++ ))
    do
        vm_dir=$vm_path/vm$i
        if [ ! -d $vm_dir ]; then
            mkdir -p $vm_dir
        fi
        fallocate -l 15G $vm_dir/disk_15G.img
        virsh attach-disk vm$i --source $vm_dir/disk_15G.img  --target sdb --persistent
    #virsh detach-disk --domain vm$i --target sdb --persistent
    done
    
  • 相关阅读:
    HDU1013 Digital Roots
    DP---背包问题
    新生代与老年代
    JVM常见问题(二)
    JVM常见问题 一(转载)
    JVM内存模型及分区
    (转载)JVM知识小集
    类加载机制:全盘负责和双亲委托
    mysql 函数GROUP_CONCAT(temp.amount SEPARATOR ',')的用法
    mysql优化--explain关键字
  • 原文地址:https://www.cnblogs.com/LyShark/p/9991956.html
Copyright © 2011-2022 走看看