DE102021127254A1 - Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern - Google Patents

Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern Download PDF

Info

Publication number
DE102021127254A1
DE102021127254A1 DE102021127254.8A DE102021127254A DE102021127254A1 DE 102021127254 A1 DE102021127254 A1 DE 102021127254A1 DE 102021127254 A DE102021127254 A DE 102021127254A DE 102021127254 A1 DE102021127254 A1 DE 102021127254A1
Authority
DE
Germany
Prior art keywords
container
node
computer
manifest
cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021127254.8A
Other languages
English (en)
Inventor
Lukas Rupprecht
Vasily Tarasov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102021127254A1 publication Critical patent/DE102021127254A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

Ein auf einem Computer implementiertes Verfahren gemäß einer Ausführungsform umfasst Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Hardware-Virtualisierung und insbesondere auf ein Erstellen und Bereitstellen von Containerabbildungen (container images).
  • Bei der modernen Anwendungsbereitstellung werden häufig Container eingesetzt. Zum Beispiel werden Containerabbildungen über eine zentrale Datenbank verteilt, und um einen Container zu erstellen, ruft ein Host eine Containerabbildung ab und erstellt mittels der Containerabbildung ein Stammdateisystem für den Container. Die Anzahl von Containerabbildungen und die Geschwindigkeit der Containerbereitstellung nehmen rapide zu.
  • Allerdings treten bei den derzeitigen Implementierungen von Containerabbildungen mehrere Probleme auf. Zum Beispiel sind Container derzeit langsam und beim Starten sehr E/A-intensiv, da sie ein Herunterladen und Speichern von großen Containerabbildungen erfordern, was zu einer hohen Auslastung des lokalen Speichers und/oder des Speicherplatzes führt. Ein Übertragen der großen Containerabbildungen über Verkehrsnetzwerke führt ebenfalls zu einer hohen Netzwerkauslastung sowie zu einer hohen Belastung des Speicherteilsystems eines Datenbankdienstes. Dies hat zur Folge, dass die derzeitigen Containerabbildungen unhandlich und teuer zu übertragen und zu speichern sind.
  • Es besteht daher ein Bedarf an einer schnelleren und effizienteren Methode, Containerabbildungen zu speichern und zu verteilen.
  • KURZDARSTELLUNG
  • Ein auf einem Computer implementiertes Verfahren gemäß einer Ausführungsform umfasst Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.
  • Gemäß einer anderen Ausführungsform umfasst ein Computerprogrammprodukt zum Durchführen einer inhaltssensitiven Knotenauswahl für ein Erstellen von Containern ein durch einen Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen, wobei das durch einen Computer lesbare Speichermedium kein flüchtiges Signal an sich ist und wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren durchzuführen, das Folgendes umfasst: Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers durch den Prozessor; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten durch den Prozessor; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten durch den Prozessor, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.
  • Gemäß einer anderen Ausführungsform umfasst ein System einen Prozessor; und eine in den Prozessor integrierte, durch den Prozessor ausführbare oder in den Prozessor integrierte und durch diesen ausführbare Logik, wobei die Logik für Folgendes konfiguriert ist: Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.
  • Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung werden anhand der folgenden ausführlichen Beschreibung deutlich, die in Verbindung mit den Zeichnungen beispielhaft die Grundgedanken der Erfindung zeigt.
  • Figurenliste
    • 1 zeigt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 zeigt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 zeigt einen Cloud-Computing-Knoten gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 4 zeigt einen Ablaufplan für ein Verfahren zum Durchführen einer inhaltssensitiven Knotenauswahl zum Erstellen von Containern gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 5 zeigt eine beispielhafte Systemarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung dient der Veranschaulichung der allgemeinen Grundgedanken der vorliegenden Erfindung und soll die hier beanspruchten erfinderischen Konzepte nicht einschränken. Darüber hinaus können bestimmte hier beschriebene Funktionen in Kombination mit anderen beschriebenen Funktionen in jeder der verschiedenen möglichen Kombinationen und Umsetzungen verwendet werden.
  • Sofern hier nicht ausdrücklich anders definiert, sind alle Begriffe so breit wie möglich auszulegen, zum Beispiel die aus der Beschreibung hervorgehenden Bedeutungen sowie die Bedeutungen, die der Fachmann versteht und/oder die in Wörterbüchern, Abhandlungen usw. definiert sind.
  • Es ist auch zu beachten, dass die in der Beschreibung und den beigefügten Ansprüchen verwendeten Singularformen „einer“, „eine“ und „der, die, das“ die Pluralformen umfassen, wenn nicht anders angegeben. Es wird ferner darauf hingewiesen, dass die Begriffe „aufweist“ und/oder „aufweisen, wenn sie in dieser Spezifikation verwendet werden, das Vorhandensein von angegebenen Funktionen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, aber nicht das Vorhandensein oder Hinzufügen von einer/einem oder mehreren anderen Funktionen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die folgende Beschreibung offenbart mehrere Ausführungsformen für das Durchführen einer inhaltssensitiven Knotenauswahl zum Erstellen von Containern.
  • In einer allgemeinen Ausführungsform umfasst ein auf einem Computer implementiertes Verfahren Folgendes: Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.
  • In einer anderen allgemeinen Ausführungsform umfasst ein Computerprogrammprodukt zum Durchführen einer inhaltssensitiven Knotenauswahl zum Erstellen von Containern ein durch einen Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen, wobei das durch einen Computer lesbare Speichermedium kein flüchtiges Signal an sich ist und wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren durchzuführen, das Folgendes umfasst: Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers durch den Prozessor; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten durch den Prozessor; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten durch den Prozessor, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.
  • In einer anderen allgemeinen Ausführungsform umfasst ein System einen Prozessor; und eine in den Prozessor integrierte, durch den Prozessor ausführbare oder in den Prozessor integrierte und durch diesen ausführbare Logik, wobei die Logik für Folgendes konfiguriert ist: Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.
  • Es sei von vornherein klargestellt, dass ein Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing umfasst. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
  • Bei den Eigenschaften handelt es sich um die Folgenden:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Bei den Dienstmodellen handelt es sich um die Folgenden:
    • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die Folgenden:
    • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann in den eigenen Räumen oder fremden Räumen stehen.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten aufweist.
  • Unter Bezugnahme auf 1 ist die veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie gezeigt ist, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Automobil-Computer-System 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie Private, Community, Public oder Hybrid Clouds gruppiert werden (nicht dargestellt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die in 1 gezeigten Arten von Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 2, wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (1) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 2 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 umfasst Hardware- und SoftwareKomponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 61; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen SoftwareKomponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbank-Software 68.
  • Die Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, darunter virtuelle private Netzwerke, virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Die Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
  • Eine Arbeitslastschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalytikverarbeitung 94; Transaktionsverarbeitung 95; und Erstellung und Bereitstellung von Containerabbildungen 96.
  • Unter Bezugnahme auf 3 ist nun ein Schema eines Beispiels für einen Cloud-Computing-Knoten dargestellt. Cloud-Computing-Knoten 10 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und soll keine Beschränkung des Anwendungsbereichs oder der Funktionalität von Ausführungsformen der hier beschriebenen Erfindung nahelegen. Unabhängig davon kann auf Cloud-Computing-Knoten 10 jede der oben genannten Funktionen implementiert und/oder ausgeführt werden.
  • Im Cloud-Computing-Knoten 10 befindet sich ein Computersystem/Server 12, das in zahlreichen anderen Systemumgebungen oder -konfigurationen für allgemeine Zwecke oder spezielle Zwecke einsatzfähig ist. Beispiele für bekannte Computersysteme, - umgebungen und/oder -konfigurationen, die für die Verwendung mit Computersystem/Server 12 geeignet sein können, umfassen, ohne auf diese beschränkt zu sein Personal-Computer-Systeme, Server-Computer-Systeme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputer-Systeme, Großrechner-Computersysteme und verteilte Cloud-Computing-Umgebungen, die eines der oben genannten Systeme oder Einheiten umfassen, und dergleichen.
  • Computersystem/Server 12 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Befehlen beschrieben werden, wie z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. umfassen, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Computersystem/Server 12 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, in denen Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Verkehrsnetz miteinander verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Speichermedien des Computersystems befinden, unter anderem in Arbeitsspeichereinheiten.
  • Wie in 3 dargestellt, ist Computersystem/Server 12 in dem Cloud-Computing-Knoten 10 in Form einer Universalcomputereinheit dargestellt. Die Komponenten von Computersystem/Server 12 können, ohne auf diese beschränkt zu sein, einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18 umfassen, der verschiedene Systemkomponenten mit dem Prozessor 16 verbindet, unter anderem den Systemspeicher 28.
  • Bus 18 repräsentiert eine oder mehrere von mehreren Arten von Busstrukturen, unter anderem einen Speicherbus oder eine Speichersteuerung, einen Peripheriebus, einen beschleunigten Grafikanschluss und einen Prozessor oder lokalen Bus, der eine von verschiedenen Busarchitekturen verwendet. Zu diesen Architekturen gehören beispielsweise, aber nicht darauf beschränkt, der ISA-Bus (Industry Standard Architecture), der MCA-Bus (Micro Channel Architecture), der EISA-Bus (Enhanced ISA), der lokale Bus der Video Electronics Standards Association (VESA) und der PCI-Bus (Peripheral Component Interconnects).
  • Computersystem/Server 12 umfasst in der Regel eine Vielfalt von durch ein Computersystem lesbaren Medien. Bei diesen Medien kann es sich um alle verfügbaren Medien handeln, auf die durch Computersystem/Server 12 zugegriffen werden kann, und sie umfassen sowohl flüchtige als auch nichtflüchtige Medien, wechselbare und nichtwechselbare Medien.
  • Der Systemspeicher 28 kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers umfassen, z.B. RAM (Random Access Memory) 30 und/oder Cachespeicher 32. Computersystem/Server 12 kann außerdem andere wechselbare/nicht wechselbare, flüchtige/nichtflüchtige Speichermedien für Computersysteme umfassen. Lediglich beispielhaft kann das Speichersystem 34 für Lese- und Schreibvorgänge von einem nicht wechselbaren, nichtflüchtigen magnetischen Medium bereitgestellt werden (nicht dargestellt und typischerweise als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, kann ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine wechselbare, nichtflüchtige Magnetplatte (z.B. eine „Diskette“) bereitgestellt werden, sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine wechselbare, nichtflüchtige optische Platte wie eine CD-ROM, DVD-ROM oder andere optische Medien. Hierbei können sie jeweils über eine oder mehrere Datenträgerschnittstellen mit dem Bus 18 verbunden werden. Wie im Folgenden eingehender dargestellt und beschrieben, kann der Systemspeicher 28 mindestens ein Programmprodukt mit einen Satz (z.B. mindestens eines) von Programmmodulen umfassen, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 40, das einen Satz (mindestens eines) von Programmmodulen 42 enthält, kann beispielsweise, aber nicht darauf beschränkt, im Systemspeicher 28 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule sowie Programmdaten. Jede der Komponenten Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule sowie Programmdaten oder eine Kombination davon kann eine Implementierung einer Netzwerkumgebung umfassen. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodiken der hier beschriebenen Ausführungsformen der Erfindung aus.
  • Computersystem/Server 12 kann auch mit einer oder mehreren externen Einheiten 14 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw.; mit einer oder mehreren Einheiten, anhand derer ein Benutzer mit Computersystem/Server 12 interagieren kann; und/oder mit allen Einheiten (z.B. Netzwerkkarte, Modem usw.), anhand derer Computersystem/Server 12 mit einer oder mehreren anderen Computereinheiten Daten austauschen kann. Eine solche Datenübertragung kann über Eingabe/Ausgabe- (E/A-) Schnittstellen 22 erfolgen. Computersystem/Server 12 kann jedoch auch über den Netzwerkadapter 20 mit einem oder mehreren Netzwerken wie einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet) Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 20 über den Bus 18 Daten mit den anderen Komponenten des Computersystems/Servers 12 aus. Es wird darauf hingewiesen, dass andere Hardware- und/oder Softwarekomponenten in Verbindung mit Computersystem/Server 12 verwendet werden können, auch wenn sie nicht dargestellt sind. Beispiele umfassen, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerkarrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • Unter Bezugnahme auf 4 wird nun ein Ablaufplan eines Verfahrens 400 gemäß einer Ausführungsform gezeigt. Das Verfahren 400 kann gemäß der vorliegenden Erfindung unter anderem in jeder der in 1 bis 3 und 5 dargestellten Umgebungen in verschiedenen Ausführungsformen durchgeführt werden. Es versteht sich von selbst, dass das Verfahren 400 mehr oder weniger Operationen als die konkret in 4 beschriebenen umfassen kann, wie ein Fachmann nach dem Lesen der vorliegenden Beschreibungen verstehen dürfte.
  • Jeder der Schritte des Verfahrens 400 kann von jeder geeigneten Komponente der Betriebsumgebung durchgeführt werden. Zum Beispiel kann das Verfahren 400 in verschiedenen Ausführungsformen teilweise oder vollständig von einem oder mehreren Servern, Computern oder einer anderen Einheit durchgeführt werden, die einen oder mehrere Prozessoren enthält. Der Prozessor, zum Beispiel Verarbeitungsschaltung(en), Chip(s) und/oder Modul(e), der/die/das in Hardware und/oder Software implementiert ist (sind) und vorzugsweise mindestens eine Hardwarekomponente aufweist (aufweisen), kann in jeder Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 400 durchzuführen. Beispielhafte Prozessoren umfassen, ohne auf diese beschränkt zu sein, eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), eine vor Ort programmierbare Gatter-Anordnung (FPGA) usw., sowie Kombinationen davon oder jede andere geeignete, in der Technik bekannte Datenverarbeitungseinheit.
  • Wie in 4 dargestellt, kann das Verfahren 400 durch Operation 402 ausgelöst werden, bei der ein Manifest für eine Containerabbildung eines zu erstellenden Containers empfangen wird. In einer Ausführungsform kann das Manifest abgerufen werden als Reaktion auf eine Anfrage zum Erstellen eines Containers innerhalb eines Clusters von Datenverarbeitungsknoten.
  • Zum Beispiel kann die Anfrage von einem Benutzer, einer Anwendung usw. kommen. In einem anderen Beispiel kann die Anfrage in dem Cluster von Datenverarbeitungsknoten empfangen werden. In einem weiteren Beispiel kann der Cluster von Datenverarbeitungsknoten ein verteiltes Datenverarbeitungsnetzwerk, eine auf einer Cloud beruhende Datenverarbeitungsumgebung usw. umfassen. In noch einem weiteren Beispiel kann der Container ein in sich geschlossenes Softwarepaket enthalten, das eine Virtualisierung auf der Ebene des Betriebssystems implementiert.
  • Des Weiteren kann in einer Ausführungsform das Erstellen des Containers Folgendes umfassen: Installieren eines Dateisystems für den Container in einem der Mehrzahl von Datenverarbeitungsknoten innerhalb des Clusters, Laden einer oder mehrerer Bibliotheken innerhalb des Containers und/oder Ausführen einer oder mehrerer Anwendungen innerhalb des Containers mittels des installierten Dateisystems usw.
  • Ferner kann in einer Ausführungsform die Containerabbildung alle Dateien enthalten, die zum Erstellen des Containers in einem der Datenverarbeitungsknoten des Clusters erforderlich sind. In einer anderen Ausführungsform kann die Containerabbildung eine Mehrzahl von Dateien enthalten (z.B. ein ausführbares Paket einschließlich Code, Laufzeit, Systemwerkzeugen, Systembibliotheken und Einstellungen usw.). In noch einer weiteren Ausführungsform kann das Manifest für die Containerabbildung Metadaten enthalten, die die Mehrzahl der Dateien innerhalb der Containerabbildung beschreiben.
  • Zum Beispiel kann das Manifest eine Liste von Dateinamen (z.B. Inhaltskennungen), diesen Dateien zugehörige Eigentums- und/oder Berechtigungsdaten usw. enthalten. In einem anderen Beispiel kann das Manifest auf dem Inhalt beruhende Adressen für die Dateien enthalten (z.B. Datei-Hashwerte, Zeiger auf Speicherorte, an denen die Mehrzahl der Dateien gespeichert ist, usw.). In noch einem weiteren Beispiel kann das Manifest eine Mehrzahl von Datei-Stubs (Stutzen) speichern, die jeweils einen Zeiger auf einen Speicherort der Datei enthalten.
  • Ferner kann das Manifest in einer weiteren Ausführungsform Metadaten enthalten, die die Mehrzahl der Dateien innerhalb der Containerabbildung beschreiben, nicht aber die Mehrzahl der Dateien selbst. Zum Beispiel können die Dateien in einem entfernt angeordneten Inhaltsspeicher (z.B. in einem zentralen Objektspeicher) gespeichert werden. In einem anderen Beispiel können eine oder mehrere der Dateien lokal gespeichert werden (z.B. in einem Knoten, in dem der Container erstellt werden soll, usw.).
  • In einer anderen Ausführungsform kann das Manifest nach dem Erstellen des Containers vom Container verwendet werden, um bei Bedarf einzelne Dateien aus der Containerabbildung abzurufen (z.B. mit der „Lazy“-Methode auf Anforderung einer innerhalb des Containers ausgeführten Anwendung usw.).
  • In einer Ausführungsform kann das Manifest auch von einem von den Knoten innerhalb des Clusters getrennten Planungsmodul abgerufen werden. In einer anderen Ausführungsform kann das Manifest aus einer Datenablage (z.B. einer Datenbank usw.) abgerufen werden. Zum Beispiel kann ein von den Knoten innerhalb des Clusters getrenntes Planungsmodul das Manifest für die Containerabbildung des Containers aus einer Manifest-Datenablage (z.B. einer Datenbank usw.) abrufen, die physisch vom Planungsmodul getrennt ist. In noch einer weiteren Ausführungsform kann das Manifest in einem Überlappungsberechnungsmodul von einem Planer empfangen werden.
  • Darüber hinaus kann das Verfahren 400 mit Operation 404 fortfahren, bei der ein Abbildungsindex für einen Cluster von Datenverarbeitungsknoten identifiziert wird. In einer Ausführungsform kann der Abbildungsindex in einer Datenablage identifiziert werden. In einer anderen Ausführungsform kann der Abbildungsindex lokal in einem Planungsmodul gespeichert werden. In einer Ausführungsform kann der Abbildungsindex entfernt gespeichert werden (z.B. als separate Datenbank usw.). In noch einer weiteren Ausführungsform kann der Abbildungsindex Kennungen für jeden Knoten innerhalb des Clusters von Datenverarbeitungsknoten speichern.
  • Darüber hinaus können in einer Ausführungsform im Abbildungsindex Kennungen (z.B. Inhaltskennungen usw.) aller Container-Abbildungsdateien gespeichert werden, die aktuell in jedem Knoten des Clusters von Datenverarbeitungsknoten gespeichert sind. Zum Beispiel kann jeder Knoten innerhalb des Clusters von Datenverarbeitungsknoten einen oder mehrere Teile einer oder mehrerer Containerabbildungen speichern. In einem anderen Beispiel umfassen diese Teile Container-Abbildungsdateien. In noch einem weiteren Beispiel können diese Teile in einem Cache eines jeden Knotens gespeichert werden. In noch einem weiteren Beispiel kann jeder Knoten innerhalb des Clusters von Datenverarbeitungsknoten andere Teile einer oder mehrerer Containerabbildungen (z.B. andere Container-Abbildungsdateien usw.) als die anderen Knoten des Clusters speichern.
  • Des Weiteren können in einer Ausführungsform Inhaltskennungen für jede Container-Abbildungsdatei, die aktuell in einem Knoten des Clusters von Datenverarbeitungsknoten gespeichert ist, mit einer Kennung für den Knoten (z.B. einer Knotenkennung usw.) innerhalb des Abbildungsindex verknüpft (z.B. auf sie abgebildet) werden. Auf diese Weise kann der Abbildungsindex eine Angabe aller Container-Abbildungsdateien speichern, die in jedem Knoten des Clusters gespeichert sind.
  • In einer Ausführungsform kann der Abbildungsindex auch nur einen Teil (z.B. ein Präfix) jeder Inhaltskennung speichern, um eine Menge an gespeicherten Daten innerhalb des Abbildungsindex zu reduzieren. In einer anderen Ausführungsform kann der Abbildungsindex aus einer Datenablage (z.B. einer Datenbank usw.) abgerufen werden. Zum Beispiel kann der Abbildungsindex aus derselben Datenablage abgerufen werden, aus der auch das Manifest abgerufen wird. In noch einer weiteren Ausführungsform kann der Abbildungsindex in einem Überlappungsberechnungsmodul von einem Planer empfangen werden.
  • Darüber hinaus kann das Verfahren 400 mit Operation 406 fortfahren, bei der ein Datenverarbeitungsknoten innerhalb des Clusters von Datenverarbeitungsknoten ausgewählt wird, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen. In einer Ausführungsform kann das Überlappungsberechnungsmodul die Liste der Inhaltskennungen im Manifest mit den Inhaltskennungen vergleichen, die mit den Knotenkennungen im Abbildungsindex verknüpft sind.
  • Ferner kann das Überlappungsberechnungsmodul in einer Ausführungsform für jede Knotenkennung im Abbildungsindex eine Anzahl von Inhaltskennungen im Manifest ermitteln, die mit der Knotenkennung verknüpft sind. Zum Beispiel kann die Anzahl der Inhaltskennungen im Manifest, die mit einer Knotenkennung verknüpft sind, summiert werden, um eine Punktzahl für die Knotenkennung zu ermitteln. Auf diese Weise kann das Überlappungsberechnungsmodul eine Anzahl von Container-Abbildungsdateien für die Containerabbildung ermitteln, die aktuell in jedem der Knoten des Clusters gespeichert sind.
  • Weiterhin kann in einer Ausführungsform ein Knoten, der mit der größten Anzahl von Inhaltskennungen im Manifest verknüpft ist (z.B. verglichen mit den anderen Knoten innerhalb des Clusters), zum Erstellen des Containers ausgewählt werden. Zum Beispiel kann die Knotenkennung, die die höchste Punktzahl aufweist, identifiziert und zurückgeliefert werden. In einer anderen Ausführungsform kann eine Teilmenge der im Abbildungsindex enthaltenen Knotenkennungen für den Vergleich mit dem Manifest identifiziert werden.
  • Zum Beispiel können nur solche Knotenkennungen mit dem Manifest verglichen werden, die eine oder mehrere zusätzliche Ressourcenanforderungen erfüllen. In einer anderen Ausführungsform können die zusätzlichen Ressourcenanforderungen einen Mindestumfang an verfügbarem Cachespeicher für einen Knoten, einen Mindestumfang an nichtflüchtigem Speicher für einen Knoten usw. umfassen. Zum Beispiel können nur solche Knotenkennungen mit dem Manifest verglichen werden, die Knoten zugehörig sind, deren aktuell verfügbarer Cachespeicher über einem vorgegebenen Schwellenwert liegt.
  • In einer Ausführungsform kann auch eine Teilmenge aller Inhaltskennungen im Manifest für den Abgleich mit dem Abbildungsindex identifiziert werden. Zum Beispiel kann jeder Inhaltskennung im Manifest ein Gewichtswert auf der Grundlage von der Anzahl der historischen Zugriffe auf eine durch die Inhaltskennung repräsentierte Datei zugewiesen werden. In einem anderen Beispiel können nur Inhaltskennungen mit einem Gewicht oberhalb eines vorgegebenen Schwellenwerts mit dem Abbildungsindex abgeglichen werden. Auf diese Weise kann ein Zeitraum für die Knotenauswahl verkürzt werden, indem eine Anzahl von zu vergleichenden Knotenkennungen und Inhaltskennungen begrenzt wird.
  • Infolgedessen kann ein Knoten, in dem aktuell die größte Anzahl von Container-Abbildungsdateien für eine Containerabbildung des Containers gespeichert ist, zum Erstellen des Containers ausgewählt werden. Dadurch kann eine Menge von Container-Abbildungsdateien, die von dem Knoten während des Erstellens/Ausführens des Containers in dem Knoten abgerufen werden müssen, auf ein Mindestmaß reduziert werden, was wiederum eine für das Übertragen solcher Container-Abbildungsdateien verwendete Bandbreite reduzieren kann. Dadurch kann ein Umfang des Netzwerkverkehrs zwischen dem Knoten und einem Speicher für Containerabbildungen reduziert werden, wodurch eine Leistung einer oder mehrerer Hardwarekomponenten, die eine solche Datenübertragung über das Netzwerk durchführen, verbessert wird. Dies kann auch eine Latenzzeit für das Abrufen von Container-Abbildungsdateien durch den Knoten verringern (durch Erhöhen der Anzahl lokaler Container-Abbildungsdateien auf ein Maximum), was die Leistung der Computerhardware des Knotens während des Implementierens des Containers verbessern kann.
  • Darüber hinaus kann in einer Ausführungsform die Planung für das Erstellen des Containers in dem ausgewählten Knoten stattfinden. In einer anderen Ausführungsform kann ein Dateisystem für den Container unter Verwendung des Manifests in dem ausgewählten Knoten installiert werden. Zum Beispiel kann das Manifest ausreichend Daten umfassen, um ein Dateisystem für den Container zu erstellen (z.B. zu installieren). In einem anderen Beispiel kann das Manifest einen oder mehrere Inode-Deskriptoren und Datei-Hashwerte umfassen.
  • Darüber hinaus können die Inode-Deskriptoren in einem Beispiel auch Metadaten umfassen, die zum Installieren des Dateisystems auf dem Container verwendet werden. In einem anderen Beispiel kann das Dateisystem in einem Knoten des Clusters von Datenverarbeitungsknoten installiert werden (z.B. dem Knoten, dem die Aufgabe zugewiesen wurde, den Container zu erstellen usw.).
  • Ferner kann in einer Ausführungsform das auf einem Container installierte Dateisystem auch eine Anfrage zum Zugreifen auf Daten innerhalb einer Containerabbildung des Containers identifizieren. Zum Beispiel kann die Anfrage zum Zugreifen auf Daten eine Anfrage zum Lesen von Dateien umfassen. In einem anderen Beispiel kann die Anfrage zum Zugreifen auf Daten eine Anfrage von einer Anwendung innerhalb des Containers umfassen, Daten innerhalb der Containerabbildung zu lesen. In noch einem anderen Beispiel können die Daten eine Container-Abbildungsdatei umfassen.
  • In einer Ausführungsform kann auch der Speicherort der Daten anhand des Manifests bestimmt werden. Zum Beispiel kann der Speicherort der Daten in im Manifest gespeicherten Metadaten enthalten sein. Die Metadaten können zum Beispiel die Mehrzahl der Dateien innerhalb der Containerabbildung beschreiben. In einem anderen Beispiel kann das Manifest auf dem Inhalt beruhende Adressen für die Dateien umfassen (z.B. Datei-Hashwerte, Zeiger auf Speicherorte, an denen die Mehrzahl der Dateien gespeichert ist, usw.).
  • In einer Ausführungsform können die Daten auch über den Speicherort der Daten abgerufen werden. Zum Beispiel können die Daten lokal aus einem Cache des Knotens oder entfernt aus einem Inhaltsspeicher/einer Datenablage/einer Datenbank abgerufen werden. Der Cache kann zum Beispiel einen Hochgeschwindigkeits-Speicher mit geringer Latenz umfassen, der schneller ist als ein Standard-Datenspeicher in einem Knoten eines Clusters. In einer anderen Ausführungsform kann der Cache einen flüchtigen Speicher umfassen. In einer weiteren Ausführungsform kann der Inhaltsspeicher physisch von dem Knoten des Clusters getrennt sein, und der Zugriff darauf kann über ein Verkehrsnetz erfolgen. In noch einer weiteren Ausführungsform kann der Inhaltsspeicher auch das Manifest speichern, das ursprünglich empfangen wurde.
  • Ferner können in einer Ausführungsform die Daten aus dem Cache abgerufen werden als Reaktion auf ein Feststellen, dass das Manifest für die Abbildung anzeigt, dass die Daten lokal im Cache des Knotens gespeichert sind. In einer anderen Ausführungsform können die Daten über das Verkehrsnetz aus dem Inhaltsspeicher abgerufen werden als Reaktion auf ein Feststellen, dass das Manifest für die Abbildung anzeigt, dass die Daten nicht lokal im Cache gespeichert sind.
  • Darüber hinaus kann in einer Ausführungsform der Inhaltsspeicher die Daten in Zugehörigkeit zu der Containerabbildung speichern. In einer anderen Ausführungsform können die abgerufenen Daten von dem installierten Dateisystem verwendet werden. Zum Beispiel können die abgerufenen Daten unter Verwendung des installierten Dateisystems einer Anwendung vorgelegt werden, die innerhalb des Knotens ausgeführt wird.
  • Ferner kann in einer Ausführungsform der Abbildungsindex aktualisiert werden als Reaktion auf ein Abrufen einer Container-Abbildungsdatei und ein Speichern einer solchen Container-Abbildungsdatei im Knoten. Zum Beispiel kann eine Inhaltskennung für die abgerufene Container-Abbildungsdatei mit einer Kennung für den Knoten innerhalb des Abbildungsindex verknüpft/auf sie abgebildet werden. In einer weiteren Ausführungsform kann der Abbildungsindex aktualisiert werden als Reaktion auf ein Entfernen einer Container-Abbildungsdatei aus dem Knoten. Zum Beispiel kann der Knoten im Cache gespeicherte Container-Abbildungsdateien nach Überschreiten einer bestimmten Zeitspanne entfernen.
  • Auf diese Weise kann der Abbildungsindex aktualisiert werden, um alle Container-Abbildungsdateien, die aktuell in allen Knoten innerhalb des Clusters gespeichert sind, korrekt anzuzeigen.
  • Inhaltssensitive Containerplanung
  • In einer Ausführungsform werden die Container so geplant, dass eine maximale Überlappung vorhandener Inhalte in dem Zielknoten erreicht wird. Das Abbilden von Inhalten erfolgt auf Container-Hosts. Ein optimaler Ziel-Host wird auf der Grundlage der Überlappung und zusätzlichen Einschränkungen berechnet. Das Abbilden wird online aktualisiert, wenn der Inhalt von einem Host abgerufen/entfernt wird.
  • Darüber hinaus ist weniger Netzwerkverkehr erforderlich, da weniger Inhalte abgerufen werden müssen (z.B. werden bei einigen Richtlinien die Abbildungen bei jedem (erneuten) Ausführen eines Containers neu geladen). Es werden weniger Speicherplatz und Speicher benötigt, da vorhandene Inhalte wiederverwendet werden können und nicht redundant gespeichert werden müssen. Da Inhalte aus dem Cache wiederverwendet werden können, ist weniger Eingabe/Ausgabe (E/A)-Bandbreite erforderlich. Insgesamt kann eine höhere Containerdichte erreicht werden, indem Daten in maximalem Umfang wiederverwendet werden.
  • 5 zeigt eine beispielhafte Systemarchitektur 500 gemäß einer Ausführungsform. Wie dargestellt, empfängt ein Planer 502 eine Anfrage, einen Container auszuführen. Als Reaktion auf das Empfangen der Anfrage ruft der Planer 502 ein Manifest 504 für den Container aus einer Datenbank 506 ab.
  • Der Planer 502 sendet dann das abgerufene Manifest 504 an einen Überlappungsrechner 508. In einer Ausführungsform können der Planer 502 und der Überlappungsrechner 508 in einem einzigen Datenverarbeitungssystem angeordnet sein. In einer anderen Ausführungsform können der Planer 502 und der Überlappungsrechner 508 in getrennten Datenverarbeitungssystemen untergebracht sein.
  • Als Reaktion auf das Empfangen des abgerufenen Manifests 504 identifiziert der Überlappungsrechner 508 einen Abbildungsindex 510 und vergleicht das abgerufene Manifest 504 mit dem Abbildungsindex 510, um eine maximale Überlappung zwischen Inhaltskennungen im Abbildungsindex 510 und Inhaltskennungen im abgerufenen Manifest 504 zu berechnen. Zum Beispiel kann ein Knoten 514 im Abbildungsindex 510, der mit der größten Anzahl von Inhaltskennungen im abgerufenen Manifest 504 verknüpft ist (z.B. verglichen mit den anderen Knoten innerhalb eines Clusters 512), zum Erstellen des Containers ausgewählt werden.
  • Als Reaktion auf das Identifizieren des Knotens 514 mit der maximalen Überlappung wird der Knoten 514 vom Planer 502 zum Ausführen des Containers festgelegt. Das abgerufene Manifest 504 kann vom Planer 502 an den Knoten 514 gesendet werden und zum Installieren eines Dateisystems für den Container in dem Knoten 514 verwendet werden.
  • Nachdem das Dateisystem in dem Knoten 514 installiert wurde, können zusätzliche, nicht im Manifest enthaltene Container-Abbildungsdaten vom installierten Dateisystem angefordert werden. Als Reaktion auf diese Anforderung kann der Knoten 514 den angeforderten Inhalt 516 nach Bedarf aus der Datenbank 506 abrufen. Der Knoten 514 kann dann eine Angabe dieses abgerufenen Inhalts 516 an den Abbildungsindex 510 senden, und der Abbildungsindex 510 kann aktualisiert werden, um diesen neu abgerufenen Inhalt 516 in dem Knoten 514 wiederzugeben. Der Abbildungsindex 510 kann auch als Reaktion darauf aktualisiert werden, dass der Knoten 514 eine oder mehrere Instanzen von Inhalten entfernt, so dass der Abbildungsindex 510 eine aktuelle Momentaufnahme aller Containerdaten enthält, die in jedem Knoten des Clusters 512 gespeichert sind.
  • Identifizieren des Zielknotens
  • In einer Ausführungsform kann der Abbildungsindex gespeichert werden. Zum Beispiel kann der Abbildungsindex N Teilindizes umfassen, einen für jeden Knoten innerhalb des Clusters. Jeder Index kann einen Satz von Hashwerten umfassen, der die Inhaltskennungen der Dateien in diesem Knoten enthält. Es können pro Index zeitlich konstante Suchvorgänge durchgeführt werden. Die Größe des Index kann reduziert werden, indem nur ein Präfix jeder Inhaltskennung gespeichert wird.
  • Berechnen des Ziels
  • In einer Ausführungsform kann ein Knoten mit der größten Überlappung von vorhandenen Dateien mit dem Manifest identifiziert werden, der auch alle anderen Planungsanforderungen erfüllt (z.B. Anzahl der Knoten, Größe des verfügbaren RAM usw.). Schritte sehen zum Beispiel wie folgt aus:
    • 1. Für jeden Knoten im Abbildungsindex prüfen, wie viele Dateien der Abbildung bereits in diesem Knoten existieren (z.B. O(N*M)), wobei N die Anzahl der Knoten und M die Anzahl der Dateien im Manifest darstellt.
    • 2. Sortieren der Knoten gemäß der Überlappungsgröße
    • 3. Planen des Containers in einem Knoten mit der höchsten Überlappungsgröße, der auch alle anderen Planungsanforderungen erfüllt
  • Reduzieren von Entscheidungszeiten bei der Planung
  • In einer Ausführungsform kann ein zusätzlicher Index von einer Abbildung zu einem Knoten hinzugefügt werden. Jeder Eintrag kann eine Abbildung auf eine Liste von Knoten abbilden. Für jeden Knoten können die gestarteten Abbildungen und deren Startzeitpunkt verfolgt werden. Ein Knoten, der zuletzt eine Abbildung gestartet hat, kann ausgewählt werden, um eine neue Instanz dieser Abbildung zu starten.
  • In einer anderen Ausführungsform können die Knoten zunächst gemäß anderen Ressourcenanforderungen gefiltert werden. Zum Beispiel ist es möglich, nur Knoten, die andere Ressourcenanforderungen erfüllen, auf Überlappung zu prüfen (z.B. wird O(N*M) zu O(N_R*M) reduziert, wobei N_R = Satz verbleibender Knoten, die die Ressourcenanforderungen erfüllen).
  • In einer weiteren Ausführungsform kann die Überlappung zwischen der am häufigsten verwendeten Teilmenge einer Abbildung berechnet werden. Zum Beispiel kann jeder Dateieintrag in einer Abbildung mit einer Priorität auf der Grundlage seines Zugriffsmusters versehen werden (z.B. je häufiger auf eine Datei zugegriffen wird, desto höher ist ihre Priorität). Nur Dateien mit einer Priorität oberhalb eines Schwellenwerts können beim Berechnen der Überlappung berücksichtigt werden (z.B. O(N_R*M) -> O(N_R*M_p), wobei M_p = eine Anzahl von Dateien mit einer Priorität > p).
  • In noch einer weiteren Ausführungsform kann ein inverser Index von Dateien verwendet werden, um Knoten aufzulisten, die eine Datei enthalten. Zum Beispiel kann für jede Datei i in einer Abbildung eine Liste von Knoten (N_Fi) identifiziert werden, die die Datei enthalten. Die Listen können durchsucht werden, um einen Knoten mit den meisten Vorkommnissen als Planungsziel zu finden (z. B. mit O(N*M) -> O(M*N_Fi + N) und im Extremfall O(M*N + N)).
  • Fehlertoleranz
  • In einer Ausführungsform kann der Index als Reaktion auf einen Absturz eines Indexknotens in regelmäßigen Abständen auf eine Festplatte geschrieben werden und beim Neustart wiederhergestellt werden. Konsistenz ist nicht unbedingt entscheidend, da kleine Abweichungen zwischen dem Index und einem tatsächlichen Zustand des Clusters nur die Qualität der Planungsentscheidungen, nicht aber den Betrieb an sich beeinträchtigen. Journalführung, Transaktionen usw. sind nicht unbedingt erforderlich. Im Falle eines vollständigen Indexverlustes kann der Index von Arbeiterknoten aus wieder aufgebaut werden.
  • In einer anderen Ausführungsform kann ein Arbeiterknoten abstürzen. Der Planer kann die Planung für diesen Knoten automatisch beenden, aber den Index für den Knoten beibehalten. Beim Wiederherstellen des Knotens kann das Dateisystem eine lokale Indexprüfsumme an den Planer senden. Der Planer kann dann die Prüfsumme seines eigenen Indexeintrags berechnen. Weichen die Prüfsummen voneinander ab, kann der Planer einen gesamten Knotenindex von dem Knoten anfordern.
  • In einer Ausführungsform wird ein Verfahren zum Bereitstellen einer inhaltssensitiven Planung von Containerabbildungen in einem containerisierten Cluster bereitgestellt. Zusätzlich wird ein Verfahren bereitgestellt, das einen Abbildungsindex führt, um den Speicherort von Dateien in einem Cluster zu verfolgen. Ferner wird ein Verfahren bereitgestellt, das mittels des Abbildungsindex einen optimalen Planungszielknoten, der die gemeinsame Nutzung vorhandener Daten maximiert, für einen neuen Container berechnet, der in dem Cluster ausgeführt werden muss. Darüber hinaus wird ein Verfahren bereitgestellt, das die Entscheidungszeiten für die Planung reduziert, indem es die Anzahl der zu prüfenden Knoten und Dateien im Abbildungsindex begrenzt.
  • In einer Ausführungsform wird ein Verfahren für ein Durchführen einer inhaltssensitiven Containerplanung bereitgestellt, das Folgendes umfasst: Pflegen eines Abbildens zwischen Clusterknoten und den Abbildungsinhalten, die sie in den Cachespeicher aufnehmen und die durch Inhaltskennungen identifiziert werden; Aktualisieren des Abbildens, wenn ein Clusterknoten Abbildungsdaten abruft oder löscht; beim Empfangen einer Anforderung, einen Container zu planen, Herunterladen des Abbildungsmanifests, das die Inhaltskennung(en) des Inhalts in der Abbildung auflistet; Vergleichen der Inhaltskennung(en) in dem Abbildungsmanifest mit den Inhaltskennungen der Daten, die auf Clusterknoten gespeichert sind, durch Abfragen des Knotens auf die Inhaltsabbildung; und Planen des Containers auf dem Knoten, der die größte Überlappung zwischen seinem im Cache gespeicherten Inhalt und den Container-Abbildungsdaten aufweist.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailstufe der Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Ausführungsformen der vorliegenden Erfindung durchzuführen.
  • Ausführungsformen der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Flussdiagramm-Darstellungen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Flussdiagramm-Darstellungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Ausführungsformen der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken des Flussdiagramms und/oder des Blockschaubilds festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit in einem Schritt gleichzeitig, im Wesentlichen gleichzeitig, teilweise oder vollständig zeitlich überlappend ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine in den Prozessor integrierte und/oder von diesem ausführbare Logik umfassen, wobei die Logik so konfiguriert ist, dass sie einen oder mehrere der hier genannten Verfahrensschritte durchführt. Mit „integriert in“ ist gemeint, dass der Prozessor über eine als Hardware-Logik eingebettete Logik verfügt, zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), eine FPGA usw. Mit „vom Prozessor ausführbar“ ist gemeint, dass es sich bei der Logik um Hardware-Logik, Software-Logik wie Firmware, ein Teil eines Betriebssystems, ein Teil eines Anwendungsprogramms usw. oder um eine Kombination aus Hardware- und Software-Logik handelt, auf die der Prozessor zugreifen kann und die so konfiguriert ist, dass sie den Prozessor veranlasst, bei der Ausführung durch den Prozessor eine bestimmte Funktionalität auszuführen. Die Softwarelogik kann in einem lokalen und/oder entfernt angeordneten Speicher eines beliebigen Speichertyps gespeichert werden, wie er in der Technik bekannt ist. Es kann jeder in der Technik bekannte Prozessor verwendet werden, zum Beispiel ein Software-Prozessormodul und/oder ein Hardware-Prozessor wie eine ASIC, eine FPGA, eine Zentraleinheit (CPU), eine integrierte Schaltung (IC), eine Grafikverarbeitungseinheit (GPU) usw.
  • Es wird offensichtlich sein, dass die verschiedenen Funktionen der vorgenannten Systeme und/oder Methodiken in beliebiger Weise kombiniert werden können, so dass sich aus den vorliegenden Beschreibungen eine Mehrzahl von Kombinationen ergibt.
  • Es ist weiter zu berücksichtigen, dass Ausführungsformen der vorliegenden Erfindung in Form eines Service bereitgestellt werden können, der im Auftrag eines Kunden eingesetzt wird, um einen bedarfsgesteuerten Service anzubieten.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zur Veranschaulichung vorgelegt, sollen aber weder erschöpfend noch auf die offenbarten Ausführungsformen beschränkt sein. Für den Fachmann sind viele Modifikationen und Variationen erkennbar, ohne vom Umfang und Sinngehalt der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Prinzipien der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber den auf dem Markt befindlichen Technologien bestmöglich zu erklären oder um es dem Fachmann zu ermöglichen, die hier offenbaren Ausführungsformen zu verstehen.

