热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

使用Xen建立虚拟机环境

一,概述在Linux安装好Xen后接下来的工作就是如何创建和启动一个虚拟机。这个看似很简单的问题难住了不少人,VPSee收到不少邮件关于如何快速创建和部署虚拟机镜像的。创建虚拟机的工具有很多,比如:virt-manager,virt-install,virsh,xen-create-image

一,概述

         在Linux安装好Xen后接下来的工作就是如何创建和启动一个虚拟机。这个看似很简单的问题难住了不少人,VPSee 收到不少邮件关于如何快速创建和部署虚拟机镜像的。

创建虚拟机的工具有很多,比如 :

virt-manager,      virt-install,       virsh,       xen-create-image

      不过这些工具都要每次重头安装虚拟机的操作系统,需要人机交互、速度慢、不自动,不利于写成脚本。

有什么快速的创建/部署/克隆虚拟机的办法呢?

         可以先做一个模版,然后通过拷贝模版的办法。我们只需要两个步骤:

1、创建一个空白文件镜像;

2、然后把一个打包好的 Linux 系统模版拷贝过去。通常一个打包好的最小 Linux 系统只要200MB 左右,

     在高配置的服务器上拷贝基本能瞬间完成,比起拷贝整个虚拟机镜像文件(比如 10GB)要快得多。

二,配置步骤

1、创建一个磁盘镜像文件:

# dd if=/dev/zero of=vpsee.img bs=1 count=1 seek=10G

2、格式化磁盘:

# mkfs.ext3 vpsee.img

3、挂载刚刚创建的磁盘镜像文件:

# mount -o loop vpsee.img /mnt

4、找个现有 Linux 的文件系统拷贝过去:

# tar -zxSf centos.tar.gz -C /mnt/

需要说明的是,这里的 centos.tar.gz  是提前制作好的,方法是:

可以在一个干净的虚拟机上手动安装好一个最小的 CentOS 系统,然后配置和优化好,这样就是一个模板,

以后如果创建新的 CentOS 虚拟机就可以从这个模板直接拷贝。

打包存为模版,命令如下:

# tar -zcvpf  centos.tar.gz  --exclude=/centos.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev   /

#上面命令是打包整个 /  根目录,但用--exclude 选项来排除 /  根目录 下某些文件 !

5、卸载 /mnt:

# umount mnt

6、创建一个交换分区:

# dd if=/dev/zero of=vpsee-swap.img bs=1M count=256

7、创建和编辑一个 Xen 虚拟机的启动文件:

# vi /etc/xen/vpsee.conf
name            = 'vpsee'
vcpus           = 1
memory          = '256'
disk            = [ 'tap:aio:/home/vpsee/vpsee.img,sda1,w',
'tap:aio:/home/vpsee/vpseeswap.img,sda2,w',]
vif             = [ 'bridge=eth0' ]
root            = '/dev/sda1 ro'
on_reboot       = 'restart'
on_crash        = 'restart'
kernel          = "/boot/vmlinuz-2.6.18-194.32.1.el5xen"
ramdisk         = "/boot/initrd-2.6.18-194.32.1.el5xen.img"

8、启动 Xen 虚拟机:

# xm create vpsee

二,xen 虚机存储详解

我们虚拟的系统应该有一个存储的地方,也就是文件系统。被虚拟的系统能安装和运行在哪些文件系统上呢?能安装和运行在一个实际的物理分区上,一个映像文件中,或NFS等网络文件系统中



2.2  以实际物理硬盘做为虚拟操作系统文件系统;


以实际物理硬盘分区做为虚拟操作系统的文件系统,要经过硬盘分区,创建文件系统流程;

请参考:《Linux 创建文件系统及挂载文件系统流程详解》

 
 准备物理分区及创建文件系统;

《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》
《实例解说 fdisk 使用方法》
《合理规划您的硬盘分区》
《Linux 创建文件系统及挂载文件系统流程详解》

        在物理分区上构建操作系统;

构建操作系统,目前在一个Linux操作系统中构建另一个操作系统,主要是通过chroot工具和软件包提取工具来构建。基础的东西还是需要一点的,请参考:《通过chroot 构建Linux操作系统概要》

目前在开源社区中,已经有人把一些常用的发行版的基础系统做好了。我们能拿过来直接用。呵。。。。。只要有基础系统,我们就能chroot进入,我们就能用相应发行版软件包管理器来构建操作系统了。

操作系统之基础系统资源:

http://jailtime.org

您可以直接下载您喜欢的操作系统,解压后,然后挂载映像文件,然后把映像文件的内容都拷到物理分区中就好了。不过还得做一点小小的修改,比如您下载系统映像文件中的/etc/fstab等文件。要根据您的引导的虚拟操作系统中定义的虚拟映射点来改。


6.13 虚拟操作系统的引导文件中关于文件系统的定义;


如果您的硬盘有一定的空间,就可以把被虚拟的操作系统安装在硬盘的实际物理分区中,当然您首先得准备一个硬盘分区。然后格式化成Linux的文件系统,比如ext3或reiserfs 等;然后是在这个分区上构建您想要虚拟的操作系统,最后才是写虚拟操作系统的引导配置文件,在配置文件中,要用phy:来指定。

比如:
disk = ['phy:hda7,sda1,w']
中文意思就是:
disk=['phy:分区,映射点,w']

这行是什么意思呢?就是表示被虚拟的操作系统安装在/dev/hda3,我们要把hda3硬盘分区虚拟映射到/dev/sda1,并且是可读可写的;在这里要值得注意的是虚拟平台正在使用中的分区不能做为是映射点。

