<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ZhongZiChang&#039;s Dao &#187; 虚拟化</title>
	<atom:link href="http://www.zhongzichang.com/archives/category/%e8%99%9a%e6%8b%9f%e5%8c%96/feed" rel="self" type="application/rss+xml" />
	<link>http://www.zhongzichang.com</link>
	<description></description>
	<lastBuildDate>Fri, 16 Sep 2011 17:36:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>JeOS and vmbuilder</title>
		<link>http://www.zhongzichang.com/archives/235</link>
		<comments>http://www.zhongzichang.com/archives/235#comments</comments>
		<pubDate>Mon, 02 Aug 2010 05:27:49 +0000</pubDate>
		<dc:creator>zhongzichang</dc:creator>
				<category><![CDATA[虚拟化]]></category>

		<guid isPermaLink="false">http://www.zhongzichang.com/?p=235</guid>
		<description><![CDATA[介绍 什么是JeOS Ubuntu JeOS （发音为“Juice“）是一个高效的Ubuntu服务操作系统的变体，专门配置给虚拟应用。不再提供有效的CD-ROM ISO下载，但可以下面的方式获取： • 当安装服务器版ISO（在第一屏按F4，将允许你选择“最小化安装“，这就是JeOS）。 • 或者用Ubuntu的vmbuilder来建造，接下来将描述怎么建造。 JeOS 是Ubuntu 服务器版本调整过内核的，仅包含基本的元素，在一个虚拟环境运行的，特定的装置。 Ubuntu JeOS已经被调整过，充分利用从最新的虚拟化产品VMware那里获得关键高效技术。减少大小，优化性能，确保Ubuntu JeOS版本成为一个在大型虚拟机部署高效的理由服务器资源。 没有不必要的驱动，最少的包需求，ISVs可以根据需要，精确配置他们支持的OS。 根据是否安全和增强的原因来平静的升级，被限制到，根据他们特定的环境来完全最少化。另外，比起完全标准安装一个服务器来讲， 用户部署到 JeOS的虚拟应用，将很少升级和维护。 什么是 vmbuilder 使用vmbuilder，就没有必要系在JeOS的 ISO。 vmbuilder将获取不同的包，在短时间内根据你的需要建造一个虚拟机。vmbuilder是一个脚本，自动创建一个基于VM的Linux。 当前支持的管理器包括 KVM 和 Xen。 你可以通过命令行选项，增加包，删除包，选择哪一个版本的Ubuntu， 哪一个镜像等等。在现有有大量的RAM的硬件上，tmpdir 在 /dev/shm 下，或者使用一个tmpfs， 和一个本地镜像，你可以在一分钟内启动一个VM。 介绍在Ubuntu 8.04 中作为shell script的ubuntu-vm-builder，帮助开发者在虚拟机中测试代码，不要每次都重启做了修改的系统。一些Ubuntu的管理员已经开始注意这个脚本，他们中的一些人想改良它，调整达到更多的用法。Soren Hansen &#8230; <a href="http://www.zhongzichang.com/archives/235">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">介绍</div>
<div></div>
<div id="_mcePaste">什么是JeOS</div>
<div></div>
<div id="_mcePaste">Ubuntu JeOS （发音为“Juice“）是一个高效的Ubuntu服务操作系统的变体，专门配置给虚拟应用。不再提供有效的CD-ROM ISO下载，但可以下面的方式获取：</div>
<div></div>
<div id="_mcePaste">• 当安装服务器版ISO（在第一屏按F4，将允许你选择“最小化安装“，这就是JeOS）。</div>
<div id="_mcePaste">• 或者用Ubuntu的vmbuilder来建造，接下来将描述怎么建造。</div>
<div></div>
<div id="_mcePaste">JeOS 是Ubuntu 服务器版本调整过内核的，仅包含基本的元素，在一个虚拟环境运行的，特定的装置。</div>
<div id="_mcePaste">Ubuntu JeOS已经被调整过，充分利用从最新的虚拟化产品VMware那里获得关键高效技术。减少大小，优化性能，确保Ubuntu JeOS版本成为一个在大型虚拟机部署高效的理由服务器资源。</div>
<div></div>
<div id="_mcePaste">没有不必要的驱动，最少的包需求，ISVs可以根据需要，精确配置他们支持的OS。 根据是否安全和增强的原因来平静的升级，被限制到，根据他们特定的环境来完全最少化。另外，比起完全标准安装一个服务器来讲， 用户部署到 JeOS的虚拟应用，将很少升级和维护。</div>
<div></div>
<div id="_mcePaste">什么是 vmbuilder</div>
<div></div>
<div id="_mcePaste">使用vmbuilder，就没有必要系在JeOS的 ISO。 vmbuilder将获取不同的包，在短时间内根据你的需要建造一个虚拟机。vmbuilder是一个脚本，自动创建一个基于VM的Linux。 当前支持的管理器包括 KVM 和 Xen。</div>
<div id="_mcePaste">你可以通过命令行选项，增加包，删除包，选择哪一个版本的Ubuntu， 哪一个镜像等等。在现有有大量的RAM的硬件上，tmpdir 在 /dev/shm 下，或者使用一个tmpfs， 和一个本地镜像，你可以在一分钟内启动一个VM。</div>
<div id="_mcePaste">介绍在Ubuntu 8.04 中作为shell script的ubuntu-vm-builder，帮助开发者在虚拟机中测试代码，不要每次都重启做了修改的系统。一些Ubuntu的管理员已经开始注意这个脚本，他们中的一些人想改良它，调整达到更多的用法。Soren Hansen 用python重写了它，为了新的目标：</div>
<div></div>
<div id="_mcePaste">• 它可以被其他的分发重用</div>
<div id="_mcePaste">• 为所有的虚拟交互使用一个插件机制，其他人也可以很容易的为其他虚拟环境增加 logic</div>
<div id="_mcePaste">• 提供一个容易维护的web接口，为命令行接口的增加一个选择</div>
<div></div>
<div id="_mcePaste">但基本概念和命令保持不变。</div>
<div></div>
<div id="_mcePaste">初始化设置</div>
<div></div>
<div id="_mcePaste">假定你已经在你使用的机器上安装了libvirt和KVM，详细的安装步骤请看：</div>
<div></div>
<div id="_mcePaste">• libvirt</div>
<div id="_mcePaste">• KVM Wiki https://help.ubuntu.com/community/KVM</div>
<div></div>
<div id="_mcePaste">我们同样假定你知道怎么使用文本编辑器，比如nano或者vi。如果你以前没有用过他们，你可以使用其他的有效的文本编辑器，参考内容 PowerUsersTextEditors https://help.ubuntu.com/community/PowerUsersTextEditors 。</div>
<div></div>
<div>这个方法KVM支持，但从一般概念上来讲，其他的虚拟话技术也行。</div>
<div></div>
<div id="_mcePaste">安装 vmbuilder</div>
<div></div>
<div id="_mcePaste">需要安装的包叫 python-vm-builder。在终端提示符下输入：</div>
<div></div>
<div id="_mcePaste">sudo apt-get install pythone-vm-builder</div>
<div></div>
<div id="_mcePaste">注意：如果你运行Hardy，你可以仍然执行安装旧的包，名字为 ubuntu-vm-builder。两者只是在语法上有稍微的改变。</div>
<div></div>
<div id="_mcePaste">定义你的虚拟机</div>
<div></div>
<div id="_mcePaste">使用Ubuntu的vmbuilder来定义虚拟机十分简单，但还是有一些需要考虑的地方：</div>
<div></div>
<div id="_mcePaste">• 如果你要移动你的虚拟装置, 不要假定最终用户知道怎么根据他们的需要来扩充磁盘的大小，因此需要一个大型的虚拟磁盘来你的应用使用，或者在你的文档里解释怎么分配更多的空间。实际上，比较好的办法是在独立的外部控件存储数据。</div>
<div id="_mcePaste">• 在一个VM中，让RAM更容易分配，根据你的应用需要，RAM应该被设置为你认为的一个安全最小的大小。</div>
<div id="_mcePaste">vmbuilder命令有两个主要的参数： 虚拟话技术（hypervisor）和目标分发。可选的参数很多，可以通过下面的命令行找到：</div>
<div></div>
<div id="_mcePaste">vmbuilder &#8211;help</div>
<div></div>
<div id="_mcePaste">基本参数</div>
<div></div>
<div id="_mcePaste">这里的例子是基于KVM和Ubuntu 10.04 LTS（Lucid Lynx），我们要多次重建同样的虚拟机，使用第一个参数，调用下面的vmbuilder：</div>
<div></div>
<div id="_mcePaste">sudo vmbuilder kvm ubuntu &#8211;suite lucid &#8211;flavour virtual &#8211;arch i386 -o &#8211;libvirt qemu:///system</div>
<div></div>
<div id="_mcePaste">&#8211;suite 定了Ubuntu的发行版本， &#8211;flavour 指定我们想要使用虚拟内核（这是用来建造JeOS image的）， &#8211;arch 说明我们想要在一个32位的机器上， -o 要 vmbuilder 去覆盖前面版本的VM ， &#8211;libvirt 报告本地虚拟环境，增加结果VM到有效机器的列表。</div>
<div></div>
<div id="_mcePaste">注意：</div>
<div></div>
<div id="_mcePaste">• 由于vmbuilder执行操作的性质，需要root权限，使用sudo</div>
<div id="_mcePaste">• 如果你的虚拟机要使用超过3G的RAM，你需要建造一个64bit的机器（&#8211;arch amd64）</div>
<div id="_mcePaste">• 到Ubuntu 8.10为止，仅能建造32bit架构的虚拟内含，因此如果你想在 Hardy 上定义一个amd64机器，你应该使用 &#8211;flavour server 。</div>
<div></div>
<div id="_mcePaste">JeOS 安装参数</div>
<div></div>
<div id="_mcePaste">JeOS 网络</div>
<div></div>
<div id="_mcePaste">赋予一个固定的IP地址</div>
<div></div>
<div id="_mcePaste">一个虚拟装置可以被部署到各种不同的网络，很难知道实际的网络是怎么样的。为了简化配置，使用和网络硬件提供商通常使用的方法，在一个私有级别的网络，声明赋予一个固定IP给虚拟装置，在你的文档中说明。地址范围 192.168.0.0/255 是个不错的选择。</div>
<div></div>
<div id="_mcePaste">这样一来，我们需要用到以下参数：</div>
<div></div>
<div id="_mcePaste">&#8211;ip ADDRESS： IP地址 （如果没有指定，缺省dhcp）</div>
<div id="_mcePaste">&#8211;mask VALUE：IP掩码（缺省 255.255.255.0）</div>
<div id="_mcePaste">&#8211;net VALUE：IP网络地址（缺省 X.X.X.0）</div>
<div id="_mcePaste">&#8211;bcast VALUE：IP广播（缺省 X.X.X.255）</div>
<div id="_mcePaste">&#8211;gw ADDRESS： 网关地址（缺省 X.X.X.X.1）</div>
<div id="_mcePaste">&#8211;dns ADDRESS： 域名服务器地址（缺省 X.X.X.1）</div>
<div></div>
<div id="_mcePaste">我们假设缺省值是可用的，那这条命令将是：</div>
<div></div>
<div id="_mcePaste">sudo vmbuilder kvm ubuntu &#8211;suite lucid &#8211;flavour virtual &#8211;arch i386 -o &#8211;libvirt qemu:///system -ip 192.1.68.0.100</div>
<div></div>
<div id="_mcePaste">为使用 bridging 修改 libvirt 模板</div>
<div></div>
<div id="_mcePaste">因为我们的装置需要被远程主机访问，我们需要配置libvirt，让装置使用桥接网络。要做到这一点，我们使用vmbuilder的模板机制来修改缺省的模板.</div>
<div></div>
<div id="_mcePaste">在我们的工作目录，我们创建模板层级，拷贝缺省的模板：</div>
<div></div>
<div id="_mcePaste">mkdir -p VMBuiblder/plugins/libvirt/templates</div>
<div id="_mcePaste">cp /etc/vmbuilder/libvirt/* VMBuilder/plugins/libvirt/templates</div>
<div></div>
<div id="_mcePaste">编辑 VMBuilder/plugins/libvirt/templates/libvirtxml.tmpl ，修改：</div>
<div id="_mcePaste">&lt;interface type=&#8217;network&#8217;&gt;</div>
<div id="_mcePaste">&lt;source network=&#8217;default&#8217;/&gt;</div>
<div id="_mcePaste">&lt;/interface&gt;</div>
<div></div>
<div id="_mcePaste">为：</div>
<div></div>
<div id="_mcePaste">&lt;interface type=&#8217;bridge&#8217;&gt;</div>
<div id="_mcePaste">&lt;source bridge=&#8217;br0&#8242;/&gt;</div>
<div id="_mcePaste">&lt;/interface&gt;</div>
<div></div>
<div id="_mcePaste">分区</div>
<div></div>
<div id="_mcePaste">虚拟装置的分区应根据你的计划来考虑。大多数的装置想要一个数据存储控件，持有一个独立的 /var 是有道理的。</div>
<div></div>
<div id="_mcePaste">为了达到这个目的，vmbuilder提供 &#8211;part ：</div>
<div></div>
<div id="_mcePaste">&#8211;path  PATH</div>
<div></div>
<div id="_mcePaste">允许你在一个分区文件内指定分区表， 定位为 PATH。分区文件的每一行都要说明（根优先）：</div>
<div></div>
<div id="_mcePaste">moutpoint size</div>
<div></div>
<div id="_mcePaste">size 的单位是MB。你可以拥有4个以上的虚拟磁盘，一个新的磁盘使用一行 ‘&#8212;‘来标识。例如：</div>
<div></div>
<div id="_mcePaste">root 1000</div>
<div id="_mcePaste">/opt 1000</div>
<div id="_mcePaste">swap 256</div>
<div id="_mcePaste">&#8212;</div>
<div id="_mcePaste">/var 2000</div>
<div id="_mcePaste">/log 1500</div>
<div></div>
<div id="_mcePaste">在我们的例子中，定义一个文本文件 vmbuilder.partition ，包含下面的内容：</div>
<div></div>
<div id="_mcePaste">root 8000</div>
<div id="_mcePaste">swap 4000</div>
<div id="_mcePaste">&#8212;</div>
<div id="_mcePaste">/var	20000</div>
<div></div>
<div id="_mcePaste">注意：我们用的是虚拟磁盘images，这里定义的实际大小是最大容量。</div>
<div></div>
<div id="_mcePaste">现在，命令行就变成这样了：</div>
<div></div>
<div id="_mcePaste">sudo vmbuilder kvm ubuntu &#8211;suite lucid &#8211;flavour virtual &#8211;arch i386 \</div>
<div id="_mcePaste">-o &#8211;libvirt qemu:///system &#8211;ip 192.168.0.100 &#8211;part vmbuilder.parttion</div>
<div></div>
<div id="_mcePaste">用户名与密码</div>
<div></div>
<div id="_mcePaste">设置一个虚拟装置，你需要提供一个缺省的用户名和密码，在你的文档里说明这个。在后面，我们讲述一下安全知识，定义一个脚本，在用户首次登录虚拟装置时运行，除了其他的事情，还提示用户修改密码，在这里例子中，我使用‘user‘作为我的用户名，‘default‘作为密码。</div>
<div></div>
<div id="_mcePaste">使用下面的可选参数：</div>
<div></div>
<div id="_mcePaste">• &#8211;user USERNAME： 设置用户的名字。 缺省是 ubuntu</div>
<div id="_mcePaste">• &#8211;name FULLNAME：设置用户的全名。缺省是 ubuntu</div>
<div id="_mcePaste">• &#8211;pass PASSWORD：设置用户的密码。缺省也是 ubuntu</div>
<div></div>
<div id="_mcePaste">现在，我们的命令行：</div>
<div></div>
<div id="_mcePaste">sudo vmbuilder kvm ubuntu &#8211;suite lucid &#8211;flavour virtual &#8211;arch i386 \</div>
<div id="_mcePaste">-o &#8211;libvirt qemu:///system &#8211;ip 192.168.0.100 &#8211;part vmbuilder.partition \</div>
<div id="_mcePaste">&#8211;user user &#8211;name user &#8211;pass default</div>
<div></div>
<div id="_mcePaste">安装需要的包</div>
<div></div>
<div id="_mcePaste">在这个例子里，我们安装一个包（Limesurvey），它访问一个MySQL数据库，拥有一个web接口。我们需要这个OS给我们提供这些：</div>
<div></div>
<div id="_mcePaste">• Apache</div>
<div id="_mcePaste">• PHP</div>
<div id="_mcePaste">• MySQL</div>
<div id="_mcePaste">• OpenSSH Server</div>
<div id="_mcePaste">• Limesurvey （作为我们必要打包的样例应用）</div>
<div></div>
<div id="_mcePaste">需要使用 &#8211;addpkg 选项多次：</div>
<div></div>
<div id="_mcePaste">&#8211;addpkg PKG</div>
<div></div>
<div id="_mcePaste">安装PKG到guest（可以被指定多次）</div>
<div></div>
<div id="_mcePaste">由于 vmbuilder操作的方式，在安装过程里需要提问的包不被支持，这些包应该在交互出现时安装。Limesurvey就是这样的例子，应该在登录后安装。</div>
<div></div>
<div id="_mcePaste">问简单debconf问题的其他的包，例如mysql-server要求设置密码，这包可以被即时安装，但我们需要在登录后进行重新配置。</div>
<div></div>
<div id="_mcePaste">如果要安装某些不在main仓库的包，我们需要打开附加仓库，使用 &#8211;comp 和  &#8211;ppa：</div>
<div></div>
<div id="_mcePaste">&#8211;components COMP1,COMP2,&#8230;,COMPN</div>
<div></div>
<div id="_mcePaste">用逗号分割需要包含的不同分发组件（例如，main,universe）。缺省为 main。</div>
<div></div>
<div id="_mcePaste">&#8211;ppa=PPA</div>
<div></div>
<div id="_mcePaste">增加PPA到vm的sources.list</div>
<div></div>
<div id="_mcePaste">在这个时候，Limesurvey不属于存档的一部分，我们指定它的PPA（个人包存档）地址，增加它到 VM 的 /etc/apt/source.list ， 因此，增加下面的选项到命令行：</div>
<div></div>
<div id="_mcePaste">&#8211;addpkg apache2 &#8211;addpkg apache2-mpm-prefork &#8211;addpkg apche2-utils &#8211;addpkg apache2.2-common \</div>
<div id="_mcePaste">&#8211;addpkg dbconfig-common &#8211;addpkg libapache2-mod-php5 &#8211;addpkg mysql-client &#8211;addpkg php5-cli \</div>
<div id="_mcePaste">&#8211;addpkg php5-gd &#8211;addpkg php5-ldap &#8211;addpkg php5-mysql &#8211;addpkg wwwconfig-common \</div>
<div id="_mcePaste">&#8211;addpkg mysql-server &#8211;ppa nijaba</div>
<div></div>
<div id="_mcePaste">OpenSSH</div>
<div></div>
<div id="_mcePaste">为安全着想，使用预先编写的脚本，无须与用户交互，在第一次启动时安装。</div>
<div></div>
<div id="_mcePaste">速度考虑因素</div>
<div></div>
<div id="_mcePaste">包缓存</div>
<div></div>
<div id="_mcePaste">当使用vmbuilder来创建你的系统，它要通过网络从官方仓库中获取每一个需要的包，这需要依赖你的网络速度和服务器镜像的负载情况，这对实际的建造所需要的时间影响很大。为了减少这些影响，推荐使用一个本地仓库（用apt-mirror创建），或者使用一个缓存代理，如 apt-proxy 。后面的选项更容易实现，并且需要更少的磁盘控件，被本教程使用。要安装，输入：</div>
<div></div>
<div id="_mcePaste">sudo apt-get install apt-proxy</div>
<div></div>
<div id="_mcePaste">安装后，你的代理准备对 http://mirroraddress:9999 有效， 在路径 /ubuntu 下找到ubuntu仓库。 vmbuilder 要用它，使用 &#8211;mirror 选项：</div>
<div></div>
<div id="_mcePaste">&#8211;mirror=URL</div>
<div></div>
<div id="_mcePaste">使用 Ubuntu 镜像来代替缺省的仓库（http://archive.ubuntu.com/ubuntu 官方， http://ports.ubuntu.com/ubuntu-ports 其他）</div>
<div></div>
<div id="_mcePaste">因此，我们增加到命令行的内容为：</div>
<div></div>
<div id="_mcePaste">&#8211;mirror http://mirroraddress:9999/ubuntu</div>
<div></div>
<div id="_mcePaste">注意：这里的镜像地址也会被新创建的 guest 里面的 /etc/apt/sources.list 所拥有。在这里设定一个guest能解释的地址，或者需要在后面重设这个弟子，比如在一个 &#8211;firstboot 脚本。</div>
<div></div>
<div id="_mcePaste">安装一个本地镜像</div>
<div></div>
<div id="_mcePaste">如果在一个大型的环境里，建立一个Ubuntu仓库的本地镜像是很重要的。包apt-mirror提供一个脚本给你处理镜像问题。你应该给每个支持的发行版本提供20G的自由控件。</div>
<div></div>
<div id="_mcePaste">缺省 apt-mirror 使用 /etc/apt/mirror.list 里面说明的配置文件。仅支持本地架构，如果你想你的镜像支持其他架构，仅仅重复以“deb“开头的行，使用 /deb-{arch} 把 deb 关键字替换，arch 可以是i386,amd64，等等。例如在一个amd64的机器上，为拥有 i386的档案，你可以修改为：</div>
<div></div>
<div id="_mcePaste">deb  http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse</div>
<div id="_mcePaste">/deb-i386  http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse</div>
<div id="_mcePaste">deb  http://archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse</div>
<div id="_mcePaste">/deb-i386  http://archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse</div>
<div id="_mcePaste">deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse</div>
<div id="_mcePaste">/deb-i386  http://archive.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse</div>
<div id="_mcePaste">deb http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse</div>
<div id="_mcePaste">/deb-i386  http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse</div>
<div id="_mcePaste">deb http://archive.ubuntu.com/ubuntu lucid main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer</div>
<div id="_mcePaste">/deb-i386 http://archive.ubuntu.com/ubuntu lucid main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer</div>
<div></div>
<div id="_mcePaste">注意源码包并没有放到镜像，因为很少会被用到，并且相对于二进制包，占据更多的磁盘控件，也是很容易就可以增加到列表中。</div>
<div></div>
<div id="_mcePaste">一旦镜像完成复制（需要很长的时间），你需要配置Apache，以致你的镜像文件（缺省 /var/spool/apt-mirror） 能发布到你的Apache服务器。更多的信息参考 “HTTPD-Apache2 Web Server” https://help.ubuntu.com/10.04/serverguide/C/httpd.html</div>
<div></div>
<div id="_mcePaste">安装一个RAM磁盘</div>
<div></div>
<div id="_mcePaste">如果你有足够的空闲内存，最好让 vmbuilder在RAMdisk里执行操作，加快进度：</div>
<div></div>
<div id="_mcePaste">&#8211;tmpfs OPTS 使用一个 tmpfs作为工作目录，指定它的大小或者 &#8220;-&#8221; 使用缺省设置（suid,dev,size=1G）。</div>
<div></div>
<div id="_mcePaste">如果你有1G以上的空闲内存，就使用 &#8211;tmpfs 吧。</div>
<div></div>
<div id="_mcePaste">打包应用</div>
<div></div>
<div id="_mcePaste">打包方法有两种：</div>
<div></div>
<div id="_mcePaste">• 推荐的方法是做一个Debian包。 如何打Debian包不是这个手册该讲述的时，我们在这里不使用这种方法，请读者自己看关于如何打包的文档。https://wiki.ubuntu.com/PackagingGuide</div>
<div id="_mcePaste">• 在/opt目录下，手动安装应用</div>
<div id="_mcePaste">在这里例子中，我们使用Limesurvey 作为样例Web应用，我们希望提供一个虚拟装置。就如在签名提到的，我们在PPA上做一个包的版本。</div>
<div></div>
<div id="_mcePaste">完成安装</div>
<div></div>
<div id="_mcePaste">第一次引导</div>
<div></div>
<div id="_mcePaste">我们在前面提到，机器第一次引导时，我们需要安装openssh-server，这样生成的key才是对每台机器来说是唯一的。为了做到这一点，我们写一个叫 boot.sh 的脚本：</div>
<div></div>
<div id="_mcePaste"># This script will run the first time the virtual machine boots</div>
<div id="_mcePaste"># It is ran as root</div>
<div id="_mcePaste">apt-get update</div>
<div id="_mcePaste">apt-get install -qqy &#8211;force-yes openssh-server</div>
<div></div>
<div id="_mcePaste">并且增加 &#8211;firstboot boot.sh 选项到我们的命令行。</div>
<div></div>
<div id="_mcePaste">第一次登录</div>
<div></div>
<div id="_mcePaste">Mysql和Limesurvey在setup的过程中需要和用户交互，我们编写一个脚本login.sh，在第一次用户登录时运行，来完成这些设置，同时使用这个脚本来让用户设置：</div>
<div></div>
<div id="_mcePaste">• 自己的密码</div>
<div id="_mcePaste">• 定义键盘和其他的locale信息</div>
<div></div>
<div id="_mcePaste">脚本 login.sh 内容如下：</div>
<div></div>
<div id="_mcePaste"># This script is ran the first time a user logs in</div>
<div id="_mcePaste">echo &#8220;Your appliance is about to be finished to be set up.&#8221;</div>
<div id="_mcePaste">echo &#8220;In order to do it, we&#8217;ll need to ask you a few questions,&#8221;</div>
<div id="_mcePaste">echo &#8220;starting by changing your user password.&#8221;</div>
<div id="_mcePaste">passwd</div>
<div id="_mcePaste"># give the opportunity to change the keyboard</div>
<div id="_mcePaste">sudo dpkg-reconfig console-setup</div>
<div id="_mcePaste">#install limesurvey</div>
<div id="_mcePaste">sudo apt-get install -qqy &#8211;force-yes limesurvey</div>
<div id="_mcePaste">echo &#8220;Your appliance is now configured. To use it point your&#8221;</div>
<div id="_mcePaste">echo &#8220;browser to http://serverip/limesurvey/admin&#8221;</div>
<div></div>
<div id="_mcePaste">然后，增加 &#8211;firstlogin login.sh 选项到我们的命令行。</div>
<div></div>
<div id="_mcePaste">有用的附件</div>
<div></div>
<div id="_mcePaste">配置自动升级</div>
<div></div>
<div id="_mcePaste">为了让系统能定期自动升级，我们安装 unattended-upgrades ，增加下面的选项到命令行：</div>
<div id="_mcePaste">&#8211;addpkg unattended-upgrades</div>
<div id="_mcePaste">当我们把我们的应用包放进一个PPA，每当我们更新PPA的版本，这个过程将不仅仅更新系统，而且更新应用。</div>
<div></div>
<div id="_mcePaste">ACPI事件处理</div>
<div></div>
<div id="_mcePaste">为了让你的虚拟机能处理它发出的重启和关闭事件，安装 acpid包是个好办法。增加下面的选项：</div>
<div></div>
<div id="_mcePaste">&#8211;addpkg acpid</div>
<div></div>
<div id="_mcePaste">最后的命令</div>
<div></div>
<div id="_mcePaste">这条的命令包含上面所有讨论过的选项：</div>
<div></div>
<div id="_mcePaste">sudo vmbuilder kvm ubuntu &#8211;suite lucid &#8211;flavour virtual &#8211;arch i386 -o \</div>
<div id="_mcePaste">&#8211;libvirt qemu:///system &#8211;ip 192.168.0.100 &#8211;part vmbuilder.partition &#8211;user user \</div>
<div id="_mcePaste">&#8211;name user &#8211;pass default &#8211;addpkg apache2 &#8211;addpkg apache2-mpm-prefork \</div>
<div id="_mcePaste">&#8211;addpkg apache2-utils &#8211;addpkg apache2.2-common &#8211;addpkg apache2-mpm-prefork \</div>
<div id="_mcePaste">&#8211;addpkg libapache2-mod-php5 &#8211;addpkg mysql-client &#8211;addpkg php5-cli \</div>
<div id="_mcePaste">&#8211;addpkg php5-gd &#8211;addpkg php5-ldap &#8211;addpkg php5-mysql &#8211;addpkg wwwconfig-common \</div>
<div id="_mcePaste">&#8211;addpkg mysql-server &#8211;addpkg unattended-upgrades &#8211;addpkg acpid &#8211;ppa nijaba \</div>
<div id="_mcePaste">&#8211;mirror http://mirroraddress:9999/ubuntu &#8211;tmpfs &#8211; &#8211;firstboot boot.sh \</div>
<div id="_mcePaste">&#8211;firstlogin login.sh</div>
<div></div>
<div id="_mcePaste">资源</div>
<div></div>
<div id="_mcePaste">如果你有兴趣学到更多，或者有什么问题建议，请联系Ubuntu Server Team：</div>
<div id="_mcePaste">• IRC : #ubuntu-server on freenode</div>
<div id="_mcePaste">• 电邮列表： ubuntu-server at lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-server</div>
<div id="_mcePaste">• 也可以去看 JeOSVMBuilder Ubuntu Wiki https://help.ubuntu.com/community/JeOSVMBuilder</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.zhongzichang.com/archives/235/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenNebula</title>
		<link>http://www.zhongzichang.com/archives/227</link>
		<comments>http://www.zhongzichang.com/archives/227#comments</comments>
		<pubDate>Tue, 27 Jul 2010 10:34:11 +0000</pubDate>
		<dc:creator>zhongzichang</dc:creator>
				<category><![CDATA[虚拟化]]></category>

		<guid isPermaLink="false">http://www.zhongzichang.com/?p=227</guid>
		<description><![CDATA[OpenNebula 允许虚拟机动态放置或者重新放置在一个物理资源池上。这让虚拟机在任意有效的位置上驻留。 这段将详细描述用三台机器配置OpenNebula cluster：一台 Front-End主机，和两台运行虚拟机的 Compute Nodes 。Compute Nodes需要一个bridge配置，来允许虚拟机访问本地网络。更详细的信息参考 “Bridge“ https://help.ubuntu.com/10.04/serverguide/C/network-configuration.html#bridging 。 安装 首先，在 Front-End 的终端输入 ： sudo apt-get install opennebula 在每一台 Compute Nodes 安装： sudo apt-get install opennebula-node 为了拷贝 SSH keys，oneadmin用户需要一个密码。在每一台机器上执行： sudo passwd oneadmin 下一步，拷贝 oneadmin 用户的 SSH key &#8230; <a href="http://www.zhongzichang.com/archives/227">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">OpenNebula 允许虚拟机动态放置或者重新放置在一个物理资源池上。这让虚拟机在任意有效的位置上驻留。</div>
<div id="_mcePaste">这段将详细描述用三台机器配置OpenNebula cluster：一台 Front-End主机，和两台运行虚拟机的 Compute Nodes 。Compute Nodes需要一个bridge配置，来允许虚拟机访问本地网络。更详细的信息参考 “Bridge“ https://help.ubuntu.com/10.04/serverguide/C/network-configuration.html#bridging 。</div>
<div id="_mcePaste"><strong>安装</strong></div>
<div id="_mcePaste">首先，在 Front-End 的终端输入 ：</div>
<div id="_mcePaste">sudo apt-get install opennebula</div>
<div id="_mcePaste">在每一台 Compute Nodes 安装：</div>
<div id="_mcePaste">sudo apt-get install opennebula-node</div>
<div id="_mcePaste">为了拷贝 SSH keys，oneadmin用户需要一个密码。在每一台机器上执行：</div>
<div id="_mcePaste">sudo passwd oneadmin</div>
<div id="_mcePaste">下一步，拷贝 oneadmin 用户的 SSH key 到 Compute Nodes，和到 Front-End的 authorized_keys 文件：</div>
<div id="_mcePaste">sudo scp /var/lib/one/.ssh/id_rsa.pub oneadmin@node01:/var/lib/one/.ssh/authorized_keys</div>
<div id="_mcePaste">sudo scp /var/lib/one/.ssh/id_rsa.pub oneadmin@node02:/var/lib/one/.ssh/authorized_keys</div>
<div id="_mcePaste">sudo sh -c &#8220;cat /var/lib/one/.ssh/id_rsa.pub &gt;&gt; /var/lib/one/.ssh/authorized_keys</div>
<div id="_mcePaste">为了让除了 oneadmin 以外的其他用户能ssh到每一台 Compute Node，给 Compute Nodes 的 SSH key 需要增加到Front-End的 /etc/ssh/ssh_known_hosts 文件。然后退出 SSH 会话，执行下面拷贝 SSH key 从 ~/.ssh/known_hosts 到 /etc/ssh/ssh_known_hosts：</div>
<div id="_mcePaste">sudo sh -c &#8220;ssh-keygen -f .ssh/known_hosts -F node01 1&gt;&gt; /etc/ssh/ssh_known_hosts&#8221;</div>
<div id="_mcePaste">sudo sh -c &#8220;ssh-keygen -f .ssh/known_hosts -F node02 1&gt;&gt; /etc/ssh/ssh_known_hosts&#8221;</div>
<div id="_mcePaste">注意：用适当的主机名字替换掉 node01 和 node02。</div>
<div id="_mcePaste">这允许 oneadmin 在不用交互输入密码的情况下使用scp，来部署一个镜像到 Compute Nodes.</div>
<div id="_mcePaste">在 Front-End 上创建一个目录，用来存储 VM镜像。你可以使用vmbuilder来创建 Ubuntu虚拟主机， 参考 &#8220;JeOS and vmbuilder&#8221; https://help.ubuntu.com/10.04/serverguide/C/jeos-and-vmbuilder.html 获得更详细的信息。</div>
<div id="_mcePaste"><strong>配置</strong></div>
<div id="_mcePaste">OpenNebula Cluster 开始配置了，增加虚拟机到 cluster。</div>
<div id="_mcePaste">从终端提示符那里输入：</div>
<div id="_mcePaste">onehost create node01 im_kvm vmm_kvm tm_ssh</div>
<div id="_mcePaste">onehost create node02 im_kvm vmm_kvm tm_ssh</div>
<div id="_mcePaste">下一步，创建一个虚拟网络模板文件，名为 vnet01.template：</div>
<div id="_mcePaste">NAME				= &#8220;LAN&#8221;</div>
<div id="_mcePaste">TYPE				= RANGED</div>
<div id="_mcePaste">BRIDGE				= br0</div>
<div id="_mcePaste">NETWORK_SIZE		= C</div>
<div id="_mcePaste">NETWORK_ADDRESS	= 192.168.0.0</div>
<div id="_mcePaste">注意：确保修改 192.168.0.0 为你的本地网络。</div>
<div id="_mcePaste">使用 onevnet 工具，增加这个虚拟网络给 OpenNebula ：</div>
<div id="_mcePaste">onevnet create vnet01.template</div>
<div id="_mcePaste">现在，创建一个VM模板文件，名字为 vm01.template：</div>
<div id="_mcePaste">NAME		= vm01</div>
<div id="_mcePaste">CPU			= 0.5</div>
<div id="_mcePaste">MEMORY		= 512</div>
<div id="_mcePaste">OS			= [ BOOT = hd ]</div>
<div id="_mcePaste">DISK		= [</div>
<div id="_mcePaste">source	= "/var/lib/one/images/vm01.qcow2",</div>
<div id="_mcePaste">target	= "hda",</div>
<div id="_mcePaste">readonly	= "no" ]</div>
<div id="_mcePaste">NIC			= [ NETWORK = "LAN" ]</div>
<div id="_mcePaste">GRAPHICS	= [ type="vnc", listen="127.0.0.1", port="-1" ]</div>
<div id="_mcePaste">使用 onevm 启动虚拟机：</div>
<div id="_mcePaste">onevm submit vm01.template</div>
<div id="_mcePaste">用 onevm list 选项来查看虚拟机的信息。同样， onevm show vm01 选项将显示更多关于一个指定虚拟机的细节。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.zhongzichang.com/archives/227/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>libvirt</title>
		<link>http://www.zhongzichang.com/archives/221</link>
		<comments>http://www.zhongzichang.com/archives/221#comments</comments>
		<pubDate>Tue, 27 Jul 2010 10:18:04 +0000</pubDate>
		<dc:creator>zhongzichang</dc:creator>
				<category><![CDATA[虚拟化]]></category>

		<guid isPermaLink="false">http://www.zhongzichang.com/?p=221</guid>
		<description><![CDATA[原文链接 libvirt 用作为不同虚拟化技术的接口。在开始了解libvirt之前，最好确定你的硬件支持KVM必需的虚拟话扩展。在控制台输入下面的命令： kvm-ok 将打印出一条信息，告诉你你的CPU是否支持硬件虚拟化。 注意：对大多数的机器，处理器是支持虚拟化的，需要在BIOS里面激活这个选项。 虚拟化网络 有多种不同的方法允许一个虚拟机访问外部网络。缺省的虚拟网络配置是 usermode 网络，它使用SLIRP协议，被NATed的流量通过主机接口到达外部网络。 让外部主机直接访问虚拟机上的服务，需要配置一个bridge。才能让虚拟接口通过物理接口来连接外部网络，对网络上的其他主机，他们表现的像正常的主机。更多的信息关于设置一个bridge，请看 &#8220;Bridaging&#8221; 这一段 https://help.ubuntu.com/10.04/serverguide/C/network-configuration.html#bridging 。 安装 安装需要的包，在终端提示符那里输入下面的命令： sudo apt-get install kvm libvirt-bin 安装完 libvirt-bin 之后，用来管理虚拟机的用户将需要增加到 libvirtd 组。 这样，他就会获得访问高级网络选项的能力。 在终端中输入： sudo adduser $USER libvirtd 注意：如果选择的是当前用户，要让新的组成员关系生效，你需要重新登录一次。 现在，你准备要安装一个 Guest operating system. 安装一个虚拟机，和直接在硬件上安装操作系统的步骤是一样的。 你需要一种自动安装的方法，或者需要一个键盘和显示器，连接到物理机器上的。 &#8230; <a href="http://www.zhongzichang.com/archives/221">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div><a href="https://help.ubuntu.com/10.04/serverguide/C/libvirt.html" target="_blank">原文链接</a> libvirt 用作为不同虚拟化技术的接口。在开始了解libvirt之前，最好确定你的硬件支持KVM必需的虚拟话扩展。在控制台输入下面的命令：</div>
<div id="_mcePaste">kvm-ok</div>
<div id="_mcePaste">将打印出一条信息，告诉你你的CPU是否支持硬件虚拟化。</div>
<div id="_mcePaste">注意：对大多数的机器，处理器是支持虚拟化的，需要在BIOS里面激活这个选项。</div>
<div id="_mcePaste"><strong>虚拟化网络</strong></div>
<div id="_mcePaste">有多种不同的方法允许一个虚拟机访问外部网络。缺省的虚拟网络配置是 usermode 网络，它使用SLIRP协议，被NATed的流量通过主机接口到达外部网络。</div>
<div id="_mcePaste">让外部主机直接访问虚拟机上的服务，需要配置一个bridge。才能让虚拟接口通过物理接口来连接外部网络，对网络上的其他主机，他们表现的像正常的主机。更多的信息关于设置一个bridge，请看 &#8220;Bridaging&#8221; 这一段 https://help.ubuntu.com/10.04/serverguide/C/network-configuration.html#bridging 。</div>
<div id="_mcePaste"><strong>安装</strong></div>
<div id="_mcePaste">安装需要的包，在终端提示符那里输入下面的命令：</div>
<div id="_mcePaste">sudo apt-get install kvm libvirt-bin</div>
<div id="_mcePaste">安装完 libvirt-bin 之后，用来管理虚拟机的用户将需要增加到 libvirtd 组。 这样，他就会获得访问高级网络选项的能力。</div>
<div id="_mcePaste">在终端中输入：</div>
<div id="_mcePaste">sudo adduser $USER libvirtd</div>
<div id="_mcePaste">注意：如果选择的是当前用户，要让新的组成员关系生效，你需要重新登录一次。</div>
<div id="_mcePaste">现在，你准备要安装一个 Guest operating system. 安装一个虚拟机，和直接在硬件上安装操作系统的步骤是一样的。 你需要一种自动安装的方法，或者需要一个键盘和显示器，连接到物理机器上的。</div>
<div id="_mcePaste">在这个虚拟机器的案例中，类似一个 GUI使用物理键盘和鼠标。不安装一个GUI，virt-viewer使用VNC可以用来连接一个虚拟机器的控制台。参考 “Virtual Machine Viewer“ https://help.ubuntu.com/10.04/serverguide/C/libvirt.html#libvirt-virt-viewer 获得更多信息。</div>
<div id="_mcePaste">有几种方法可以让Ubuntu的安装过程自动化，例如，使用 preseeds, kickstart, 等等。参考 Ubuntu Installation Guide https://help.ubuntu.com/10.04%20LTS/installation-guide/ 获得更详细的信息。</div>
<div id="_mcePaste">另外一种安装Ubuntu虚拟机的方法是使用 ubuntu-vm-builder。ubuntu-vm-builder 允许你设置高级分区，执行自定义的 post-install 脚本，等等。更多的信息请看这段 “ JeOS and vmbuilder“ https://help.ubuntu.com/10.04/serverguide/C/jeos-and-vmbuilder.html。</div>
<div id="_mcePaste"><strong>virt-intall</strong></div>
<div id="_mcePaste">virt-install 是 python-virtinst 包的一部分。要安装它，在终端提示符下输入：</div>
<div id="_mcePaste">sudo apt-get install python-virtinst</div>
<div id="_mcePaste">virt-install有几个有效的选项。例如：</div>
<div id="_mcePaste">sudo virt-install -n web_devel -r 256 -f web_devel.img \</div>
<div id="_mcePaste">-s 4 -c jeos.iso &#8211;accelerate \</div>
<div id="_mcePaste">&#8211;connect=qemu:////system &#8211;vnc \</div>
<div id="_mcePaste">&#8211;noautoconsole -v</div>
<div id="_mcePaste">-n web_devel	在这里例子中，新的虚拟机的名字将会是 web_devel</div>
<div id="_mcePaste">-r 256		虚拟机使用的内存总数是256</div>
<div id="_mcePaste">-f web_devel.img	指出虚拟盘的路径，可以为一个文件，分区或者逻辑卷标。在这个例子为一个名为 web_devel.img 的文件</div>
<div id="_mcePaste">-s 4			虚拟盘的大小</div>
<div id="_mcePaste">-c jeos.iso	用作虚拟CDROM的文件。这个文件可以是一个ISO文件或者指向主机CDROM设备</div>
<div id="_mcePaste">&#8211;accelerate	打开内核加速技术</div>
<div id="_mcePaste">&#8211;vnc		用VNC输出虚拟的控制台</div>
<div id="_mcePaste">&#8211;noautoconsole	不自动连接到虚拟机控制台</div>
<div id="_mcePaste">-v			创建一个完全虚拟化的guest</div>
<div id="_mcePaste">执行 virt-install 后，你可以在本地使用一个GUI连接虚拟机控制台或者使用virt-viewer工具。</div>
<div id="_mcePaste"><strong>virt-clone</strong></div>
<div id="_mcePaste">virt-clone 应用拷贝 虚拟机。例如：</div>
<div id="_mcePaste">sudo virt-clone -o web_devel -n database_devel -f /path/to/database_devel.img &#8211;connect=qemu:///system</div>
<div id="_mcePaste">-o		原虚拟机</div>
<div id="_mcePaste">-n		新的虚拟机名字</div>
<div id="_mcePaste">-f		文件的路径，逻辑卷标，或者分区（新虚拟机使用）</div>
<div id="_mcePaste">-connect	指定哪一个管理程序来连接</div>
<div id="_mcePaste">同样，也可以使用 -d 或者 -debug 选项对 virt-clone 进行故障检测。</div>
<div id="_mcePaste">注意：可使用适当的虚拟机名字替代 web_devel 和 database_devel。</div>
<div id="_mcePaste"><strong>虚拟机管理</strong></div>
<div id="_mcePaste"><strong>virsh</strong></div>
<div id="_mcePaste">有个有效的工具管理虚拟机和libvirt。virsh工具使用命令行的方式。下面是一些例子：</div>
<div id="_mcePaste">+ 列出正在运行的虚拟机</div>
<div id="_mcePaste">virsh -c qemu:///system list</div>
<div id="_mcePaste">+ 启动一个虚拟机</div>
<div id="_mcePaste">virsh -c qemu:///system start web_devel</div>
<div id="_mcePaste">+ 类似，在引导时启动一个虚拟机</div>
<div id="_mcePaste">virsh -c qemu:///system autostart web_devel</div>
<div id="_mcePaste">+ 重启一个虚拟机</div>
<div id="_mcePaste">virsh -c qemu:///system reboot web_devel</div>
<div id="_mcePaste">+ 虚拟机的状态可以保存在一个文件中，便于后来的恢复。下面将保存虚拟机状态到一个文件中，以日期命名：</div>
<div id="_mcePaste">virsh -c qemu:///system save web_devel web_devel-022708.state</div>
<div id="_mcePaste">一旦保存，虚拟机将不再运行</div>
<div id="_mcePaste">+ 恢复保存状态的虚拟机的运行</div>
<div id="_mcePaste">virsh -c qemu:///system restore web_devel-022708.state</div>
<div id="_mcePaste">+ 关闭虚拟机</div>
<div id="_mcePaste">virsh -c qemu:///system shutdown web_devel</div>
<div id="_mcePaste">+ 在虚拟机中状态CDROM</div>
<div id="_mcePaste">virsh -c qemu:///system attach-dish web_devel /dev/crom /media/cdrom</div>
<div id="_mcePaste">注意：在上面的例子中，用适当的虚拟机名字替换 web_devel，而 web_devel-022708.state 作为描述文件名也一样。</div>
<div id="_mcePaste"><strong>Virtual Machine Manager</strong></div>
<div id="_mcePaste">virt-manager 包，内含一个图形工具，管理本地和远程的虚拟机。安装virt-manager ，输入：</div>
<div id="_mcePaste">sudo apt-get install virt-manager</div>
<div id="_mcePaste">由于 virt-manager 需要一个GUI环境，推荐安装在工作站或者测试机器上。连接本地 libvirt 服务，输入:</div>
<div id="_mcePaste">virt-manager -c qemu:///system</div>
<div id="_mcePaste">你可以连接运行在另一台主机上的libvirt服务，在终端提示符下输入：</div>
<div id="_mcePaste">virt-manager -c qemu+ssh://virtnode1.mydomain.com/system</div>
<div id="_mcePaste">注意：上面的例子中， 在管理系统和virtnode1.mydomain.com之间的SSH连接是已经被配置好的，使用 SSH keys 来验证。SSH keys需要是因为 libvirt 发送密码提示符给另一个进程。关于SSH配置的更详细信息请参考 “OpenSSH Sever“ https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html。</div>
<div id="_mcePaste"><strong>Virtual Machine Viewer</strong></div>
<div id="_mcePaste">virt-viewer应用允许你连接到一个虚拟机控制台。virt-viewer需要GUI支持。</div>
<div id="_mcePaste">安装 virt-viewer ：</div>
<div id="_mcePaste">sudo apt-get install virt-viewer</div>
<div id="_mcePaste">一旦虚拟机被安装和运行，你可以使用下面的命令来连接到虚拟机控制台：</div>
<div id="_mcePaste">virt-viewer -c qemu:///system web_devel</div>
<div id="_mcePaste">类似于 virt-manager，virt-viewer 能使用key认证的SSH连接到远程主机，如下：</div>
<div id="_mcePaste">virt-viewer -c qemu+ssh://virtnode1.mydomain.com/system web_devel</div>
<div id="_mcePaste">确信使用适当的虚拟机名字替换掉 web_devel。</div>
<div id="_mcePaste">如果配置了一个bridged网络接口，就可以配置SSH来访问虚拟主机，参考 &#8220;OpenSSH Server&#8221;</div>
<div>https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html 和 &#8221; Bridging&#8221;  https://help.ubuntu.com/10.04/serverguide/C/network-configuration.html#bridging 获得更详细的信息。</div>
<div id="_mcePaste"><strong>资源</strong></div>
<div id="_mcePaste">• KVM 的主页 http://kvm.qumranet.com/kvmwiki</div>
<div id="_mcePaste">• libvirt 的主页 http://libvirt.org/</div>
<div id="_mcePaste">• Virtual Machine Manager 主站 http://virt-manager.et.redhat.com/</div>
<div id="_mcePaste">• #freednode 上的 ubuntu-virt IRC 频道，讨论Ubuntu的虚拟化技术 http://freenode.net/</div>
<div id="_mcePaste">• Ubuntu Wiki KVM  https://help.ubuntu.com/community/KVM</div>
]]></content:encoded>
			<wfw:commentRss>http://www.zhongzichang.com/archives/221/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

