墨莨 發表於 2015-7-6 15:33:01

Linux系统下Xen虚拟机的安装和配置详细教程

<p>注 1 :本次实验环境 真机 CentOS 5.8 32位, 虚拟机 CentOS 5.2 32位, 真机IP: 192.168.100.117</p>
<p>注 2 :实验前一定要先记下真机的 MAC 地址,以免以后不能上网用,我这里的 MAC 是 00:1D:7D:CD:D7:74</p>
<p><strong>第一步 查看硬件支持</strong></p>
<p>1. 半虚拟化硬件要求</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode211"># cat /proc/cpuinfo | grep flags&lt;/p&gt;
&lt;p&gt;flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm&lt;/p&gt;
&lt;p&gt;pbe nx lm constant_tsc pni monitor ds_cpl est tm2 cid cx16 xtpr lahf_lm</div></p>
<p>如果出现 pae 字符,表示支持半虚拟化; 我们这次就是使用半虚拟化实验。</p>
<p>2. 全虚拟化硬件要求</p>
<p>由于我没有支持的硬件,大概说下,查询命令和上面的一样</p>
<p>Inter 的 CPU 要出现 pae vmx ;&nbsp; AMD 的 CPU 要出现 pae svm</p>
<p><br />&nbsp;</p>
<p><strong>第二步 安装 Xen 核心软件</strong></p>
<p>注意要先关闭selinux和禁止netmanager</p>
<p>在<br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode212">/etc/sysconfig/network-script/ifcfg-eth0</div>中加入</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode213">NM_CONTROLLED=no</div></p>
<p><br />1. 基本安装和检测</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode214"># yum install xen* kernel-xen*&lt;/p&gt;
&lt;p&gt;<br /># vi /boot/grub/menu.lst&lt;/p&gt;
&lt;p&gt;<br />&lt;strong&gt;default=0&lt;/strong&gt;<br />&amp;nbsp;timeout=5<br />&amp;nbsp;splashimage=(hd0,0)/grub/splash.xpm.gz<br />&amp;nbsp;hiddenmenu<br />&amp;nbsp;&lt;strong&gt;title CentOS (2.6.18-308.4.1.el5xen)&lt;/strong&gt;<br />&amp;nbsp;         root (hd0,0)<br />&amp;nbsp;         kernel /xen.gz-2.6.18-308.4.1.el5<br />&amp;nbsp;         module /vmlinuz-2.6.18-308.4.1.el5xen ro root=LABEL=/ rhgb quiet<br />&amp;nbsp;         module /initrd-2.6.18-308.4.1.el5xen.img<br />&amp;nbsp;         title CentOS (2.6.18-308.4.1.el5)<br />&amp;nbsp;         root (hd0,0)<br />&amp;nbsp;         kernel /vmlinuz-2.6.18-308.4.1.el5 ro root=LABEL=/ rhgb quiet<br />&amp;nbsp;         initrd /initrd-2.6.18-308.4.1.el5.img<br />&amp;nbsp;</div><br /></p>
<p>看到上面的 el5xen 内核版本的系统了吗?将 default 改为 0 就是以它启动。</p>
<p>然后,重启服务器</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode215"># shutdown -r now</div></p>
<p><br />启动好后,再次确认是否是以 Xen 内核启动的</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode216"># uname -r&lt;/p&gt;
&lt;p&gt;2.6.18-308.4.1.el5xen</div></p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode217"><br /># &lt;span&gt;chkconfig --list | grep xen&lt;/span&gt;<br />&amp;nbsp;xend            0:关闭1:关闭2:启用&lt;strong&gt;3:启用&lt;/strong&gt;4:启用&lt;strong&gt;5:启用&lt;/strong&gt;6:关闭<br />&amp;nbsp;xendomains      0:关闭1:关闭2:关闭&lt;strong&gt;3:启用&lt;/strong&gt;4:启用&lt;strong&gt;5:启用&lt;/strong&gt;6:关闭<br />&amp;nbsp;# &lt;span&gt;pstree -p | grep xen&lt;/span&gt;<br />&amp;nbsp;            |             |-xenbus(14)<br />&amp;nbsp;            |             `-xenwatch(13)<br />            &amp;nbsp;|-xenconsoled(2860)---{xenconsoled}(2861)<br />            &amp;nbsp;|-xend(2856)---xend(2858)-+-{xend}(28 62)<br />&amp;nbsp;            |                         |-{xend}(2866)<br />&amp;nbsp;            |                         |-{xend}(2867)<br />            &amp;nbsp;|                         |-{xend}(3086)<br />&amp;nbsp;            |                         `-{xend}(3087)<br />&amp;nbsp;            |-xenstored(2852)<br /># &lt;span&gt;xm list&lt;/span&gt;<br />&amp;nbsp;Name                                    ID Mem(MiB) VCPUs State   Time(s)<br />&amp;nbsp;&lt;span&gt;Domain-0&lt;/span&gt;                                 0   1763   2 r-----   37.1<br />&amp;nbsp;</div><br />如果上面几步有颜色和加粗部分和我差不多的话,说明启动成功了!</p>
<p>&nbsp;</p>
<p>2. Xen 的软件结构</p>
<p>/usr/sbin/xend&nbsp;&nbsp;&nbsp;&nbsp; xend的启动脚本,我最爱的 python 写的</p>
<p><br />/usr/sbin/xm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 管理 xen 的命令,输入 xm help 查询用法</p>
<p><br />/etc/xen/xend-config.sxp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个是 xend 配置文件,一般不用动</p>
<p><br />/etc/xen/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 里面包含数个 domain-U 的配置范本, xmexample.hvm 可作为完整虚拟的范本</p>
<p><br />/etc/xen/auto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统开机就自动启动某个 domain-U ,下面的举例用法:</p>
<p><br /># cd /etc/xen/auto/</p>
<p><br /># ln -s ../xmexample.hvm .</p>
<p><br />这样系统启动的时候就启动 xmexample 了,但是不要这么直接用(鸟哥说的)</p>
<p>/etc/xen/scripts&nbsp;&nbsp; 包括虚拟设备的启动、网络的启动等</p>
<p>&nbsp;</p>
<p><strong>第三步 安装虚拟系统</strong></p>
<p>1. 先创建一个目录用来放虚拟系统(目录自己定)</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode218"># cd /var&lt;/p&gt;
&lt;p&gt;# mkdir vps</div></p>
<p><br />我们这里使用 /var/vps 这个目录</p>
<p>&nbsp;</p>
<p>2. 然后制作一个空映像文件来放系统</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode219"># dd if=/dev/zero of=/var/vps/vps1.img bs=1M count=8000</div></p>
<p><br />count 就是大小; 小二,给我来 8G 空间</p>
<p>&nbsp;</p>
<p>3. 安装 vsftp 并把光驱中的 系统 挂载到 ftp 目录下</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode220"># yum install vsftpd&lt;/p&gt;
&lt;p&gt;<br /># service vsftpd start</div></p>
<p><br />这样一个匿名 FTP 就可以用了,下载挂载光驱</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode221"># mount /dev/cdrom /var/ftp/pub/</div></p>
<p><br />测试下是不是挂载成功了,从浏览器中访问</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode222">ftp://192.168.100.117/pub/&lt;/p&gt;
&lt;p&gt;e2fsck&rsquo;s blog http://www.e2fsck.org</div></p>
<p>能看到光盘内容说明成功了。</p>
<p>&nbsp;</p>
<p>4. 进入 /var/vps 目录建立虚拟机</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode223"># cd /var/vps/&lt;/p&gt;
&lt;p&gt;<br /># virt-install &ndash;prompt&lt;/p&gt;
&lt;p&gt;<br />What is the name of your virtual machine? vps1                     #输入名字&lt;/p&gt;
&lt;p&gt;How much RAM should be allocated (in megabytes)? 415               #内存大小&lt;/p&gt;
&lt;p&gt;What would you like to use as the disk (file path)? /var/vps/vps1.img      #存放位置,写上面 of 后的地址&lt;/p&gt;
&lt;p&gt;What is the install URL? ftp://192.168.100.117/pub/            #安装文件在哪</div></p>
<p><br />接下来就是 TEXT 安装模式</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode224">Welcome to CentOS                                                                                                                                                                  +---------+ Choose a Language +---------+          <br />                              |                                       |                  <br />                  | What language would you like to use   |             <br />                           | during the inst<br />allation process?      |                  <br />                  |                                       |                  <br />                  |       Catalan                ^      |                  <br />                  |       Chinese(Simplified)    :      |                  <br />                  |       Chinese(Traditional)   #      |                  <br />                  |       Croatian               :      |                  <br />                  |       Czech                  :      |                  <br />                  |       Danish               :      |                  <br />                  |       Dutch                  :      |                  <br />                  |       English                v      |                  <br />                  |                                       |                  <br />                  |                +----+               |                  <br />                  |                | OK |               |                  <br />                  |                +----+               |                  <br />                  |                                       |                  <br />                  |                                       |                  <br />                  +---------------------------------------+               <br /> <br />/ between elements|selects |next screen <br /> </div><br /></p>
<p>文本模式安装不难,如果有问题,网上搜搜</p>
<p>安装好后,重启,出现:</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode225">CentOS release 5.2 (Final)&lt;/p&gt;
&lt;p&gt;Kernel 2.6.18-92.el5xen on an i686&lt;/p&gt;
&lt;p&gt;localhost.localdomain login: root&lt;/p&gt;
&lt;p&gt;Password: &lt;/p&gt;
&lt;p&gt;#</div></p>
<p>输入帐号密码就进去了</p>
<p>退出的按键和 telnet 的一样:&nbsp; CTRL + ]</p>
<p><br />&nbsp;</p>
<p>5. 管理 Xen 虚拟机</p>
<p>查看当前系统中的虚拟机普通信息</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode226"># &lt;span id="comm"&gt;xm list&lt;/span&gt;<br />&amp;nbsp;Name                                    ID Mem(MiB) VCPUs State   Time(s)<br />&amp;nbsp;Domain-0                                 0   1599   2 r-----    421.9<br />&amp;nbsp;vps1                                       2      415   1 -b----   24.9<br />&amp;nbsp;</div><br /></p>
<p>顺便讲下上面 State 的 6 种状态:</p>
<p>r &ndash; 运行、b &ndash; 阻塞(不运行状态或者是 sleep 状态)、p &ndash; 暂停(可能执行了 xm pause)、s &ndash; 关闭、c &ndash; 崩溃、d &ndash; 垂死</p>
<p><br />&nbsp;</p>
<p>查看虚拟机的负载</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode227"># xm top</div></p>
<p><br />关闭虚拟机</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode228"># xm shutdown vps1</div></p>
<p><br />进入虚拟机</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode229"># xm console vps1</div></p>
<p><br />启动虚拟机</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode230"># xm create vps1</div></p>
<p><br />把 vps1 加入到真机启动自启动</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode231"># ln -s /etc/xen/vps1 /etc/xen/auto/vps1</div></p>
<p><br />其它参数输入 xm help</p>
<p>&nbsp;</p>
<p>6. Xen虚拟机复制</p>
<p>先关闭虚拟机</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode232"># xm shutdown vps1</div></p>
<p><br />复制虚拟机的镜像文件和配置文件</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode233"># cp /var/vps/vps1.img /var/vps/vps2.img&lt;/p&gt;
&lt;p&gt;<br /># cp /etc/xen/vps1 /etc/xen/vps2</div></p>
<p><br />修改新复制虚拟机的配置文件</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode234"># vi /etc/xen/vps2</div></p>
<p><br />原内容为:</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode235">name = "vps1"&lt;/p&gt;
&lt;p&gt;uuid = "1f251cca-5ea2-49fb-95e6-3b08359e6d33"&lt;/p&gt;
&lt;p&gt;maxmem = 415&lt;/p&gt;
&lt;p&gt;memory = 415&lt;/p&gt;
&lt;p&gt;vcpus = 1&lt;/p&gt;
&lt;p&gt;bootloader = "/usr/bin/pygrub"&lt;/p&gt;
&lt;p&gt;on_poweroff = "destroy"&lt;/p&gt;
&lt;p&gt;on_reboot = "restart"&lt;/p&gt;
&lt;p&gt;on_crash = "restart"&lt;/p&gt;
&lt;p&gt;disk = [ "tap:aio:/var/vps/vps1.img,xvda,w" ]&lt;/p&gt;
&lt;p&gt;vif = [ "mac=00:16:3e:44:09:ca,bridge=xenbr0,script=vif-bridge" ]</div></p>
<p>修改后为:</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode236">name = "vps2"&lt;/p&gt;
&lt;p&gt;uuid = "1f251cca-5ea2-49fb-95e6-3b08359e6d34"&lt;/p&gt;
&lt;p&gt;maxmem = 415&lt;/p&gt;
&lt;p&gt;memory = 415&lt;/p&gt;
&lt;p&gt;vcpus = 1&lt;/p&gt;
&lt;p&gt;bootloader = "/usr/bin/pygrub"&lt;/p&gt;
&lt;p&gt;on_poweroff = "destroy"&lt;/p&gt;
&lt;p&gt;on_reboot = "restart"&lt;/p&gt;
&lt;p&gt;on_crash = "restart"&lt;/p&gt;
&lt;p&gt;disk = [ "tap:aio:/var/vps/vps2.img,xvda,w" ]&lt;/p&gt;
&lt;p&gt;vif = [ "mac=00:16:3e:44:09:cb,bridge=xenbr0,script=vif-bridge" ]</div></p>
<p><br />注: 就是要保证 name、uuid、mac 唯一,然后把 disk 路径改了</p>
<p><br />然后启动并进入新的虚拟机</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode237"># xm create -c vps2</div></p>
<p><br />修改主机名和IP</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode238"># vi /etc/hosts&lt;/p&gt;
&lt;p&gt;<br /># vi /etc/sysconfig/network</div></p>
<p><br />上面2个比较简单,我就不说了</p>
<p><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode239"># hostname vps2&lt;/p&gt;
&lt;p&gt;# vi /etc/sysconfig/network-scripts/ifcfg-eth0&lt;/p&gt;
&lt;p&gt;<br /># Xen Virtual Ethernet&lt;/p&gt;
&lt;p&gt;DEVICE=eth0&lt;/p&gt;
&lt;p&gt;BOOTPROTO=static&lt;/p&gt;
&lt;p&gt;HWADDR=00:16:3E:44:09:CB         #这里最好换成上面修改过的配置文件中的MAC地址&lt;/p&gt;
&lt;p&gt;ONBOOT=yes&lt;/p&gt;
&lt;p&gt;IPADDR=192.168.100.167&lt;/p&gt;
&lt;p&gt;NETMASK=255.255.255.0&lt;/p&gt;
&lt;p&gt;NETWORK=192.168.100.0&lt;/p&gt;
&lt;p&gt;GATEWAY=192.168.100.1</div><br /></p>
頁: [1]
查看完整版本: Linux系统下Xen虚拟机的安装和配置详细教程