菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机

chedou@hgdb.net

虚拟机给工作带来巨大的便利,不仅仅体现在资源的按需使用,而且配置的迁移特别方便。本文将使用Ubuntu14.04 Desktop版本创建Redhat 64 Enterprise Server(RHEL64)虚拟机。

1 准备好安装光盘镜像

rhel-server-6.4-x86_64-dvd.iso

2 打开虚拟机管理器

尽管可以用命令行的方式创建虚拟机,但是本着简单事情简单做的原则,我使用virt-manager创建虚拟机。在Ubuntu上打开一个终端,输入下面的命令打开虚拟机管理器(一个类似virtual box的东西,如果提示找不到这个东西,就apt-get install吧):

$ sudo virt-manager

3 开始创建安装过程

a. 按 Create a new virtual machine按钮,输入name: RHEL64-origin

我喜欢创建一个干净的虚拟机,用这个作为源,然后以后用到的时候就从这个源克隆。一般我创建好这个虚拟机,只安装jdk和gcc两个东西。因此我把这个机器的名字叫做origin。然后按Forward。

b. 在Use ISO image:栏目里填入你的iso地址,我的是:

c. 然后下一步输入内存大小和CPU数目。这些参数可以在虚拟机创建之后调整。此时我输入4096MB内存和2个CPU。只有此时不比Host机器的物理内存/CPU多,都可以。

d. 然后进入下一步创建磁盘镜像。此时需要谨慎。需要考虑将来的可扩充。比如在这里你指定一个128GB的磁盘镜像,它真的会在你的硬盘上创建出这个128GB的文件来。首先你的硬盘必须有这么大的空间容纳这个镜像文件。这个镜像文件是RAW格式的,因此它不会压缩。那么如果我们需要创建10个虚拟机怎么办?先留着这个待解决的问题。假定物理硬盘可用空间是700GB,我们准备将来存放10到20个虚拟机,每个虚拟机硬盘空间128GB。此时我们可以输入128GB。选中Allocate entire disk now。按下一步。然后弹出一个统计报告,不用管它,按Finish。进入Redhat安装界面。这个我就不多说了。

e. 一路Next,确认 discard any data。当要求输入hostname,输入RHEL64-origin,按Configure Network,设置eth0网络为Connect automatically。

f. 在 Whick type of installion would you like?出现时,选择Create Custum Layout。也就是自己分区。128GB的总数分区为:

1024MB---/boot----Primary
16384MB---swap
8192MB---/tmp
余下的都是 --- /

g. 安装完成之后,配置如下:

/etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        TYPE=Ethernet
        UUID=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
        ONBOOT=yes
        NM_CONTROLLED=yes
        IPADDR=192.168.122.101
        BOOTPROTO=static
        BROADCAST=192.168.122.255
        NETMASK=255.255.255.0
        HWADDR=52:54:00:47:92:3D
        DEFROUTE=yes
        PEERDNS=yes
        PEERROUTES=yes
        IPV4_FAILURE_FATAL=yes
        IPV6INIT=no
        NAME="System eth0"

/etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=rhel64-origin.pepstack.com
        GATEWAY=192.168.122.1

/etc/resolv.conf
        nameserver 192.168.122.1

/etc/init/ttyS0.conf
        # ttyS0 - agetty
        stop on runlevel [016]
        start on runlevel [345]
        instance ttyS0
        respawn
        pre-start exec /sbin/securetty ttyS0
        exec /sbin/agetty /dev/ttyS0 115200 vt100-nav

4 转换文件格式

虚拟机的镜像文件为:

/var/lib/libvirt/images/RHEL64-origin.img

这是raw格式的,占用空间=128GB。因此需要转为qcow2格式的。进入RHEL64-origin.img所在目录,运行命令:

$ sudo qemu-img convert -O qcow2 RHEL64-origin.img RHEL64-origin.qcow2

就生成了仅有2GB大小的RHEL64-origin.qcow2。

然后更改虚拟机配置文件:

$ sudo vi /etc/libvirt/qemu/RHEL64-origin.xml

找到:

type='raw'=>type='qcow2'

RHEL64-origin.img=>RHEL64-origin.qcow2

结果如下:

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/RHEL64-origin.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>

$ sudo virsh define RHEL64-origin.xml

$ sudo virsh list --all

$ sudo virsh start RHEL64-origin

给host机器添加ip和hostname映射,加快虚拟机ssh登录速度:

#vi /etc/hosts

# virt-machine

192.168.122.178   rehl64-org

$ ssh@rehl64-org

登录进虚拟机:

