1. 克隆一台虚拟机

# virt-clone -o base -n vm-clone -f /vm/vm-clone.img

参数说明:

-o 原虚拟机的名称;必须为关闭或者暂停状态。

-n 新虚拟机的名称

-f 作为新虚拟机端磁盘映像的新文件

-u 新虚拟机的UUID;默认为随机生成UUID

-m 新虚拟机的 MAC地址。默认为随机生成 MAC。

克隆完成后可以通过 xm list 查看到新克隆的虚拟机,通过 xm start vm-clone 即可启动。克隆完成后会在路径 /vm 下生成 vm-clone.img,但不会自动生成配置文件,如果需要对新克隆的虚拟机重新进行配置操作则需要为其建立配置文件,那怎么创建呢,上一篇中我们提到 xm list 所能看到的虚拟机的配置信息都保存在 /var/lib/xend/domains 这个路径下。

# cd /var/lib/xend/domains

# ll

drwx------.  root root  5月    : 0967b939--04ca--34e5ef1e8fa8

drwx------.  root root  5月   : 74359c07-1e59-52e9-d29e-c33a68d24e77

drwx------.  root root  5月    : 7e30aa10-2ebf-035e-c033-a35728104213

drwx------.  root root  5月   : 889f7761-783b--f71a-ea1cb8f4c591

drwx------.  root root  5月   : ba09e174-26f7-5e96-1fe4-5c8537b83a29

drwx------.  root root  5月    : baee7fd6-afcc-7d98-2d59-041456dfa693

drwx------.  root root  5月   : c22307e2-035e-3e49-d42c-f141865aab21

我们看到是一堆以uuid为名称的文件夹,每个文件夹下面保存对应虚拟机的配置信息,我们也可以在克隆的时候使用 -u 参数来指定虚拟机的uuid,这样更方便管理,下面我们来看看配置信息是什么样子的,刚刚克隆的虚拟机应该是时间最晚的那个喽。

# cat ./c22307e2-035e-3e49-d42c-f141865aab21/config.sxp

(domain

    (vcpus_params ((cap ) (weight )))

    (PV_args '')

    (memory_static_min )

    (HVM_boot_policy '')

    (PV_bootloader /usr/bin/pygrub)

    (pool_name Pool-)

    (auto_power_on False)

    (memory_static_max )

    (cpus (() ()))

    (actions_after_shutdown destroy)

    (memory_dynamic_max )

    (memory_sharing )

    (superpages )

    (is_a_template False)

    (PV_bootloader_args -q)

    (memory_dynamic_min )

    (VCPUs_live )

    (target )

    (actions_after_crash destroy)

    (uuid c22307e2-035e-3e49-d42c-f141865aab21)

    (PV_ramdisk '')

    (other_config ())

    (name_label vm-clone)

    (PV_kernel '')

    (actions_after_reboot restart)

    (VCPUs_at_startup )

    (HVM_boot_params ())

    (platform ((tsc_mode ) (nomigrate ) (localtime )))

    (VCPUs_max )

    (Description ' server ')

    (pool_name Pool-)

    (bootloader /usr/bin/pygrub)

    (vcpus )

    (cpus (() ()))

    (on_poweroff destroy)

    (description ' server ')

    (on_crash destroy)

    (uuid c22307e2-035e-3e49-d42c-f141865aab21)

    (bootloader_args -q)

    (name vm-clone)

    (on_reboot restart)

    (maxmem )

    (memory )

    (shadow_memory )

    (vcpu_avail )

    (features '')

    (on_xend_start ignore)

    (on_xend_stop ignore)

    (image

        (linux

            (kernel '')

            (superpages )

            (localtime )

            (nomigrate )

            (tsc_mode )

        )

    )

    (status )

    (device

        (tap2

            (bootable )

            (uname tap2:aio:/vm/vm-clone.img)

            (mode w)

            (dev xvda)

            (uuid 9559d0d2-b2ce--13f6-78c469a3e6d4)

        )

    )

    (device

        (vif

            (bridge br0)

            (mac ::3e:::ac)

            (uuid 9f8669f3---0bf0-937725d83226)

            (script vif-bridge)

        )

    )

)