比如我在Slackware是位于/dev/hda6的虚拟平台,也就是真实运行的操作系统,我想用它来虚拟位于/dev/hda7分区的Fedora。所以我不能把/dev/hda6做为hda7的映射点。也就是下面一行是错误的:


disk = ['phy:hda7,hda6,w']


如何定义映射点,其实也比较好办,只要符合Linux设备的规则就可以;比如下面的也可以;


disk = ['phy:hda7,sda2,w']
disk = ['phy:hda7,sda3,w'] 
disk = ['phy:hda7,sdb1,w']
disk = ['phy:hda7,sdb2,w']
... ...


什么是映射点呢?也就是说通过phy定义后,被虚拟的操作系统的位于的真实的物理分区,在虚拟平台中,被映射到另一个分区;可能这样说有点不太明白。呵。。。。。。

举个例子吧:比如我们在Slackware虚拟Fedora ,而Fedora 位于/dev/hda7中。我们在引导Fedora的配置文件中定义Fedora所用的物理分区被映射到/dev/sda1;


disk = ['phy:hda7,sda1,w']
root = "/dev/sda1 ro"


当我们把Fedora引导起来的时候,Fedora的文件系统就是用被虚拟后的分区,也就是/dev/sda1。在Fedora中,我们通过df -h 查看到Fedora是位于/dev/sda1。

所以在引导Fedora的配置文件中,还要有一行来指定Fedora的root在哪里,就在/dev/sda1上;因为/dev/hda7已经被虚拟到了/dev/sda1。这回明白了吧;


2.3  以映像文件做虚拟操作系统的文件系统;


以映像文件做为虚拟操作系统的文件系统,这种方法是比较常用。也是比较方便和易于操作的,也就是说被虚拟的操作系统是放在了一个文件中。

 
 创建映像文件;
[root@localhost ~]# dd if=/dev/zero of=fedora50.img  bs=2k  seek=2048k count=1
读入了 1+0 个块
输出了 1+0 个块
[root@localhost ~]# ls -lh fedora50.img
-rw-r--r--  1 root root 4.1G 2006-04-13 01:27 fedora50.img

我们可以用dd来创建映像文件,上面的例子是创建了大小为4.1G的体积的,名为fedora50.img的映像文件;您可以调整上面命令参数的大小来创建您想要的体积大小的映像文件。

 
 格式化映像为Linux文件系统;

Linux文件系统,比如ext3或reiserfs,看自己喜欢吧;您可以用mkfs.ext3或mkfs.reiserfs命令来创建文件系统,请参考:


[root@localhost ~]# /sbin/mkfs.ext3 fedora50,img
mke2fs 1.38 (30-Jun-2005)
fedora50,img is not a block special device.
Proceed anyway? (y,n) y 注:在这里输入y就时行格式化了,然后遇到提示之处,都是用回车。


这样fedora50.img就是ext3文件系统了,你可以用mount -o loop 来挂载使用它,在它上面存储文件等。


[root@localhost ~]# mkdir /mnt/fedora50
[root@localhost ~]# mount -o loop fedora50.img /mnt/fedora50
[root@localhost ~]# df -h
root@localhost:/opt# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda6              12G  8.5G  3.3G  73% /
/root/fedora50,img     4.0G  129M  3.7G   4% /mnt/fedora


上面的一系列命令执行下去后,说明fedora50.img已经挂载到了/mnt/fedora目录中,我们可以向/mnt/fedora中存放文件。这样就写到了fedora50.img映像文件中。写完后,我们可以卸载fedora50.img;


[root@localhost ~]# umount  /mnt/fedora



2.4   在映像文件上构建操作系统;


在映像文件上构建操作系统,目前在一个Linux操作系统中构建另一个操作系统,主要是通过chroot工具和软件包提取工具来构建。基础的东西还是需要一点的,请参考:

目前在开源社区中,已经有人把一些常用的发行版的基础系统做好了。我们能拿过来直接用。呵。。。。。只要有基础系统,我们就能chroot进入,我们就能用相应发行版软件包管理器来构建操作系统了。

操作系统之基础系统资源:

http://jailtime.org

 
  虚拟操作系统的引导文件中关于文件系统的定义;
disk = ['file:/opt/vmos/vmos.img,sda1,w', 'file:/opt/vmos/vmos.swap,sda2,w']
root = "/dev/sda1 ro"

我们还是以实例解说,把装有vmos.img的映像映射到/dev/sda1 分区,vmos.img就是虚拟操作系统root存放地。vmos.swap是被虚拟文件系统的交换分区,这个交换分区也是一个文件,被映射到了/dev/sda2 。然后通过root= 行来指定虚拟操作系统所处的分区,这个位置就是被虚拟后的分区。

定义时要注意自己的这些文件存放在哪了?上面的例子表示vmos.img和vmos.swap是存放在/opt/vmos目录中。要看好了。。


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 本文介绍了在CentOS 7.x上进行端口映射配置的方法,通过修改内核和配置防火墙实现端口映射。作者分享了自己使用华为服务器进行端口映射的经验,发现网速比直连还快且稳定。详细的配置过程包括开启系统路由模式功能、设置IP地址伪装、设置端口映射等。同时,还介绍了如何监听本地端口的tcp请求,以及删除规则和开放的端口的方法。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在Linux系统中设置文件ACL权限的方法和使用说明,包括在centos7.3和centos6.9中开启ACL权限的两种方法:在挂载时指定打开ACL权限和修改默认的属性信息。同时提供了对ACL权限的详细解释和应用场景。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Linux下安装依赖包版本高解决方法
    本文介绍了在Linux系统下,当已安装的依赖包版本高于需要安装的依赖包版本时,解决方法包括欺骗安装程序和修改相关配置文件等操作。针对不同情况,提供了不同的解决方案。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
author-avatar
伊子夕2010_593
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有