[root@RHEL64-origin ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda6              94G  1.8G   87G   2% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/vda1            1008M   60M  898M   7% /boot
/dev/vda2              16G  172M   15G   2% /home
/dev/vda3             7.9G  146M  7.4G   2% /tmp
[root@RHEL64-origin ~]# 

成功。可以删除文件:

$ sudo rm -fr /var/lib/libvirt/images/RHEL64-origin.img

以上操作完全可以命令行方式,参考:

http://dnscai.com/blog/2013/05/13/virt-command-summary/

菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机的更多相关文章

  1. 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

    菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...

  2. 菜鸟玩云计算之十六:Ubuntu14.04上创建的虚拟机迁移到RHEL6.4

    菜鸟玩云计算之十六:Ubuntu14.04上创建的RHEL6.4虚拟机迁移到RHEL6.4主机上 RHEL6.4 Server作为虚拟机的HOST,执行以下的命令检查配置和安装相关软件: # egre ...

  3. 菜鸟玩云计算之十二:KVM虚拟机更改大小

    菜鸟玩云计算之十二:KVM虚拟机更改大小 参考: http://www.missionfamilybank.org/expanding-resizing-your-qcow2-virtual-mach ...

  4. 菜鸟玩云计算之十四:克隆虚拟机及ssh登录的问题

    菜鸟玩云计算之十四:克隆虚拟机及ssh登录的问题 今天早上,我的Ubuntu12.04.3LTS Desktop提示升级,升级. 从vm-ubuntu12.04克隆出虚拟机vm-thrift: $ s ...

  5. 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章

    菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...

  6. 如何在Ubuntu上创建及管理LXC容器?

    将LXC安装到Ubuntu上 $ sudo apt-get install lxc 安装完毕之后,运行lxc-checkconifg工具,检查当前Linux内核支持LXC的情况.要是一切都已被启用,内 ...

  7. 菜鸟玩云计算之二十:saltstack入门初步

    菜鸟玩云计算之二十 SaltStack 入门初步 0. saltstack 是什么 参考下面的文章: http://docs.saltstack.com/en/latest/topics/tutori ...

  8. 菜鸟玩云计算之廿二: saltstack 配置

    菜鸟玩云计算之廿二: saltstack 配置 要求环境: RHEL6.4+ >=Python2.6.6, < Python 3.0 关闭salt-master/minion服务:   # ...

  9. 菜鸟玩云计算之廿一: saltstack之pillar

    菜鸟玩云计算之廿一: saltstack之pillar 参考: 点击打开链接 查看pillar数据: # salt '*' pillar.items pillar的默认根目录在:/srv/pillar ...

随机推荐

  1. Docker与容器

    Docker介绍 1. Docker 主要解决什么问题 Docker 对外宣称的是Build.Ship 和Run,Docker 要解决的核心问题就是快速地干这三件事情.它通过将运行环境和应用程序打包到 ...

  2. Xcode无法安装基于ruby的插件问题的解决

    Xcode有时需要安装一些第三方插件,很多插件是基于ruby的,确切的说是基于ruby gem的! 但是在国内有一个很尴尬的情况,就是官方的gems网站:https://rubygems.org 的安 ...

  3. Java基本语法-----java函数

    函数的概述 发现不断进行加法运算,为了提高代码的复用性,就把该功能独立封装成一段独立的小程序,当下次需要执行加法运算的时候,就可以直接调用这个段小程序即可,那么这种封装形形式的具体表现形式则称作函数. ...

  4. 分布式内存文件系统Tachyon

    UCBerkeley研发的Tachyon(超光子['tækiːˌɒn],名字要不要这么太嚣张啊:)是一款为各种集群并发计算框架提供内存数据管理的平台,也可以说是一种内存式的文件系统吧.如下图,它就处于 ...

  5. 非负矩阵分解NMF

    http://blog.csdn.net/pipisorry/article/details/52098864 非负矩阵分解(NMF,Non-negative matrix factorization ...

  6. Dynamics CRM 后台通过组织服务获取时间字段值的准确转换

    做CRM开发的都知道,在系统时间字段的处理上是有讲究的,因为数据库中存的是UTC时间,CRM的界面时间字段会根据个人设置中的时区以及格式自动调整,这是最基本的一面,那还有很多使用时间的场景,比如脚本使 ...

  7. JS 遍历对象 jQuery遍历对象

    jquery for 循环遍历对象的属性: //对象的定义如下: var person={id:"1",name:"springok",age:25}; for ...

  8. Android的View类介绍-android的学习之旅(十三)

    view概述 android绝大部分UI组件都放在android.view和android.widght包中,android的虽有UI组件都继承了View类. View类还有一个非常重要的子类:Vie ...

  9. 【Netty源码学习】入门示例

    Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序.        也就是说,Netty ...

  10. 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

    . 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...