接下来我们要做的就是从这个文件中摘取所需的信息做成我们的配置文件,如下:

# 半虚拟化配置文件示例

name="vm-clone"

description=" server "

uuid="c22307e2-035e-3e49-d42c-f141865aab21"

memory=

maxmem=

vcpus=

on_poweroff="destroy"

on_reboot="restart"

on_crash="destroy"

localtime=

keymap="en-us"

builder="linux"

bootloader="/usr/bin/pygrub"

bootargs=""

disk=[ 'tap2:aio:/vm/vm-clone.img,xvda,w' ]

vif=[ 'mac=00:16:3e:55:85:ac,bridge=virbr0,script=vif-bridge']

将文件保存为 /etc/xen/vm-clone.cfg 现在就可以使用该配置文件来启动虚拟机了,xm create /etc/xen/vm-clone.cfg

2. 为虚拟机添加一块硬盘

# 创建一个2G的硬盘文件

# dd if=/dev/zero of=/vm/vm-clone-add.img bs=1024M count=

在配置文件disk 项中加入新建的硬盘文件

disk=[ 'tap2:aio:/vm/vm-clone.img,xvda,w', 'tap2:aio:/vm/vm-clone-add.img,xvdb,w']
# xm create /etc/xen/vm-clone.cfg

# 登陆虚拟机之后通过 fdisk -l或ls /dev 即可查看到刚刚新添加的硬盘设备,对其进行分区格式化之后即可挂载使用。

 3. 为虚拟机添加网卡

在配置文件vif项中加入加入新的网卡配置项,我通常的做法时直接复制前面的,然后将mac地址最后一位递增。

vif=['mac=00:16:3e:55:85:ac,bridge=virbr0,script=vif-bridge','mac=00:16:3e:55:85:ad,bridge=virbr0,script=vif-bridge']
# xm create /etc/xen/vm-clone.cfg

# 登陆虚拟机之后通过ifconfig -a 可以查看到新增的网卡,在/etc/sysconfig/network-script/下为其创建配置文件后便可启动该网卡。

4. 创建桥接网络

注:以下操作均在Domain 0操作

# 安装bridge-utils

# yum install bridge-utils
# 配置ifcfg-eth0

DEVICE=eth0

NM_CONTROLLED=no

ONBOOT=yes

TYPE=Ethernet

BRIDGE="virbr1"

USERCTL=no
# 配置ifcfg-virbr1

DEVICE=virbr1

BOOTPROTO=none

NM_CONTROLLED=no

ONBOOT=yes

TYPE=Bridge

IPADDR=192.168.0.5

PREFIX=

GATEWAY=192.168.0.1

DNS1=8.8.8.8

DNS2=8.8.4.4

USERCTL=no
# 重启网络服务生效

# service network restart

# 此时 ifconfig 可以看到桥接网络virbr1
# 编辑要连接到 virbr1 的虚拟机配置文件,将桥接网卡设置为virbr1

vif=['mac=00:16:3e:55:85:ac,bridge=virbr1,script=vif-bridge']

# 登陆虚拟机之后虚拟机就可以通过桥接网络进行联网了