Claims (15)

  1. Auf einem Computer implementiertes Verfahren, das aufweist: Empfangen eines Manifests für eine Containerabbildung eines zu erstellenden Containers; Identifizieren eines Abbildungsindex für einen Cluster von Datenverarbeitungsknoten; und Auswählen eines Datenverarbeitungsknotens innerhalb des Clusters von Datenverarbeitungsknoten, um den Container auf der Grundlage von einem Vergleich des Manifests mit dem Abbildungsindex zu erstellen.
  2. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei das Manifest für die Containerabbildung Metadaten enthält, die eine Mehrzahl von Dateien innerhalb der Containerabbildung beschreiben, wobei die Metadaten eine Liste von Inhaltskennungen und auf dem Inhalt beruhenden Adressen enthalten.
  3. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei der Abbildungsindex Inhaltskennungen aller Container-Abbildungsdateien speichert, die aktuell in jedem Knoten des Datenverarbeitungsknotens gespeichert sind, wobei die Inhaltskennungen für jede Container-Abbildungsdatei, die aktuell in einem Knoten des Clusters von Datenverarbeitungsknotens gespeichert ist, mit einer Kennung für den Knoten verknüpft sind.
  4. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei der Abbildungsindex nur ein Präfix jeder Inhaltskennung aller Container-Abbildungsdateien speichert, die aktuell in jedem Knoten des Clusters von Datenverarbeitungsknoten gespeichert sind.
  5. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei für jede Knotenkennung innerhalb des Abbildungsindex eine Anzahl von Inhaltskennungen innerhalb des Manifests ermittelt wird, die mit der Knotenkennung verknüpft sind.
  6. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei ein Knoten, der mit der größten Anzahl von Inhaltskennungen innerhalb des Manifests verbunden ist, ausgewählt wird, um den Container zu erstellen.
  7. Auf einem Computer implementiertes Verfahren nach Anspruch 1, das ferner ein Identifizieren einer Teilmenge von Knotenkennungen innerhalb des Abbildungsindex für den Vergleich mit dem Manifest aufweist.
  8. Auf einem Computer implementiertes Verfahren nach Anspruch 1, das ferner ein Identifizieren einer Teilmenge aller Inhaltskennungen innerhalb des Abbildungsindex für den Vergleich mit dem Manifest aufweist.
  9. Auf einem Computer implementiertes Verfahren nach Anspruch 1, das ferner ein Aktualisieren des Abbildungsindex als Reaktion auf ein Abrufen einer Container-Abbildungsdatei und ein Speichern der Container-Abbildungsdatei in einem Datenverarbeitungsknoten des Clusters aufweist.
  10. Auf einem Computer implementiertes Verfahren nach Anspruch 1, das ferner ein Aktualisieren des Abbildungsindex als Reaktion auf ein Entfernen einer Container-Abbildungsdatei aus einem Datenverarbeitungsknoten des Clusters aufweist.
  11. Auf einem Computer implementiertes Verfahren nach Anspruch 1, das ferner ein Planen eines Erstellens des Containers in dem ausgewählten Datenverarbeitungsknoten aufweist.
  12. Auf einem Computer implementiertes Verfahren nach Anspruch 11, das ferner ein Installieren eines Dateisystems für den Container in dem ausgewählten Datenverarbeitungsknoten unter Verwenden des Manifests aufweist.
  13. Auf einem Computer implementiertes Verfahren nach Anspruch 12, das ferner aufweist: Identifizieren einer Anfrage zum Zugreifen auf Daten innerhalb einer Containerabbildung des Containers durch das auf dem Container installierte Dateisystem; und Abrufen der Daten unter Verwenden eines mittels des Manifests ermittelten Speicherorts der Daten.
  14. Computerprogrammprodukt zum Durchführen einer inhaltssensitiven Knotenauswahl für ein Erstellen von Containern, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen aufweist, wobei das durch einen Computer lesbare Speichermedium kein flüchtiges Signal an sich ist, die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, das Verfahren gemäß einem der Ansprüche 1 bis 13 durchzuführen.
  15. System, das aufweist: einen Prozessor; und Logik, die in den Prozessor integriert ist, durch den Prozessor ausführbar ist oder in den Prozessor integriert und durch diesen ausführbar ist, wobei die Logik so konfiguriert ist, dass sie das Verfahren gemäß einem der Ansprüche 1 bis 13 durchführt.
