对于使用过OpenStack的用户,我们第一次操作虚拟机都可能是直接通过OpenStack Dashbord管理控制台提供的Web vnc来进行使用。
如图所示,我们可以很方便的使用该功能,对虚拟机进行管理和配置;
OpenStack虚拟化
对于OpenStack而言,OpenStack并不直接提供虚拟化技术实现,而是直接使用现虚拟化技术如QEMU,KVM,XenServer等。
对于KVM和QEMU我们可以通过如下命令在操作系统上运行一台虚拟机。
以在Linux上直接使用kvm创建windows虚拟机为例
定义虚拟机Disk
1 | qemu-img create -f qcow windows7.qcow2 20G |
使用kvm导入ISO镜像,并且安装操作系统
1 | kvm -m 2048 -no-reboot -boot order=d -drive file=windows7.qcow2,if=virtio,boot=off -drive file=windows7.iso,media=cdrom,boot=on -drive file=virtio-win-0.1-94.iso,media=cdrom,boot=off -net nic,model=virtio -nographic -vnc :1 |
此时我们指定了虚拟机的模式为-nographic 并且指定了vnc端口,这个时我们就可以通过localhost:1访问到该虚拟机
而对OpenStack而言,OpenStak更多是作为上层的管理者负责管理和控制地城的虚拟化技术
当我们使用nova命令创建一台虚拟机之后
1 | nova list |
1 | nova show c75adb4f-c554-4fa2-962e-35fef3367041 |
同样OpenStack调用了libvirt接口利用底层虚拟化技术Provider创建了一台虚拟设备,我们可以在计算节点上查看qemu进程,如下所示,只是参数比起我们自己使用qemu会相对负责许多,因为涉及到诸如网络信息的配置等
1 | # ps -ef|grep qemu |
虚拟机的文件保存在/var/lib/nova/instances目录中。
Nova Console实现
基于Libvirt对虚拟化技术的管控基础上,Nova项目提供了如下主要功能:
- API:提供外部访问Http访问接口
- Compute Core:负责对虚拟化资源的生命周期管理
- Networking for VMS:负责虚拟机的网络访问控制等及Nova-Network模式,适合小型的企业私有云,更多的场景还是考虑使用Neutron
- Image management (EC2 scenario):与Glance组件通讯负责镜像管理
- Command-line clients and other interfaces: 提供命令行管理接口
- Console interface:提供VNC以及NoVNC功能,方便管理和使用OpenStack虚拟机