Xen入门系列四【Xen 管理实操】的更多相关文章

  1. linux入门系列13--磁盘管理之RAID、LVM技术

    前一篇文章学习了磁盘分区.格式化.挂载等相关知识,本文将讲解RAID和LVM技术. 磁盘管理操作主要是运维人员用的较多,如果只是单纯的开发人员,可以先略过本文.但是在很多小公司里往往都是一人多用,运维 ...

  2. C语言高速入门系列(四)

    C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...

  3. [转]C# 互操作性入门系列(四):在C# 中调用COM组件

    传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...

  4. .net基础学java系列(四)Console实操

    上一篇文章 .net基础学java系列(三)徘徊反思 本章节没啥营养,请绕路! 看视频,不实操,对于上了年龄的人来说,是记不住的!我已经看了几遍IDEA的教学视频: https://edu.51cto ...

  5. linux入门系列12--磁盘管理之分区、格式化与挂载

    前面系列文章讲解了VI编辑器.常用命令.防火墙及网络服务管理,本篇将讲解磁盘管理相关知识. 本文将会介绍大量的Linux命令,其中有一部分在"linux入门系列5--新手必会的linux命令 ...

  6. spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护

    在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...

  7. Go语言入门系列(四)之map的使用

    本系列前面的文章: Go语言入门系列(一)之Go的安装和使用 Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 1. 声明 map是一种映射,可以将键(key)映射到值(val ...

  8. Xen入门系列三【Xen 管理工具 xm】

    xm命令是管理Xen的最基本的工具,可以通过xm --help 来获得帮助. 1. 列出所有正在运行的虚拟操作系统 # xm list PS[1]:可缩写为 xm li 2. 启动虚拟机 # 通过配置 ...

  9. Xen入门系列一【使用Xen4CentOS 在 Centos 6 上安装 Xen】

    最近在学习Hadoop,在Win7下用VMware搭了三台虚拟机好不容易装好了Hadoop结果跑个两个单词的wordcount就跑了十分钟,郁闷啊,于是开始寻找效能更好的虚拟化解决方案,然后选定了Xe ...

随机推荐

  1. Python自学之路---Day13

    目录 Python自学之路---Day13 常用的三个方法 匹配单个字符 边界匹配 数量匹配 逻辑与分组 编译正则表达式 其他方法 Python自学之路---Day13 常用的三个方法 1.re.ma ...

  2. (day 1)创建项目--1

    1.利用cmd(命令行)创建项目myblog 确定好项目要放在哪个directory. dir一下创建好的项目看下有什么 django自带有一个小型的服务器可通过  runserver 启动它 可取浏 ...

  3. Navicat mysql 数据库备份和使用,备份以后是nb3文件

    通过Navicat进行Mysql数据库自动备份与还原   Mysql数据库自动备份流程 Navicat版本为:Navicat 12.0.26 例:test为用于测试自动备份的数据库,里面有表t_per ...

  4. Unity3d游戏代码保护

    现在的游戏项目如果达到一定规模.项目比较创新方竞争对手.项目严重依赖客户端代码那么代码保护还是尽量做,如果不是也没必须瞎折腾. Unity常见代码保护机制: 1.重新编译mono,修改mono_ima ...

  5. js对象属性名和属性值生成新数组时都作为属性值

    const obj = { id:1, name:'zhangsan', age:18 } const arr = []; Object.getOwnPropertyNames(obj).forEac ...

  6. tensorflow笔记(北大网课实战)

    1. tf.multiply(x,y1) # 对应元素相乘 tf.matmul(x,y2) # 矩阵相乘 2.会话:执行计算图中的节点运算的. with tf.Session() as sess: p ...

  7. tableau 和 R 的连接

    1.安装R包Rserve 2.tableau帮助-管理外部服务连接,单击测试按钮出现成功连接即是通信成功. 3.创建新工作表,设置id字段,针对id记录数创建计算字段Rrand.将Rrand拖入行维度 ...

  8. POJ 1655 Balancing Act【树的重心模板题】

    传送门:http://poj.org/problem?id=1655 题意:有T组数据,求出每组数据所构成的树的重心,输出这个树的重心的编号,并且输出重心删除后得到的最大子树的节点个数,如果个数相同, ...

  9. What is the maximum length of a URL in different browsers?

    https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers ...

  10. LeetCode——324. 摆动排序 II

    给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序. 示例 1: 输入: nums = [1, 5 ...