2.2.2 Xen
Cloud Computing Applications, Part 1: Cloud Systems and Infrastructure
伊利诺伊大学香槟分校
課程 3(共 6 門,云计算 專項課程)
Welcome to the Cloud Computing Applications course, the first part of a two-course series designed to give you a comprehensive view on the world of Cloud Computing and Big Data! In this first course we cover a multitude of technologies that comprise the modern concept of cloud computing. Cloud computing is an information technology revolution that has just started to impact many enterprise computing systems in major ways, and it will change the face of computing in the years to come. We start the first week by introducing some major concepts in cloud computing, the economics foundations of it and we introduce the concept of big data. We also cover the concept of software defined architectures, and how virtualization results in cloud infrastructure and how cloud service providers organize their offerings. In week two, we cover virtualization and containers with deeper focus, including lectures on Docker, JVM and Kubernates. We finish up week two by comparing the infrastructure as a service offering by the big three: Amazon, Google and Microsoft. Week three moves to higher level of cloud offering, including platform as a service, mobile backend as a service and even serverless architectures. We also talk about some of the cloud middleware technologies that are fundamental to cloud based applications such as RPC and REST, JSON and load balancing. Week three also covers metal as a service (MaaS), where physical machines are provisioned in a cloud environment. Week four introduces higher level cloud services with special focus on cloud storage services. We introduce Hive, HDFS and Ceph as pure Big Data Storage and file systems, and move on to cloud object storage systems, virtual hard drives and virtual archival storage options. As discussion on Dropbox cloud solution wraps up week 4 and the course.
Cloud Infrastructure, Cloud Applications, Cloud Storage, Cloud Computing
Great Course! It gave me solid foundation in understanding cloud computing and its applications.
its Best course for me i'm very satisfied and get knowledge, its better for my future
Module 2: Foundations: Containers, Virtual Machine, JVM
Welcome to the second module! Here, we cover virtualization and containers with deeper focus, including lectures on Docker, JVM and Kubernates. We finish up week two by comparing the infrastructure as a service offering by the big three: Amazon, Google and Microsoft.
2.2.1 OS Based Virtualization33:50
2.2.2 Xen10:27
2.2.3 VServer 2.012:40
2.2.4 Solaris Zones8:09
2.2.5 OpenVZ9:51
2.2.6 LXC Linux Containers9:23
Roy H. Campbell
Professor of Computer Science
Reza Farivar
Data Engineering Manager at Capital One, Adjunct Research Assistant Professor of Computer Science
選擇語言英語(English)韓語
The previous lecture gave you an introduction to all the different
virtualizations that we're going to discuss, and
now I'm going to take each one and just go through it a bit more in detail.
We can come back to some of the points I made in lecture one.
I want to stress though, some other aspects of this like maintainability,
ease of containment, and so on.
So we'll present some new material here too.
Let's look at Xen.
This is a picture the guest VM, and what we're
expanding is just one of the VMs of a system and
having a close look at what's inside.
What you can see is that most of the application
space is pretty much what you would expect from a Unix.
And, The processes, the organization,
the ports that are available, all of that stuff is mapped so
that pretty much anything that you would've written for
Linux would be fine to run in Xen.
It will all carry over and execute, so
there's no real impact on the users whatsoever.
We have processes.
We can have init process when the thing boots up or
when the application starts again, I have /bin/bash, your favorite shells.
We could have http, all of that stuff is just typical use of
just standard code, and it's not going to be modified at all.
The file system you're going to have the same type of file systems, and now note
you're going to have lots of users having /home or /root.
Each of those instances, those guest VMs, are going to have a root.
And those roots aren't going to interfere with each other which of course
they would've done if you'd put them on a single box with Linux.
So the guest VM is going to take care of that,
it's going to give you that whole sort of Linux feel.
This is the whole machine for you.
Similarly if you look at the ports, the port numbers like port 80,
port 3125, they're all going to be your ports.
And if you use them, you're going to think that you're the sole person
actually accessing, sending IO through those systems.
You're not going to see any of the other users' applications on this system.
So the magic doing this, as we described was the guest OS and
the way it has been modified to provide the virtualization.
So the guest OS, much of it is going to be the same as your normal OS.
But there are going to be pieces of the operating system,
sensitive operations in that operating system that have been modified
in order to be able to give you the virtualization feel.
And in particular, we can talk about some of those.
Access to the IO clearly needs to happen, but if you look at those pictures,
well /root when you access the disk system, something's happening
there because other people could be accessing their roots.
And it's clearly not all the same root.
Similarly with the ports, you're accessing port 80,
somebody else might access port 80.
And you would like those accesses to be separated and
contained, if you like, well, isolated so that everybody's happy.
So the answer of how that all happens is in
the sensitive operations executed by the guest.
What they're going to do is actually call down into the hypervisor,
which is why we got so many teeth there sort of showing up and
down interactions, to interpret what's going on.
When we get, say, a write to the file system and
it goes to through /root, we're going to interpret /root and
the file hierarchy differently in this guest VM from any other guest VMs.
And what the hypervisor is going to do is to map this particular
root to a different part of the disk, so
that there aren't collisions when the file system's changed.
Similarly when you write to port 80, what the hypervisor is going to effectively
do is intercept those IO requests to the ports from the guest OS.
Interpret those port IDs so
that they don't map onto the same ID as all of the other processes,
and then map it through the network interfaces in some manner.
So this whole environment can be built,
well it is built, it can work very well.
But it requires some fancy footwork especially down in the driver domain.
What you see happening is that the guest OS when it's talking to the drivers,
because it could talk to the disk, it could talk to the network,
it could talk to other well RS-232 type of hardware.
What you have to do is to get some interpretation of that I/O request that
will work on a shared machine that doesn't interfere between all of the applications.
Typically what happens is that that driver domain has a special sort
of isolation box, shown here as a driver domain.
And what it's going to do is carefully assign pieces of the disk to the guest OS.
It's going to carefully assign the IO structures, the ports, and so
on so that, when port 80 gets to it, it's going to map it to a different port for
that box and then do the actual IO.
Oftentimes what will be then occurring is when you get information
coming backwards and forwards, that driver domain has to work in both directions.
It has to take what's coming in and map it back.
You've seen a lot of this already, probably.
In many ways, well, the driver domain working with the networking,
you've seen some of the ways that the networking devices can interoperate.
If you think about NAT boxes and what they do, in a sense,
the driver domain is doing sort of no difference.
It's taking addresses and changing the addresses so that there aren't collisions.
So, if you look at all these components that we;ve got in Xen,
what are they all doing?
I've described how it works, now let's focus on what's it doing.
This box, hypervisor, is providing resource control.
What it's going to talk to is the driver domain.
It's going to map virtual devices across that driver domain.
You're going to have to have some mechanism for
organizing the CFQ call for disk inside a PC.
You're also going to have to manage the HTB For a network access.
So those parts are in that driver domain issue.
Then you're going to have an I/O Path
where the process is communicating to the guest OS.
And then the guest OS communicates to the IDD.
That's the I/O part of it.
It's going to have to be isolated from all the other machines, all the other
virtual machines running on Xen on that same platform.
Then the hypervisor is going to be responsible for security.
It's going to be providing access physical level control.
It's going to be looking at PCI addresses and make sure they don't collide.
It's going to have to look at virtual machines, virtual memory,
make sure the virtual memory is mapped so that the physical addresses don't collide.
Then we dig down and, There will be a resource control.
And somebody's got to decide how to schedule all of the different
parts of this.
So the hypervisor's going to do that.
It's going to schedule the VMs.
It's then going to talk about allocating resources because the VMs will
require memory space, real memory space, virtual memory space, and
then disk space for the VM.
All of that's got to be done by the hypervisor.
And last you've got scheduling disking.
You're going to have to schedule the VMs, but
you need guest VM and IDD scheduling for the IO.
And of course, because this is Linux,
you've got two levels of scheduling inside the guest.
You've got that for the applications, and you've also got the IO scheduling that
goes on, so another complicated part of the hypervisor.
So what you see here is an architecture that handles very nicely
the separation of guests and their operating systems.
The conflict oftentimes occurs down in the driver domain.
It can be overcome by changing the addresses,
changing where file systems are mapped.
Now we're going to look at containers and
how containers and jails and other things can operate.