当我在搭建好OpenStack的环境后,迫不及待的想创建利用它来创建一个自己常用的虚拟机来实验,我自己干的很蠢的事情,就是在开源的网站上下了镜像直接传到OpenStack,然后发现不能用,蠢不蠢啊.这里把我在做镜像的过程分享一下.在创建镜像的时候,需要用到KVM的一些知识,需要了解的可以自己百度,我自己之前也在别的博客里写了一篇KVM的安装使用过程,这里分享一下:
http://www.cnblogs.com/marvin-ma/p/7407509.html
在管理节点创建一个虚拟机镜像
1. 安装virt-install,qemu-kvm, libvirt,并启动libvrit
[root@Marvin-Node1 ~]# yum install -y qemu-kvm libvirt
[root@Marvin-Node1 ~]# yum install -y virt-install
[root@Marvin-Node1 ~]# systemctl start libvirtd && systemctl enable libvirtd
[root@Marvin-Node1 ~]# ifconfig
eth0: flags=4163 mtu 1500
inet 10.0.0.56 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::250:56ff:fe91:df22 prefixlen 64 scopeid 0x20
ether 00:50:56:91:df:22 txqueuelen 1000 (Ethernet)
RX packets 6449007 bytes 8443638629 (7.8 GiB)
RX errors 0 dropped 508 overruns 0 frame 0
TX packets 3246349 bytes 274871849 (262.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 4957466 bytes 1360755790 (1.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4957466 bytes 1360755790 (1.2 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099 mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:cc:71:8c txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这里如果没有问题,使用ifconfig命令,可以看到多出一个virbr0的网卡
2. 创建一个目录,用于存放镜像,并上传CentOS7的镜像到该目录下
创建目录/opt/image
[root@Marvin-Node1 ~]# mkdir -p /opt/image
可以通过xftp等软件来上传镜像,上传完成后开始创建虚拟机
3.创建虚拟机
3.1 创建一个10G的虚拟机硬盘
[root@Marvin-Node1 ~]# qemu-img create -f qcow2 /tmp/centos.qcow2 10G
3.2 创建虚拟机
[root@Marvin-Node1 ~]# virt-install --virt-type kvm --name centos --ram 1024 \
> --disk /tmp/centos.qcow2,format=qcow2 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 --noautoconsole \
> --os-type=linux --os-variant=centos7.0 \
> --location=/opt/image/CentOS-7-x86_64-Everything-1511.iso
Starting install...
Retrieving file .treeinfo... | 1.1 kB 00:00:00
Retrieving file vmlinuz... | 4.9 MB 00:00:00
Retrieving file initrd.img... | 37 MB 00:00:00
Creating domain... | 0 B 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
通过VNC工具连接到管理界面进行系统安装
时区选择上海
选择支持中文
分区,将所有容量都给根分区,且只分一个根分区
完成安装,设置root密码
安装完成后点击reboot,系统会关机,并不会重启,这时候在宿主机上可以通过命令查看刚才已经建立的虚拟机
[root@Marvin-Node1 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos shut off
启动虚拟机
[root@Marvin-Node1 ~]# virsh start centos
Domain centos started
启动后再次通过VNC工具连接上去,进行IP配置,系统优化,安装常用软件,配置yum源等工作,ip的如果不需要IPv6,只要留下以下4行就行
新建的虚拟机上操作:
编辑网络
vi /etc/sysconfig/network-scripts/ifcfg-eth0
按照图IP配置来修改
修改完成后重启network
systemctl restart network
测试外网是否联通,ping 百度等网站测试
安装常用软件
yum install vim lrzsz net-tools ntp tree wget -y
关闭防火墙,关闭selinux
sed -i 's@=enforcing@=disabled@' /etc/sysconfig/selinux
systemctl stop firewalld && systemctl disable firewalld
配置yum源
[root@localhost ~]# rpm -Uvh http://mirrors.zju.edu.cn/epel/7Server/x86_64/e/epel-release-7-10.noarch.rpm
[root@localhost ~]# yum install yum-plugin-fastestmirror -y
设置完成后关闭虚拟机
4. 在OpenStack的管理节点创建虚拟机镜像
[root@Marvin-Node1 ~]# source admin-openstack.sh
[root@Marvin-Node1 ~]# openstack image create "centos7-x86_64" --file /tmp/centos.qcow2 --disk-format qcow2 --container-format bare --public
+------------------+------------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------------+
| checksum | ec4343723602ab6df95ffeecee3d96ac |
| container_format | bare |
| created_at | 2017-09-11T17:19:01Z |
| disk_format | qcow2 |
| file | /v2/images/66d34783-d85c-479f-ad89-9fbdc3da38f7/file |
| id | 66d34783-d85c-479f-ad89-9fbdc3da38f7 |
| min_disk | 0 |
| min_ram | 0 |
| name | centos7-x86_64 |
| owner | 22cd7c4eb794462a94ef4907971effb9 |
| protected | False |
| schema | /v2/schemas/image |
| size | 1243676672 |
| status | active |
| tags | |
| updated_at | 2017-09-11T17:19:08Z |
| virtual_size | None |
| visibility | public |
+------------------+------------------------------------------------------+
[root@Marvin-Node1 ~]# cd /var/lib/glance/images/
[root@Marvin-Node1 images]# ll -h
total 1.2G
-rw-r----- 1 glance glance 1.2G Sep 12 01:19 66d34783-d85c-479f-ad89-9fbdc3da38f7 ## 这个1.2G的就是创建的镜像
-rw-r----- 1 glance glance 13M Sep 9 01:31 91355df9-dd45-45d6-9b95-67b61aedafbd
[root@Marvin-Node1 images]#
5. 在web界面创建一台centos7的虚拟机
5.1 使用admin登录到web界面
5.2 创建云主机类型
创建完成后注销登录,使用demo用户登录到web
5.3 创建centos7的云主机
创建完成后在这里就可以看到虚拟机了
点击右边的管理栏,打开控制台
看到控制台后就可以使用前面root帐号的密码登录了
注意: 登录后修改主机名及IP,避免生产中重复,另外可以直接在创建镜像的时候,写一个脚本,在新建云主机完成后,直接更改主机名和IP地址.
另外,后面几张图不是当前环境的IP,是自己用来测试的另外一套环境截的图.
笔者QQ: 779734791 昵称: Marvin 欢迎大家一起讨论.