0%

Encapsulate virtual machine

Red Hat Enterprise Linux 6.5

1. 封装虚拟机

1.1. 配置yum源(物理机Rhel7)

效果

1
2
3
4
5
6
7
8
9
10
11
12
[root@foundation ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel_foundation163-root 89G 33G 57G 37% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 18M 3.8G 1% /dev/shm
tmpfs 3.8G 9.0M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/loop0 3.5G 3.5G 0 100% /var/www/html/source
/dev/loop1 3.6G 3.6G 0 100% /var/www/html/rh6.5 ##镜像挂载成功
/dev/sda3 497M 122M 376M 25% /boot
[root@foundation ~]# vim /etc/fstab ##设置开机自动挂载
/source/rhel-server-6.5-x86_64-dvd.iso /var/www/html/rh6.5 iso9660 ro,relatime 0 0

测试

1.2. 安装母盘


1
通过虚拟机管理软件安装一个rhel-server-6.5-x86_64-dvd.iso,内存如果设置为小于768M,则默认不安装图形,因此这里选择512M。大概需要安装243个包。











1
2
cd /etc/udev/rules.d/  
rm -f 70-persistent-* ##这些文件是和系统硬件绑定的,而且重启之后会自动生成,所以作为母盘,不需要这些。

1
2
cd /etc/ssh/
rm -f ssh_host_* ###删除ssh的主机记录密钥文件

1
2
3
4
5
6
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
#IPADDR=172.25.0.1
#PREFIX=24

1
2
3
4
5
6
7
vi /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.100/rh6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

1
2
yum clean all
yum install -y vim openssh-clients

1
2
cd ~
rm -f * ##删除root家目录下的文件

1
2
3
vi /etc/sysconfig/network ##修改主机名
NETWORKING=yes
HOSTNAME=server1.example.com

1
2
3
4
5
6
7
8
9
10
11
12
vi /etc/hosts  ##解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.0.1 server1.example.com
172.25.0.2 server2.example.com
172.25.0.3 server3.example.com
172.25.0.4 server4.example.com
172.25.0.5 server5.example.com
172.25.0.6 server6.example.com
...
...
172.25.0.20 server20.example.com

1
2
vim /etc/selinux/config
SELINUX=disabled

1
2
3
4
iptables -F
ip6tables -F
chkconfig iptables off
chkconfig ip6tables off

1
poweroff  ##关机,这里不能重启,因为一些刚才删除的文件会在重启之后又生成。关机之后母盘就制作成功了。

1.3. 利用母盘创建虚拟镜像

1
2
3
4
5
qemu-img:QEMU disk image utility
-f ##First image format,指定镜像格式【qcow2(常用),raw】
-b backing_file ##指定母盘

注意:如果需要重置虚拟机,只需删除镜像再利用母盘重新制作即可。母盘坚决不能使用,否则其它虚拟机会受到影响。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@foundation ~]# cd /var/lib/libvirt/images  ##虚拟机磁盘镜像文件存放位置
[root@foundation images]# ls
client-gui.img rhel6.5-base.img server-gui.img
[root@foundation images]# qemu-img create -f qcow2 -b rhel6.5-base.img vm1 ##利用母盘制作格式为qcow2的子镜像vm1
Formatting 'vm1', fmt=qcow2 size=8589934592 backing_file='rhel6.5-base.img' encryption=off cluster_size=65536 lazy_refcounts=off
[root@foundation images]# qemu-img info vm1 ##查看镜像信息
image: vm1
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: rhel6.5-base.img
Format specific information:
compat: 1.1
lazy refcounts: false

1
[root@foundation images]# for i in {1..20};do qemu-img create -f qcow2 -b rhel6.5-base.img vm$i;done  ##批量创建

1.4. 添加虚拟机






注意

  • 封装虚拟机时母盘的配置完全可以自定义,不过rm -f 70-persistent-*rm -f ssh_host_*是必须的,否则会影响到创建的虚拟机的正常运行。
  • 每打开一个虚拟机,读的磁盘是母盘,只是把每次操作的改变都保存在了子镜像中,可以通过观察子镜像的大小来验证。
  • 创建的虚拟机需要修改yum源,baseurl=http://172.25.0.250/rh6.5,要写和物理机在同一个网段的ip。