Kvm虚拟化的一种打包部署方案(采用tar包,lvm方式)

–-–-–-2016年终总结 一

毕业之后跟师兄学到的第一块主要内容,理解花了不少时间。期间经历了shell的入门、linux基础知识入门、对系统启动原理的了解等。

之前的学习方向不是这个,辛苦师兄~和自己了~~T_T

镜像制作基于centOS 6.x,采用打包压缩方式。

镜像部署采取lvm、解压方式部署

目录

1     镜像制作

2     宿主机配置

3     镜像部署

1 镜像制作

第一步:官方方案安装centOS6.x、配置yum、关闭selinux

第二步:打包镜像

a.根目录下新建一个打包目录,example_dir,进入该目录目录中

mkdir /example_dir && cd /example_dir

b.同步根目录下除dev proc syslost example_dir home目录之外的文件夹到example_dir目录下

rsync –a $DIR /example_dir/

c. 创建dev proc syshome四个目录

d.修改/etc/sysconfig/network文件

NETWORKING=yes
HOSTNAME=xxx”

e.清空系统、bash、yum相关日志文件

f. 制作该目录的一个压缩包

tar -zcvf /OS.tgz .

2 宿主机配置

镜像部署主要为三个方面的内容:配置存储、配置网络、配置kvm及libvirt组件、部署镜像

存储和网络均需在宿主机上配置。需要配置网桥访问、配置lvm卷。

2.1  网络的配置

kvm虚拟机的网络访问可以通过宿主机配置网桥实现。配置网桥采用修改网络配置文件方式较快。网络配置文件位于目录/etc/sysconfig/network-scripts/目录下。

首先,修改当前使用网卡的配置文件,添加bridge=bridge_name,删去IP、网关、掩码配置。

之后,在该目录下添加网桥配置文件

DEBICE=bradge_name
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=ip_address
NETMASK=xxx
GATEWAY=xxx

关闭iptables

chkconfig iptables off

2.2  lvm配置

首先对磁盘进行分区。选择合适分区创建PV(物理卷)

pvcreate /dev/sdxn

然后创建VG(卷组)

vgcreate $vg_name /dev/sd$x$n

2.3  配置kvm组件

安装kvm、libvirt-pythonlibvirt

yum install -y kvm libvirt-python irqbalance libvirt

配置开机启动

chkconfig libvirtd on

2.4 配置完成

上述配置重启后生效

reboot

3 镜像部署

镜像部署的整个步骤大致为:使用lvm创建一块磁盘;磁盘分区,分为3个部分,启动分区、交换分区以及实际磁盘分区;将磁盘挂载到临时目录;将打包的镜像解压到根目录区;调整镜像根目录下配置文件;使用grub配置启动分区;宿主机上生成kvm配置文件;启动kvm虚拟机

3.1 创建磁盘及分区

使用lvm创建一块磁盘作为部署虚拟机的空间

lvcreate -L ${disk_usage}G $vg_name -n$kvm_name
parted -s/dev/mapper/${vg_name}-${kvm_name} mklabel msdos

创建分区


fdisk /dev/mapper/${vg_name}-${kvm_name}
首先创建启动分区,256M大小即可;然后创建交换分区,目前内存足够大,交换分区可以较小,1-4G;剩下的空间作为实际磁盘分区;创建完毕后将启动分区添加可启动标签,将交换分区的分区类型设置为82。

分区完毕后生效

kpartx -a /dev/mapper/${vg_name}-${kvm_name}
partprobe /dev/mapper/${vg_name}-${kvm_name}

建立文件系统

mkfs.ext4 /dev/mapper/${vg_name}-${kvm_name}p1
mkfs.ext4 /dev/mapper/${vg_name}-${kvm_name}p3

创建分区卷标

e2label /dev/mapper/${vg_name}-${kvm_name}p1/boot
e2label /dev/mapper/${vg_name}-${kvm_name}p3/
mkswap -L “SWAP” “/dev/mapper/${vg_name}-${kvm_name}p2”

3.2 解包镜像

将之前创建的分区挂载到临时目录

mkdir /tmp/install && mount /dev/mapper/${vg_name}-${kvm_name}p3/tmp/install
mkdir /tmp/install/boot && mount /dev/mapper/${vg_name}-${kvm_name}p1/tmp/install/boot

进入目录并解压镜像

