速查链接

安装新的虚拟机

非特权模式

sudo qemu-img create -f qcow2 -o preallocation=metadata /home/huangwei/kvm/ubuntu-lucid.qcow2 80G

sudo virt-install --connect=qemu:///session \
    --name=ubuntu-lucid \
    --disk path=/home/huangwei/kvm/ubuntu-lucid.qcow2,format=qcow2 \
    --ram 2048 \
    --vcpus=2 \
    --check-cpu \
    --hvm \
    --cdrom="/home/huangwei/os/ubuntu-10.04.2-server-amd64.iso"

sudo virt-install --name ubuntu --ram 512 --vcpus=1 --disk path=/home/huangwei/kvm/ubuntu.img,size=10 --accelerate --cdrom /home/huangwei/os/ubuntu-10.04.2-server-amd64.iso --vnc --vnclisten=222.31.79.175

virt-install \
--name ubuntu \
--ram 2048 \
--vcpus=4 \
--disk path=/home/huangwei/kvm/ubuntu.img,size=40 \
--accelerate \
--cdrom /home/huangwei/os/ubuntu-10.04.2-server-amd64.iso \
--vnc \
--vnclisten=10.6.9.142

sudo virt-install -d -n ubuntu-lucid --ram 1024 --disk path=/home/huangwei/kvm/ubuntu-lucid.qcow2,format=qcow2,bus=virtio,cache=none --network bridge=br0,model=virtio --vnc --cdrom=/home/huangwei/os/ubuntu-10.04.2-server-amd64.iso --vnclisten=222.31.79.175
virt-install -n winxp --ram 2048 --vcpus=4  --disk path=/home/huangwei/kvm/winxp.img,cache=none,size=80 -c /home/huangwei/os/zh-hans_windows_xp.iso --vnc --os-type windows --accelerate --hvm --vnclisten=10.6.9.142 --noreboot

特权模式

  • 建议关闭SELinux
    # 编辑/etc/selinux/config,确保SELINUX=disabled
    $sudo vim /etc/selinux/config
    
    #This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    

编辑保存以上文件后,必须重启系统,设置才会生效!!!

# 检查SELinux状态
$sestatus
SELinux status:                 disabled
  • 无论是否关闭SELinux,一旦遇到类似如下的错误,则只能把安装iSO镜像放到/var/lib/libvirt/images/下
    error: internal error Process exited while reading console log output: char device redirected to /dev/pts/5
    qemu-kvm: -drive file=/home/huangwei/os/ubuntu-12.04.2-server-amd64.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw: could not open disk image /home/huangwei/os/ubuntu-12.04.2-server-amd64.iso: Permission denied
    

以下命令按需定制参数,其中的--noreboot是确保定义完虚拟机配置文件后不立刻启动系统

sudo virt-install -n winxp --ram 2048 --vcpus=4  --disk path=/srv/kvm/winxp.img,cache=none,size=80 -c /var/lib/libvirt/images/zh-hans_windows_xp.iso --vnc --os-type windows --accelerate --hvm --vnclisten=10.6.9.142 --noreboot

sudo virt-install --connect=qemu:///system \
    --name=ubuntu-precise \
    --disk path=ubuntu-precise.img \
    --ram 2048 \
    --vcpus=2 \
    --check-cpu \
    --hvm \
    --cdrom="/var/lib/libvirt/images/ubuntu-12.04.2-server-amd64.iso" \
    --accelerate --vnclisten=222.31.79.175 --noreboot

注意事项:

  • 不要轻易使用virtio模式
  • 非特权模式创建的虚拟机需要修改文件和目录的权限后,才可以被导入到特权模式(目前的实验结论是:虚拟机磁盘镜像所在目录必须是root属主,且权限为755,文件权限为644

导入已有的虚拟机

sudo virt-install --name bt5 --ram 1024 --disk bt5-copy.img.qcow2,format=qcow2 --import --vnc --noreboot --network network=default,model=virtio  --vcpu=2 --vnclisten=10.6.8.54

virsh控制台的权限控制

在今日virsh交互式控制台后,执行一些命令,报出类似以下的错误信息时,很大可能就是你当前连接的virsh控制台权限不足。

error: Failed to define network from /usr/share/libvirt/networks/default.xml
error: cannot write config file '/var/lib/libvirt/dnsmasq/default.hostsfile': Permission denied

出现这种情况时,使用以下命令进行错误排查和解决

# 查看当前连接的virsh权限
$ virsh uri
qemu:///session # 当前shell用户权限,非root权限
# 尝试连接到root权限的vish shell
$ virsh --connect qemu:///system
error: authentication failed: Authorization requires authentication but no agent is available.

error: failed to connect to the hypervisor
# 使用更高权限连接virsh root shell
[huangwei@reng kvm]$ sudo virsh --connect qemu:///system
[sudo] password for huangwei:
# 提权成功,连接到virsh root shell
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # uri
qemu:///system

克隆虚拟机

# 使用基础镜像,所有的写操作独立放到一个镜像文件中,类似于提供一个“模版镜像”
qemu-img create -f qcow2 -o backing_file=ubuntu.img ubuntu-huangwei.qcow2

# 克隆“模版镜像”的domain配置文件
virt-clone -o ubuntu -n ubuntu-huangwei --preserve-data --file ubuntu-huangwei.qcow2

# 修改domain的配置文件,找到qcow2的磁盘镜像,修改type='qcow2'

# 克隆的虚拟机无法联网,在克隆虚拟机(ubuntu环境)内执行以下命令
sudo rm /etc/udev/rules.d/70-persistent-net.rules
sudo reboot -h now

磁盘I/O性能调优

关于<interface type='user'>

首先,这是一个专用于user mode(uri=qemu:///session)的guest os联网方式; 其次,这种联网方式实现的效果“类似”于NAT模式;

如何手动添加虚拟桥接网卡(br0)到物理网卡(eth0/em0)?

http://wiki.libvirt.org/page/Networking

如何设置iptables,让虚拟机的NAT模式正常运转?

net-start <net-name>

之后,libvirtd会自动根据<net-name>定义的转发规则创建iptables NAT转发规则

如何在已创建的虚拟机里添加iso镜像?例如,用于装系统

<disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/ubuntu-12.04.2-server-amd64.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
</disk>

以上配置文件有2处需要特别注意:

  1. <driver name='qemu',不能写成<driver name='file',具体参见这个古老的bug报告
  2. 特权模式安装系统,务必确保系统iso镜像放置于指定目录:/var/lib/libvirt/images/ 否则,会报错:XXX Permission denied

虚拟存储管理

快照机制

raw格式的虚拟磁盘格式不支持快照功能,qcow2格式支持。

# snapshot-create <domain>
# snapshot-list <domain>
# snapshot-restore <domain> <snapshotname>
# snapshot-delete <domain> <snapshotname>

如何设置iptables,实现guest主机上开放自定义端口,供物理主机访问?

返回顶部