Also, wie gesagt ist Cloud ein Buzzword, was inzwischen für fast alles genutzt. Früher war es ein Browsergame, heute ist es ein "Full Cloud based Game". Daher fällt es schwer eine allgemeine Antwort auf die Frage zu finden. Aber grundsätzlich, auf sehr hoher theoretischer Ebene ist das Setup wie folgt:
1. Du hast ein sehr großes "Storage Area Network" (SAN). So ein SAN kann man sich mal simpel gesagt als eine sehr große Menge reiner Storageserver vorstellen, die bis unter die Decke mit Festplatten vollgestopft sind. Auf denen läuft jeweils ein Betriebssystem, über dieses ein Storage-Manager. Die Aufgabe des Storage-Managers ist es, den Speicherplatz zu virtualisieren. Du sagst deinen SAN also "Speichere diese Datei" und sie landet irgendwo darin, wird nach den Vorgaben dupliziert (zur Ausfallsicherheit) und automatisch im Backup gesichert. Nach außen sieht man von dem SAN dann lediglich Glasfaseranschlüsse.
2. Du hast eine Unmenge Cloudserver. Das sind normale Server, mit extrem hoher Packdichte an Prozessoren und an Arbeitsspeicher. Eigene Festplatten besitzen sie nicht. Jeder dieser Cloudserver ist per Glasfaser direkt oder über einen Switch mit dem SAN verbunden. Auf den einzelnen Servern läuft ein Hypervisor, meist in Form einer Software auf einem Kernel.
3. Es gibt einen Cloudmanager, der die Cloud verwaltet. Diese Software ist dazu da, einzelne Instanzen (eine VM) auf den jeweiligen Nodes (den Servern) zu starten und zu beenden. Was der Manager genau macht, ist sehr vom Anwendungszweck abhängig. Aber die grundlegenden Aufgaben sind immer gleich:
- So wenige Nodes wie möglich sollen laufen, d.h. die Nodes sollen eine möglichst hohe Auslastung erreichen. Dies spart unter dem Strich Energie. Daher werden Instanzen von wenig belasteten Nodes weg auf andere Nodes migriert. Es wird also Last umverteilt. Die dann freuen Nodes werden abgeschaltet.
- Es soll jede Instanz genügend Rechenleistung zur Verfügung haben. Wird also eine Node zu sehr ausgelastet, werden Instanzen auf weniger belastete Nodes migiriert. Stehen nicht mehr genügend Nodes zur Verfügung, werden neue gestartet.
-Zur Administration können einzelne Nodes bis hin zu ganzen Racks leergeräumt werden. Abgestürzte Nodes werden erkannt, hängende Instanzen ebenso.
Kurz gesagt ist die hier vorgestellte Cloud nichts anderes als eine elegante Anwendung von Live-Migration einzelner Instanzen zwischen Nodes. Da die Instanzen in dem SAN gespeichert sind und daher von jeder Node aus zugreifbar, ist diese Live-Migration innerhalb von Millisekunden und ohne nutzersichtbaren Ausfall möglich. Sprich du merkst gar nicht, wie deine Instanz migriert wird.
Beispiel: Du legst eine Amazon EC2 Instanz an. In diesem Moment wird ein Image erstellt und im SAN gespeichert. Dieses Image ist meist vorgefertigt, es ist also nur die Kopie einer Vorlage. Wenn du nun die Instanz startest, greift sich ein Hypervisor auf einer Node dieses Image und startet daraus eine virtuelle Maschine. Verlangst du nun mehr Rechenzeit, als die Node bietet, wird der Manager deine virtuelle Maschine ausfallfrei auf eine andere Node migrieren. Machst du nichts und die virtuelle Maschine ist idle, wird der Manager sie irgendwo parken.
EDIT: Eine solche Cloud hat als keinesfalls die Fähigkeit, die CPU-Power mehrerer Server zugleich bereitzustellen. Es erweckt nur den Eindruck, dass es so sei. Es gibt zwar Ansätze noch weiter zu abstrahieren und tatsächlich virtuelle Prozessoren aus mehreren einzelnen Maschinen zu erstellen, aber ob es schon jemand macht, weiß ich nicht.