KVM 虚拟机

手工维护 KVM 虚拟机

宿主机环境

  1. 确保 cpu 支持虚拟化

    egrep '(vmx|svm)' --color=always /proc/cpuinfo
    
    
  2. 确保加载了必备模块

    lsmod | grep kvm
    
    

其输出应包括 kvm 与 kvm_intel ( 如使用 AMD cpu 则应为 kvm_amd ) 模块。如果没有加载,则通过下列命令手工加载:

modprobe kvm-intel

modprobe kvm-amd

  1. 安装必备软件包

    aptitude install qemu-kvm
    
    
  2. 如需管理功能,需额外安装 libvirt 工具包

    aptitude install libvirt-bin
    
    
  3. 如虚拟机需直连机房网络,应以桥接方式配置网络,安装相关工具包

    aptitude install bridge-utils
    
    

桥接网络配置

手工配置网桥

  1. 创建网桥

    brctl addbr br100
    
    
  2. 配置网桥

    ip addr
    
    ip ro
    
    
  3. 将宿主机内网网卡加入此网桥

    brctl addif br100 eth1
    
    

持久化网桥配置

  1. 编辑 /etc/network/interfaces

    # Set up interfaces manually, avoiding conflicts with, e.g., network manager
    
    iface eth1 inet manual
    
    
    
    # Bridge setup
    
    iface br100 inet static
    
        bridge_ports eth1
    
        address 172.17.4.123
    
        mask 255.255.240.0
    
    
  2. 重启网络服务

    service networking restart
    
    

安装虚拟机

创建磁盘文件

kvm-img create -f qcow2 virt-deb.qcow2 16G

安装系统到磁盘文件

在服务器执行

kvm -drive file=virt-deb.qcow2 -cdrom /path/to/boot-media.iso -boot d -m 512 -vnc :1

在本地安装 vnc 客户端,而后执行

vncviewer server.ip:1

连接后在本地 vnc 客户端的从窗口中操作,执行安装

创建配置文件,通过 virsh 管理虚拟机

配置文件为 xml 格式,文件名任意,其详细格式参考官方 配置文档

virsh 是 libvirt-bin 提供的命令行管理工具

从配置文件新增虚拟机,但不启动它

virsh define virt-deb.xml

从配置文件新增虚拟机,并启动它

virsh create virt-deb.xml

列出运行中的虚拟机

virsh list

列出所有虚拟机,包括未运行的

virsh list --all

删除未运行的虚拟机

virsh undefine virt-deb

启动虚拟机

virsh start virt-deb

关闭虚拟机(本条命令有可能失败,与虚拟机的电源管理策略等条件相关),其效果相当于按物理 pc 主机电源按键

virsh shutdown virt-deb

强制关闭虚拟机,其效果相当于拔掉物理 pc 电源线。需注意的是,当这台主机是由 virsh create 创建并启动时, 本命令会强制关机,并删除该虚拟机;当这台主机先使用 virsh define 创建,之后使用 virsh start 启动时, 本命令只会强制关机,不会删除该虚拟机。

virsh destroy virt-deb

附配置文件样例

<domain type='kvm'>

    <name>virt-deb</name>

    <description>debian virtual machine</description>

    <memory unit='KiB'>ram in KB</memory>

    <currentMemory unit='KiB'>ram in KB</currentMemory>

    <vcpu placement='static'>number of virtual cores</vcpu>

    <os>

        <type arch='x86_64' machine='pc-1.1'>hvm</type>

        <boot dev='hd'/>

    </os>

    <features>

        <acpi/>

        <apic/>

        <pae/>

    </features>

    <cpu mode='host-passthrough'>

    </cpu>

    <clock offset='utc'/>

    <on_poweroff>destroy</on_poweroff>

    <on_reboot>restart</on_reboot>

    <on_crash>restart</on_crash>

    <devices>

        <emulator>/usr/bin/kvm</emulator>

        <disk type='file' device='disk' snapshot='external'>

            <driver name='qemu' type='qcow2' cache='none'/>

            <source file='/path/to/virt-deb.qcow2'/>

            <target dev='vda' bus='virtio'/>

        </disk>

        <disk type='file' device='cdrom'>

            <driver name='qemu' type='raw'/>

            <source file='/path/to/cdrom.iso'/>

            <target dev='hda' bus='ide'/>

            <readonly/>

        </disk>

        <interface type='bridge'>

            <source bridge='br100'/>

            <model type='virtio'/>

        </interface>

        <input type='tablet' bus='usb'/>

        <input type='mouse' bus='ps2'/>

        <graphics type='vnc' autoport='yes' listen='0.0.0.0'>

            <listen type='address' address='0.0.0.0'/>

        </graphics>

        <video>

            <model type='vga' vram='65536' heads='1'>

            </model>

        </video>

    </devices>

</domain>

配置虚拟机网络

虚拟机安装过程中使用 kvm 内置 dhcp 服务器获取动态 IP,之后通过宿主机 NAT 访问外部网络,因此 安装过程中并没有配置符合需求的网络。使用过程中需要通过桥接直连机房网络,并给虚拟机配备机房内网 IP。 此配置通过 vnc 完成。

先将虚拟机加入 libvirt 管理

virsh define virt-deb.xml

启动虚拟机

virsh start virt-deb

本机使用客户端连接,自动调配时,不同虚拟机其 vnc 端口一般从 5901 开始分配

vncviewer server.ip:5901

之后与普通服务器配置一致

初始化系统

  1. 配置主机名

    vi /etc/hostname
    
    
    
    hostname -F /etc/hostname
    
    
  2. 安装 lsb-release puppet 软件包

    aptitude install puppet lsb-release
    
    
  3. 配置 puppet ,启用 pluginsync

    vi /etc/puppet/puppet.conf
    
    

在 [main] 段添加

pluginsync = true

  1. 执行配置同步,进行初始化
    puppet agent -t
    
    
  2.  

你可能感兴趣的:(虚拟机)