几近崩溃,KVM无法自动启动 [已解决]

发布于 2022-10-15 10:20:17 字数 3030 浏览 37 评论 0

本帖最后由 乐山近水 于 2011-04-12 17:29 编辑

正在在一台 i7 的机器上布署基于CentOS 5.5 的 KVM 虚拟机环境。原来用 libvirt 进行虚拟机管理,主机启动后虚拟机也会自动启动。 无奈其网卡吞吐性能太差,遂放弃libvirt, 改为由命令行管理,下面是我的失败经历,请高手帮忙分析一下。
虚拟机启动脚本:/home/data/kvm/scripts/samba.sh

  1. #!/bin/bash
  2. sudo /usr/libexec/qemu-kvm \
  3. -smp 1 \
  4. -m 256 \
  5. -hda /home/data/kvm/storage/samba.img \
  6. -hdb /dev/host/smb \
  7. -localtime \
  8. -net nic,vlan=0,macaddr=52:54:00:12:30:05 \
  9. -net tap,ifname=tap5,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown \
  10. -boot c \
  11. -vnc "none" &

复制代码经过测试,脚本运行正确,虚拟机能正常启动,虚拟网卡正常启动,工作正常。
第一回合: 把启动脚本拷贝到 /etc/init.d/ 目录下(不拷与可以),开启自动执行:

  1. # cp /home/data/kvm/scripts/samba.sh /etc/init.d
  2. # cd /etc/rc3.d
  3. # ln -s ../init.d/samba.sh S99smbup

复制代码系统的运行级别为 3, 但还是在rc2, rc5 下也建立了同样的链接。
重启系统测试效果。

  1. ps -e |grep kvm
  2. 6556 ?        00:00:36 qemu-kvm

复制代码OK, 虚拟机已经自动启动了,测试一下连接:

  1. # ping 192.168.10.5
  2. PING 192.168.10.5 (192.168.10.5) 56(84) bytes of data.
  3. From 192.168.10.4 icmp_seq=2 Destination Host Unreachable
  4. From 192.168.10.4 icmp_seq=3 Destination Host Unreachable
  5. From 192.168.10.4 icmp_seq=4 Destination Host Unreachable
  6. --- 192.168.10.5 ping statistics ---
  7. 4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3000ms
  8. , pipe 3

复制代码连接不通,查一下网卡:

  1. # ifconfig
  2. br0 ........
  3. .....
  4. eth0 ....
  5. .....
  6. lo....
  7. ....
  8. virbr0.....
  9. .....

复制代码没有 tap5!
什么原因?是启动脚本时 tun/tap 组件还没有启动吗? 机器的启动时间大约为30秒,那把脚本启动的时间延后一分钟是否可行呢?
修改脚本测试一下。

  1. #!/bin/bash
  2. sleep 60
  3. sudo /usr/libexec/qemu-kvm \
  4. ....

复制代码再重启测试,好了,这次连虚拟机都不起来了。

第2回合:用crontab 启动虚拟机。
1: 修改 启动脚本,先检测虚拟机是否运行,如果没有运行则启动虚拟机,否则退出:

  1. #/etc/init.d/smbup
  2. #!/bin/bash
  3. foo=$(ps -ef |grep samba | wc -l)
  4. if [ $foo == 1 ]; then
  5. /usr/libexec/qemu-kvm -smp 1 -m 256 -hda /home/data/kvm/storage/samba.img -hdb /dev/host/smb -localtime -net nic,vlan=0,macaddr=52:54:00:12:30:05 -net tap,ifname=tap5,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown -boot c -vnc "none" &
  6. fi

复制代码添加 crontab

  1. # crontab -e
  2. 0-50/5 * * * * source /etc/init.d/smbup

复制代码过了5分钟后检查,虚拟机没有启动!

实在没招了,向各位大侠求救!

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

宁愿没拥抱 2022-10-22 10:20:17

问题解决了!
系统 mail 提示:

Sorry, you must have a tty to run sudo!

本身 crontab 的用户属性就是 root,加一个 sudo 真是画蛇添足!把 sudo 去掉就 OK 了。

风苍溪 2022-10-22 10:20:17

centos 6 kvm 是王道

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文