使用脚本创建客户虚拟机模板 (文档 ID 2089028.1)

文档内容

目标
 解决方案
 参考

适用于:

Oracle Exalogic Elastic Cloud Software - 版本 2.0.4.0.0 和更高版本
Linux x86-64
Oracle Virtual Server(x86-64)

Guest vServers that are created using v2.0.4.0.0 and v2.0.6.x.x of the Exalogic Guest Base Template, or those upgraded to v2.0.6.x.x, both Oracle Linux v5.x and v6.x . The Guest vServers must have either an LVM-based system disk or an ext3-based system disk for the script and procedure to work.  

The script and procedure described in this document does not apply to Guest vServers that are running earlier versions of EECS (2.0.1.x.0).

目标

目前,通过客户虚拟机创建模板通常使用Exalogic管理员手册中记录的步骤。该步骤可以在Exalogic管理员手册的附录中找到:
G Creating Server Templates from vServers

然而,由于手动的步骤很多,该流程繁琐且耗时。

本文档的目标旨在提供一个自动化脚本来完成客户虚拟机模板的创建过程。这里,客户虚拟机可以包含客户的定制化内容,例如:

  • 升级操作系统至最新的Oracle Linux 5.x版本(Note 1594674.1: Exalogic Virtual Environment - Guest vServer Upgrade to the latest Oracle Linux v5.x Version)
  • 安装额外的RPM包
  • 启用或禁用服务
  • 配置的变更
  • 安全相关的变更
  • 其他变更

除此之外,在以下用例中可能也需要创建客户虚拟机模板以达到快速重建虚拟机的目的:

  • 为现有客户虚拟机增加新的网络配置
  • 为现有客户虚拟机修改资源(CPU、内存)分配 (vCPU,内存的动态调整请参考文档:关于如何调整存在vServer的vCPU和内存资源 (Doc ID 2061530.1))

 

解决方案

使用现有客户虚拟机创建模板的步骤如下所示:

先决条件

1. 检查根目录(/)是否在基于LVM或ext3的系统盘上:

a. 使用root账户登录至客户虚拟机。

b. 运行df –kH命令并找到根分区对应的文件系统。

如果根目录在基于ext3的系统盘上,其对应的文件系统的格式应为/dev/<磁盘名>[分区号]。

在下例中,根目录位于文件系统/dev/xvda2,该文件系统对应磁盘xvda(也叫作hda)和2号分区(p2)。而/vol目录位于文件系统/dev/xvdb,该文件系统也对应磁盘xvdb但是没有分区号(因为文件系统只包含磁盘名,没有分区号)。

[root@ext3VM ~]# df  -kH
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda2            4.5G  3.3G 1022M  77% /
/dev/xvda1             99M   22M   73M  23% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm
/dev/xvdb            1008M   34M  924M   4% /vol 

2号分区(p2)是本文所述脚本的默认分区。如果根目录的文件系统不在2号分区,则需要记录其对应的分区号,并在创建模板时使用-p选项来指定其对应的分区号。

如果根目录位于基于LVM的系统盘,其对应的文件系统的格式应为/dev/mapper/<卷组名>-<逻辑卷名>。在下例中,根目录位于文件系统/dev/mapper/VolGroup00-LogVol00,其对应的卷组为VolGroup00,逻辑卷为LogVol00。

[root@lvmVM ~]# df -kH
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00  7.4G  3.8G  3.3G  54% /
tmpfs                            2.1G     0  2.1G   0% /dev/shm
/dev/xvda1                       254M   55M  187M  23% /boot

这里需要记录下根目录对应的卷组名和逻辑卷名。如果他们的名字和默认名不同(卷组的默认名为VolGroup00,逻辑卷的默认名为LogVol00),在创建模板时需要使用-v和-l选项来指定其对应的卷组名和逻辑卷名。

c. 使用df -kH命令的输出获得以下子目录所对应的文件系统: 


        •    /etc  
        •    /etc/sysconfig
        •    /etc/sysconfig/network-scripts
        •    /etc/sysconfig/networking
        •     /etc/sysconfig/networking/profiles
        •    /etc/sysconfig/networking/profiles/default
        •    /etc/ssh
        •    /etc/template.d/scripts
        •    /etc/modprobe.d  (for OL6)
        •    /root
        •    /root/.ssh
        •    /var/log

如果其中任何一个子目录所在的文件系统不同于根目录,则需要使用文本文件记录下相应的信息。这里需要使用两个文本文件,一个用于记录基于ext3的文件系统,另一个用于记录基于LVM的文件系统。

