页面

2011年10月25日星期二

KVM的命令行下控制虚拟机关机和重启

关键词:kvm, libvirt, virsh, shutdown, reboot, acpi, acpid, virtualization, linux

  最近在 ubuntu 上装上了 KVM 虚拟机, 并且安装了管理程序 libvirt 和 GUI 管理器 virt-manager 进行管理。为了方便远程管理,找到了几个简单的命令行的管理方式:

进入 libvirt 控制台:
# virsh

显示虚拟机列表:
virsh # list --all

启动虚拟机:
virsh # start [name]

关闭虚拟机:
virsh # shutdown [name]

重启虚拟机:
virsh # reboot [name]


  然后便在 GUI 界面新建了一个 ubuntu 的 guest 虚拟机。试了试上面的一些命令,发现 shutdown 和 reboot 两个命令不起作用。不得已用了几次 destroy,觉得这不是办法,于是搜索了一下看是怎么回事。没想到居然搜索结果里一个中文的网站也没有,只有几个英文的网站说了这个事。原来 guest 虚拟机不支持 acpi 的话,是无法响应 host 发出的 shutdown 和 reboot 命令的。给出的方案就是,在 guest 虚拟机里安装 acpi 支持包:

# sudo apt-get install acpid

  这样就可以了。如果是以命令行方式创建虚拟机,也可以在创建时添加 --addpkg acpid 参数以初始化安装。

参考:

1,http://askubuntu.com/questions/2825/how-do-i-use-virsh-shutdown-on-kvm-domains-to-shut-down-ubuntu-guests
2,http://wiki.libvirt.org/page/FAQ#Why_doesn.27t_.27shutdown.27_doesn.27t_seem_to_work.3F
3,https://help.ubuntu.com/10.04/serverguide/C/jeos-and-vmbuilder.html



使用Facebook社交插件参与评论:

2011年10月17日星期一

windows 7 下使用tunnelbroker 服务配置IPv6

关键词:IPv6, 6in4, IPv6-in-IPv4, teredo, he.net, tunnelbroker

本文主要参考了:Ubuntu使用he.net的IPv6隧道代理访问网络(已更新)

注:本文仅适用于有固定 IP(IPv4) 地址的电脑。包括以 192.168. 等开头的局域网地址。本文是对上面链接原文中的第 7 条有关局域网 windows 7 下的配置的详细说明。并简化了操作。动态 IP 地址的配置方法略有不同,而且比较繁琐,请参考上面的链接原文。

目前 IPv6 尚未全面普及,大部分地方用的还是 IPv4。在这个过渡期,有许多种过渡技术可以用来在现有的 IPv4 网络上使用 IPv6,比如:teredo,6in4 和 isatap 等等。

我之前介绍过如何在 windows 7 下使用 teredo:

Windows 7,中国电信ADSL的环境下配置IPv6

,这次再介绍一下 6in4。

Hurricane Electric 旗下的 tunnelbroker.net 提供免费的 6in4 服务。以下以该服务为例进行说明。

1,参考本文开头处链接的文章,申请服务和通道。
  简单描述一下,就是到 http://tunnelbroker.net 注册一个账号,然后创建一个普通通道。
  每个账号可以最多创建 5 个通道。创建通道时需要填写本机的外网 IP 地址,而且需要保证该 IP 地址可以从 ipv4.tunnelbroker.net 地址 ping 通。ping 不通的话是没法设置成功的。可以到 http://just-ping.com 测试能否 ping 通。ping 不通的话,需要调整防火墙设置,或者路由器的安全设置。
  创建通道时可以选择服务器。可以逐一 ping 各个服务器,看哪台服务器的响应最快。我用西安电信的ADSL,大部分时间都是 Fremont 或 Seattle 的服务器最快。

以下是 ping 各服务器的批处理:



@echo off
echo ==================Asia==================
echo ----------------------------------------
echo ping Hong Kong
ping 216.218.221.6
echo ----------------------------------------
echo ping Singapore
ping 216.218.221.42
echo ----------------------------------------
echo ping Tokyo
ping 74.82.46.6
echo ----------------------------------------
echo =================Europe=================
echo ----------------------------------------
echo ping Amsterdam
ping 216.66.84.46
echo ----------------------------------------
echo ping Frankfurt .... skip
echo ----------------------------------------
echo ping London
ping 216.66.80.26
echo ----------------------------------------
echo ping Paris
ping 216.66.84.42
echo ----------------------------------------
echo ping Stockholm
ping 216.66.80.90
echo ----------------------------------------
echo ping Zurich
ping 216.66.80.98
echo ----------------------------------------
echo ==============North America=============
echo ----------------------------------------
echo ping Ashburn
ping 216.66.22.2
echo ----------------------------------------
echo ping Chicago
ping 209.51.181.2
echo ----------------------------------------
echo ping Dallas
ping 216.218.224.42
echo ----------------------------------------
echo ping Fremont
ping 72.52.104.74
echo ----------------------------------------
echo ping Fremont
ping 64.62.134.130
echo ----------------------------------------
echo ping Los Angeles
ping 66.220.18.42
echo ----------------------------------------
echo ping Miami
ping 209.51.161.58
echo ----------------------------------------
echo ping New York
ping 209.51.161.14
echo ----------------------------------------
echo ping Seattle
ping 216.218.226.238
echo ----------------------------------------
echo ping Toronto
ping 216.66.38.58
echo ----------------------------------------

