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. express传输buffer文件

    最近要做一个功能,导出动态生成的excel文件,这个普普通通的功能却让我折腾了半天.大致流程是这样的,将数据结合excel模板通过ejsExcel库,动态生成excel文件,并发送到客户端. 在exp ...

  2. java 反射详解

    反射的概念和原理 类字节码文件是在硬盘上存储的,是一个个的.class文件.我们在new一个对象时,JVM会先把字节码文件的信息读出来放到内存中,第二次用时,就不用在加载了,而是直接使用之前缓存的这个 ...

  3. 【Alpha】第二次Daily Scrum Meeting

    GIT 一.今日站立式会议照片 二.会议内容 1.统计,收集整理礼物的资料与详情 2.确定网页的实现方式 三.燃尽图

  4. Java 第八周总结

    1. 本周学习总结 2. 书面作业 1.List中指定元素的删除 1.1 实验总结 list中可以通过list.get(i)来获取具体第几个的元素的值,再通过compareTo来对比 通过in.has ...

  5. 201521123028 《Java程序设计》第3周学习总结

    1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  6. 201521123097《Java程序设计》第一周学习总结

    1.本周学习总结 知道了JAVA语言的发展历史和目前使用的版本,还有什么是JDK(Java Development Kit).JRE (Java Runtime Environment).JVM(Ja ...

  7. 201521123044 《Java程序设计》第12周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  8. Java第十一周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...

  9. ionic 打包安卓包

    一.配置环境: 先按照之前的文章,配置好环境需要: 二.安装 1. 这里前提是 需要安装  node (地址: http://nodejs.cn/download/) 命令: node -v   // ...

  10. python之socket--粘包补充

    struct补充 import struct import json header_dic={'total_size':123123, 'filename':None, 'md5':None} hea ...