对于每个使用不同于根目录的ext3文件系统的子目录,在ext3对应的文本文件上使用以下格式记录(每个子目录一行):

[partition_number],subdirectory,disk name

       例如,如果目录/var/log存在于文件系统/dev/xvdb4,那么在文本文件上应记录为如下所示:

p4,/var/log,xvdb

       如果目录/etc存在于文件系统/dev/xvdc(该文件系统在磁盘名后没有分区号),那么在文本文件上应记录为如下所示:

,/etc,xvdc 

        对于每个使用不同于根目录的LVM逻辑卷的子目录,在LVM对应的文本文件上使用以下格式记录(每个子目录一行):

Volume Group,Logical Volume,subdirectory 

       例如,如果目录/var/log存在于文件系统/dev/mapper/VolGroup01-LogVol00,那么在文本文件上应记录为如下所示:

VolGroup01,LogVol00,/var/log 

流程

1. 使用EM Ops Center(EMOC)停止需要用来创建模板的客户虚拟机。

注意:

在执行创建模板的步骤前,必须要确保其对应的客户虚拟机已经停止了。如果创建模板时客户虚拟机仍在运行,使用该模板创建新的虚拟机时将会报错。


2.使用root用户登录至Exalogic控制虚拟机(Control vServer)。以下步骤都应在Exalogic控制虚拟机上执行,用户不应从Exalogic计算节点(Dom0)或者一个v2.0.6.0.0的客户虚拟机执行这些步骤。需要注意的是尝试在v2.0.6.0.0客户虚拟机上执行以下步骤将对该虚拟机造成不可修复的损坏。


3. 在Exalogic控制虚拟机上只读挂载Exalogic Repository。具体命令如下所示:

[root@elcontrol ~]# mkdir /OVS-Repo
[root@elcontrol ~]# mount -t nfs xx.xx.xx.xx:/export/ExalogicRepo /OVS-Repo -o ro

where xx.xx.xx.xx is the IP address of the ZFS storage appliance on the IPoIB-storage network. This IP address is the same as that used for the ExalogicControl mount in the Exalogic Control vServer, and may be obtained by running the following command:

[root@elcontrol ~]# grep ExalogicControl /etc/fstab
xx.xx.xx.xx:/export/ExalogicControl   /mnt/elcontrol  nfs     rw      0 0

4. 为了创建模板,还需要使用Exalogic客户虚拟机基础模板的vm.cfg文件。这里,首先拷贝Exalogic v2.0.4.0.0或v2.0.6.0.0 的模板文件(例如,v2.0.6.0.0模板的文件名为el_base_linux_guest_vm_template_2.0.6.0.0_64.tgz)至一个ZFS share(例如/common/images)并解压缩。之后,记录下vm.cfg文件所在的路径。

5. 挂载/common/images的ZFS share至Exalogic控制虚拟机为/u01/common/images:

[root@elcontrol ~]# mkdir -p /u01/common/images
[root@elcontrol ~]# mount -t nfs 10.196.xx.xx:/shares/export/common/images /u01/common/images -o rw
[root@elcontrol ~]# mkdir /u01/common/images/template_tmp

 

6. 拷贝附件中的脚本CreateTemplateFromVServerUniversal.sh至Exalogic控制虚拟机上root用户的home目录(/root)。

7. 执行脚本CreateTemplateFromVServerUniversal.sh,命令如下所示:

[root@gelcontrol ~]# ./CreateTemplateFromVServerUniversal.sh - -n <vServer Name>|-u <vServer UUID> [-r <Repository Directory>] [-w <Working Directory>] [-d <Destination Directory>] [-c <vm.cfg Location>] [-t <Root File System Type>] [-v <Volume Group of />] [-l <Logical Volume of />] [-p <ext3 Partition of />] [-addrootlvs <File Stating Additional LVM Systems>] [-addrootps <File Stating Additional ext3 Systems>] [-olver <ol Version>] [-log <Log File Location>] [-z | -Z]

其中:

