University of Bristol | ILRT | IntDev blog

Jump to content Subscribe via RSS

This is a blog from the Internet Development Team at ILRT, Bristol. We build websites and web applications for a wide variety of customers, many in the UK higher education sector. Continue reading…

Deployment of a Virtual Infrastructure

Virtualisation is a term which has been in wide use in recent years but it is a computing concept which has been around since the 60s. Matt Baker, Unix Systems Administrator at the ILRT, has been working with virtualisation and explores some of the management issues in this article.

What is Virtualisation?

We often refer to using virtualisation when we want to run some software on a computer that it wasn’t designed for. In most circumstances we do not see the layers of virtualisation and to an extent this is the point. Virtualisation is all about layers. We have a layer below which has a feature we want to make use of and a layer above which is incompatible, and in between a layer which enables each side to “talk” the same language.This middle layer simplifies or simulates the way the lower layer works so that the top layer can understand it and interact. Think of it like the travel power adapter you take on holiday; you have a socket on the wall which has 2 round pins but a plug with 3 rectangle pins, the adapter virtualises the connection so we can get electricity.

At the ILRT we make use of virtualisation extensively at many layers of our hosting services to give us more flexibility and to make more efficient use of the resources we have. We are able to separate out the components of these services so that they perform better and more securely side-by-side. We can reduce downtime caused by the need to take server hardware out of service to perform maintenance by simply moving the website or service live to another location. It has also extended our ability to work on more exciting and diverse applications by increasing the numbers of concurrent services we can run without needing to buy in new servers. We have consolidated old hardware thus also reducing carbon emissions.

For the future

In the coming years virtualisation will develop to give us more freedom provide a multitude of services on varying scales. However, there may come a cost of managing these services and there are some exiting areas of computing which start to sound more like science fiction. The following sections take a more extensive look at the different technical aspects of virtualisation and how we are making use of them.

So… What is Virtualisation?

Lets start again. Virtualisation refers to the abstraction of the functionality of a device or software component from another interfacing device or software component. Using the term “virtual” gives us the impression that what we are using is fake in some respect, but we are really wrapping the functionality in a common format which is more generally recognised and interchangeable often with very little overhead. You could almost say that a wolf in sheep’s clothing is a virtual sheep! It may appear to look and act like a sheep but under the skin it’s something else. However, it’s not quite as sinister as that; in computer science there are many aspects of computing which are abstractions. In fact, at nearly every level of your computer there are layers of virtualisation. For example, your hard drive is split up using disk partitioning, presented to the operating system as virtual disks that it treats as multiple physical disks. The OS doesn’t know whether they are real separate disks or just one. On a different level, your web browser connects to web sites over network connections provided by your OS. The browser doesn’t know or care by what medium the Internet is provided, be it over your cable modem, via a wireless airport card in your Mac or via your phone. So, therefore, you could say the connection is virtualised.

However, more recently the term virtualisation specifically refers to three main areas in large scale computing. The first and foremost is the virtualisation or abstraction of an operating system from the hardware it operates on by way of a virtual machine: more on this below. The second is storage virtualisation, where mass storage devices which appear to be local to your computer or to a service actually live elsewhere or possibly even in multiple places at the same time. We call this a storage area network or SAN for short. The third is desktop virtualisation which are provided remotely via a single instance server, therefore, making more efficient use of powerful hardware but only needing a lightweight thin client desktop machine.

When it comes to the popular usage of the term we are usually talking about OS virtualisation. This is where we want to run multiple operating systems on a single piece of hardware by sharing software components or by using a hardware emulator in software. Computers have evolved to have massive capacity in the last decade and we often want to make more effective use of these resources. Running a single OS or application on these machines would be a waste of these resources. With virtualisation we can divide up the resource and allocate just what we need when we need it. Diverse software can co-exist where there would have previously been incompatibilities. For example, we might have an application that only runs on Windows 2000 but we only need to run it once a month for half an hour. It seems a waste to have a server on 24×7 wasting electricity or or a server off depreciating in value whilst it’s not in use. So it would be great if we can use the hardware for something else in the meantime.

The software that provides the layer of virtualisation is called a hypervisor, also known as a Virtual Machine Monitor. This layer sits between the hardware and the OS. It often provides an abstraction of the physical devices to the OS in a common way that is easy to interact with. So often this is a very good way to get old software to work on new hardware. The hypervisor schedules access to the underlying hardware and provides other external components that the virtual machines may make use of, such as virtualised networking components.

What is a Virtual Infrastructure?

Infrastructure is a term which collectively encompasses all the interrelated components which are required to run a large scale service such as the many web projects which are hosted by the ILRT. This would include networking, servers, databases, applications, storage, etc. A virtual infrastructure is where some or all of those components are provided virtually by a hypervisor or by way of virtualised services. It also is used to describe the administrative mechanisms which larger scale platforms employ, where many hypervisors running on many physical machines work collectively in clusters. This only further abstracts the service from the hardware. Once upon a time you could say X service is running on server Y but now it’s a floating variable that could be in one place one day and somewhere else the next with little to no noticeable affect to service availability.

There are now many commercial and open source solutions which not only provide the primary aspect of virtualisation, the hypervisor, but also the tools to construct a virtual infrastructure. One of the most interesting things to come out of this is that organisations are able to rapidly and very freely deploy large numbers of virtual services in a fully automated fashion.  This has coined the phrase cloud computing and companies like Amazon with their Web Services have adopted infrastructure as a service. However, with the ease of this creation there comes an expensive price of how to manage all the instances and this has called for some advances in the nature of systems administration in the direction of autonomic computing with self configuring and self healing networks.

So how does this affect ILRT?

At the ILRT and across the University as a whole there are many flavours of virtualisation in use. In our production environment we are currently using Ganeti an open source cluster management tool written by Google which we use to control Xen based Linux servers and a network based storage replication component DRBD. We are always researching ways to improve the flexibility, reliability and robustness of our services and Ganeti has enabled us to advance our hosting environment in all these areas. We are also extensively using configuration management to automate systems software maintenance and deployment. In the future we hope to extend the ways in which we manage the whole deployment life cycle as part of the virtual infrastructure with ever more layers of abstraction and automation.

If you are interested in more details on the specific configuration of our services please feel free to email the author of this article: matt.baker@bristol.ac.uk

This entry was posted on 8th January 2010 at 10:45 am and is filed under Briefings. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a comment

Powered by WP Hashcash