IaaS clouds brought us greater flexibility in managing computing infrastructures enabling us to mix different computing environments (e.g. Grid systems, web-servers and even personal desktop-like systems) in form of virtual machines (VM) within the same hardware equipment. The new paradigm automatically introduced efficiency increase caused by switching from using single-task dedicated physical servers to splitting them up into a greater number of smaller virtual servers each running its own computing tasks. In this work we describe an approach to further improve hardware utilization in IaaS clouds through dynamic reallocation of VMs and overcommitment. This approach introduces new risks and challenges in automated cloud management, but can help increase the cloud resources utilization efficiency which may become a serious problem given constant growth of computing infrastructures and the variety of modern workloads. We introduce a meta-scheduling framework and an example scheduling strategy able to handle dynamic reallocation of virtual machines and which currently supports OpenNebula platform. The framework has a modular design and can be extended to support other platforms (e.g. OpenStack) which provide API to communicate with the cloud.