-n <vServer Name> 用来创建模板的虚拟机的名称。
-u <vServer UUID> 用来创建模板的虚拟机的UUID。
-r <Repository _Directory> Repository所在位置,例如/OVS-Repo。默认的路径为/OVS/Repositories/*。
-w <Working _Directory> 临时文件所用的工作目录,例如/u01/common/images/template_tmp。请确保该目录在运行命令前就已经被存在,如果不存在则需要提前创建好。默认目录为/u01/common/images/vServerTemplateWIP。
-d <Destination _Directory> 模板tgz文件的输出目录,例如/u01/common/images/template。请确保该目录在运行命令前就已经被存在,如果不存在则需要提前创建好。默认目录为/u01/common/images/vServerTemplates。
-c <vm.cfg _Location> vm.cfg文件所在目录,例如第4步中提到的目录。默认目录为当前目录。
-t <Root File System Type> 根文件系统的类型(LVM或者ext3)。如果没有指定,脚本将自动检测。
-v <Volume Group of /> 根盘的卷组(仅适用于LVM类型的根文件系统)。默认值为VolGroup00。
-l <Logical Volume of /> 根盘的逻辑卷(仅适用于LVM类型的根文件系统)。默认值为LogVol00。
-addrootlvs <File Stating Additional LVM Systems> 记录其他根逻辑卷的卷组、逻辑卷和挂载目录的文件所在的绝对或相对路径(仅适用于LVM类型的根文件系统)。
-p <ext3 Partition of /> 根盘的ext3分区(仅适用于ext3类型的根文件系统)。默认值为p2。
-addrootps <File Stating Additional ext3 Systems> 记录其他根分区的分区、挂载目录和设备名的文件所在的绝对或相对路径(仅适用于ext3类型的根文件系统)。
-olver <Oracle Linux version> Oracle Linux的版本。如果没有指定,脚本将自动检测。
-rootdevice <root device name> 根设备名称。默认值为hda。
-z 是否压缩根盘(可选参数)。
-Z 是否压缩全部磁盘(可选参数,推荐使用)。
-log <Log _File _Location> 日志文件所在位置。请确保该目录在运行命令前就已经被存在,如果不存在则需要提前创建好。默认目录为当前目录。日志将被自动创建,文件名为CreateTemplateFromVServer.log。

  

注意:

  • 在使用上述参数确定需要模板化的虚拟机时,可以使用-n加上虚拟机的名字,或者使用-u加上虚拟机的UUID,但是不要两个都用。
  • 虚拟机的名称和UUID可以在EMOC BUI上找到。在EMOC BUI上,点击【vDC Management】下对应的虚拟机后,在【Dashboard】页面的【Summary】栏可以看到其对应的名称和UUID。
  • 如果使用了-n选项,则需要确保该虚拟机的名字在系统中是唯一的。否则,需要先对该虚拟机进行重命名以确保其唯一性。
  • <Working_Directory>和<Destination_Directory>应有足够大的可用磁盘空间。其可用的磁盘空间应大于所用虚拟机的硬盘空间大小以确保脚本运行成功。推荐的可用空间为所用虚拟机磁盘空间大小的3倍。


下例使用了一个基于LVM的v2.0.6.0.0的虚拟机来创建模板,该虚拟机名为dev-test-vServer:

[root@elcontrol ~]#./CreateTemplateFromVServerUniversal.sh -n dev-test-vServer -r /OVS-Repo -w /u01/common/images/template_tmp -d /u01/common/images/template -c /u01/common/images/EGBT_v20600/BASE/vm.cfg -Z

下例使用了一个基于ext3的v2.0.4.0.x的虚拟机来创建模板,该虚拟机的UUID为0004fb0000060000dd8468372041a19d:

[root@elcontrol ~]# ./CreateTemplateFromVServerUniversal.sh –u 0004fb0000060000dd8468372041a19d -r /OVS-Repo -w /u01/common/images/template_tmp -d /u01/common/images/template -c /u01/common/images/EGBT_v20400/BASE/vm.cfg -Z

 

8. 脚本运行后,结果模板将被创建在目标目录中,文件名为el_template_<vServer_Name>.tgz(如果使用了-n选项)或el_template_<vServer_UUID>.tgz(如果使用了-u选项)。

9. 卸载之前在第3步中挂载的Exalogic Repository,可使用如下命令:



[root@elcontrol ~]# umount /OVS-Repo

卸载之后,/OVS-Repo目录即可被删除。

之后,可以使用生成的模板文件来创建新的虚拟机:

  • 通过EMOC上传模板文件到需要的account中;
  • 使用上传的模板创建一个新的客户虚拟机。

重要提示:

本文所述之脚本并不是一个线程安全的程序。因此,不允许在同一系统中并行运行多个脚本进程。如果有多个虚拟机模板需要创建,则需要顺序地逐一进行。

参考

NOTE:1594674.1  - Exalogic Virtual Environment - Guest vServer Upgrade to the latest Oracle Linux v5.x Version
http://docs.oracle.com/cd/E18476_01/doc.220/e25258/appendix.htm#BABFHAFD  
未找到您要查找的产品?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值