virsh FAQ 常见问题

发布于 04-06 13:13 字数 7603 浏览 1228 评论 0

速查链接

安装新的虚拟机

非特权模式

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性能调优

http://itscblog.tamu.edu/improve-disk-io-performance-in-kvm/

关于 <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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文