cd /tmp/install
tar -zxpmf ~/OS.tgz

3.3 修改镜像配置文件

网络

>cat /tmp/install/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=$IP_ADDRESS
NETMASK=$NETMASK
ONBOOT=yes
>cat /tmp/install/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=$HOSTNAME
GATEWAY=$GATEWAY

文件系统

>cat /tmp/install/etc/fstab #centOS6
LABEL=//ext4defaults11
LABEL=/boot/bootext4defaults12
LABEL=SWAPswapswapdefaults00
…….tmpfs devpts sysfs proc
>cat /tmp/install/etc/fstab #centOS7
LABEL=//xfsdefaults11
LABEL=/boot/bootxfsdefaults12
LABEL=SWAPswapswapdefaults00

访问权限

/tmp/install/root/.ssh/authorized_keys
/tmp/install/etc/shadow

启动

/tmp/install/boot/grub/grub.conf #centOS6
/tmp/install/boot/grub2/grub.cfg #centOS7 7需添加配置root=/dev/sda3

3.4 生成kvm配置文件

/root/kvm-name.xml配置虚拟机硬件、ip等信息

配置文件结构为

domain
-uuid
-name #虚拟机名称
-memory #内存大小
-vcpu #cpu核数
-sysinfo #bios 设备序列号等
-os #系统版本 启动设备等
-feature #系统特性 acpi apic pae等
-on_poweroff #关机命令
-on_reboot #重启命令
-device #设备信息
--emulator #指定使用的模拟器
--disk #指定磁盘
--interface #网络连接
--serial #串行设备
--console #控制台
--graphics #图形终端

配置基本信息,及处理器、内存等

<uuid>$uuid</uuid>
<name>$kvm_name</name>
<memory unit='MiB'>4096</memory>
<currentMemory unit='MiB'>4096</currentMemory>
<vcpu placement='static'>4</vcpu>

配置磁盘

<disk type='block' device='disk'>
  <driver name='qemu'type='raw' cache='none' io='native'/>
  <source dev='/dev/mapper/${vg_name}-${kvm_name}'/>
  <target dev='hda'bus='virtio'/>
</disk>

配置网络

<interface type='bridge'>
  <mac address='$kvm_mac'/>
  <source bridge='$bridge_name'/>
  <model type='virtio'/>
</interface>

配置终端

<serial type='pty'>
  <sourcepath='/dev/pts/1'/>
  <target port='0'/>
  <aliasname='serial0'/>
</serial>
<console type='pty'>
  <target type='serial'port='0'/>
</console>

配置vnc

<graphics type='vnc' port='-1' autoport='yes'  keymap='en-us'>
  <listen type='address'address='0.0.0.0'/>
</graphics>

详细配置参见http://libvirt.org/formatdomain.html

3.5 使用grub生成引导扇区

centOS6配置方式如下

echo “(hd0) /dev/sda” >/tmp/install/boot/grub/device.map
echo “(hd1) /dev/mapper/${vg_name}-${kvm_name}”>> /tmp/install/boot/grub/device.map
/sbin/grub-install --root-directory=/tmp/install/dev/mapper/${vg_name}-${kvm_name} --no-floppy

centOS7的实现方式较繁琐,需要切换根目录至临时目录,执行grub2-install,核心命令如下

ptgdatadir=${kvm_boot_grub2_dir}
grub2-install --force --skip-fs-probe --grub-mkdevicemap ${kvm_boot_grub2_dir}device.map'(hd0)'

3.6 清理

umount /tmp/install/boot
umount /tmp/install
kpartx -d /dev/mapper/${vg_name}-${kvm_name}

3.7 启动kvm

virsh define /root/kvm_name.xml
virsh start $kvm-name