DE102021127254.8A 2020-11-09 2021-10-20 Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern Pending DE102021127254A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/093,369 US11762850B2 (en) 2020-11-09 2020-11-09 Content-aware node selection for container creation
US17/093,369 2020-11-09

Publications (1)

Publication Number Publication Date
DE102021127254A1 true DE102021127254A1 (de) 2022-05-12

Family

ID=78718413

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021127254.8A Pending DE102021127254A1 (de) 2020-11-09 2021-10-20 Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern

Country Status (5)

Country Link
US (1) US11762850B2 (de)
JP (1) JP2022076457A (de)
CN (1) CN114528065A (de)
DE (1) DE102021127254A1 (de)
GB (1) GB2604687B (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11842214B2 (en) * 2021-03-31 2023-12-12 International Business Machines Corporation Full-dimensional scheduling and scaling for microservice applications
US20220385532A1 (en) * 2021-05-26 2022-12-01 Red Hat, Inc. Adding host systems to existing containerized clusters
US11914637B2 (en) * 2022-07-25 2024-02-27 Sap Se Image scaling cloud database
US20240086168A1 (en) * 2022-09-14 2024-03-14 Red Hat, Inc. Automatic generation of container images
US20240111511A1 (en) * 2022-09-30 2024-04-04 International Business Machines Corporation Image optimization for pipeline workloads

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296089B2 (en) * 1999-08-27 2007-11-13 At&T Corp. Method for improving web performance by adapting servers based on client cluster characterization
AU2002225377A1 (en) * 2001-12-28 2003-07-30 Nokia Corporation Node selecting method
US8887056B2 (en) 2012-08-07 2014-11-11 Advanced Micro Devices, Inc. System and method for configuring cloud computing systems
US9256467B1 (en) 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US10503623B2 (en) * 2016-04-29 2019-12-10 Ca, Inc. Monitoring containerized applications
US10489354B2 (en) * 2016-07-29 2019-11-26 Hewlett Packard Enterprise Development Lp Storage systems for containers
US10540212B2 (en) 2016-08-09 2020-01-21 International Business Machines Corporation Data-locality-aware task scheduling on hyper-converged computing infrastructures
US10521447B2 (en) 2016-11-14 2019-12-31 International Business Machines Corporation Container application execution using image metadata
US10346189B2 (en) 2016-12-05 2019-07-09 Red Hat, Inc. Co-locating containers based on source to improve compute density
US10356214B2 (en) * 2017-03-29 2019-07-16 Ca, Inc. Composing monolithic applications based on multi-container applications

Also Published As

Publication number Publication date
GB2604687B (en) 2023-04-12
US11762850B2 (en) 2023-09-19
JP2022076457A (ja) 2022-05-19
CN114528065A (zh) 2022-05-24
GB202115003D0 (en) 2021-12-01
GB2604687A (en) 2022-09-14
US20220147517A1 (en) 2022-05-12

Similar Documents

Publication Publication Date Title
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE112012004336B4 (de) System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
DE102013205572A1 (de) Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung
DE102021125179A1 (de) Erzeugen und bereitstellen von containerabbildern
DE112019000421B4 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE102012215219A1 (de) Ermitteln von Verteilungen von Abbildmustern von virtuellen Maschinen in einer vernetzten Datenverarbeitungsumgebung
DE112017005588T5 (de) Speichern und abrufen von eingeschränkten datensätzen in und aus einem cloud-netzwerk mit nichteingeschränkten datensätzen
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE102016105062A1 (de) Nähengestützte Berechtigungsprüfung für einheitenübergreifend verteilte Daten
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE112021003294T5 (de) Systemverwaltung auf grundlage von leistung und leistungsfähigkeit
DE112017005772T5 (de) Zeitpunktgesteuerte sicherungen über einen speicher-controller in eine objektspeicher-cloud
DE112021001163T5 (de) Dynamisches erstellen von facetten unter verwendung von graphpartitionierung
DE112020005306T5 (de) Implementierung von arbeitslasten in einer multi-cloud-umgebung
DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
DE102021130358A1 (de) E/a-operationen in log-strukturierten arrays
DE112021005927T5 (de) Patchen von arbeitsabläufen
DE112019002052T5 (de) Datenschutzsensibilisierung bei der bereitstellung von arbeitslasten
DE112021000408T5 (de) Prädiktives bereitstellen von fern gespeicherten dateien
DE112021003031T5 (de) Archivieren von nur-beschleuniger-datenbanktabellen
DE112018004415T5 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009440000

Ipc: G06F0009480000

R084 Declaration of willingness to licence