IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    KVM制作虚拟机镜像

    rock发表于 2017-03-02 14:02:59
    love 0
    第一步,安装DVDiso镜像虚拟机
    1. mkdir -p/data0/images_base/centos-6.8.x86_64/
    2. virt-install --name=centos6.8 --arch=x86_64 --vcpus=2 --ram=2048 \
    --disk path=/data0/images_base/centos-6.8.x86_64/centos-6.8.x86_64.img,size=12,device=disk,bus=virtio,format=raw \
    --location=/data0/iso/CentOS-6.8-x86_64-bin-DVD1.iso --vnclisten=0.0.0.0 \
    --vncport=5931 --vnc --os-type=linux \
    --network bridge=br1,model=virtio --network bridge=br1,model=virtio
    1. 使用vncviewer 连接已经安装的虚拟机,逐步完成安装,主要需要修改的点有:分区只分根分区,时区,root密码设置

    第二步,将虚拟机镜像分区提取出来
    在第一步安装后生成的文件为基础文件,还不能直接为kvm virt使用(为什么?1. 生成的分区无法直接挂载,2.无法动态的更改相关配置,如硬盘、cpu、内存等), 所以要将第一步生成的文件进一步进行操作,将分区中内核镜像取出来,并将分区转换为可直接挂载的分区

    1. losetup /dev/loop0 centos-6.8.x86_64.img,转换完成后还看不到,需要:
    2. kpartx -a /dev/loop0  此时可以看到/dev/mapper/loop0p1分区
    3. mount /dev/mapper/loop0p1 /mnt/
    4. 创建未来给puppet使用的镜像文件夹,将第一步安装备份。 mv =/data0/images_base/centos-6.8.x86_64 =/data0/images_base/centos-6.8.x86_64_bak; mkdir /data0/images_base/centos6.8.x86_64
    5. cp /mnt/boot/vmlinuz-version.el7.x86_64 /data0/images_base/centos6.8.x86_64/kernel
    6. cp /mnt/boot/initramfs-3.10.0-514.el7.x86_64.img /data0/images_base/centos6.8.x86_64/ramdisk
    7. dd if=/dev/mapper/loop0p1 of=/data0/images_base/centos6.8.x86_64/centos-6.8.x86_64.img

    第三步,测试虚拟机镜像
    1.  在 /data0/instance/instance-xxx, xxx为ip的第四位(使用前要确保这个ip与已经有的ip不冲突)本例使用188,mkdir -p /data0/instance/instance-188 ;cd /data0/instace/instace-188/
    2. 拷贝一个现有的instance-xxx.xml文件,将文件名和文件内存涉及到name,ip和内核版本都修改为正确的。cp /data0/instance/instace-xxx.xml /data0/instance/instance-188.xml
    3. 将第二创建的镜像cp过来。 
      cp 
      /data0/images_base/centos6.8.x86_64/ramdisk /data0/instance/instance-188/
      cp  
      /data0/images_base/centos6.8.x86_64/kernel /data0/instance/instance-188/ cp /data0/images_base/centos6.8.x86_64/centos-6.8.x86_64.img /data0/instance/instance-188/
    4. 在puppet node.tbl为你添加的镜像添加sae角色并提交
    5. touch console.log, qemu-img create disk.local +1G && mkfs.ext4 -q -F disk.local, 运行virsh create instance-188.xml, 再运行psync
    6. 通过vnc登录你当前的镜像,并使用初始化新增机器的方法对这个镜像进行初始化。可能涉及路由、yum库和EPEL gpg认证问题,可以从大版本相同的的服务器上拷过来

    第四步,对镜像进行清理
    1. 删除 /etc/udev/rules.d/中包含网卡的文件,rm -f 70-xxxx
    2. 打开/etc/ssh/sshd_config,将 Listen的ip必为 0.0.0.0
    3. 打开/etc/sysconfig/iptables 将规则都删除
    4. 在/etc/sysconfig/networks中,添加如下内容:
      NETWORKING=yes
      NETWORKING_IPV6=no
      HOSTNAME=188
    5. 确保/etc/sysconfig/network-scripts/ifcfg-eth0内容如下:
      DEVICE=eth0
      TYPE=Ethernet
      ONBOOT=yes
      BOOTPROTO=static
    6. ifcfg-eth1的内容如下:
      DEVICE=eth1
      TYPE=Ethernet
      ONBOOT=yes
      BOOTPROTO=static
      IPADDR=192.168.1.188
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.1
      红色部分不用管,只要是你启动镜像用的ip就可以,真正安装时puppet会覆盖
    7. 对于centos7要禁掉NetworkManager; systemctl disable NetworkManager.service,并启动network systemctl enable network.service && systemctl restart network.service
    8. 将镜像关掉,并将镜像文件拷到/data0/image_base中
    9. mount -o loop /data0/image_base/centos-6.8.x86_64.img /mnt/, 进入/mnt/再次确认防火墙,ssh,网卡配置是否正确


沪ICP备19023445号-2号
友情链接