Kvm虚拟化的一种打包及部署方案(采用tar包,lvm方式)的更多相关文章

  1. kvm虚拟化管理平台WebVirtMgr部署-完整记录(3)

    继下面三篇文章完成了kvm虚拟化管理平台webvirtmgr环境的部署安装:kvm虚拟化管理平台WebVirtMgr部署-虚拟化环境安装-完整记录(0)kvm虚拟化管理平台WebVirtMgr部署-完 ...

  2. kvm虚拟化平台搭建入门

    KVM虚拟化有两种网络模式:1)Bridge网桥模式2)NAT网络地址转换模式Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. 环境: 本次实验要开启VMWare中对应Ce ...

  3. Neutron 物理部署方案 - 每天5分钟玩转 OpenStack(68)

    前面我们讨论了 Neutron 的架构,本节讨论 Neutron 的物理部署方案:不同节点部署不同的 Neutron 服务组件. 方案1:控制节点 + 计算节点 在这个部署方案中,OpenStack ...

  4. KVM虚拟化平台环境部署

    一:安装依赖包 二:配置网卡 三:配置环境 实验环境: KVM01   192.168.200.10 关闭防火墙及相关的安全机制 [root@KVM01 ~]# systemctl stop fire ...

  5. Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)

    下载hudson ,安装部署http://hudson-ci.org/ 将下载的hudson-3.3.3.war放到tomcat的webapps目录下并启动tomcat,输入地址访问 点击Instal ...

  6. Linux 部署KVM虚拟化平台

    简单介绍 KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案.KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Lin ...

  7. kvm虚拟化管理平台WebVirtMgr部署-完整记录(2)

    继上一篇kvm虚拟化管理平台WebVirtMgr部署-完整记录(1),接下来说说WebVirtMgr的日常配置:添加宿主机,创建虚机,磁盘扩容,快照等具体操作记录如下: 一.配置宿主机1.登录WebV ...

  8. kvm虚拟化管理平台WebVirtMgr部署-完整记录(1)

    公司机房有一台2U的服务器(64G内存,32核),由于近期新增业务比较多,测试机也要新增,服务器资源十分有限.所以打算在这台2U服务器上部署kvm虚拟化,虚出多台VM出来,以应对新的测试需求.当KVM ...

  9. kvm虚拟化管理平台WebVirtMgr部署-完整记录(0)

    打算部署kvm虚拟机环境,下面是虚拟化部署前的一些准备工作: 操作系统环境安装1)修改内核模式为兼容内核启动[root@ops ~]# uname -aLinux openstack 2.6.32-4 ...

随机推荐

  1. 改造百度ueditor字体为rem及相关体会

    提到富文本,可能大家都用到过百度的ueditor,作为一个重量级的插件,总结起来一句话,功能很强大,使用很费心.不知道是不是太久没有维护了,ueditor的文档可读性还真是差也可能是悟性不够吧.本文也 ...

  2. nhibernate教程(4)--条件查询(Criteria Query)

    NHibernate之旅(4):探索查询之条件查询(Criteria Query) 2008-10-16 18:20 by 李永京, 44341 阅读, 43 评论, 收藏,  编辑 本节内容 NHi ...

  3. IPv4子网掩码回顾

    子网掩码的介绍: IP协议标准规定:每一个使用子网的节点都选择一个32位的位模式,若位模式中的某位置为1,则对应IP地址中的某位就为网络地址(包括网络部分和子网号)中的一位:若位模式中的某位置0,则对 ...

  4. 集美大学网络1413第十四次作业成绩(团队九) -- 测试与发布&博客展示(Beta版本)

    题目 团队作业9--测试与发布(Beta版本) 团队作业9成绩  团队/分值 Beta版本测试报告 Beta版本发布说明       总分  Bug类别. 数量 场景测试 测试结果 测试矩阵 出口条件 ...

  5. Swing-布局管理器之GridLayout(网格布局)-入门

    注:本文内容源自于三十一.Java图形化界面设计——布局管理器之GridLayout(网格布局),笔者在学习过程中根据自身理解修改了部分代码. 网格布局特点: l  使容器中的各组件呈M行×N列的网格 ...

  6. 201521123026 《java程序设计》第七周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: public ...

  7. 201521123087 《Java程序设计》第5周学习总结

    1. 本周学习总结 2. 书面作业 作业参考文件下载 代码阅读:Child压缩包内源代码1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结 ...

  8. ztree 获取根节点

    function getRoot() { var treeObj = $.fn.zTree.getZTreeObj("tree-div"); //返回一个根节点 var node ...

  9. Javascript-正则表达式-开发中的使用.

    -- "(-1~99)之间 -1表示无限次!" pattern="^((-1)|([0-9]{0,2}))$" -- "(0~99.99)之间 的金额 ...

  10. Android 之数据存储(sdCard,sharedPreference,sqlite数据库)

    sdCard:默认路径在 /storage/sdcard/... Android支持OpenFileOutput和openFileInput方式访问手机存储器上的文件. Context提供了如下两个方 ...