pause



2,将以下批处理命令中的 4 个参数修改为自己的内容,然后在命令行中顺序执行,或者存为一个 bat 文件以批量执行。

其中 4 个参数是:
IPV4_SERVER:刚才建立的通道的Tunnel Details页面的Server IPv4 Address的值
IPV6_SERVER:Tunnel Details页面的Server IPv6 Address的值(不带后面的/64)
IPV4_LOCAL:本机的固定IP地址。如果是外网固定IP,那就是Tunnel Details页面的Client IPv4 Address的值。如果是内网固定IP,则填写内网固定IP(如 192.168.0.7)
IPV6_LOCAL:Tunnel Details页面的Client IPv6 Address的值(不带后面的/64)

各参数的位置见下图中的红框所示处:


以下是批处理文件内容:


@echo off
echo  正在配置 6in4 通道....

set IPV4_SERVER=64.62.134.130
set IPV6_SERVER=2001:470:ffff:ffff::1
set IPV4_LOCAL=192.168.0.7
set IPV6_LOCAL=2001:470:ffff:ffff::2

netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel IP6Tunnel %IPV4_LOCAL% %IPV4_SERVER%
netsh interface ipv6 add address IP6Tunnel %IPV6_LOCAL%
netsh interface ipv6 add route ::/0 IP6Tunnel %IPV6_SERVER%

netsh interface ipv6 set prefix ::1/128 50 0
netsh interface ipv6 set prefix ::/0 40 1
netsh interface ipv6 set prefix 2002::/16 30 2
netsh interface ipv6 set prefix ::/96 20 3
netsh interface ipv6 set prefix ::ffff:0:0/96 10 4
netsh interface ipv6 set prefix 2001::/32 5 5

pause



4,从 https://ipv6-hosts.googlecode.com/hg/hosts 获取最新的 IPv6 解析,并将全部内容追加到本机的 C:\Windows\System32\drivers\etc\hosts 文件末尾
  自己也可以收集其他 IPv6 解析,添加到 hosts 文件中。要直接使用 IPv6 地址访问一个网站,只需要在浏览器中直接输入该 IPv6 地址,并在两端加上 [ 和 ] 号访问即可。下面有例子。

5,命令行运行 ipconfig /flushdns 刷新 DNS 缓存

6,ping g.cn。如果有从 IPv6 地址返回的响应,则说明配置成功。

7,如果是局域网固定 IP 而外网 IP 发生了变化,则需要访问Tunnel Details页面手动更改最新的 Client IPv4 Address 地址。或者访问以下网页自动修改当前外网 IP 地址:

http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=p1&apikey=p2&tid=p3

其中 p1 替换为:上述账号的密码的 MD5 值。网上有在线计算 MD5 值的工具。
p2 替换为:登录后的 Main Page 的 User ID 的值
p3 替换为:Tunnel Details 页面的 Tunnel ID 的值

可以将该地址存入收藏夹,每次 ADSL 重新拨号后访问一下。或者设置令每次开机自动执行以下命令:

explorer http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=p1&apikey=p2&tid=p3

8,如果需要关闭该通道,可以执行:


@echo off
echo  ipv6 setting off....

set IPV6_LOCAL=2001:470:ffff:ffff::2
set IPV6_SERVER=2001:470:ffff:ffff::1

netsh interface ipv6 delete route ::/0 IP6Tunnel %IPV6_SERVER%
netsh interface ipv6 delete address "IP6Tunnel" %IPV6_LOCAL%
netsh interface ipv6 delete interface "IP6Tunnel"

netsh int ipv6 set prefix ::1/128 50 0
netsh int ipv6 set prefix ::/0 40 1
netsh int ipv6 set prefix 2002::/16 30 2
netsh int ipv6 set prefix ::/96 20 3
netsh int ipv6 set prefix ::ffff:0:0/96 10 4
netsh int ipv6 set prefix 2001::/32 5 5

pause


9,正常使用中,不需要关闭通道。只要 IP 没有变化,下次开机通道依然有效。以上,用于固定 IP 的方案介绍完毕。浏览器访问 http://[2001:4810::110] 以检查自己的 IPv6 地址:


10,前文之所以说动态 IP 地址的配置比较繁琐,就在于批处理文件中需要写一个固定的 IP 地址。如果是动态 IP 地址的话,则每次 IP 变化之后,都需要先关闭通道,再修改开启通道的批处理文件中的参数,再执行之。

11,如果发现 hosts 中的网址突然访问不通,则有可能是本地的外网 IP 变化导致通道失效了,需要访问步骤 7 中所示的网址以更新 IP:

如果 IP 没发生变化也去访问该页面,则会提示:

-ERROR: This tunnel is already associated with this IP address.  Please try and limit your updates to IP changes.

如果很不凑巧你现在的 IP 是别人之前用来创建过通道的,则会提示:


点击页面中的链接,则会跳转到:


提示你可以通过该方法夺回该 IP 的通道使用权。因为同一个 IP 只能有一个通道。但是这一招会删掉对方的通道,有点残忍。所以,还是我们自己重新拨号换一个没人用的 IP 吧

12,以上介绍完。有疑问可同时参考开头处的两个链接。

使用Facebook社交插件参与评论: