DE60131900T2 - Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten - Google Patents

Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten Download PDF

Info

Publication number
DE60131900T2
DE60131900T2 DE60131900T DE60131900T DE60131900T2 DE 60131900 T2 DE60131900 T2 DE 60131900T2 DE 60131900 T DE60131900 T DE 60131900T DE 60131900 T DE60131900 T DE 60131900T DE 60131900 T2 DE60131900 T2 DE 60131900T2
Authority
DE
Germany
Prior art keywords
file
vfcs
server
content
files
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.)
Expired - Lifetime
Application number
DE60131900T
Other languages
English (en)
Other versions
DE60131900D1 (de
Inventor
Tsan-Fung San Marino Huang
Trygve San Lorenzo ISAACSON
James C. Jr. Portland FLOOD
Matthew San Francisco Orzen
Siew Young Cupertino SIM
Desmond Cho-Hung Mountain View CHAN
Wencheng San Jose CHAI
George Harlow Palo Alto MILLS
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.)
Flood James C Jun Portland Oreg Us
Huang Tsan-Fung San Marino Calif Us
Isaacson Trygve San Lorenzo Calif Us
Orzen Matthew San Francisco Calif Us
Intel Corp
Original Assignee
FLOOD JAMES C JUN
FLOOD JAMES C JUN
Flood James C jun Portland
HUANG TSAN FUNG
Intel 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
Priority claimed from US09/681,644 external-priority patent/US6970939B2/en
Application filed by FLOOD JAMES C JUN, FLOOD JAMES C JUN, Flood James C jun Portland, HUANG TSAN FUNG, Intel Corp filed Critical FLOOD JAMES C JUN
Publication of DE60131900D1 publication Critical patent/DE60131900D1/de
Application granted granted Critical
Publication of DE60131900T2 publication Critical patent/DE60131900T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Description

  • Stand der Technik
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft das Speichern und die Verteilung von Inhalten bzw. Content über ein Netzwerk.
  • Beschreibung des Stands der Technik
  • Die Fortschritte im Bereich der Kommunikation und des Switching in Telelcommunikationsnetzwerken schreiten mit enormer Geschwindigkeit voran. Die Verteilung von Dateien zwischen Netzwerkpositionen bzw. Netzwerkstandorten kann unter Verwendung herkömmlicher Techniken jedoch ziemlich lange dauern. Der Übertragungs- bzw. Übermittlungsfluss kann uneinheitlich sein. Wenn zum Beispiel große bzw. umfangreiche Inhalte, wie etwa eine Mediendatei eines Films zu einem Benutzer übertragen wird bzw. werden, können während der Übermittlung unzulässige bzw. nicht akzeptierbare Verzögerungen auftreten.
  • Bei einer herkömmlichen Technik zur Vermeidung von Verzögerungen bei der Präsentation von Inhalten an einen Benutzer handelt es sich um die Replikation von Kopien des Inhalts an verschiedenen Positionen bzw. Stellen in dem Netzwerk. Eine derartige Replikation kann die Verzögerung für einen Benutzer in der Nähe einer verfügbaren Kopie reduzieren, jedoch erfordert sie eine übermäßige Menge an Speicherplatz. Der Overhead der Verwaltung steigt ebenfalls an. Eine Management- bzw. Verwaltungsanwendung wird benötigt, so dass Administratoren und/oder Benutzer die replizierten Kopien des Inhalts verwalten können. Die Speicheradministratoren müssen ferner konstant wachsam sein, da für den Fall, dass an einem Ort bzw. Standort der Speicherplatz ausgeht, eine neue Replikation des Contents bzw. des Innalts fehlschlägt.
  • Zu weiteren Techniken zählt das Proxy Caching auf Anwendungsebene, wie etwa das Web bzw. Internet Caching und das Streaming Caching. Ein derartiges Caching erfordert nicht den Einsatz nicht verwaltbarer Mengen von Speicherkapazität, sondern löst das Problem nur für eine begrenzte Anzahl von Fällen, wo der Content bzw. die Inhalte bereits an den anfordernden Positionen im Cache gespeichert worden sind. Wenn ein Benutzer Inhalte anfordert, die noch nicht im Cache gespeichert worden sind, wo müssen die Inhalte bzw. der Content vom Kern abgerufen werden, und wobei die Verzögerung nicht akzeptabel sein kann. Eine weitere große Einschränkung des Caching-Ansatzes ist es, dass er auf eine bestimmte Anwendung beschränkt ist.
  • In "Enhancement and validation of Squid's cache replacement policy" von J. Dilley et al., HP Labs 1999 Technical Report, 31. Mai 1999, Seiten 1 bis 17, beschreibt ein Internet Caching System und im Besonderen einen Cache Replacement-Ansatz (Cache-Auswechselungsansatz). Eine Heap- bzw. Halden-basierte Implementierung fügt einem Referenzzählwert in einem LFU (Least Frequently Used) Cache Replacement-Ansatz ein Alter hinzu. Die Altersimplementierung neigt dazu, unter den am wenigsten genutzten Objekten die am längsten nicht verwendeten (least recently used) Objekte zu bevorzugen. Zwischen einem Höchst- und Niedrigststand wurde durch einen einfachen Mechanismus Raum erhalten, wobei Objekte unabhängig von ihrem Alter ausgestoßen werden, wobei nur der Altersschlüssel (Heap Key) berücksichtigt wird. Objekte werden entfernt, bis eine Begrenzung max_scan oder max_remove bzw. die Untergrenze erreicht wird.
  • Benötigt werden ein Verfahren und ein System zum Speichern und für die Verteilung von Inhalten bzw. Content über ein Netzwerk, wobei das Verfahren und das System eine Latenz über lange Übertragungsstrecken eliminieren können, und wobei keine Replikation in Höhe von 100% an alle Standorte bzw. Positionen erforderlich ist. Benötigt werden ein Verfahren und ein System zum Speichern und zur Verteilung von Inhalten bzw. Content, wobei eine intelligente Speicherverwaltung bereitgestellt wird auf der Basis der Nutzung und des Standort-transparenten Zugriffs, und wobei die Verwaltung Anwendungs-agnostisch ist, das heißt, sie kann mit anderen Anwendungsarten eingesetzt werden.
  • Zusammenfassung der Erfindung
  • Vorgesehen ist gemäß der vorliegenden Erfindung ein Verfahren zur effizienten Speicherverwaltung in einem verteilten Netzwerk nach Anspruch 1.
  • Weitere Ausführungsbeispiele der Erfindung sind in den Unteransprüchen enthalten.
  • Beschreiben werden ein Verfahren und ein System zur Erzeugung eines innovativen Dateisystems, das dessen Verzeichnisdarstellung von dessen Datenspeicher trennt. Dies erreicht ein angemessenes Gleichgewicht zwischen der Anforderung für eine einheitliche schnelle Zustellung sowie der Reduzierung der Speicheranforderungen. Das Verfahren und das System umfassen die Aufteilung, Verteilung und Wiedervereinigung/neues Zusammensetzen von Dateien, wobei die Präsentation bzw. Darstellung des Inhalts bzw. des Contents an den Benutzer nicht verzögert wird, wobei aber auch eine reduzierte Speicherraumgröße im Vergleich zu herkömmlichen Techniken eingesetzt wird. Das Verfahren und das System verwenden auch die Erzeugung eines integrierten Lese-Schreibfähigen Dateisystems sowie die Verteilung von Dateisystemobjekten, die Volumina, Verzeichnisse und Dateien enthalten. Das Verfahren und das System sind in der Lage, die Integrität der Dateisystemobjekte zu verwalten und zu steuern, die über das Netzwerk verteilt sind, und zwar unter Verwendung der Metadaten- und Metadateisystemarchitektur, und wobei das Verfahren und das System ferner unter Verwendung eines VFCS (Virtual File Control System) oder eines VFCS-Clusters Dateien in Echtzeit serven und rekonstruieren können. Die Metadaten- und Metadateisystemarchitektur stellt Mittel für Verteilungs-Server (DS als englische Abkürzung von Distribution Server) und das VFCS bereit, um die verteilten Informationen im Netzwerk zu überwachen, während das VFCS die organisierte bzw. strukturierte Wiederzusammensetzung der Informationen für die Übertragung bzw. Zustellung an den Benutzer vornimmt.
  • Ebenso beschrieben wird ein verbesserter Mechanismus für die Erzeugung eines integrierten Lese-Schreib-fähigen Dateisystems zur Verteilung großer Dateien über ein Computernetzwerk sowie für die Übertragung derartiger Dateien an Endbenutzersysteme oder Anwendungsserver. Bei einer Implementierung stellt der Mechanismus mehreren Benutzern von vielen verschiedenen Standorten eine Möglichkeit bereit, Zugriff auf Dateisystemobjekte zu erhalten, ohne dabei die Netzwerkressourcen übermäßig zu belasten. Wenn ein Benutzer zum Beispiel eine große Datei downloaden möchte, wie etwa eine Videodatei, so stellt der Mechanismus eine Möglichkeit bereit, diese Videodatei zu dem anfordernden Benutzer zu übertragen, ohne dabei das Netzwerk zu stark zu belasten. Das System erreicht dies durch ein Aufteilen der Datei in mehrere Abschnitte (Segmente oder Blockdateien) sowie durch das Speichern dieser Abschnitte an Stellen (z. B. Knoten), die über das Netzwerk verteilt sind. Beschreiben wird eine Technik zur Erzeugung eines Lese-Schreib-fähigen integrierten Dateisystems. Ebenso beschrieben wird eine Technik zur Aufteilung der Datei sowie zur Rekonstruktion dieser für die Verteilung sowie eine Technik zur Verteilung von Dateisystemobjekten.
  • Beschrieben wird ein Verfahren zur Erzeugung einer integrierten Dateisystemdarstellung auf der Basis einer Metadateisystemstruktur und der Objektmetadaten selbst, welche die Trennung der Dateisystemdarstellung und dessen Daten unterstützt, während die Daten über ein Netzwerk von Knoten lokalisiert werden und danach zeitgerecht und transparent für die Benutzer des Systems wieder zusammengesetzt werden können.
  • Ferner beschrieben wird die Aufteilung der Dateien in verwaltbare, nicht zusammenhängende Dateisegmente, die neue Anordnung der Dateisegmente und die Verteilung dieser nicht zusammenhängenden Dateisegmente für eine optimale Performance der Netzwerkknoten. Die nicht zusammenhängenden Dateisegmente werden wieder zusammengesetzt für eine Verteilung an einen Client, der die große Nutzlastdatei anfordert. Der Prozess des Wiederzusammenbaus ist für den Benutzer transparent und stellt die Dateidaten an den Benutzer mit minimaler Latenz bereit.
  • Beschrieben wird ein weiteres Verfahren für die Verteilung, Replikation und Synchronisation von Dateisystemobjekten unter einem Netzwerk aus Knoten.
  • Ein weiterer Teil der Beschreibung richtet sich an die Bereitstellung von nicht zusammenhängenden Dateisegmenten durch die globale Dateisystemdarstellung, während der ursprüngliche, nicht in Chunks aufgeteilte Inhalt Benutzern als ein Verzeichnis dargestellt wird.
  • Ferner beschrieben wird die Anwendung von Verteilungs- und Behandlungsrichtlinienn, um eine garantierte Dienst- bzw. Servicequalität zu ermöglichen.
  • Ebenfalls beschrieben wird, wie mehrere VFCS als ein Virtual File System Gateway Cluster gruppiert werden können, welcher die E/A-Bandbreite erhöht, während gleichzeitig Lastausgleich (Load Balancing) und Fehlertoleranz bereitgestellt werden.
  • Zu den Vorteilen des beschriebenen Systems und Verfahrens zählt die Fähigkeit, große Nutzlastdateien zu speichern, zu überwachen bzw. zu verfolgen, zu erteilen und wieder zusammenzusetzen, ohne die Präsentation bzw. die Darstellung von Inhalten an den Benutzer zu verzögern, wobei ferner auch nur ein minimaler Speicherraum erforderlich ist.
  • Beschrieben werden ein Verfahren und eine Vorrichtung zum effizienten Speichern großer Dateien. Ein Content-Netzwerk zur Übertragung von Dateien zu einem Benutzer umfasst eine Mehrzahl von Speicherelementen, die sich in einer Reihe geografisch verteilter Netzwerkknoten befinden und so konfiguriert sind, dass sie Abschnitte einer Datei speichern. Eine Software-Managementstruktur speichert Informationen über den Inhalt und die Position bzw. den Ort jedes der Speicherelemente in Bezug auf die Datei. Eine Software-Inhalts-Pruning-Struktur ist mit der Software-Managementstruktur gekoppelt und so konfiguriert, dass die in den Speicherelementen gespeicherten Inhaltsblöcke selektiv beschnitten werden, um sicherzustellen, dass die Datei in dem Netzwerk effizient gespeichert wird.
  • Die Abschnitte und die Größe einer an jedem Knoten gespeicherten Datei sind abhängig von dem verfügbaren Speicher, der Popularität des Inhalts, der Verteilungskriterien des Eigentümers der Inhalte, etc. Somit können die Blöcke einer Datei, deren Verwendung am wenigsten wahrscheinlich ist, beschnitten werden (d. h. aus dem lokalen Speicher gelöscht werden), um Platz für Inhalte zu schaffen, die mehr nachgefragt werden. Obgleich jedoch die Blöcke einer Datei beschnitten werden, die mit der geringsten Wahrscheinlichkeit verwendet werden, kann der ganze Inhalt einer Datei an einem Knoten in dem skalierbaren Netzwerk für die Lieferung von Inhalten (Content Delivery Network) verwaltet werden, solange der Eigentümer bzw. der Besitzer des Inhalts möchte, dass der Content in dem Netzwerk verbleibt. Auf diese Weise können sehr große Dateien effizient gespeichert werden.
  • Weitere Merkmale und Vorteile der vorliegenden Erfindung sowie der Aufbau und der Betrieb verschiedener Ausführungsbeispiele der vorliegenden Erfindung werden nachstehend in Bezug auf die beigefügten Zeichnungen näher beschrieben.
  • Kurze Beschreibung der Zeichnungen
  • Die beigefügten Zeichnungen, die hierin enthalten sind und einen Bestandteil der Patentschrift bilden, veranschaulichen die vorliegende Erfindung und dienen in Verbindung mit der Beschreibung der Erläuterung der Grundsätze der Erfindung sowie dazu, es einem Fachmann auf dem Gebiet zu ermöglichen, die Erfindung nachzuvollziehen und zu nutzen. In den beigefügten Zeichnungen zeigen:
  • 1 eine Darstellung eines skalierbaren Content Delivery Networks für die Zustellung bzw. Übertragung von Dateisystemobjekten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 2 eine Darstellung einer virtuellen Baumanordnung der Knoten für die Steuerinformationskommunikation gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 3 eine Darstellung einer Attribut-Bitmail und einer Rolled Up-Bitmap gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • die 4A4C vereinfachte Layouts eines Verteilungszentrums gemäß Ausführungsbeispielen der vorliegenden Erfindung;
  • die 5A5C drei veranschaulichende Ausführungsbeispiele der Anwendungsserver-Cluster gemäß der vorliegenden Erfindung;
  • 6 ein Layout eines Virtual File Control System-Clusters gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • die 7A–B den Prozess des Einführens eines neuen Dateisystemobjekts in einen SCDN oder des Aktualisierens oder Löschens eines bestehenden Dateisystemobjekts aus dem SCD gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 7C die Anwendung von Richtlinien für die Service- bzw. Dienstqualität auf der Basis des Dateisystemobjekts und des Objekttyps gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 8 eine Darstellung linearer und nicht-linearer Strukturen, wie diese in der vorliegenden Erfindung eingesetzt werden;
  • 9 den Prozess der Zerlegung einer Datei in Blockdateien zur Speicherung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • die Figuren 10A–B zwei Darstellungen der zerlegten Datei gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • die 11A–B veranschaulichende Ausführungsbeispiele der Verteilung eines Dateisystemobjekts und der Metadaten in dem Netzwerk gemäß der vorliegenden Erfindung;
  • 11C die Art und Weise, wie Verteilungsserver zusammenarbeiten, um Metainformationen und Inhalte dynamisch zu verteilen und zu replizieren, so dass jeder Server eine globale Dateisystemansicht darstellt, die eine aggregierte Ansicht des ganzen Netzwerks darstellt;
  • die 12A–C veranschaulichende Ausführungsbeispiele der Metadateisystemstruktur, der Blockdateistruktur eines zugrunde liegenden Dateisystems und von Metadatenbeispielen gemäß der vorliegenden Erfindung;
  • die 13A–C veranschaulichende Ausführungsbeispiele der Datenträger-, Verzeichnis- und Datei-Metadaten gemäß der vorliegenden Erfindung;
  • 13D ein veranschaulichendes Ausführungsbeispiel von Blockindexanordnungs-Metadaten gemäß der vorliegenden Erfindung;
  • 14A ein Diagramm des Prozesses der Rekonstruktion einer Datei aus einer oder mehreren Blockdateien gemäß der vorliegenden Erfindung;
  • 14B ein Diagramm des Algorithmus zum Lokalisieren von Daten in dem Prozess der Rekonstruktion einer Datei in Echtzeit gemäß der vorliegenden Erfindung;
  • die 15A–C drei veranschaulichende Ausführungsbeispiele eines VFCS gemäß der vorliegenden Erfindung;
  • 16 ein Flussdiagramm der Operationen eines VFCS-Servers, die während dem VFCS-Initialisierungsprozess ausgeführt werden, um eine globale Dateisystemdarstellung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung zu erzeugen;
  • 17A die VFCS-Server-Operationen, die während Laufzeit gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ausgeführt werden;
  • 17B die Anwendung von Richtlinien für die Service- bzw. Dienstqualität auf der Basis des Benutzers und des Dateisystemobjekttyps gemäß der vorliegenden Erfindung;
  • 18 eine Darstellung der VFCS-Module gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 19 ein Flussdiagramm der Operationen eines VFCS-Servers, der eine Leseanforderung gemäß einem Ausführungsbeispiels der vorliegenden Erfindung bearbeitet;
  • 20 ein Diagramm einer Server-Anforderungsverteilungsfähigkeit einer SCDN Lastverteilungseinrichtung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 21 ein Diagramm einer Server-Redundanzfunktion, die durch eine SCDN Lastverteilungseinrichtung gemäß einem Ausführungsbeispiel der vorliegenden erfindung bereitgestellt wird;
  • 22 ein Diagramm einer Instant-Failover-Funktion einer SCDN Lastverteilungseinrichtung als zustandslose Lastverteilungseinrichtung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 23 ein Diagramm einer SCDN Lastverteilungseinrichtung, welche in Paket neu leitet, gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 24 ein veranschaulichendes Ausführungsbeispiel einer SCDN Lastverteilungseinrichtung, die Pakete mit direkter Serverrückführung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung umleitet;
  • 25 ein Flussdiagramm eines eingehend gerichteten Paketumleitungsprozesses, der von einer SCDN Lastverteilungseinrichtung ausgeführt wird, gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 26 ein Flussdiagramm eines Gesundheitsprüfungsprozesses, der von einer SCDN Lastverteilungseinrichtung ausgeführt wird, gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 27 eine Darstellung einer Station, welche eine exemplarische Steuereinheit und Datendepots darstellt;
  • 28 ein Zustandsdiagramm der Speicherverwaltungsschritte, die gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ausgeführt werden;
  • die 29A–E eine Unterteilung der Operationen aus 28 in kleinere Teilaufgaben;
  • 30 die Speicherverwaltungs-Wissensbasistabellen; und
  • 31 ein beispielhaftes Computersystem- und Computerprogrammprodukt, in dem die vorliegende Erfindung überwiegend in Software implementiert wird.
  • Genaue Beschreibung der bevorzugten Ausführungsbeispiele
  • Die folgende Beschreibung betrifft die besten Ausführungsmodi, die gegenwärtig für die Ausführung der Erfindung in Erwägung gezogen werden. Diese Beschreibung ist nicht einschränkend auszulegen, vielmehr dient sie lediglich dem Zweck der Beschreibung der allgemeinen Grundsätze der Erfindung. Der Umfang der Erfindung ist in Bezug auf die Ansprüche zu bestimmen.
  • Die vorliegende Erfindung betrifft ein Verfahren und ein System zum Speichern und Verteilen von Inhalten bzw. Content. Im Besonderen stellt die vorliegende Erfindung eine in hohem Maße effiziente Architektur und Technik bereit, um Inhalte zu verarbeiten, zu speichern und um Inhalte an einen Benutzer für Schulungszwecke, zur Unterhaltung, für geschäftliche Zwecke oder für jeden anderen gewünschten Zweck bereitzustellen. Bei einem Verfahren und System gemäß einem Ausführungsbeispiel der vorliegenden Erfindung wird ein hoch entwickeltes Lese-Schreib-fähiges integriertes Netzwerkdateisystem erzeugt, bei dem die Verzeichnispräsentation und die Datenspeicherung getrennt werden. Das Verfahren und das System umfassen die Aufteilung, die Verteilung und das Wiederzusammensetzen der Dateien, wobei die Präsentation von Inhalten an den Benutzer nicht verzögert werden, wobei aber auch kein unangemessen hoher Speicherplatz benötigt wird. Das Verfahren und das System umfassen ferner die Erzeugung eines integrierten Dateisystems und die Verteilung von Dateisystemobjekten, einschließlich Volumina, Verzeichnissen und Dateien.
  • Die Erfindung wird beschrieben in Bezug auf spezifische Architekturen und Protokolle. Der Fachmann auf dem Gebiet wird erkennen, dass die Beschreibung der Veranschaulichung dient sowie zur Bereitstellung der besten Ausführungsart der Erfindung. Ein Ausführungsbeispiel der vorliegenden Erfindung stellt einen verbesserten Mechanismus zur Aufteilung und Verteilung von Dateien (bezeichnet als Nutzlast bzw. Payload oder Inhalt bzw. Content) in einem Computernetzwerk bereit. Ein weiteres Ausführungsbeispiel der vorliegenden Erfindung stellt ein Verfahren zur Erzeugung einer integrierten Dateisystemansicht mit mehreren Inhaltsknoten bzw. Content-Knoten bereit. Vorgesehen ist gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung ein Verfahren zum Verteilen, Replizieren und Synchronisieren der Aktualisierung von Dateisystemobjekten, wie etwa von Volumina, Verzeichnissen und Dateien. In der folgenden Beschreibung sind zahlreiche besondere Einzelheiten ausgeführt, um eine umfassendere Beschreibung der Ausführungsbeispiele der Erfindung zu vermitteln. Die Beschreibung ist nicht einschränkend auszulegen. Zum Beispiel wird auf das Internet Protocol und UNIX verwiesen, wobei jedoch jedes Paketprotokoll und jedes Betriebssystem eingesetzt werden können.
  • Wenn die Erfindung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung implementiert wird, so wird Endbenutzersystemen eine Möglichkeit bereitgestellt, auf Dateisystemobjekte zuzugreifen, ohne das Netzwerk zu stark zu belasten, welches das Endbenutzersystem jeweils für die Datenübermittlung verwendet. In einem Ausführungsbeispiel der vorliegenden Erfindung erreicht das System dies, indem die Datei in mehrere Abschnitte bzw. Teilstücke (Segmente oder Spuren) aufgeteilt wird, und wobei diese Abschnitte und andere Dateisystemobjekte an Orten bzw. Stellen (z. B. Knoten) gespeichert werden, die über das Netzwerk verteilt sind. Die Abschnitte und sonstigen Dateisystemobjekte, die im Netzwerk gespeichert sind werden unter Verwendung einer Flussoptimierungstechnik verteilt, die eine intelligente Verwaltung aller Dateisystemobjekte und Datenabschnitte bereitstellt. Somit werden Dateisystemobjekte und Abschnitte der Datei an Stellen bzw. Orten gespeichert, welche die benötigte Zeit minimieren, um den Abschnitt an das Endbenutzersystem zu liefern bzw. zu übertragen. Die Orte bzw. Stellen minimieren die Latenz, die der Zustellung der Daten an das Endbenutzersystem zugeordnet ist, und wobei diese Stellen hierin als der Rand des Netzwerks bezeichnet werden.
  • Jeder Knoten am Rand des Netzwerks, der die Aspekte der Erfindung ausführt bzw. aufweist, ist so konfiguriert, dass er so erscheint, als ob die Datei lokal gespeichert wäre, wenn Abschnitte der Datei tatsächlich an anderen Knoten gespeichert sind, die in dem Netzwerk verteilt angeordnet sind. Dies erhöht erheblich die virtuelle Speicherkapazität jedes Netzwerkknotens, ohne Systemressourcen zu verbrauchen. Die Knoten verteilen und replizieren Datenblöcke und andere Dateisystemobjekte in einer Art und Weise, welche die Datenübertragungseffizienz maximiert, während der Bandbreitenverbrauch minimiert wird. Wenn das Endbenutzersystem eine Anforderung von Inhalten bzw. Content ausgibt (z. B. für eine Datei), so wird die Anforderung zu dem am nächsten gelegenen Knoten geleitet, und der Knoten importiert nicht-residente Daten des angeforderten Inhalts von anderen Knoten auf eine Art und Weise, welche die geringste Zeit und die niedrigsten Kosten erfordert. Das Endergebnis ist es, dass jeder Netzwerkknoten auf zahlreiche oder alle Dateisystemobjekte (Volumina, Verzeichnisse und Dateien) zugreifen kann bzw. Zugriff hat, ohne dass der ganze Inhalt bzw. Content jedes dieser Objekte lokal gespeichert und verwaltet werden muss.
  • Vorgesehen sind gemäß einem oder mehreren Ausführungsbeispielen der vorliegenden Erfindung effiziente Verfahren und Systeme zur Aufteilung bzw. Zerlegung einer Datei zum Speichern und zur Rekonstruktion der Datei für die Zustellung bzw. Übertragung. Der Prozess der Aufteilung einer großen Nutzlastdatei wird als "Chunking" oder Zerlegung bezeichnet und wird nachstehend im Text näher beschrieben. Vorgesehen ist gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung ein Verfahren zur Erzeugung eines integrierten Dateisystems aus mehreren Knoten. Vorgesehen ist gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung ein Verfahren zum Verteilen, Replizieren und Synchronisieren von Dateisystemobjekten unter einem Netzwerk von Knoten. Vorgesehen sind gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung ein Verfahren und ein System zum Anordnen einer Gruppe von virtuellen Dateisystemen in Clustern. Diese Anordnung in Clustern einer Gruppe von virtuellen Dateisystemen erhöht die Zuverlässigkeit und die Verfügbarkeit und steigert gleichzeitig die E/A-Bandbreite durch Lastverteilung bzw. Lastausgleich. Diese Ausführungsbeispiele werden nachstehend im Text näher beschrieben.
  • A. Netzwerkarchitektur
  • 1. Skalierbares Content Delivery Network
  • Die Abbildung aus 1 zeigt eine Ansicht eines skalierbaren Netzwerks für die Lieferung von Inhalten (Scalable Content Delivery Network bzw. SCDN) 100 für die Zustellung bzw. Übertragung großer Nutzlasten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Bei dem SCDN 100 kann es sich um ein Netzwerk wie das Internet handeln, das konzeptuell einen Netzwerkkern 105 (d. h. den Backbone), intermediäre Netzwerksegmente 110, die von "nah an" und "weit von" dem Kern angeordnet reichen, und Netzwerksegmente, die "fern" von dem Kern angeordnet sind 120-A bis 120-C (gemeinsam 520). "Nah" bzw. "nah an" und "weit" bzw. "weit von" beziehen sich auf die Entfernung bzw. den Abstand und sollen die relativen Weg- bzw. Pfadlatenzen (kurz bzw. lang) zu dem Kern anzeigen, wobei diese Latenzen allgemein abhängig sind von der Anzahl der intermediären Hubs (z. B. Switches, Router und dergleichen), die gekreuzt bzw. passiert werden, um die Hochgeschwindigkeits-Backbones zu erreichen, welche den Kern des Netzwerks bilden, und durch welche der Netzwerkverkehr geleitet wird. Hiermit wird festgestellt, dass jeder intermediäre Hub eine gewisse beschränkte Verarbeitung ausführen kann, welche Latenz hinzufügt, bevor der Verkehr zu dem nächsten Hub weitergeleitet wird.
  • Die Abbildung aus 1 zeigt eine Mehrzahl von Content Provider Clients (CPCs) 130, eine Mehzahl von Endbenutzer-Clients (EUCs als englische Abkürzung von End-User Clients) 150 und einen oder mehrere Content Management Server (CMS) 170, die alle jenseits des Netzwerkrands 101 angeordnet sind. Diese Anordnung dient der Veranschaulichung und schränkt die Erfindung nicht ein. Zum Beispiel können sich ein CPC 130, EUC 150 und/oder CMS 170 an jeder Stelle in einem Netzwerk befinden, auch jenseits des Netzwerkrands, an einem Netzwerkrand oder an einer beliebigen Stelle innerhalb eines Netzwerks, wie zum Beispiel in einem Netzwerksegment oder Kern.
  • Im Allgemeinen kann der Content Provider Client 130 mit einem Content Management Server 170 verbunden (oder diesem zugeordnet) werden, der wiederum mit dem ihm zugeordneten Verteilungszentrum 140 verbunden ist, oder der Content Provider Client 130 kann mit jedem beliebigen Verteilungszentrum 140 verbunden werden (oder diesem zugeordnet sein). In dieser Umgebung kann jeder Anschluss bzw. jede Verbindung eingesetzt werden, die durch das SCDN 100 unterstützt werden. Zu den Beispielen für derartige Verbindungen zählen unter anderem ein physikalischer Übermittlungsabschnitt bzw. Link, (über jedes kabelgebundene oder kabellose Medium), ein Datenübermittlungsabschnitt, ein logischer Übermittlungsabschnitt, eine permanente virtuelle Schaltung, eine geschaltete virtuelle Schaltung, ein verbindungsorientiertes Protokoll, ein verbindungsloses Protokoll sowie jede andere direkte oder indirekte Netzwerkverbindung und/oder jedes Protokoll und Kombinationen dieser.
  • Ein Content Provider Client kann eine Anwendung zur Verwaltung von Inhalten in dem Netzwerk darstellen, wobei es sich dabei aber auch um einen allgemeinen Dateisystem-Client handeln kann, der eine Verbindung mit einem Virtual File Control System (nicht abgebildet) in einem Verteilungszentrum 140 aufweist. Ein Content Owner (Inhaltseigentümer) erstellt, benennt um, verschiebt, löscht und verwaltet Datenträger bzw. Volumen und Verzeichnisse über einen entsprechenden CPC 130. Ein Content Owner lädt ferner Dateien über seinen bzw. ihren CPC 130 in das SCDN 100 hoch, aktualisiert und verwaltet diese Dateien. Der EUC 150 ermöglicht einem Endbenutzer des Inhalts Zugriff auf die Dateien in den SCDN 100. Zum Beispiel kann es sich bei dem EUC 150 um jede Art von Browser (insbesondere einen Web-Browser oder jeden Dateisystem-Browser) handeln, der auf der lokalen Vorrichtung des Endbenutzers läuft. Dabei kann jede Art von Endbenutzervorrichtung eingesetzt werden, die einen Endbenutzer-Client 150 unterstützen kann, insbesondere ein Computer (z. B. ein Personalcomputer, eine Workstation oder ein Server), eine Set-Top-Box, ein Fernseher, ein Telefon oder eine Handheld-Computervorrichtung (z. B. Organizer, Palm-Top-Geräte).
  • Der Netzwerkrand 101 kann weit von dem Netzwerkkern 105 entfernt sein. Der Abstand bzw. die Entfernung (d. h. die Strecken- bzw. Pfadlatenz) zwischen dem Kern und dem Rand kann jedoch uneinheitlich sein und in Bezug auf einen bestimmten CPC oder EUC erheblich variieren. In einem Ausführungsbeispiel der vorliegenden Erfindung wird eine Mehrzahl von Verteilungszentren (DC) 140A140I zur Nutzlastverwaltung am Rand des Netzwerks platziert, wodurch die Latenz für entsprechende Endbenutzer-Clients 150 reduziert oder eliminiert wird. Der Nutzlastinhalt von einem Content Owner wird von einem Verteilungszentrum zu anderen Verteilungszentren am Rand des Netzwerks übertragen. Ein Endbenutzer, der auf einen bestimmten Nutzlastinhalt zugreifen möchte, wird von dem am nächsten gelegenen Verteilungszentrum bedient (über einen Netzwerkdateisystem-Client oder einen Anwendungsserver), welches den gewünschten Inhalt aufweist. Die Latenz aufgrund von Streckenaspekten wird minimiert, da Inhalte bzw. Content über eine Mehrzahl von Anwendungsservern (AS) 160 und Verteilungszentren 140, die an dem Netzwerkrand 101 angeordnet sind, an die Endbenutzer (z. B. einen entsprechenden EUC 150) verteilt werden. Die Verteilung umfasst somit das Erhalten von etwaigen Dateisystemobjekten von einem Content Provider sowie das geografische Platzieren dieser Objekte oder Abschnitte jedes Objekts an den Verteilungszentren, die allgemein nah an dem Rand des Netzwerks angeordnet sind.
  • Die Verteilungszentren 140A140I in dem SCDN 100 aus der Abbildung aus 1 sind zum Beispiel virtuell in Form eines Baums 200 angeordnet, wie dies in der Abbildung aus 2 dargestellt ist. Diese virtuelle Baumanordnung wird primär eingesetzt für die Kommunikation bzw. Übertragung von Steuerinformationen und Signalen zwischen den Knoten des skalierbaren Content Delivery Networks 100. Daten-Downloads können von jedem Knoten in dem Netzwerk ausgeführt werden, der die gewünschten Daten aufweist, vorzugsweise von dem am nächsten gelegenen Knoten (in Bezug auf die Netzwerkentfernung). Die Knoten A bis I aus der Abbildung aus 2 stellen die entsprechenden DCs 140A bis 140I dar. Die Knoten sind in einer logischen Reihenfolge bzw. Anordnung angeordnet. Wenn zum Beispiel angenommen wird, dass der Knoten B Europa-England darstellt, so kann es sich bei den logischen Tochter- bzw. Kindknoten in Europa um Europa-Frankreich (z. B. Knoten D) und Europa-Deutschland (z. B. Knoten E) handeln, und wobei es sich um einen Tochterknoten von Europa-Frankreich zum Beispiel um Europa-Italien (z. B. Knoten H) handeln kann. In diesem Beispiel stellt die linke Seite des Baums Europa dar, so dass die rechte Seite Asien darstellen kann.
  • Der Knoten A stellt den Wurzelknoten dar und kann zum Beispiel eine zentrale Steuerstation darstellen. In einem oder mehreren Ausführungsbeispielen weist jeder Knoten A bis I in dem Baum 200 eine eindeutige Attributanordnung auf, welche den Namen des Knoten darstellt. Die Attributanordnung für einen Knoten wird an einem entsprechenden DC 140A140I gespeichert und kann in jeder geeigneten Datenstruktur dargestellt werden. Die Attributanordnung kann zum Beispiel als eine Variablen-Bitmap dargestellt werden (eine Bitmap ist die binäre Darstellung eines Objekts, wie zum Beispiel einer Zahl). Jeder Knoten weist ferner eine Darstellung der Attributanordnung jedes Kinds, Enkelkinds oder Urenkelkinds, etc. des Knotens auf (d. h. aller Knoten die von dem Knoten als Wurzelknoten abstammen – Abkömmlinge in gerader Linie). Diese Darstellung wird in englischer Sprache als "Rolled Up Set of Attributes" (aufgerollte Attributanordnung) bezeichnet, und wobei diesbezüglich jede geeignete Datenstruktur verwendet werden kann. Somit ist das "aufgerollte" Attribut eines Knotens die Darstellung des aufgerollten Attributs dessen Kindern bzw. Abkömmlingen. Zum Beispiel kann eine "Rolled Up Bitmap", bei der es sich um eine Kombination aus aufgerollten Attribut-Bitmaps aller Kinder des Knotens handelt, verwendet werden. Eine "Rolled Up Bitmap" kann definiert werden als ein "binäres ODER" (auch als "bitweises ODER" bezeichnet) der aufgerollten Attribute der Kindern des Knoten.
  • Die Abbildung aus 3 zeigt eine Darstellung beispielhafter Attribut-Bitmaps 300, 310, 320, 330 und aufgerollter bzw. Rolled Up Bitmaps 340, 350 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Jede Bitmap 300 bis 350 verwendet zu Veranschaulichungszwecken 16 Bits, aber da die Bitmaps variabel sind, können sie nach Bedarf variieren, um jeden Knoten zu identifizieren und um andere Informationen bereitzustellen.
  • Die Bitmap 300 stellt die Attributanordnung für den Knoten B aus der Abbildung aus 2 dar und weist als Identifikation die Bits 1, 4 und 13 auf 1 gesetzt und alle anderen Bits auf 0 gesetzt auf. Das Bit 1 kann gesetzt werden, da der Knoten B zum Beispiel ein Tochterknoten von A ist, wobei as Bit 4 gesetzt werden kann, um Europa darzustellen, und wobei das Bit 13 gesetzt werden kann, um England darzustellen. Die Bitmap 310 stellt die Attributanordnung für den Knoten D aus der Abbildung aus 2 dar, einen Tochterknoten von B, und wobei die Bits 1, 4 und 14 auf 1 und alle anderen Bits auf 0 gesetzt sind. Das Bit 14 kann zum Beispiel für Frankreich stehen. Die Bitmap 320 stellt die Attributanordnung für den Knoten E aus 2 dar, ebenfalls ein Tochterknoten von B, und wobei die Bits 1, 4 und 15 auf 1 und alle anderen Bits auf 0 gesetzt sind. Das Bit 15 kann zum Beispiel Deutschland darstellen. Das Bitmap 330 stellt die Attributanordnung für den Knoten H aus der Abbildung aus 2 dar, einen Tochterknoten von D, und die Bits 1, 4 und 16 sind auf 1 und alle anderen Bits auf 0 gesetzt. Das Bit 16 kann zum Beispiel für Italien stehen. Aufgerollte Bitmaps werden ebenfalls für jeden Knoten gespeichert, der Abkömmlinge aufweist. Die Rolled Up Bitmap 340 stellt die aufgerollte Anordnung von Attributen für den Knoten D dar. In diesem Fall entspricht die aufgerollte Bitmap 340 für den Knoten D der Attribut-Bitmap des Knoten H, da H keine Kinder bzw. Abkömmlinge aufweist. Die aufgerollte Bitmap 350 stellt die aufgerollte Anordnung von Attributen für den Knoten B dar. In diesem Fall handelt es sich bei der aufgerollten Bitmap 350 für den Knoten B um das binäre ODER der Attribut-Bitmaps 310, 320 und 330. Das Ergebnis des binären ODER ist es, dass alle gesetzten Bits in den Bitmaps 310, 320 und 330 auch in der aufgerollten Bitmap 350 gesetzt sind bzw. werden (d. h. die Bits 1, 4, 14, 15 und 16).
  • Der Content Management Server 170 kann mit jedem Knoten A bis I des Baums 200 verbunden werden. Selbst in Beispielen, bei denen der Content Management Server 170 und das Verteilungszentrum 140A140I sich nicht an dem gleichen Ort befinden, kann der Content Management Server 170 somit einem Content Owner bzw. Inhaltseigentümer ein Mittel zur Verfügung stellen, Dateisystemobjekte den Verteilungszentren 140A bis 140I zuzuführen und um die Dateisystemobjekte in dem Netzwerk 100 zu verwalten. Der Content Management Client 130 kann direkt mit einem Verteilungszentrum 140A bis 140I verbunden werden, um ähnliche Funktionen auszuführen, wie diese durch einen Content Management Server 170 bereitgestellt werden. In einem Ausführungsbeispiel handelt es sich bei dem Content Management Server 170 um einen Computer, der die Dateisystemobjekte des Content Owners zur Verteilung in dem Netzwerk 100 verarbeitet. In einem anderen Ausführungsbeispiel handelt es sich bei dem Content Management Server 170 um eine Untergruppe von Werkzeugen bzw. Tools (z. B. maschinenunabhängigen Objekten), welche die Verwaltung, Verteilung, den Zugriff auf und die Steuerung von Dateisystemobjekten in dem Netzwerk 100 ermöglicht. Die Tools können in dem Computer des Inhalteeigentümers eingebettet sein, für eine Verarbeitung und Verteilung einer großen Nutzlastdatei in dem Netzwerk 100. In einem anderen Ausführungsbeispiel handelt es sich bei dem Content Provider Client 130 um einen Standarddateisystem-Client, der eine direkte Verbindung zu dem Virtual File Control System (virtuelles Dateisteuersystem) eines Verteilungszentrums 140A bis 140I aufweist, während die Verarbeitungs-Tools in dem Virtual File Control System eingebettet sein können. Nachdem ein Content Provider ein Dateisystemobjekt in den Content Management Server 170 geladen hat, kann der CMS 170 das Objekt verarbeiten und es an ein Verteilungszentrum 140A bis 140I weiterleiten.
  • 2. Verteilungszentrum
  • Die Verteilungszentren (DC) 400A400C werden in Bezug auf die in den Abbildungen der 4A bis 4C dargestellten Ausführungsbeispiele beschrieben. Ein Verteilungszentrum wird auch als eine Station oder ein Datenzentrum bezeichnet. Die Funktionsweise bzw. der Betrieb von Verteilungszentren und deren Komponenten gemäß der vorliegenden erfindung wird danach ebenfalls in näheren Einzelheiten beschrieben.
  • Die Abbildung aus 4A zeigt ein Diagramm eines Verteilungszentrums 400A gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Das Verteilungszentrum 400A weist einen Verteilungsserver-Cluster (DSC) 410, einen Anwendungsserver-Cluster (ASC) 420A, eine Steuereinheit (CU) 450, ein gemeinsam genutztes Speichersystem 430, einen Speicher-Switch 440 und einen steuerungsbezogenen Intrastations-Switch 415 auf. Der Verteilungsserver-Cluster 410 kommuniziert mit dem Speichersystem 430 über den Speicher-Switch 440 unter Verwendung der Übermittlungsabschnitte 443 und 445. Der Anwendungsserver-Cluster 420A kommuniziert mit dem Speichersystem 430 über den Speicher-Switch 440 unter Verwendung der Übermittlungsabschnitte 441 und 444. Der Anwendungsserver-Cluster 420A weist ferner ein Virtual File Control System 470 gemäß der vorliegenden Erfindung auf. Die Steuereinheit 450, der Verteilungsserver-Cluster 410 und der Anwendungsserver-Cluster 420A kommunizieren alle über den steuerbezogenen Intrastations-Switch 415 (Intra-Station Control Related Switch), der mit dem Speicher-Switch 440 kommuniziert. Die Steuereinheit 450 weist ihr eigenes lokales Speichersystem 460 auf.
  • Das Verteilungszentrum 400A kommuniziert mit mehreren EUCs 150 über den Anwendungsserver-Cluster 420A. Der ankommende ASC-Verkehr 402 kommt an dem Anwendungsserver-Cluster 420A von einem oder mehreren EUCs 150 in dem Netzwerk 100 an. Der abgehende ASC-Verkehr 404 wird von dem Anwendungsserver-Cluster 420A in dem Netzwerk an einen oder mehrere EUCs 150 in dem Netzwerk gesendet. Das Verteilungszentrum 400A kommuniziert ferner mit anderen Verteilungszentren 140 und CMS 170 in dem Netzwerk 100 über den Verteilungsserver-Cluster 410. Der ankommende DS-Verkehr 412 kommt an dem Verteilungsserver-Cluster 410 von einem oder mehreren Verteilungszentren 140 und/oder CMS 170 in dem Netzwerk 100 an. Der abgehende DS-Verkehr 414 wird von dem Verteilungsserver-Cluster 410 an ein oder mehrere Verteilungszentren 140 und/oder CMS 170 in dem Netzwerk 100 gesendet. Die Steuereinheit 450 sendet und empfängt Steuerverkehr 416 an und von einem oder mehreren Verteilungszentren 140 und/oder CMS 170 in dem Netzwerk 100.
  • Die Abbildung aus 4B zeigt ein Diagramm des Verteilungszentrums 400B gemäß einem anderen Ausführungsbeispiel der vorliegenden Erfindung. Das Verteilungszentrum 400B weist eine Steuereinheit 450 auf, ein oder mehrer Virtual File Control Systeme (VFCS) 470, einen oder mehrere Verteilungsserver in einem Verteilungsserver-Cluster 410 und eine Mehrzahl von Speichervorrichtungen 430<1> 430<3>. Der Anwendungsserver-Cluster 420B weist einen oder mehrere Anwendungsserver 420<1>420<M> und jedes VFCS 470 auf. Die Steuereinheit 450 ist der Netzwerkmanager für das Verteilungszentrum 400B und ist mit jedem VFCS 470 und DSC 410 gekoppelt. Bei den Anwendungsservern 420<1...N> kann es sich um jede Art von Anwendungsserver handeln, einschließlich und nicht beschränkt auf Streaming-Server, FTP-Server und Media Player. Die Anwendungsserver 420<1...N> sind kein Teil des Verteilungszentrums 400B, wobei sie jedoch mit dem Virtual File Control System 470 verbunden dargestellt sind, um zu veranschaulichen, wie Endbenutzer-Clients 150 auf Dateien zugreifen, die in dem SCDN 100 gespeichert sind. Die Speichervorrichtungen 430<1...3> sind zwischen dem 410 und jedem VFCS 470 gekoppelt.
  • Die Komponenten des Verteilungsserver-Clusters 410 müssen sich nicht an dem gleichen Knoten befinden wie die VFCS 470 und die Steuereinheit 450. Zum Beispiel kann jedes VFCS 470 mit den Anwendungsservern 420 angeordnet sein, und die Steuereinheit 450 kann sich an anderer Stelle befinden, wie zum Beispiel bei den VFCS 470. Somit ist es nicht erforderlich, dass sich alle Komponenten des Verteilungszentrums 400B gemeinsam an einem SCDN-Knoten befinden.
  • Die Abbildung aus 4C zeigt ein Verteilungszentrum 400C gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung. Die Abbildung aus 4C veranschaulicht, wie Verteilungsserver über Cluster miteinander verbunden sind, mit einem Load Balancer bzw. einer Lastverteilungseinrichtung als Schnittstelle zu dem Rest des Netzwerks 100. Das Verteilungszentrum 400C ist dem Verteilungszentrum 400A ähnlich, wobei es jedoch einen Verteilungszentrum-Cluster (DSC) 410 aufweist, der eine Lastverteilungseinrichtung 411 aufweist, die mit einer Mehrzahl von Verteilungsservern 413 DS<1...N> gekoppelt ist. Die Verteilungsserver 413 sind in der Station 400C in Cluster angeordnet, um deren Arbeitslast zu verteilen. Der DSC 410 stellt unter anderem Systemfehlertoleranz und Skalierbarkeit bereit. In einer Station befinden sich zwar mehrere Verteilungsserver 413, allerdings erscheinen sie als eine Schnittstelle zu den externen Stationen. Die Lastverteilungseinrichtung 411 ist deren Schnittstelle zu der äußeren Umgebung, wobei die Einrichtung Anforderungen an jeden DS<1..N> ausgibt, unter Berücksichtigung deren aktuellen Arbeitslast bzw. Workload.
  • Das Verteilungszentrum 400C weist ferner einen Anwendungsserver-Cluster 420C auf. Der Anwendungsserver-Cluster 420C weist ein Lastverteilungs- und/oder Routing-System 422, die Anwendungsserver 425 AS<1...M>, ein Lastverteilungs- und/oder Routing-System 424 und ein oder mehrere Virtual File Control Systeme (VFCS) 470 auf. Der ankommende ASC-Verkehr 402 kommt an dem Lastverteilungs- und/oder Routing-System 422 an, welches den Verkehr über die Anwendungsserver 425 AS<1...M> verteilt. Der Verkehr von den Anwendungsservern 425 wird zu dem Lastverteilungs- und/oder Routing-System 424 gesendet, welches den Verkehr über die Virtual File Control Systeme 470 VFCS<1...L> verteilt. Der abgehende ASC-Verkehr 404 wird von dem Switch 415 über die Virtual File Control Systeme 470 VFCS<1...L> zu den Anwendungsservern 425 geleitet und danach zu dem Lastverteilungs- und/oder Routing-System 422. Ausführungsbeispiele von Anwendungsserver-Clustern werden ferner in Bezug auf die Abbildungen der 5A bis 5C beschrieben. Ein Ausführungsbeispiel eines Virtual File Control System-Clusters mit einer Lastverteilungseinrichtung und mehrfachen virtuellen Dateisteuerung wird in Bezug auf die Abbildung aus 6 näher beschrieben.
  • Ein Content Owner erstellt, bewegt, löscht, benennt um, aktualisiert und verwaltet Dateisystemobjekte direkt über ein oder mehrere Verteilungszentren 140, 400 oder direkt über einen oder mehrere Content Management Server 170. Ein Content Owner kann ferner eine Datei oder Dateiverzeichnisse in einen oder mehrere Content Management Server 170 hochladen, unter Verwendung von Content Publishing und Management Tools, die auf einem Client-System 130 des Content Owners laufen bzw. ausgeführt werden. Nach dem Empfang der Dateisystemobjekte verarbeiten CMS 170 oder ein VFCS 470 die Dateisystemobjekte und erzeugen Objekt-Metadaten, wobei die diesbezüglichen Einzelheiten nachstehend in Bezug auf die Abbildungen der 7A bis 7C und andere Figuren beschrieben werden. Für die Verarbeitung eines Dateiobjekts bestimmen CMS 170 oder VFCS 470 Track- bzw. Verfolgungsdateien (auch als lineare Dateien bekannt) in der ursprünglichen Datei, sofern dies erforderlich ist. Eine lineare Datei ist eine Datei, die die Anordnung beibehält, welche der Substanz (d. h. dem substantiven Inhalt) der Datei zugeordnet ist. In einem Beispiel für die vorliegende Erfindung handelt es sich bei einer linearen Datei um eine Datei, bei der die ersten 10% des Inhalts der Anwendung ungefähr innerhalb der ersten 10% der ganzen Datei liegen müssen, beginnend am Anfang der Datei. In einer nicht linearen Datei können die ersten 10% des Inhalts über mehrere Standorte bzw. Positionen in der Datei verstreut sein. Wenn die lineare Datei zum Beispiel einen Film aufweist, so weist der Anfang der Datei die Anfangsabschnitte des Films auf. In ähnlicher Weise würden sich die mittleren Abschnitte und die Endabschnitte des Films in der Mitte und am Ende der linearen Datei befinden. Lineare Dateien sind wünschenswert, da diese Dateien leichter wieder zusammengesetzt werden können unter Verwendung von beispielsweise der linearen Überlagerung. Bestimmte Dateien sind nicht linear, das heißt, sie weisen mehrere Spuren oder Segmente auf, so dass der erste Teil des Inhalts zum Beispiel nicht am Anfang der Datei gespeichert wird.
  • Nach der Verarbeitung eines Dateisystemobjekts überträgt der CMS 170 oder das VFCS 470 das Dateisystemobjekt an einen Verteilungsserver 140, 400, mit dem eine Verbindung oder eine Zuordnung gegeben ist. Wenn es sich bei dem Objekt um eine Datei handelt, teilt der Verteilungsserver 140, 400 die ganze Datei (alle Track-Dateien) in Blockdateien auf, wie dies für die Speicherung gewünscht wird. Die Blockdateien können später an lokalen Speicherplätzen, wie zum Beispiel 430<1...n> gespeichert werden. Ein Teil der Metadaten wird während der Verarbeitung des Dateisystemobjekts erzeugt. Zum Beispiel wird in Bezug auf eine Datei ein "Chunking" Prozess eingesetzt, um die Track-Dateien zu lokalisieren und die Datei in Blockdateien zu zerlegen, welche den Großteil der Metadaten erzeugen. Die Metadaten einer Datei werden eingesetzt, um die Datei aus einer Gruppe von Blockdateien zu rekonstruieren.
  • Ein Dateiverteilungsprotokollbefehl (z. B. FDP-Befehl) wird in der Folge verwendet, um die Metadaten und die Dateisystemobjekte oder ausgewählte Teile dieser zu verteilen (d. h. zu replizieren), und zwar an andere Verteilungsserver-Knoten in dem skalierbaren Content Delivery Network 100. Für die erste Replikation einer Datei müssen nicht alle Blockdateien (die Chunks, die aus einer ursprünglichen Datei aufgeteilt worden sind) in allen Knoten gespeichert werden, wobei jedoch eine Masterkopie in bestimmten Knoten vollständig gespeichert werden kann (für gewöhnlich in bzw. an dem Ursprungsknoten). Das FDP weist Befehle auf, welche Dateiübertragungen und Manipulationen in dem SCDN 100 erleichtert. Die Größe der Blöcke beeinflusst die Leistung sowohl der Verteilung von Inhalten als auch der Zustellung bzw. der Übertragung von Inhalten und wird nachstehend im Text näher beschrieben.
  • a. Virtual File Control System:
  • Jedes Virtual File Control System (VFCS) 470 erzeugt eine integrierte Dateisystemverzeichnisdarstellung von Netzwerkknoten der Metadateisystemstruktur und Objektmetadaten. Die Metadateisystemstruktur und die Objektmetadaten werden anhand der Verarbeitung und des Speicherns von Dateisystemobjekten erzeugt; in Bezug auf ein Dateiobjekt handelt es sich bei diesem Prozess um den "Chunking" Prozes. Die Datenblöcke jeder durch ein VFCS 470 dargestellten Datei werden nicht unbedingt in lokalen Speichervorrichtungen eines einzelnen Knoten gespeichert. Das VFCS 470 kann die ursprüngliche Datei wieder in Echtzeit zusammenzusetzen, während eine Endbenutzeranforderung bearbeitet wird und die nicht-residenten Blöcke von anderen Knoten in die lokalen Speichervorrichtungen importiert werden. Wie dies nachstehend beschrieben wird, müssen nicht alle Blöcke der Datei an einem Verteilungszentrum gespeichert werden; wobei jedoch die ganze Datei in dem SCDN 100 zur Verfügung steht. Wenn ein Endbenutzer eine Verbindung mit einem Anwendungsserver herstellt, erzeugt das VFCS 470 ein virtuelles Erscheinungsbild, dass das ganze Dateisystemverzeichnis und alle Dateien bzw. die vollständigen Dateien an diesem Knoten zur Verfügung stehen. Wenn zum Beispiel angenommen wird, dass nur fünfzehn Prozent einer Datei von zwei Gigabyte in dem Speicher 430<1...3> gespeichert werden, so sorgt das VFCS 470 dafür, dass ein Anwendungsserver meint, dass die ganze Bibliothek und die ganze Datei von zwei Gigabyte an dem Ort zur Verfügung steht. Somit kann ein Anwendungsserver, wie zum Beispiel ein Streaming Server, die Wiedergabe einer Datei starten. Wenn die Datei wiedergegeben bzw. abgespielt wird, kommuniziert das VFCS 470 mit einem DS, um die restlichen Abschnitte der Datei an anderen Knoten in dem Netzwerk zu lokalisieren und abzurufen.
  • b. Anwendungsserver-Cluster:
  • Ein Anwendungsserver-Cluster (ASC) gemäß der vorliegenden Erfindung weist eine Gruppe von Anwendungsservern und eine Gruppe von Virtual File Control Systemen auf. Ein ASC stellt Unter anderem Dienste an einen Endbenutzer bereit (z. B. das Streaming eines Spielfilms bzw. Films in voller Länge an ein Client-System eines Endbenutzers). Wie dies vorstehend im Text bereits beschrieben worden ist, stellt das VFCS eine Management-Schnittstelle an den Content Owner bereit, während gleichzeitig Systemfehlertoleranz und Skalierbarkeit vorgesehen werden.
  • Die Abbildungen der 5A5C zeigen Ausführungsbeispiele von drei entsprechenden Anwendungsserver-Clustern 500, 502, 504 gemäß der vorlegenden Erfindung. Jeder Anwendungsserver-Cluster 500, 502, 504 weist Lastverteilungseinrichtungen 520 und 530 auf, eine Mehrzahl von Anwendungsservern 425<1> bis 425<M> (gemeinsam 425) und eine Mehrzahl von Virtual File Control Systemen 470-1 bis 470-L (gemeinsam 470). In einem Beispiel wird jedes Virtual File Control System 470-1 bis 470-L an einem entsprechenden Server (als Virtual File Control System Server bezeichnet) implementiert. Die Anwendungsserver-Cluster 500, 502, 504 sorgen für fehlertolerante und skalierbare Systemleistung. Wenn zum Beispiel einer der Anwendungsserver 425<1> bis 425<M> ausfällt oder wenn einer der VFCS Server Systeme 470-1 bis 470-L ausfällt, verarbeitet einer der anderen vorhandenen Anwendungsserver 425 oder VFCS-Server 470 entsprechend die Anforderungen. Wenn in ähnlicher Weise mehr Systemleistung erforderlich ist, kann die Anzahl der Anwendungsserver, der VFCS-Server oder die Speicherkapazität des Speichersystems 430 nach Bedarf erhöht werden.
  • Die Abbildung aus 5A zeigt ein veranschaulichendes Ausführungsbeispiel eines Anwendungsserver-Clusters 500. Jeder Anwendungsserver 425 greift auf Daten (z. B. große Nutzlastdateien) über einen der VFCS-Server 470 der Station zu, wobei die Server wiederum über den Switch 440 auf Daten in dem Speichersystem 430 zugreifen. Obgleich die Lastverteilungseinrichtung 520 und die Lastverteilungseinrichtung 530 in der Abbildung aus 5A logisch als separate Einheiten dargestellt sind, können sie auch die gleiche physische Einheit darstellen. Ferner können sich der Anwendungsserver 425 und der VFCS-Server 470 in der gleichen physischen Einheit befinden, wodurch eine der Lastverteilungseinrichtungen 520 oder 530 eliminiert wird.
  • Ein Endbenutzer greift auf ein Dateisystemobjekt zu, erzeugt oder verwaltet ein Dateisystemobjekt unter Verwendung einer Standardschnittstelle (wie etwa eines Web-Browsers oder eines Dateisystem-Clients), die auf der Vorrichtung bzw. dem Gerät des Endbenutzer-Clients läuft. Wenn als Folge dessen der Benutzer über einen Anwendungsserver auf ein Dateisystemobjekt zugreift, wird eine Behandlungsanforderung für die Datei an den ASC 500 gesendet und erreicht die Lastverteilungseinrichtung 520. Die ankommenden Datenpakete für die Behandlungsanforderung werden durch die Lastverteilungseinrichtung 520 an einen der Anwendungsserver 425 weitergeleitet, wie zum Beispiel den Anwendungsserver 425-1 (ein willkürlicher, beispielhafter Server der Server 425-1 bis 425-M). Der Anwendungsserver 425-1 gibt eine Anforderung für die erforderlichen Daten an die Lastverteilungseinrichtung 530 aus. Die Lastverteilungseinrichtung 530 wählt einen der VFCS-Server 470 der Station aus, wie zum Beispiel VFCS 470-3 (ein willkürlicher, beispielhafter Server der Server 470-1 bis 470-L), um die Anforderung zu bearbeiten, und wobei die Datenpakete von dem Anwendungsserver 425-1 zu dem VFCS 470-3 weitergeleitet werden. Wenn angenommen wird, dass alle angeforderten Daten in dem Speichersystem 430 vorhanden sind, verarbeitet das VFCS 470-3 die Anforderung, indem die Daten in dem Speichersystem 430 über den Switch 440 gespeichert werden oder auf diese zugegriffen wird, und wobei die Daten und eine Antwort über die Lastverteilungseinrichtung 530 an den Anwendungsserver 425-1 zurückgesendet werden. Eine Endbenutzeranforderung kann danach direkt zu der Lastverteilungseinrichtung 530 verlaufen und direkt und danach zu einem ausgewählten VFCS-Server 470.
  • Wenn der Anwendungsserver 425-1 oder ein Dateisystem-Browser des Endbenutzer-Client-Systems CPC (130 aus 1) eine Sitzung mit einem VFCS 470-3 erzeugt, leitet die Lastverteilungseinrichtung 530 weiter Daten zwischen dem Anwendungsserver 425-1 und dem VFCS 470-3 oder zwischen dem CPC 130 und dem VFCS 470-3 weiter hin und her. Wenn die Lastverteilungseinrichtung 530 eine "sticky" Funktion unterstützt, und wenn die "sticky" Funktion "eingeschaltet" ist, können Daten von dem Anwendungsserver 425-1 oder dem CPC 130 über die aktuelle Sitzung hinaus weiter zu dem VFCS 470-3 geleitet werden, wenn das VFCS 470-3 weiter verfügbar bleibt (d. h. wenn die Lastverteilungseinrichtung 530 das VFCS 470-3 keinem anderen Anwendungsserver zuweist). Wenn das VFCS 470-3 nicht mehr verfügbar wird, leitet die Lastverteilungseinrichtung 530 die Datenpakete von dem Anwendungsserver 425-1 oder CPC 130 zu einem anderen VFCS-Server, wie zum Beispiel 470-1 (ein weiteres willkürliches Beispiel für einen der Server 470-1 bis 470-M). Das VFCS 470-1 verarbeitet die Anforderung von dem Anwendungsserver 425-1 oder CPC 130 und sendet Antwortdatenpakete über die Lastverteilungseinrichtung 530 an den Anwendungsserver 425-1 oder CPC 130. Datenpakete von dem Anwendungsserver 425-1 werden über die Lastverteilungseinrichtung 520 zurück zu dem Client übertragen. Wie die Lastverteilungseinrichtung 530 erhält die Lastverteilungseinrichtung 520 eine anhaltende Sitzung zwischen dem Client-System des Endbenutzers und dem Anwendungsserver 425-1 bei. Die Lastverteilungseinrichtung 520 kann ebenfalls eine "sticky" Funktion bereitstellen. In einem anderen Beispiel kann die Lastverteilungseinrichtung 520 Sitzungen aufbauen und wieder aufbauen, die nicht dauerhaft bzw. anhaltend sind.
  • Wenn eine neue Anforderung von einem anderen Endbenutzer-Client-System die Lastverteilungseinrichtung 520 des ASC 500 erreicht, leitet die Lastverteilungseinrichtung 520 die neue Anforderung an einen verfügbaren Anwendungsserver weiter, wie zum Beispiel den Anwendungsserver 425-3 (ein weiteres willkürliches Beispiel für einen der Server 425-1 bis 425-M). Der Anwendungsserver 425-3 verarbeitet die Anforderung und stellt in Folge dessen eine Datenanforderung an einen der VFCS-Server der Station über die Lastverteilungseinrichtung 530, wie z. B. VFCS 470-2 (ein weiteres willkürliches Beispiel für eines der Systeme 470-1 bis 470-L). Die Lastverteilungseinrichtung 530 leitet danach die Datenpakete von dem Anwendungsserver 425-3 zu dem VFCS 470-2 weiter. Das VFCS 470-2 verarbeitet die Anforderung von dem Anwendungsserver 425-3 und sendet Antworten über die Lastverteilungseinrichtung 530 zurück zu dem Anwendungsserver 425-3. Der Anwendungsserver 425-3 sendet Antworten über die Lastverteilungseinrichtung 520 zu dem neuen Endbenutzer-Client-System.
  • Die Abbildung aus 5B zeigt ein weiteres Ausführungsbeispiel eines Anwendungsserver-Clusters 502. Der ASC 502 weist einen oder mehrere Anwendungsserver 425-1 bis 425-M (gemeinsam 425) auf, eine Lastverteilungseinrichtung 520 mit niedriger Bandbreitenfähigkeit, einen Router 525 mit hohem Netzwerkdurchsatz, eine Lastverteilungseinrichtung 530 (ebenfalls mit niedriger Bandbreitenfähigkeit), einen Router 535 und einen oder mehrere VFCS-Server 470-1 bis 470-L (gemeinsam 470) auf. Jeder Anwendungsserver greift auf Daten (z. B. große Nutzlastdateien) über einen VFCS-Server 470 der Station zu, der wiederum über den Switch 440 auf Daten in dem Speichersystem 430 zugreift. Die Lastverteilungseinrichtung 520 und die Lastverteilungseinrichtung 530 sind in der Abbildung aus 5B zwar logisch als zwei separate Einheiten dargestellt, allerdings kann es sich dabei um die gleiche physikalische bzw. physische Einheit handeln. Ferner können sich der bzw. die Anwendungsserver 425 und der bzw. die VFCS-Server 470 in der gleichen physischen Einheit befinden, wodurch eine der Lastverteilungseinrichtungen 520 und 530 und einer der Router 525 und 535 eliminiert wird. Somit eliminiert eine Konfiguration gemäß einem Ausführungsbeispiel der vorliegenden Erfindung die Lastverteilungseinrichtung 530 und den Router 535 und kombiniert den bzw. die Anwendungsserver 425 mit dem bzw. den VFCS-Server(n) 470.
  • Die vorliegende Erfindung nutzt die Tatsache, dass der abgehende Verkehr von den VFCS-Servern 470 und den Anwendungsservern 425 des Anwendungsserver-Clusters deutlich höher sein kann als der ankommende Verkehr. Wie dies in der Abbildung aus 5B dargestellt ist, wird der abgehende Verkehr zu dem Router 525 und dem Router 535 übermittelt, während der ankommende Verkehr zu den Lastverteilungseinrichtungen 530, 530 gesendet wird, jedoch nicht zu den Routern 525, 535. Durch das Trennen von ankommendem und abgehendem Verkehr trägt dieses Ausführungsbeispiel zur Verbesserung der Netzwerkleistung bei.
  • Ein Endbenutzer fordert ein Dateisystemobjekt unter Verwendung einer Standardschnittstelle (wie etwa eines Web-Browsers) an, welche auf dem Client-Gerät des Endbenutzers ausgeführt wird. Als Folge dessen wird eine Behandlungs- bzw. Serviceanforderung für das Dateisystemobjekt zu dem ASC 502 übermittelt und erreicht die Lastverteilungseinrichtung 520 bzw. 530. Die ankommenden Datenpakete der Behandlungsanforderung werden durch die Lastverteilungseinrichtung 520 zu einem der Anwendungsserver 425 weitergeleitet, wie z. B. zu dem Anwendungsserver 425-1 (ein willkürliches veranschaulichendes Beispiel für einen der Server 425-1 bis 1810-M). Der Anwendungsserver 425-1 gibt eine Anforderung für die erforderlichen Daten an die Lastverteilungseinrichtung 530 aus. Die Lastverteilungseinrichtung 530 wählt einen der VFCS-Server 1470, wie zum Beispiel VFCS 470-1 (ein willkürliches veranschaulichendes Beispiel von 470-1 bis 470-L), für die Behandlung bzw. die Bearbeitung der Anforderung aus und leitet die Datenpakete von dem Anwendungsserver 425-1 zu VFCS 470-L weiter. VFCS 470-1 verarbeitet die Anforderung, indem über den Switch 440 in die Daten in dem Speichersystem 430 geschrieben wird oder auf diese Daten zugegriffen wird, und wobei die Daten und eine Antwort über den Router 535 zurück zu dem Anwendungsserver 425-1 oder direkt zurück zu dem Client oder über eine Lastverteilungseinrichtung gesendet wird, wie dies in einer Anordnung in der Abbildung aus 6 dargestellt ist.
  • Wenn der Anwendungsserver 425-1 eine Sitzung mit VFCS 470-1 aufbaut, sendet die Lastverteilungseinrichtung 530 weiter Daten von dem Anwendungsserver 425-1 an VFCS 470-1. Wenn die Lastverteilungseinrichtung 530 die "sticky" Funktion unterstützt und diese Funktion "eingeschaltet" ist, können Daten von dem Anwendungsserver 425-1 weiter zu VFCS 470-1 über die aktuelle Sitzung hinaus gesendet werden, solange VFCS 470-1 verfügbar bleibt (d. h. wenn die Lastverteilungseinrichtung 530 VFCS 470-1 keinem anderen Anwendungsserver zuweist). Die Daten von VFCS 470-1 zu dem Anwendungsserver 425-1 fließen durch den Router 535. Der Router 535 leitet Datenpakete, die von VFCS 470-1 empfangen werden, zu dem Anwendungsserver 425-1 weiter. Der Anwendungsserver 425-1 sendet Datenpakete über den Router 525 zu dem Endbenutzer-Client-System.
  • Wenn eine neue Anforderung von einem anderen Endbenutzer-Client an der Lastverteilungseinrichtung 520 des ASC 502 ankommt, leitet die Lastverteilungseinrichtung 520 die neue Anforderung an einen verfügbaren Anwendungsserver weiter, wie z. B. den Anwendungsserver 425-3 (ein weiteres willkürliches veranschaulichendes Beispiel für die Server 425-1 bis 425-M). Der Anwendungsserver 425-3 verarbeitet die Anforderung und gibt in der Folge eine Datenanforderung an einen der VFCS-Server über die Lastverteilungseinrichtung 530 aus, wie etwa über VFCS 470-3 (ein weiteres willkürliches veranschaulichendes Beispiel für 470-1 bis 470-L). VFCS 470-3 verarbeitet die Anforderung von dem Anwendungsserver 425-3 und sendet Daten über den Router 535 zurück zu dem Anwendungsserver 425-3. Der Anwendungsserver 425-3 sendet Antwortdaten über den Router 525 zurück zu dem Endbenutzer-Client-System.
  • Die Abbildung aus 5C zeigt ein drittes veranschaulichendes Ausführungsbeispiel eines Anwendungsserver-Clusters 504. Dieses Ausführungsbeispiel ist dem Ausführungsbeispiel aus der Abbildung aus 5B ähnlich, unterscheidet sich jedoch in zwei Aspekten: (1) sämtlicher EUC-bezogener Datenverkehr 402, 404 in und aus dem ASC verläuft durch den Router 525; und (2) sämtlicher Datenverkehr zwischen den Anwendungsservern 425 und den VFCS-Servern 470 verläuft durch den Router 535. Ankommende Client-Datenpakete fließen durch den Router 525 zu der Lastverteilungseinrichtung 520. Die Lastverteilungseinrichtung 520 gibt den ankommenden Verkehr danach über den Router 525 an die Anwendungsserver ab. Der komplette abgehende Verkehr fließt durch den Router 525 zu dem Endbenutzer-Client-System. Der Ankommende Verkehr zu den VFCS-Servern 470 fließt von dem Router 535 zu der Lastverteilungseinrichtung 530. Die Lastverteilungseinrichtung 530 gibt den ankommenden Verkehr über den Router 535 an die VFCS-Server 470 ab. Der abgehende Verkehr des VFCS-Servers fließt durch den Router 535 zu den entsprechenden Anwendungsservern 425. Wiederum kann es sich bei der Lastverteilungseinrichtung 520 und der Lastverteilungseinrichtung 530 um die gleiche physische Einheit handeln. Ferner können sich der Anwendungsserver 425 und der VFCS-Server 470 in der gleichen physischen Einheit befinden, wodurch eine der Lastverteilungseinrichtungen 520 und 530 und einer der Router 525 und 535 eliminiert wird. Somit eliminiert eine Konfiguration gemäß einem Ausführungsbeispiel der vorliegenden Erfindung die Lastverteilungseinrichtung 530 und den Router 535 und kombiniert den bzw. die Anwendungsserver 425 mit dem bzw. den VFCS-Server(n) 470.
  • Das Ausführungsbeispiel aus der Abbildung aus 5A setzt eine Lastverteilungseinrichtung mit ausreichender Kapazität ein, um sowohl ankommende als auch abgehende Verkehrs-Cluster zu bearbeiten bzw. zu behandeln. Die Ausführungsbeispiele aus den Abbildungen der 5B und 5C weisen Vorteile für Cluster mit starkem abgehenden Verkehr und geringerem ankommenden Verkehr auf. Beide nutzen zwei Lastverteilungseinrichtungen mit geringer Kapazität. In dem Ausführungsbeispiel aus der Abbildung aus 5B wird der ankommende und der abgehende Verkehr zwischen den Lastverteilungseinrichtungen und den Routern aufgeteilt, während in dem Ausführungsbeispiel aus der Abbildung aus 5C der ankommende und der abgehende Verkehr durch die Router verläuft, wobei die Lastverteilungseinrichtungen als eine Ressource verwendet werden. Für Anwendungsserver-Cluster mit starker Verkehr in zwei Richtungen sind Lastverteilungseinrichtungen mit geringerer Kapazität und Router wünschenswert, wie dies in den Ausführungsbeispielen der Abbildungen der 5B und 5C der Fall ist. Die Ausführungsbeispiele aus den Abbildungen der 5B und 5C können unter Verwendung von Lastverteilungseinrichtungen konfiguriert werden, die in einem transparenten Modus arbeiten können.
  • c. Virtual File Control System Cluster:
  • Die Abbildung aus 6 zeigt ein veranschaulichendes Ausführungsbeispiel eines Virtual File Control System Clusters 600. Der VFCS Cluster 600 weist eine oder mehrere VFCS-Einheiten 470<1...L> auf, die kombiniert werden, um ein virtuelles VFCS durch ein Lastverteilungs-Cluster-Manager 630 zu erzeugen (auch als Lastverteilungseinrichtung bezeichnet). Die Anforderungen von Daten 625 werden durch die Lastverteilungseinrichtung 630 zu einer am besten verfügbaren VFCS-Einheit 470<1...L> geleitet, während die zurückgeführten Daten direkt zu dem Aufrufer übermittelt werden. Bei diesem VFCS-Cluster 600 kommuniziert jede VFCS-Einheit 470<1...L> direkt mit einem lokalen Verteilungsserver, wie dies durch den Verkehr 648 dargestellt ist.
  • B. Content Publishing und Management
  • Das Content Publishing und Management umfasst das Erstellen, das Aktualisieren von Content, das Aktualisieren von Attributen, die neue Positionsanordnung, das Löschen und die sonstige Verwaltung von Dateisystemobjekten. Ein Dateisystemobjekt umfasst einen Datenträger, ein Verzeichnis und/oder eine Datei.
  • 1. Erzeugung, Aktualisierung, Umbenennung, Neuzuweisung, Löschen von Dateisystemobjekten
  • Die Abbildungen der 7A–B zeigen Flussdiagramme des Publishing (Veröffentlichung), Verteilung und des Managements von Dateisystemobjekten gemäß Ausführungsbeispielen der vorliegenden Erfindung. Im Besonderen ist eine Routine 700 abgebildet, welche Schritte (702 bis 799) aufweist. Die Publikation, Verteilung und das Management von Dateisystemobjekten umfasst das Einführen eines neuen Dateisystemobjekts in das SCDN 100 entweder über CMS 170 oder VFCS 470 oder das Ändern von Inhalt und Informationen eines bestehenden Dateisystemobjekts in dem SCDN 100 oder das Löschen eines bestehenden Dateisystemobjekts. Zur Vereinfachung wird die Routine 700 in Bezug auf ein beliebiges der Verteilungszentren 400A bis 400C beschrieben; wobei diese Beschreibung veranschaulichend ist und die Routine 700 nicht unbedingt einschränken soll.
  • Wie dies in der Abbildung aus 7A dargestellt ist, wird eine Anforderung für Content Publishing und Management durch CPC 130 erzeugt bzw. gestellt. Der CPC 130 kann eine Anwendung darstellen, die durch CMS 170 unterstützt wird, oder es kann sich um einen Dateisystem-Client handeln, der durch VFCS 470 oder den VFCS-Cluster 600 unterstützt wird. Nachdem eine CPC-Client-Anforderung in dem Schritt 702 erzeugt worden ist, authentifiziert CMS 170 oder VFCS 470 den Benutzer und prüft den Anforderungstyp (Schritt 710). Wenn die Anforderungsarten eine neue Anordnung bzw. Neupositionierung oder Aktualisierung des Attributwertes des Dateisystemobjekts anzeigen (Attribute wie Name, Daten, Zugriffskontrolllisten, etc.), erzeugt CMS 170 oder VFCS 470 einen FDP-INFO-Befehl (FDP als englische Abkürzung von File Distribution Protocol) mit den relevanten Objektmetadaten und sendet den erzeugten INFO-Befehl an den Verteilungsserver-Cluster 410 in einem Verteilungszentrum (Schritt 730). Wenn der Anforderungstyp das Löschen des Dateisystemobjekts darstellt, erzeugt CMS 170 oder VFCS 470 einen FDE-CLEAN-Befehl (FDP Löschbefehl) mit den relevanten Objektmetadaten und sendet den erzeugten CLEAN-Befehl zur Anweisung an einen Verteilungsserver-Cluster 410 in einem Verteilungszentrum (Schritte 740 und 750).
  • Wenn in dem Schritt 760 die Anforderung lautet, ein neues Dateisystemobjekt zu erzeugen oder Dateiinhalt zu aktualisieren, so bearbeiten VFCS 470 und CMS 170 die Anforderung unterschiedlich. Wenn die Anforderung von einem VFCS 470 bearbeitet wird, fährt die Steuerung mit dem Schritt 770 fort. Wenn die Anforderung von einem CMS 170 bearbeitet wird, fährt die Steuerung mit dem Schritt 786 fort.
  • Wenn es sich in dem Schritt 770 bei dem Dateisystemobjekt um einen Datenträger oder ein Verzeichnis handelt, fährt die Steuerung mit dem Schritt 780 fort. Wenn es sich bei dem Dateisystemobjekt um eine Datei handelt, fährt die Steuerung mit dem Schritt 782 fort. In dem Schritt 780 ruft VFCS 470 einen Analyseprozess auf, um Datenträger- oder Verzeichnismetadaten zu erzeugen, wobei es ein Objekt in dessen Metadateisystemstruktur erzeugt, wobei es ferner die relevanten Objektmetadaten erzeugt. In dem Schritt 782 (wobei es sich bei dem Dateisystemobjekt um eine Datei handelt) wird ein "Chunking" Prozess eingesetzt, um die Datei zu zerlegen und eine Blockindexanordnung als Teil der Metadaten zu erzeugen. Wenn das Dateisystemobjekt neu ist, weist VFCS 470 eine neue eindeutige Objekt-ID der Datei zu, wobei ansonsten die bestehende bzw. vorhandene ID für die Datei verwendet wird. Nach dem Schritte 780 oder 782 fährt die Steuerung mit dem Schritt 784 fort.
  • Nach der Erzeugung oder Aktualisierung der Dateisystemobjekte und deren Metadaten in dem lokalen Speicher gibt VFCS 470 in dem Schritt 784 einen Befehl FDP DIST an den Verteilungsserver-Cluster 410 aus, um die Replikation der Veränderungen gemäß einer Reihe von Verteilungsregeln einzuleiten.
  • In dem Schritten 786 bis 788 wird die Anforderung durch CMS 170 behandelt bzw. bearbeitet. Wenn in dem Schritt 786 das Dateisystemobjekt einen Datenträger, ein Verzeichnis oder eine Datei darstellt, wendet CMS 170 einen Analyseprozess an, um die erforderlichen Objektmetadaten zu erzeugen (Datenträger, Verzeichnis und/oder Dateimetadaten) und gibt einen Befehl FDP PUT aus, um das Objekt in einen Verteilungsserver-Cluster 410 hochzuladen. Wenn das Dateisystemobjekt ein Dateiobjekt darstellt, wird in dem Schritt 786 ferner ein "Chunking" Prozess angewandt, um die Datei zu zerlegen und um Dateimetadaten zu erzeugen. In einem Ausführungsbeispiel wird dieser Chunking Prozess in CMS 170 und teilweise in dem Verteilungsserver-Cluster 410 ausgeführt. Nach dem Empfang eines Befehls FDP PUT speichert der Verteilungsserver-Cluster 410 die Objektmetadaten und das Dateisystemobjekt in dem lokalen Speicher (Schritt 787). Der Verteilungsserver-Cluster 410 erstellt ferner eine Metadateisystemstruktur, wenn das Dateisystemobjekt einen Datenträger oder ein Verzeichnis darstellt und erstellt eine Blockindexanordnung bzw. Block Index Array für ein Dateiobjekt als zusätzlichen Teil der Dateimetadaten (Schritt 787). CMS 170 folgt mit der Ausgabe eines Befehls FDP DIST an den Verteilungsserver-Cluster 410, um die Verteilung des Dateisystemobjekts gemäß einer Reihe von Verteilungsregeln einzuleiten (Schritt 788). Nach dem Schritt 784 oder dem Schritt 788 fährt die Steuerung mit dem Schritt 790 aus der Abbildung aus 7B fort.
  • Wenn, wie dies in der Abbildung aus 7B dargestellt ist, der Verteilungsserver-Cluster 410 die FDP-Befehle INFO, CLEAN oder DIST empfängt, so startet er einen Multicast-Signalgebungsprozess unter allen Verteilungsserver-Clustern in dem Netzwerk 100 (Schritte 790791). Zur Unterstützung der Beschreibung aus der Abbildung aus 7B ist der Verteilungsserver-Cluster, der die Schritte 790 und 791 ausführt, auch mit "DSx" bezeichnet. Ein benachbarter oder anderer Verteilungsserver-Cluster ist in der Abbildung aus 7B mit "DSy" bezeichnet.
  • In einem Ausführungsbeispiel erfolgt das Signal-Multicasting nur innerhalb einer qualifizierten Gruppe von Verteilungsserver-Clustern auf der Basis von Verteilungsregeln und/oder -kriterien, die nachstehend im Text näher beschrieben werden. Die Multicast-Signalisierung bzw. Signalgebung für den Befehl INFO und für den Befehl CLEAN bleibt unverändert; das Multicast-Signal für einen Befehl DIST ist ein Replikatbefehl REPL. Indem Schritt 791 sendet der Verteilungsserver-Cluster DSx (bezeichnet als signalisierender Verteilungsserver-Cluster) das Signal an alle seine Nachbarn, welche mit den Verteilungskriterien/-regeln übereinstimmen, mit Ausnahme des signalisierenden DSx. Der Verteilungsserver-Cluster DSx kann das Signal beenden, wenn kein benachbarter Verteilungszentrum-Cluster den Verteilungskriterien/-regeln entspricht.
  • Es wird folgendes Beispiel angeführt. Wenn der Verteilungsserver-Cluster DSx (oder einfach A) einem benachbarten Verteilungsserver-Cluster DSy (oder einfach B) signalisiert, und wenn B temporär nicht verfügbar ist, wird das Signal für B bei A gespeichert, während A mit der Signalisierung aller benachbarten Verteilungsserver-Clients von B fortfuhr. Wenn B wieder verfügbar wird, nimmt A das Signal an B wieder auf. Nähere Einzelheiten zu der FDP-Signalisierung werden weiter unten im Text beschrieben.
  • In den Schritten 792798 empfängt DSy das Signal und behandelt das Signal entsprechend. Wenn es sich bei dem Signal um den Befehl INFO handelt (Schritt 793), so validiert DSy die enisprechenden Zeitstempel (Erzeugungszeitstempel des Objekts und Aktualisierungszeitstempel) und verändert die Objektmetadaten und/oder die Metadateisystemstruktur entsprechend (Schritt 794). Die Metadateisystemstruktur wird aktualisiert, wenn ein Objekt in einem anderen Verzeichnis neu angeordnet wird. Wenn es sich bei dem Signal um den Befehl CLEAN handelt (Schritt 796), so entfernt DSy die Daten, Objektmetadaten und Metadateisystemstruktur, die dem Objekt zugeordnet sind (Schritt 797). Wenn es sich bei dem Objekt um einen Datenträger oder ein Verzeichnis handelt, so werden alle eingebetteten Unterverzeichnisse und Dateien entfernt. Wenn es sich bei dem Signal um einen Befehl REPL handelt (Schritt 798), so gibt DSy einen Befehl FDP GET an den bzw. die am nächsten liegenden Knoten aus, um die Objektmetadaten und bestimmte Datenblöcke herunterzuladen, wenn es sich bei dem Objekt um eine Datei handelt (Schritt 799). DSy erzeugt einen Verzeichnisknoten in der Metadateisystemstruktur, wenn der Befehl REPL bestimmt ist für einen neuen Datenträger oder ein Verzeichnis (Schritt 799). DSy speichert dann die Objektmetadaten in dem entsprechenden Verzeichnis in der Metadateisystemstruktur (Schritt 799). Wenn das Ziel von REPL ein Dateiobjekt ist und die Anzahl der herunterzuladenden Datenblocke konfiguriert werden kann oder auf einer Kostenfunktion basiert. DSy erzeugt ferner einen. Blockindexanordnung als Teil der Dateimetadaten (Schritt 799). In jedem der Schritte 794, 797 und 799 fährt der jeweilige Verteilungsserver-Cluser DSy mit dem Multicasting fort, indem er zu einem signalisierenden Verteilungsserver-Cluster wird (z. B. wird DSx auf DSy gesetzt). Die Steuerung kehrt danach zu dem Schritt 791 zurück. Auf diese Weise fahren die an dem Multicasting beteiligten Verteilungsserver-Cluster mit dem Multicasting des Signals fort, bis alle abschließenden Knoten in dem erreicht werden, Schritt 791, und Metadaten werden integriert.
  • Die Abbildung aus 7C veranschaulicht Prozesse in CMS 170, VFCS 470 und dem Verteilungsserver-Cluster 410 (z. B. DSx oder DSy), wobei die Dienstgüterichtlinien abgerufen (Schritt 704) und angewandt (Schritt 706) werden können, während Dateisystemobjekte gemäß den konfigurierten Parametern verteilt und gespeichert werden. Zum Beispiel kann eine Richtlinie so konfiguriert werden, dass sie eine bestimmte Qualitätsklasse der Behandlung (Service) für das Speichern und die Verteilung einer MPEG-Datei garantiert. Eine andere Richtlinie wiederum kann so konfiguriert werden, dass sie eine Servicequalität für eine bestimmte Benutzergruppe garantiert. CMS 170, VFCS 470 und der Verteilungsserver-Cluster 410 können Netzwerk- oder Speicherressourcen von Switches, Routern oder Server in dem Netzwerk 100 abrufen. Die Schritte 704 und 706 können als Teil eines oder mehrerer der Schritte 784, 730, 750, 788 und 791 ausgeführt werden.
  • 2. Zerlegung großer Dateien-Chunking Prozess
  • a. Zerlegung linearer und nicht linearer Dateien
  • Die vorliegende Erfindung kann in Verbindung mit jeder Art von Datei verwendet werden. Eine Datei kann digitale Daten in jedem Dateiformat aufweisen. Derartige digitale Daten können jede Art von Daten darstellen, insbesondere Audio-Daten, Video-Daten, Grafikdaten, Textdaten, Steuerinformationen, Indexinformationen und Kombinationen dieser. Wenn eine Datei über CMS 170 oder VFCS 470 in das SCDN 100 eingeführt wird, wird die Datei in einer Reihe von Schritten in Blöcke aufgeteilt, und der Prozess kann davon abhängig sein, ob es sich um eine lineare Datei oder um eine nicht lineare Datei handelt. Wenn gemäß einem Aspekt der vorliegenden Erfindung zum Beispiel eine Filmdatei verwendet wird, so ist die Datei linear, wenn die ersten 10% des Films sich ungefähr innerhalb den ersten 10% der Datei befinden, wobei sich die nächsten 10% innerhalb der nächsten 10% der Datei befinden, usw. Im Gegensatz dazu gilt eine Filmdatei dann als eine nicht lineare Datei, wenn sich die ersten 10% des Films an anderer Stelle als ungefähr innerhalb den ersten 10% der Datei befinden.
  • Beispielhafte lineare und nicht lineare Dateistrukturen sind in der Abbildung aus 8 veranschaulicht. Das Format 800 kann zum Beispiel das mpeg-Format darstellen, das linear ist, da es in der Datei in einer einzigen Spur bzw. einem Track multiplexierte Audio-/Videodaten aufweist, beginnend am Anfang. Hiermit wird festgestellt, dass jeder Unterbereich in den verschiedenen Formaten eine Spur bzw. einen Track darstellt. Die Formate 810830 weisen mehrere Tracks auf. Wie dies abgebildet ist, ist das Format 810 nicht linear, da es Header-Informationen in der ersten Spur der Datei aufweist, gefolgt von Metadaten in der nächsten Spur, von Videoinformationen in der dritten Spur, von Metadaten in der vierten Spur, von einem ersten Audiokanal in der fünften Spur, von einem zweiten Audiokanal in der sechsten Spur und von gewissen Steuerungsinformationen am Ende. Der Anfang eines für das Format 810 formatierten Films würde sich somit nicht am Anfang der Datei befinden. Die Formate 820 und 830 sind Darstellungen anderer möglicher nicht linearer Mediendatenformate. Zum Beispiel kann das Format 820 Daten aufweisen, die so formatiert sind, dass die Datei Header-Informationen am Anfang aufweist, wobei darauf eine bestimmte 56K Codierung für Formate wie z. B. MPEG folgt, gefolgt von 128 K Codierungsinformationen. Andere Formate 830 können Header-Informationen, gefolgt von Indexinformationen, gefolgt von Video- und schließlich von Audiodaten aufweisen. All diese und andere nicht lineare Dateien müssen zuerst unterteilt werden und auf lineare Weise neu angeordnet werden für eine Kompatibilität mit dem nachstehend beschriebenen Replikationsalgorithmus.
  • Die Abbildung aus 9 zeigt den Prozess der Zerlegung bzw. Aufteilung einer Datei in Blockdateien für die Speicherung. Dieser Prozess wird als "Chunking" bezeichnet und kann auf regelmäßige oder unregelmäßige Art und Weise erfolgen, wie dies nachstehend in Bezug auf die Abbildungen der 10A–B beschrieben ist.
  • Beim unregelmäßigen Chunking wird Medieninhalt in zwei Phasen in Chunks bzw. Stücke aufgeteilt. In der ersten Phase wird ein nicht linearer Medienanteil in mehrere lineare physikalische Spurdateien aufgeteilt. Mehrere Spurdateien werden durch Multiplexing zu einer Mediendatei zusammengesetzt. In der zweiten Phase wird eine lineare Spurdatei in Blockdateien aufgeteilt. Wie dies in der Abbildung aus 10A dargestellt ist, wird beim unregelmäßigen Chunking nicht mehr als eine Blockdatei vollständig populiert, da die große Nutzlastdatei in Spurdateien aufgeteilt wird und die Spurdateien danach weiter in Blockdateien aufgeteilt werden. Wenn somit eine Spurdatei sich nicht vollständig in Vielfache der ausgewählten Blockgröße aufteilen lässt, können Dateien mit mehreren Spuren einen oder mehrere Blöcke aufweisen, die nicht vollständig belegt sind.
  • Beim regelmäßigen Chunking wird der Demultiplexierungsprozess 910 eingesetzt, um die physischen Spurleitungen zu bestimmen, ohne die Datei tatsächlich in Spuren aufzuteilen. Der Inhalt wird danach in gleiche Stück- bzw. Chunk-Größen aufgeteilt, mit Ausnahme des letzten Blocks. Der Blocking Prozess überprüft bzw. untersucht danach jeden Block: der Block, der mindestens eine Spurleitung aufweist, wird zum Anfang einer logischen Spur- bzw. Track-Datei, und alle auf diesen Block folgenden Blöcke bilden die logische Spurdatei. Wie dies in der Abbildung aus 10B dargestellt ist, kann die letzte Blockdatei teilweise belegt werden durch das regelmäßige Chunking-Verfahren, da die große Nutzlastdatei nicht zuerst in Spurdateien aufgeteilt wird, sondern die Spurleitungen bestimmt und aus anderen Gründen eingesetzt werden, wie etwa zum Lokalisieren des Anfangs einer Spur zu Wiedergabezwecken. Danach wird die ganze Datei in Blockdateien aufgeteilt, wobei der letzte Block das Potenzial aufweist, nicht voll besetzt bzw. populiert zu sein.
  • Zum Beispiel unter Verwendung der in der Abbildung aus 10A zur Veranschaulichung dargestellten Daten weist die große Nutzlastdatei 1000 den Header in der ersten Spur auf, Video in der zweiten Spur, den ersten Audiokanal in der dritten Spur, den zweiten Audiokanal in der vierten Spur und schließlich Steuerungsinformationen in der fünften Spur. Der Content Management Server 170 (oder CPC 130) unterteilt die große Nutzlastdatei 1000 in fünf lineare Spurdateien 1010, so dass eine Datei den Header aufweist, eine zweite Datei Videodaten, eine dritte Datei den ersten Audiokanal und so weiter.
  • In erneutem Bezug auf die Abbildung aus 9 werden die linearen Spurdateien 920 oder die lineare große Nutzlastdatei 950 (die ebenfalls eine lineare Spurdatei darstellt) durch den CMS über das Netzwerk zu einem DS übertragen, mit dem er verbunden ist. Alternativ kann der ganze Chunking-Prozess in ein VFCS integriert werden, wobei das VFCS die Daten und die Metadaten in dem Speicher speichern, ohne durch einen DS zu verlaufen. Die Dateien können gemäß einem File Distribution Protocol (FDP) von dem CMS zu DS übertragen werden, wie dies nachstehend im Text beschrieben wird. Die Dateien von dem CMS werden in einen DS-basierten Blockbildungsprozess 930 eingegeben, der Blockdateien 940 erzeugt. Die Blockdateien 940 werden in der Folge in dem lokalen Speicher des DS gespeichert. Nach der Verarbeitung kann der Inhalt durch andere Verteilungsserver in dem Netzwerk heruntergeladen werden. Im Allgemeinen muss keine direkte Beziehung gegeben sein zwischen der Größe der über das Netzwerk übertragenen Dateien und den in dem lokalen Speichersystem des DS gespeicherten Blockdateien.
  • Der Blockbildungsprozess 930 unterteilt Spurdateien in kleinere, verwaltbare Einheiten, wie dies in dem Block 1020 aus der Abbildung aus 10A dargestellt ist. Der Blockbildungsprozess erzeugt die Mehrzahl von Blockdateien H, V1-4, A1,1-1,2, A2,1-2,2 und C (gemeinsam in der Abbildung aus 10A als 1020 bezeichnet). Blockdateien können Datenüberschneidungen oder Versätze (z. B. Verschiebung) aufweisen. Zum Beispiel kann die Blockdatei V1 einen bestimmten Teil der Header-Spur aufweisen und so weiter. In den Blockdateien ist der Anfang jeder Spur in der ersten für diese Spur erzeugten Blockdatei enthalten, zum Beispiel ist der Anfang von Audiokanal Ch1 in A1,1 enthalten und wobei der Anfang von Audiokanal CH2 in A2,1 enthalten ist, etc. In anderen Ausführungsbeispielen kann die Datei (d. h. nicht linear) direkt in Blockdateien aufgeteilt werden, ohne zuerst den Demultiplexierungsprozess zu durchlaufen (z. B. Block 910), so dass jede Blockdatei sich überlappende Spuren aufweisen kann. Der Blockbildungsprozess hat Metadaten erzeugt, die dazu verwendet werden die Datei zu einem späteren Zeitpunkt wieder zusammenzusetzen. Das Aufteilen der Datei in Blöcke macht es möglich, die Blockdateien in verschiedene Speichervorrichtungen zu verteilen und mehr Speichervorrichtungen hinzuzufügen, wenn dies erforderlich wird, ohne dabei die Systemleistung zu beeinträchtigen. Die Skalierbarkeit ermöglicht es unter anderem der vorliegenden Erfindung, einen effektiven Ansatz für die Globalisierung des Speicherns darzustellen. Zum Beispiel können mehr Speichervorrichtungen einem Verteilungszentrum 400A–C hinzugefügt werden, ohne dass Dateien verschoben oder andere Knoten neu konfiguriert werden müssen. Ferner können verschiedene Blöcke an verschiedenen Knoten des SCDN angeordnet werden. Die kleineren Blockdateien ermöglichen es, mehrere Anwendungsserver (z. B. Streaming Server) gleichzeitig zu unterstützen, mit erhöhter Speicherzugriffsbandbreite. Ferner können mehrere Blockdateien einer Datei parallel auf nicht zusammenhängende Art und Weise von verschiedenen Knoten in dem Netzwerk heruntergeladen werden. Des weiteren ist das schnelle Vorspielen und das schnelle Zurückspielen über einen Streaming Server durch einen Benutzer ebenfalls möglich, ohne dass die ganze Datei zuerst auf den Knoten heruntergeladen wird, der den Streaming Server unterstützt.
  • b. Leistungsaspekte in Bezug auf die Blockgröße und die Dateiverteilung
  • Das Aufteilen von Dateien in Blockdateien ist mit bestimmten Vorteilen verbunden. Zu den Vorteilen des Aufteilens von Dateien in Blockdateien zählen: (a) das parallele Herunterladen bzw. Downloaden einer einzelnen Datei durch mehrere lokale Verteilungsserver zu ermöglichen, um die Download-Performance zu verbessern; (b) das Downloaden einer Datei von mehreren Positionen bzw. Standorten zu ermöglichen; (c) das Verteilen eines Speicherzugriffsladens zu ermöglichen durch Speichern der Blöcke der gleichen Datei in mehreren Disks bzw. Plattenspeichern (dadurch wird die E/A-Bandbreite einer einzelnen Datei erhöht); (d) das Ermöglichen von Effekten des "schnellen Vorspulens" und "Zurückspulens", ohne alle Daten zwischen den Punkten herunterzuladen, wo das "schnelle Vorspulen" oder "Zurückspulen" beginnt und dem Zielpunkt. Das schnelle Vorspulen kann erreicht werden, indem die Download-Köpfe nach vorne bewegt werden – zu Blöcken, die näher an dem Ende der Datei liegen. Dadurch werden "Löcher" in dem mittleren Teil der Datei erzeugt, wo das Downloaden unvollständig ist. Das "Zurückspielen" bzw. "Zurückspulen" durch ein derartiges "Loch" bringt es mit sich, dass sich die Download-"Köpfe" über das "Loch" hinaus bewegen und die fehlenden Blöcke herunterladen; und (e) das Verbessern der Skalierbarkeit und den Verzicht auf die Notwendigkeit der Migration im großen Maßstab, wenn Speicherbegrenzungen erreicht werden. Wenn Hunderte von Blöcken in einem einzigen Speicherdatenträger angeordnet sind und der Datenträger voll ist, können zusätzliche Blöcke einer einzelnen Datei in einem neu hinzugefügten Speicherträger gespeichert werden und vollständig funktionstüchtig sein, ohne dass eine umfassende Migration der ganzen Datei auf den neuen Datenträger erforderlich ist.
  • Die Größe der Blöcke beeinflusst die Performance sowohl der Verteilung von Inhalten (Content Distribution) als auch der Zustellung von Inhalten (Content Delivery). Gemäß einem Merkmal von Ausführungsbeispielen der vorliegenden Erfindung werden bei der Bestimmung der Blockgröße mehrere Faktoren berücksichtigt:
    • 1) die Ethernet MTU (Maximum Transmission Unit) Größe;
    • 2) die Größe der physischen Speichereinheiten;
    • 3) die erforderliche Zeit für die Übertragung eines Blocks (steht im Verhältnis zu der Netzwerkbandbreite); und
    • 4) die kürzeste zulässige Dauer, die übersprungen werden kann als Reaktion auf einen Befehl zum schnellen Vorspulen oder Zurückspulen während der Zustellung von Inhalten (dies wird als minimales Flash-Intervall bezeichnet).
  • Die Erfinder haben erkannt, dass verschiedene Aufgaben bzw. Ziele bei der Bestimmung der Blockgröße berücksichtigt werden müssen. Eine Aufgabe ist es, die Raumnutzung in einer MTU zu maximieren, was die Verteilung von Inhalten effizienter gestalten würde. Eine weitere Aufgabe ist es, eine Überlastung an den Verteilungsknoten so gering wie möglich zu halten. Eine weitere wichtige Aufgabe zur Bestimmung der Blockgröße ist es, eine Speicherfragmentierung zu verhindern, da die Fragmentierung die Performance des Dateisystems verschlechtert, wiederum im Einklang mit dem Erreichen der anderen Ziele bzw. der Umsetzung der weiteren Aufgaben.
  • Blockgrößen, die zu groß oder zu klein sind, können die Performance bzw. die Leistung beeinflussen. Zum Beispiel ist dies in Bezug auf den Befehl zum schnellen Vorspulen bzw. Vorspielen möglich. Wenn die Blockgröße zu groß ist, kann die Serverantwort auf Anforderungen des schnellen Vorspulens während einem Download schwergängig sein, da der Server das Herunterladen der jeweiligen Blockdatei abschließen muss, bevor er derartige Anforderungen verarbeiten kann. Wenn die Blockgröße hingegen zu klein ist, ist das schnelle Vorspulen zu dem Ende des Blocks sehr schnell. Wenn die Blockgröße sich innerhalb des Mindest-Flash-Intervalls befindet, kann ein anderer Verteilungsserver auf Anforderungen zum schnellen Vorspulen ansprechen bzw. antworten, indem der Block abgerufen wird, der den Zielinhalt aufweist.
  • Auf der Basis der oben genannten Kriterien beträgt unter bedachten Annahmen zu den Betriebsparametern des physischen Netzwerks und dem Netzwerk an sic, welches das SCDN 100 unterstützt, und entsprechender Annahmen in Bezug auf die Größe des Flash-Intervalls sowie zur Minimierung der Netzwerküberlastung, kann die Blockgröße gemäß einem Aspekt der vorliegenden Erfindung 256 kBytes betragen. Für den Durchschnittsfachmann auf dem Gebiet ist es in Anbetracht der vorliegenden Beschreibung ersichtlich, dass sich die Blockgröße ändern kann, wenn ein oder mehrere Netzwerkparameter oder sonstige Annahmen sich ändern, und dass die optimale Blockgröße abhängig sein kann von der jeweiligen Implementierung und Anwendung. Im Allgemeinen können auch andere Blockgrößen (größer und kleiner als 256 kBytes) verwendet werden.
  • Darüber hinaus muss die Blockgröße in dem Speicher eines übertragenden oder Zustellnetzwerks nicht konstant sein. Jeder DS in dem Netzwerk kann eigene Einstellungen aufeisen abhängig von der jeweiligen Beschaffenheit der Speichervorrichtungen und dem jeweiligen Netzwerkzustand. Ferner kann jede Datei eine unterschiedliche Blockgröße aufweisen, abhängig von einer Reihe möglicher Parameter, wie zum Beispiel der Art der Datei (z. B. ob es sich um eine Textdatei, eine Audiodatei oder eine Videodatei handelt). Diese Blockgrößen können zum Beispiel von Zeit zu Zeit nach Bedarf verändert werden oder durch Messen der Netzwerkparameter und die dynamische Veränderung der Blockgröße.
  • Die Anzahl der an einen qualifizierten Knoten verteilten Blöcke während der anfänglichen Dateiverteilungsphase wird durch eine Reihe von Faktoren bestimmt, einschließlich der Entfernung von dem Ursprungs-DS (d. h. wo die Datei hochgeladen wurde) zu dem Knoten, der Bandbreite des vorderen und des hinteren Endes des Knotens (den aktuellen Netzwerkbedingungen), den prädizierten Netzwerkbedingungen, den Nutzungsinformationen aus der Vergangenheit zu dem Knoten, einem "Popularitätsindex", der durch den Inhalteanbieter festgelegt wird, sowie den Speicher, der dem Inhalteanbieter an diesem Knoten zur Verfügung steht. Ein Content Owner bzw. Inhalteeigentümer kann die prognostizierte Popularität eines Films während dessen ersten Distribution angeben. Die Popularität dient als Referenz, die Verteilungsserver dabei unterstützt zu bestimmen, wie viele Blöcke einer Datei zuerst bzw. anfänglich herunterzuladen sind. Im Zeitverlauf passt ein Speichermanager (Storage Manager), der in einer Steuereinheit 450 enthalten ist, auf der Basis der gesammelten Nutzungsinformationen die tatsächliche lokalisierte Popularität einer Datei, um die entsprechende Pruning-Fähigkeit zu bestimmen. Die Popularität einer Datei kann direkt proportional sein zu der Anzahl der Blockdateien, welche sie aufweist, oder die minimale Speichergröße kann konfiguriert werden.
  • Inhalteeigentümer können einen bestimmten Speicherplatz an jedem Knoten reservieren. An jedem Knoten zeichnen die Verteilungsserver die ankommende Übertragungsrate für jeden Inhalteeigentümer bzw. Content Owner auf. Ein Speichermanager legt einen Sicherheitsspeichergrenzwert für jeden Content Owner auf der Basis des Netzwerkzustands und der ankommenden Übertragungsrate fest. Der Speichermanager löscht regelmäßig einige der Blöcke der Dateien, die in der Zukunft mit der geringsten Wahrscheinlichkeit verwendet werden. Ein Parameter der Pruning-Rate kann festgelegt werden, um es zu verhindern, dass die Speichernutzung einen Sicherheitsschwellenwert überschreitet. Wenn die Pruning-Rate die vordefinierte Schwelle erreicht, wahrscheinlich aufgrund von übermäßigem Inhalt, so wird die Content Management-Anwendung an der Basisstation des Content Providers davon benachrichtigt. Wenn dies erfolgt, kann der Content Owner keine Inhalte zu der überlasteten Station übertragen, ohne den reservierten Speicher zu vergrößern bzw. zu erweitern. Es gibt zahlreiche Optionen zum Speichern von Blockdateien in dem Netzwerk. Mehrere der Optionen umfassen eine Kostenfunktion, wobei versucht wird, die Kosten für den Abruf so gering wie möglich zu halten, wie zum Beispiel durch Replikation zusätzlicher Blockdateien mit stark nachgefragtem Inhalt und weniger Blockdateien mit kaum nachgefragtem Inhalt, wobei Blockdateien an Speicherplätzen nahe der Nachfrage anstatt weit davon entfernt gespeichert werden, wobei Blockdateien dort gespeichert werden, wo auf sie durch Hochgeschwindigkeits-Übermittlungsstrecken anstatt durch langsame Übermittlungsstrecken zugegriffen wird, und wobei auch andere ähnliche Techniken möglich sind. Eine dynamische Kostenfunktionsoption ist eine Option, die dynamisch auf das Netzwerk zugreift und Blöcke gemäß einer neu berechneten Kostenfunktion lokalisiert bzw. anordnet und neu anordnet. Zusätzliche Optionen können auf durch einen Benutzer definierten Kriterien oder auf durch Richtlinien geregelten Kriterien basieren, wobei die Bedienungspersonen an jedem Knoten die Anzahl der Blöcke je Datei definieren, oder durch Inhalteeigentümer, welche die Anzahl der Blöcke definieren, die an jeden Knoten verteilt werden sollen. Eine Kombination aus diesen Optionen ist ebenfalls möglich.
  • Es gibt zahlreiche unterschiedliche Möglichkeiten, wie eine Datei an das SCDN 100 verteilt werden kann. Dazu zählen insbesondere die folgenden Möglichkeiten:
    • 1) hierarchisch – wobei ein näher an dem Quellknoten bzw. Ursprungsknoten gelegener Knoten mehr Inhalt speichert als ein weiter von dem Ursprungsknoten entfernter Knoten in dem Steuerungsweg;
    • 2) benutzerdefiniert oder auf der Basis von Richtlinien – wobei Operatoren bzw. Bedienungspersonen an jedem Knoten die Anzahl der Blöcke je Datei definieren, die an dem Knoten gespeichert werden, oder Inhalteeigentümer definieren die Anzahl der Blöcke, die an jeden Knoten zu verteilen sind für jede ihrer Dateien;
    • 3) dynamisch – abhängig von der Benutzernachfrage und Ressourcen, während die Ressourcen die Netzwerkbandbreitenverfügbarkeit und die Speicherverfügbarkeit aufweisen; und
    • 4) eine Kombination der vorstehenden Möglichkeiten bzw. Methoden.
  • 3. Verteilung von Dateisystemobjekten
  • a. Verteilung von Dateisystemobjekten durch Inhalteeigentümer
  • Um bei dieser spezifischen Implementierung ein Dateisystemobjekt zu verteilen, legt ein Inhalteeigentümer bzw. Content Owner spezielle Kriterien für diese Datei fest. Die Verteilungskriterien können konfiguriert oder durch den Befehl FDP DIST eingeführt werden, wie dies vorstehend im Text in Bezug auf die Abbildungen der 7A–B beschrieben worden ist. Wenn ein Dateisystemobjekt über einen CMS in das SCDN eingeführt wird, kann der Inhalteeigentümer Verteilungsparameter festlegen, und der CMS-Server gibt FDP DIST für DS aus, um Objektmetadaten und das Dateisystemobjekt an andere Knoten in dem SCDN zu verteilen. Wenn ein Dateisystemobjekt über einen VFCS in das SCDN eingeführt wird, verwendet der VFCS vorkonfigurierte Verteilungsregeln für die Ausgabe von FDP DIST an einen DS, um die Objektmetadaten und das Dateisystemobjekt an das SCDN zu verteilen. Wenn es sich bei dem Dateisystemobjekt um eine Datei handelt, kann ein Teil bzw. eine Teilmenge der Datei an das SCDN verteilt werden, um zum Beispiel den Inhalt zum Rand des Netzwerks zu drängen. Die Verteilung erfolgt gemäß den spezifischen Verteilungskriterien, die von den Inhalteeigentümern festgelegt worden sind, und wobei das File Distribution Protocol (FDP) verwendet werden kann, das nachsehend im Text beschrieben wird. Diese Verteilungskriterien können Regionen (z. B. Europa), spezifische Knoten und andere Informationen spezifizieren, wie dies von den Inhalteeigentümern gewünscht wird, um die Verteilung des Inhalts zu steuern. Die Verteilungskriterien können zum Beispiel Informationen aufweisen, die in der Attributgruppe eines Knotens oder in einer aufgerollten Attributgruppe zu finden sind. Hiermit wird festgestellt, dass die Begriffe bzw. Abkürzungen "DS" und "DSC" hierin austauschbar verwendet werden und einen Verteilungsserver-Cluster (wie zum Beispiel DSC 410) bezeichnen, der einen oder mehrere Verteilungsserver aufweist. Ferner kann es sich bei einem Verteilungsserver um jede Art von Verarbeitungs- oder Rechenvorrichtung handeln, welche die hierin beschriebene Verteilungsfunktionalität ausführen kann.
  • b. File Distribution Protocol (FDP)
  • Das FDP Protokoll definiert die Primitive des Dateimanagements, die erforderlich sind, um Dateisystemobjekte und Objektmetadaten zu übertragen, zu speichern und zu manipulieren, die in dem Netzwerk gespeichert sind. Die Primitive weisen Befehle auf, welche Dateien hochladen, verteilen, zustellen, modifizieren und löschen. Die FDP-Befehle führen dazu, dass ein oder mehrere Pakete zwischen entsprechenden Servern in dem Netzwerk übertragen werden. Für den Durchschnittsfachmann auf dem Gebiet ist es offensichtlich, dass die hierin beschriebenen Befehlsbezeichnungen und Protokollimplementierungen zur vereinfachen Darstellung verwendet werden, und wobei andere Befehle oder Protokolle hinzugefügt, herausgenommen oder ersetzt werden können, sofern sie zu einer effizienten und zuverlässigen Übertragung von Dateien in dem Netzwerk führen.
  • In einem Ausführungsbeispiel der vorliegenden Erfindung weist das FDP-Protokoll den folgenden FDP-Befehl auf: Put (Senden), Distribute (Verteilen), Replicate (Replizieren), Get (Holen), Prepare (Vorbereiten), Search (Suchen), Remove (Entfernen), Clean (Löschen), Info (Info), Learn (Lernen), Fetch (Erfassen), Fetch (Erfassen), Fetch Info (Info erfassen) und Stop (Stopp). Jeder FDP-Befehl und alle Arten von Paketen, die dem Befehl zugeordnet sind, werden nachstehend im Text beschrieben.
  • "Put" (Senden): Ein Inhalteeigentümer verwendet Content Management-Anwendungen, die auf einem Content Provider Client-System ausgeführt werden, um ein Dateisystemobjekt (Datenträger, Verzeichnisse und Dateien) und Objektmetadaten (Daten in Bezug zu der Verwaltung der Dateisystemobjekte, die in dem Netzwerk gespeichert, übertragen und manipuliert werden) in einen Content Management Server (CMS) hochzuladen oder zu verändern. Wenn es sich bei dem Dateisystemobjekt um eine Datei handelt, unterteilt der CMS die Datei in lineare Spurdateien und gibt danach einen Befehl "put" an einen DS aus, der letztlich den Inhalt in dem Netzwerk verteilt. In einem Ausführungsbeispiel ist der CMS mit einem DS an einem SCDN-Knoten verbunden. Der CMS sendet einen Befehl "put" an den DS für jede der Spurdateien, um einen Datenträger, ein Verzeichnis oder eine Datei zu erzeugen. In seiner Wirkung ist der Befehl "put" eine Aktion des "Einspeicherns" bzw. der "Eingabe", wobei eine Spur oder ein Datenträger oder ein Verzeichnis von einem CSM in einen DS eingegeben werden. Ein Befehl "put" kann vier Pakete aufweisen, wie zum Beispiel "put", "put_response", "put_data" und "put_ack". Das jeweilige "put"-Paket teilt dem empfangenden DS mit, sich für den Empfang einer Spurdatei bereit zu machen. Das Paket "put_response" ist ein von dem DS ausgegebenes Paket, um dem CMS anzuzeigen, ob der DS die Spurdatei empfangen muss oder nicht, und wenn er es empfangen muss, wo mit der Übertragung begonnen werden muss. Dieses Paket kann in einer Situation nützlich sein, wenn eine Kommunikationssitzung aufgeteilt wird, nachdem ein Teil der Spurdatei übertragen worden ist, und wobei der CMS den restlichen Teil der Datei erneut übertragen muss. Nachdem der DS dem CMS kommuniziert hat, wo die Übertragung einer Spurdatei beginnen soll, kann der CMS ein Paket "put_data" in Verbindung mit der eigentlichen Spurdatei, dem Datenträger oder dem Verzeichnis ausgeben. Der DS kann mit einem Paket "put_ack" antworten, wenn die ganze Spurdatei oder ein anderes Dateisystemobjekt empfangen wird, um die erfolgreiche Übertragung anzuzeigen. Wenn es sich nachdem die Daten empfangen worden sind bei den Daten um eine Spurdatei handelt, teilt der DS die linearen Spurdateien in Blockdateien auf, speichert die Blockdateien im lokalen Speicher und aktualisiert die Dateimetadaten, um die Spur-, Block- und Positionsinformationen zu reflektieren – die Blockindexanordnung.
  • "Distribute" (Verteilen): Nachdem das ganze Dateisystemobjekt und dessen Objektmetadaten in den DS eingegeben oder in den Speicher geschrieben worden sind durch ein VFCS, können der CMS oder ein VFCS Pakete "verteilen", welche den DS anweisen, die Datei an andere Knoten in dem Netzwerk zu verteilen. Zum Beispiel kann der CMS ein Paket "distribute" (Verteilen) je Spurdatei, Datenträger oder Verzeichnis ausgeben, wobei jedes Paket die Verteilungskriterien des Inhalteeigentümers enthält. Die Verteilungskriterien können zum Beispiel spezifizieren, welche Knoten in dem Netzwerk das Dateisystemobjekt aufweisen sollten. Der Befehl "distribute" kann zwei Pakete aufweisen, wie zum Beispiel "distribute" und "distribute_ack". Der DS kann den Empfang des Befehls "distribute" bestätigen, indem ein Paket "distribute_ack" an den CMS oder VFCS ausgegeben wird.
  • "Replicate" (Replizieren): Als Reaktion auf den Befehl "distribute" kann der DS Pakete "replicate" an dessen Nachbarn ausgeben. Jeder Nachbar, der die durch den Content Owner spezifizierten Verteilungskriterien erfüllt, kann einen Befehl (wie zum Beispiel den Befehl "get" für ein Paket (Paket holen), der nachstehend im Text beschrieben wird) an einen oder mehrere DS in dem Verteilungspfad ausgeben, um einen Teil der Datei oder des Datenträgers oder des Verzeichnisses in dessen lokalen Speicher zu ziehen. Das Paket "replicate" beginnt an dem DS, wo die Dateisystemobjekte hochgeladen werden oder wo sich der VFCS befindet, der die Dateisystemobjekte aktualisiert. Das Paket "replicate" fungiert als eine Benachrichtigung an einen DS, dass er unter Umständen bestimmte Blockdateien oder Datenträger oder Verzeichnisinformationen von etwaigen der ausgebenden DS in dessen lokalen Speicher ziehen (d. h. replizieren) muss. Der empfangende DS kann die Benachrichtigung bestätigen, indem ein Paket "replicate_ack" ausgegeben wird, und wobei danach die Verantwortlichkeit für das Ziehen bzw. Entnehmen der Blockdateien aus dem ausgehenden DS übernommen wird, wenn diese bereit sind. Ein DS benachrichtigt ferner dessen benachbarte Knoten, um zu bestimmen, ob sie das Dateisystemobjekt entnehmen sollten, indem Pakete "replicate" an diese ausgegeben werden. Ein DS kann eine Replikationsanforderung an dessen Abkömmlingsknoten ausgeben, wenn das aufgerollte Attribut mit den Inhaltsverteilungskriterien übereinstimmt.
  • "Get" (Holen): Ein DS, der ein Dateisystemobjekt von einem anderen DS entnehmen muss, kann zum Beispiel einen Befehl "get" (holen) ausgeben. Der Befehl "get" kann vier Arten von Paketen aufweisen: "get", "get_response", "get_chunk" und "get_ack". Zum Beispiel kann das Paket "get" eingesetzt werden, um einen Pull einzuleiten, und das Paket "get_response" kann eingesetzt werden, um den Status der Station zu melden und Objektmetadaten nach Bedarf übertragen. Das Paket "get_chunk" kann eingesetzt werden, um Dateidaten oder Datenträger- oder Verzeichnisinformationen zu übertragen, und das Paket "get_ack" kann eingesetzt werden, um das Ende der "get" Sequenz zu bestätigen und den Status zu melden. Beim Herunterladen einer Datei kann ein DS eine Entscheidung hinsichtlich der Größe der zu entnehmenden (pull) Datei treffen auf der Basis von: (1) dessen Speicherverfügbarkeit; (2) der Position der Station in der Netzwerklandschaft; (3) der Popularität des Inhalts; (4) der Eigenschaft hinsichtlich der Beschneidbarkeit oder der fehlenden Beschneidbarkeit der Datei; und (5) der zulässigen Bandbreite. Ein DS kann "get" Befehlsfolgen als Reaktion auf eine "Replikationsanforderung" (replicate) und eine Anforderung "search_reply" ausgeben.
  • "Prepare" (Vorbereiten): Ein Befehl "prepare" kann zwei Pakete aufweisen, wie zum Beispiel: "prepare" und "prepare_ack". Wenn Benutzer oder Anwendungsserver über ein VFCS auf ein Dateiobjekt zugreifen, kann das VFCS ein Paket "prepare" an einen DS ausgeben, um die nicht residenten Abschnitte einer Datei für den Benutzer oder den Anwendungsserver zu ziehen bzw. zu entnehmen. Der DS kann das Paket "prepare_ack" verwenden, um zu bestätigen, dass er das Paket "prepare" empfangen hat und "prepare" so bald wie möglich ausführen wird.
  • "Search" (Suchen): Wenn der DS die Anforderung "prepare" verarbeiten kann, kann er einen Befehl "search" (Suchen) ausgeben, um die fehlenden Abschnitte bzw. Teile einer Datei zu suchen. Ein Befehl "search" kann drei Pakete aufweisen, wie zum Beispiel: "search", "search_ack" und "search_reply". Ein DS, der einen Befehl "prepare" bearbeitet, gibt ein Paket "search" aus, um eine Multicast-Suche unter dessen Nachbarn nach nicht residenten Abschnitten der Datei einzuleiten. Jeder Nachbar kann ein Paket "search_ack" ausgeben, das anzeigt, dass er eine Anforderung "search" empfangen hat. Das Paket "search_ack" ist keine Bestätigung, dass der DS Abschnitte der angeforderten Datei aufweist. Ein Knoten, der einen Abschnitt der benötigten Datei aufweist, kann ein Paket "search_reply" ausgeben. Das Paket "search_reply" kann die Blockindexanordnung aufweisen, welche den Abschnitt der gesuchten Datei anzeigt, die sich in dem Antwortknoten befindet, den Netzwerkzustand des Knotens und die Belastung des DS-Clusters des Knoten. Ein DS in dem einleitenden DS-Cluster empfängt Pakete "search_reply" und kann die entsprechenden entfernten DS-Knoten auswählen auf der Basis der Informationen in den Paketen "search_reply", um die fehlenden Abschnitte der Datei herunterzuladen. Ein DS in dem einleitenden DS-Cluster kann den Befehl "get" zum Beispiel an einen oder mehr Knoten (d. h. ausgewählte SCDN-Knoten) ausgeben, um den fehlenden Inhalt herunterzuladen.
  • "Remove" (Entfernen): Der Befehl "remove" kann zwei Pakete aufweisen, wie zum Beispiel "remove" und "remove_ack". Die Steuereinheit der Knoten kann einen Befehl "remove" an den DS ausgeben, um bestimmte Blöcke zu entfernen. Der Pruning-Prozess, der später im Text näher beschrieben wird, verwendet den Befehl "remove". Ein Paket "remove" ist eine Benachrichtigung bzw. Mitteilung an einen DS, dass bestimmte Blöcke entfernt werden müssen. Der DS kann in der Folge ein Paket "remove_ack" ausgeben, um zu bestätigen, dass er letztlich die angezeigten Blöcke entfernt, wenn er bereit ist.
  • "Clean" (Löschen): Der Befehl "clean" kann zwei Pakete aufweisen, "clean" und "clean_ack". Der CMS oder ein VFCS kann ein Paket "clean" oder ein ähnliches Paket ausgeben, um einen an dem gleichen Knoten angeordneten DS zu benachrichtigen, dass er ein bestimmtes Dateisystemobjekt entfernen muss. Der DS gibt ein Paket "clean_ack" oder ein ähnliches Paket aus, um zu bestätigen, dass das Dateisystemobjekt letztlich entfernt wird, wenn der DS dazu bereit ist. Dem während dem Befehl "replicate" verwendeten Pfad folgend (verfügbar in den Verteilungskriterien für die Datei), gibt der DS einen Befehl "clean" oder einen äquivalenten Befehl an dessen benachbarte Knoten aus, wobei das Löschen des Dateisystemobjekts angefordert wird sowie dessen verwandten Metadateisystemarchitektur und Objektmetadaten von allen Knoten in dem SCDN.
  • "Info": Der Befehl "info" kann zwei Pakete aufweisen, wie zum Beispiel "info" und "info_ack". Der CMS oder ein VFCS kann ein Paket "info" ausgeben, um Dateisystemobjektmetadaten (Daten in Bezug auf die Verwaltung von Datenträgern, Verzeichnissen und Dateien unter Verwendung des SCDN) an einen DS zu verteilen. Das Paket kann eingesetzt werden, um Attribute bestimmter Datenträger, Verzeichnisse oder Dateien hinzuzufügen, zu löschen, neu zu positionieren und zu modifizieren. Wenn ein DS ein Paket "info" empfängt, modifiziert er die Metadateisystemstruktur und die verwandten Objektmetadaten und verteilt danach das Paket "info" weiter an dessen Nachbarn. Ein DS gibt ein Paket "info_ack" an den Anforderer aus (CMS, VFCS oder DS) und gibt danach den Befehl "info" an alle seine Nachbarn mit Ausnahme des Anforderers aus. Ein Paket "info", das Datenträgerinformationen enthält, wird über das ganze SCDN ausgebreitet. Ein Paket "info", das Dateimetadaten enthält, wird auf der Basis der Verteilungskriterien für diese Datei ausgebreitet. Wenn ein CMS oder ein VFCS ein Paket "info" von Objektmetadaten in Verbindung mit den Verteilungskriterien des Dateisystemobjekts an einen DS sendet, so modifiziert der empfangende DS dessen Metadateisystemstruktur nach Bedarf, modifiziert dessen lokale Metadatendatei, welche die Objektmetadaten aufweist, gibt ein Paket "info_ack" an den Anforderer (CMS oder DS) aus und gibt danach ein Paket "info" an die Nachbarn aus, welche die Verteilungskriterien erfüllen (d. h. die Nachbarn, welche die Verteilung der Datei während dem Befehl "replicate" empfangen haben). Dieser Prozess dauert an, bis die Metadateisystemstruktur und die Metadatendatei, welche die Objektmetadaten in allen Knoten aufweisen, welche die Verteilungskriterien erfüllen, aktualisiert werden.
  • "Learn" (Lernen): Der Befehl "learn" kann von einem lernenden Agenten der Steuereinheit ausgegeben und verwendet werden, wenn ein DS dem SCDN hinzugefügt wird und dessen lokaler Speicher initialisiert werden muss, oder wenn sich die Attribute des Knoten ändern oder in Verbindung mit Netzwerkkonfigurationsänderungen oder während der Wiederherstellung nach einem Fehler. Der DS, der den Befehl "learn" empfängt, verbreitet den Befehl "learn" an alle seine Nachbarn mit Ausnahme des Anforderers. Das Paket "learn" führt die Attribute des Ursprungsknotens. Jeder DS, der ein Paket "learn" empfängt, bestimmt, ob dessen Station Dateisystemobjekte aufweist, welche die Attribute der lernenden Station erfüllen, und wenn dies der Fall ist, gibt der DS "replicate" an einen DS in der lernenden Station aus, um die relevanten Dateisystemobjekte zu entnehmen.
  • "Fetch" (Erfassen): Der Befehl "fetch" kann von dem lernenden Agenten der Steuereinheit verwendet werden, während dieser in dem aktiven Modus lernt. Der Befehl "fetch" kann zwei Pakettypen aufweisen: "fetch" und "fetch_ack". In dem aktiven Lernmodus erhält der lernende Agent eine Liste von Dateisystemobjekten (Datenträger, Verzeichnisse und Dateien), die zu lernen sind, und des zugeordneten Knotens der Dateisystemobjekte. Während dieser Zeit stehen die Metadateisystemstruktur und die Objektmetadaten für diese Dateisystemobjekte in der lokalen Station nicht bereit, und somit weist der DS nicht die Informationen auf, um eine Suche und einen Download der Dateisystemobjekte durchzuführen. Der lernende Agent gibt ein Paket "fetch" an einen lokalen DS aus, in Verbindung mit der Ursprungsstation des Inhalts. Der DS wiederum gibt ein Paket "fetch_info" an einen DS des zugeordneten Knoten der Dateisystemobjekte aus. Nachdem der DS die Objektmetadaten für die gewünschten Dateisystemobjekte erhalten hat, speichert er die Informationen in der lokalen Metadateisystemarchitektur und der Objektmetadatendatei und gibt "fetch_ack" an den lernenden Agenten zurück. Der lernende Agent kann in der Folge damit fortfahren, Befehle "prepare" zum Herunterladen der Datei auszugeben.
  • "Fetch_info" (Info erfassen): "Fetch_info" weist zwei Pakete auf, "fetch_info" und "fetch_info_block". Jeder Befehl "fetch" weist darin codiert die Identifikation eines bestimmten Dateisystemobjekts und einen bestimmten DS auf, der garantiert das Dateisystemobjekt aufweist. Als Reaktion auf einen Befehl "fetch" gibt ein DS "fetch_info" an den in "fetch" identifizierten DS-Knoten aus. Der entfernte DS kann mit "fetch_info_block" antworten, worin die erforderlichen Objektmetadaten enthalten sind, um es dem lokalen DS zu ermöglichen, dessen Metadateisystemstruktur und Objektmetadatendateien zu speichern oder zu aktualisieren.
  • "Stop" (Stopp): Der Befehl "stop" kann zwei Pakete aufweisen, wie etwa "stop" und "stop_ack". Der Befehl "stop" wird dazu verwendet, einen DS abzuschalten. Wenn ein DS ein Paket "stop" empfängt, antwortet er unverzüglich mit "stop_ack", und abhängig von der Abschlussanforderung kann der DS sofort abschalten oder abschalten, nachdem er alle gerade ausgeführten Aufträge abgeschlossen hat.
  • c. Prozedur für die Dateisystemobjektverteilung
  • Die Verteilungsprozedur wird eingesetzt, wenn ein neues Dateisystemobjekt erzeugt wird, oder wenn ein bestehendes Dateisystemobjekt modifiziert oder gelöscht wird. Die Modifikation eines Dateisystemobjekts umfasst das Umbenennen, das Ändern etwaiger Attribute, die neue Anordnung und das Ändern von Inhalt (Dateiobjekt).
  • Die Verteilung eines Dateisystemobjekts verläuft wie folgt: (1) Der DS antwortet bzw. reagiert auf die Anforderung des Inhalteeigentümers (d. h. eine Anforderung von CMS oder VFCS für die Erzeugung oder Änderung eines Dateisystemobjekts) über VFCS oder CMS, Informationen eines Dateisystemobjekts zu verteilen sowie die Anforderung durch Senden einer Mitteilung bzw. Benachrichtigung (d. h. einer Replikationsanforderung) an dessen Nachbarn, um Änderungen und die Verteilungskriterien des Dateisystemobjekts bekannt zu geben; (2) "Qualifizierte" Nachbarn (d. h. diejenigen, welche die Kriterien erfüllen) laden die Objektmetadaten, Informationen und Anforderung herunter. Für die Dateiverteilung werden während diesem anfänglichen Verteilungsprozess verschiedene Abschnitte der Datei heruntergeladen. Diese Nachbarn modifizieren ferner die Metadateisystemstruktur gemäß der Replikationsanforderung, und wobei die Objektmetadaten in deren lokalen Speicher aktualisiert werden; (3) Die Benachrichtigung/Anforderung wird danach von Nachbar zu Nachbar weitergeleitet, jedoch nicht zurück zu dem Nachbarn, von dem die Verteilungsanforderung empfangen wird; (4) Jeder Nachbar führt die Schritte 2 und 3 aus, bis er auf einen Blattknoten oder einen "abschließenden" Knoten trifft. Somit erfolgt die Verteilung der Dateisystemobjektinformationen in dem Netzwerk in Phasen bzw. Stufen über Multicast-Signalisierung, wie dies hierin beschrieben ist.
  • Jeder Knoten, der eine Verteilungsanforderung oder -benachrichtigung empfängt, leitet die Anforderung an alle seine Nachbarn weiter, mit Ausnahme des "anfordernden" Knotens (d. h. des Knotens, von dem er die Anforderung empfangen hat). Ein abschließender bzw. Abschlussknoten ist ein Knoten, an dem weder die Attribut-Bitmap des Knotens noch dessen aufgerollte Bitmap den Verteilungskriterien entspricht, und wo die Verteilungsanforderung nicht an die Mutter bzw. den Vater bzw. die übergeordnete Einheit übermittelt werden kann. Für jeden Knoten, dessen Attribut-Bitmap den Verteilungskriterien des Inhalteeigentümers bzw. Content Owners für die Datei entspricht, werden die relevanten Dateisystemobjektinformationen, oder wenn es sich um eine Datei handelt, ein Teil der Datei, von den am nächsten liegenden Nachbarn in dem Verteilungspfad heruntergeladen, der die Informationen aufweist, die heruntergeladen werden müssen. Die Benachrichtigung bzw. die Mitteilung basiert auf Transport Level Multicast und das Download der Informationen erfolgt über den gleichen Multicasting-Pfad unter Verwendung der Pull-Methode. Nach dem Download speichert ein DS die Dateiystemobjektinformationen lokal. Dieser DS erzeugt eine zugeordnete Metadateisystemhierarchie, speichert Metadaten, und bei einer vorgesehenen Dateiverteilung speichert der DS die Abschnitte der Datei als Blöcke, die über verschiedene Speicherdatenträger in den Speichervorrichtungen 430 verteilt sind. Beim Verteilen der Datei über mehrere Speicherdatenträger wird die Ein-Ausgabe-Last (E/A) über die Datenträger verteilt und es erhöht sich insgesamt die Performance bzw. Leistungsfähigkeit eines Verteilungszentrums 400A–C während der Inhaltsverteilung und der Zustellung von Inhalten. Im Sinne der vorliegenden Erfindung kann es sich bei den Speicherdatenträgern um jede Anordnung von Speichervorrichtung handeln, wie z. B. Disk Arrays bzw. Plattenanordnungen, die an einem Server angebracht sind, RAID-Systeme (RAID als englische Abkürzung von Redundant Array of Independent Disks) oder um einen Network Attached Storage (NAS) oder ein Storage Area Network (SAN).
  • Die Abbildungen der 11A–B veranschaulichen ein Ausführungsbeispiel der vorliegenden Erfindung, das sich auf die Verteilung eines Dateisystemobjekts, eine Aktualisierung oder Metadaten in einem SCDN bezieht. Die Abbildung aus 11A zeigt eine virtuelle Baumstruktur 1100 mit den Knoten A–I. Die Abbildung aus 11B zeigt ein Beispiel für die virtuelle Baumstruktur 1102 der Knoten A–I, wobei Daten und Metadaten, welche einer Datei oder Abschnitten einer Datei entsprechen, gemäß der Verteilungsprozedur der vorliegenden Erfindung verteilt worden sind. Ein Inhalteeigentümer erzeugt entweder ein neues Dateisystemobjekt oder eine Aktualisierung eines Dateisystemobjekts über das VFCS 470 des Knotens B oder lädt ein Dateisystemobjekt in den Content Management Server (CMS) 170 hoch, der mit dem Knoten B des SCDN 100 verbunden ist, und zwar unter Verwendung einer beliebigen Content Publishing und Management Software, die auf dem Client-System des Inhalteeigentümers (CPC) 130 ausgeführt wird. Der Inhalteeigentümer konfiguriert die Verteilungskriterien mit dem VFCS 470 oder lädt die Verteilungskriterien auf den CMS 170. Das VFCS 470 oder der Content Management Server 170 analysiert, wie dies vorstehend im Text bereits beschrieben worden ist, das Dateisystemobjekt und unterteilt eine Datei (wenn das Objekt eine Datei ist), so dass Metadaten erzeugt werden. Für den Fall eines CMS 170 wird das Dateisystemobjekt zuerst analysiert und zerlegt, wenn es sich bei dem Objekt um eine Datei handelt, um die Spurdateien zu bestimmen, und der CMS gibt einen Befehl aus, der dem FDP-Befehl "put" ähnlich ist, um Metadaten und Inhalte hochzuladen, oder er aktualisiert den in dem Knoten B angeordneten Verteilungsserver. In anderen Ausführungsbeispielen kann der CMS 170 mit jedem Knoten des SCDN 100 verbunden werden. An dem Knoten B aktualisiert der DS die Metadateisystemstruktur entsprechend und speichert ferner die relevante Metadatendatei. Für den Fall, dass es sich bei dem Objekt um eine Datei handelt, unterteilt der DS das Dateiobjekt zur lokalen Speicherung in Blockdateien. Für den Fall, dass das Dateisystemobjekt durch VFCS eingeführt wird, analysiert VFCS das Objekt, so dass Metadaten erzeugt werden. Das VFCS aktualisiert die Metadateisystemarchitektur und speichert die relevanten Metadaten. Wenn es sich bei dem Objekt um eine Datei handelt, unterteilt das VFCS die Datei in Blöcke und speichert diese Blöcke in dessen mit dem DS in dem Knoten B gemeinsam genutzten Speicher. Bei einem Dateiobjekt ist die ganze Kopie der Datei an dem Knoten B als ein ausgefüllter Punkt dargestellt (11B).
  • Während die Dateisystemobjektinformationen auf den Verteilungsserver hochgeladen werden, gibt der CMS einen FDP-Befehl vom Typ "distribute" (verteilen) an den Verteilungsserver an dem Knoten B aus. Für den Fall des VFCS, wenn das Dateisystemobjekt in den Speicher geschrieben wird, gibt das VFCS einen FDP-Befehl vom Typ "distribute" (verteilen) an den Verteilungsserver an dem Knoten B aus. Als Reaktion auf den Verteilungsbefehl gibt der DS einen Befehl an dessen benachbarte Knoten A, D und E aus, um die Informationen oder Inhalt zu replizieren (z. B. unter Verwendung des Befehls "replicate" (replizieren) des FDP). Dieser Replikationsbefehl stellt einfach eine Benachrichtigung an die Nachbarn hinsichtlich der Dateisystemobjektänderungen dar. Der Knoten D prüft das Replikationspaket und entscheidet, es soll die Metadaten oder den Inhalt nicht aufweisen, so dass der Replikationsbefehl an dessen Nachbarn, den Knoten H, weitergeleitet wird. Die Knoten A, E und H prüfen das Replikationspaket und entscheiden, dass sie alle den Verteilungskriterien entsprechen (d. h. es handelt sich um "qualifizierte Knoten). Wenn die Bereitschaft gegeben ist, geben die Knoten A, E und H Befehle aus, um die relevanten Metadaten abzurufen, und für das Dateiobjekt einen Abschnitt der Datei von dem am nächsten gelegenen Knoten (z. B. Knoten B) in dem SCDN. Bei den Knoten E und H handelt es sich um Blattknoten, welche somit den Replikationsbefehl nicht ausbreiten. Der Knoten A stellt jedoch den Wurzeknoten mit den Tochterknoten B und C dar. Der Knoten A sendet den Befehl "replizieren" unter Umständen nicht an den Knoten B zurück, da er den Ursprungsknoten darstellt. Der Knoten A kann jedoch auch die Replikationsanforderung an den Knoten C senden. Der Knoten C prüft die Verteilungskriterien und entscheidet, dass es sich um einen qualifizierten Knoten handelt, so dass der Knoten die relevanten Metainformationen bzw. Metadaten abruft, und bei einer Datei einen Abschnit der Datei von den am nächsten gelegenen Knoten (z. B. dem bzw. den nächsten der Knoten A, B, E und H), welche die benötigten Daten aufweisen. Der Knoten C sendet in der Folge den Replikationsbefehl an die Knoten F und G. Der Knoten F ist qualifiziert und ruft somit die Metainformationen ab und bei einer Datei einen Abschnitt der Datei von dem am nächsten gelegenen Knoten mit den Daten (z. B. Knoten B oder C). Die Knoten G und I sind nicht qualifiziert und empfangen somit nichts. Der Knoten G ist ein abschließender Knoten, da das aufgerollte Attribut dessen Zweigs die Verteilungskriterien nicht erfüllt.
  • Dieser anfängliche Replikationsprozess dauert an, bis alle qualifizierten Knoten in dem SCDN zumindest teilweise belegt sind. Wenn die qualifizierten Knoten Metadaten abrufen oder einen gewissen Abschnitt einer Datei, so modifizieren sie die Metadateisystemstruktur entsprechend, speichern die Metadaten und bei einem Dateiobjekt speichern den Datenblock und modifizieren die Blockindexanordnung entsprechend. In einem oder mehreren Ausführungsbeispielen der Verteilung einer Datei, siehe 11B, befindet sich der gleiche Abschnitt (z. B. Blöcke) der Datei in mindestens einem Knoten des SCDN. Vorzugsweise verwaltet eine Mehrzahl von Knoten den gleichen Abschnitt, wodurch Redundanz erzeugt und der Verlust von etwaigen Abschnitten der Datei vermieden wird, wenn ein oder mehrere Knoten oder Speicherdatenträger nicht mehr verfügbar sind (d. h. verloren gehen), wobei ein DS an dieser Station keine besondere Maßnahmen ergreifen muss, um den Inhalt des beschädigten Datenträgers wiederherzustellen, da die Abschnitte der in bzw. auf diesem Datenträger gespeicherten und später verlorenen Dateien automatisch von anderen Netzwerkknoten heruntergeladen werden, wenn die Nachfrage für die Bearbeitung bzw. Behandlung einer Benutzeranforderung gegeben ist, wobei dies als selbstheilende Fähigkeit des SCDN bezeichnet wird. Die Verteilungsserver leiten ferner Steuerungsinformationen einer fehlerhaften Station an Nachbarn der fehlerhaften Station weiter, um einen fehlerhaften Abbruch von Steuerbefehlen zu vermeiden. Für den Fall, dass ein neues Verzeichnis oder ein neuer Datenträger erzeugt oder modifiziert wird, wird der gleiche Replikationsbefehl an das ganze SCDN auf die gleiche Art und Weise ausgebreitet wie ein Replikationsbefehl für eine Datei ausgebreitet wird. Wenn die Knoten einen Replikationsbefehl für ein Verzeichnis empfangen oder sich der Datenträger ändert, so gibt der DS in den Knoten einen Befehl wie etwa den FDP-Befehl "get" aus, um die verwandten bzw. zugeordneten Dateisystemobjektmetadaten von den am nächsten liegenden Knoten herunterzuladen. Sobald der DS die Dateisystemobjektinformationen empfängt, erzeugt er oder verändert er die lokale Metadateisystemstruktur und aktualisiert die zugeordneten Metadaten.
  • Der FDP-Befehl "info" wird zur Benachrichtigung verwendet, wenn sich Attribute eines Dateisystemobjekts ändern. Ein Attribut eines Dateisystemobjekts umfasst den Objektnamen, Daten, Angaben zum Eigentümer, die Position des Objekts in der Dateisystemhierarchie, etc. Der FDP-Befehl "clean" wird zur Benachrichtigung aller Knoten in dem SCDN hinsichtlich der Löschung eines Dateisystemobjekts verwendet. Diese Benachrichtigungen werden auf die gleiche Art und Weise verbreitet, wie der FDP-Befehl "replicate" gemäß der Beschreibung in dem vorstehenden Absatz.
  • Bei normalem Betrieb sendet ein Verteilungsserver FDP-Befehle, wie zum Beispiel "replicate", "info", "search" und "clean", die an das ganze Netzwerk oder einen Teil des Netzwerks weitergeleitet werden, über andere Verteilungsserver in den unmittelbaren Nachbarstationen in dessen Steuerpfad. Wenn zum Beispiel ein Verteilungsserver einen FDP-Befehl empfängt, wie zum Beispiel "replicate" oder "info", so sendet er den Befehl an dessen benachbarte DS auf der Basis der FDP-Verteilungskriterien. In dem Fall, dass eine der Nachbarstationen ausfällt, behält der DS den Auftrag in dessen Auftragswarteschlange und ruft wiederholt ab, bis der Auftrag erfolgreich ausgeführt worden ist. Gleichzeitig nimmt der DS vorübergehend die Rolle des DS in der ausgefallenen bzw. fehlerhaften Station ein, indem der FDP-Befehl an die benachbarten DS der fehlerhaften Station weitergeleitet wird.
  • Dieses File Distribution Protocol (FDP) gemäß der vorliegenden Erfindung verwendet die Verteilungskriterien des Eigentümers der Inhalte, um die Verteilung des Dateisystemobjekts, wobei die Verteilung bei einer Datei ganz oder teilweise erfolgen kann, an alle Knoten in dem Netzwerk vorzugeben, welche die Verteilungskriterien des Eigentümers erfüllen. Eine Verteilungsanforderung kann von jedem Knoten in dem Baum beginnen und verläuft den Baum nach oben und nach unten, bis sie einen Blattknoten oder einen abschließenden Knoten erreicht. Für jeden Knoten mit den entsprechenden Attributen wird die Datei teilweise von den am nächsten gelegenen Nachbarn heruntergeladen, welche die spezifischen Leistungskriterien erfüllen, wenn diese Nachbarn den zu herunterladenden Abschnitt der Datei aufweisen. Der am nächsten gelegene Nachbar beim Herunterladen von Inhalten ist nicht unbedingt in dem virtuellen Baum der nächst gelegene Nachbar, sondern der nächste in Bezug auf die Entfernung. Dies verhindert massive Übertragungen von dem Knoten, an dem die Datei ursprünglich hochgeladen wird. Ferner verhindert das Staging der Verteilung übermäßige Nachfragen bzw. Anfragen im Netzwerk um den ursprünglichen Knoten (z. B. den Knoten B). Durch das Zustellen kleinerer Blöcke und nur einer teilweisen Datei, reduziert dieses Zustellungsverfahren die Netzwerkbelastung. Da ferner das Fortschreiten der Verteilungsanforderungen durch das SCDN angehalten wird bzw. anhält, wenn sie an einen "abschließenden" Knoten erreichen, verhindert die vorliegende Erfindung es, dass unnötige Verteilungsanforderungspakete das Netzwerk fluten bzw. überschwemmen.
  • d. Hinzufügen von Datenträgern, Verzeichnissen und Dateien
  • Neue Datenträger, Verzeichnisse und Dateien können an jedem Knoten hinzugefügt werden. Änderungen der Datenträger, Verzeichnisse und Dateien können ebenfalls an jedem Knoten vorgenommen werden. Die Abbildung aus 11C zeigt ein Beispiel dafür, wie die Verteilungsserver an den entsprechenden Knoten 1 bis 4 zusammen arbeiten, um Metainformationen und Inhalte dynamisch zu verteilen und zu replizieren, so dass jeder Server eine globale Dateisystemansicht darstellt, bei der es sich um eine aggregierte Ansicht des ganzen Netzwerks handelt. Durch die Verteilung, Synchronisierung und Replikation aggregieren die SCDN-Knoten die Speichervorrichtungen in dem Netzwerk, so dass diese als eine arbeiten bzw. funktionieren.
  • In dem in der Abbildung aus 11C dargestellten Beispiel wird angenommen, dass die Knoten 1 bis 4 alle in der gleichen Verteilungskarte angeordnet sind. Ein Ordner mit der Bezeichnung "dir1" und dessen Dateien werden an dem Knoten 1 in das SCDN 100 eingegeben, wie dies durch den Pfeil in den Knoten 1 dargestellt ist. Der Knoten 1 speichert den Ordner "dir1" in einem Pfad "root" (Wurzel). In ähnlicher Weise werden die Ordner "dir2", "dir3" und "dir4" und deren Dateien in das SCDN 100 an den entsprechenden Knoten 2 bis 4 eingegeben, wie dies durch die Pfeile in die Knoten 2 bis 4 dargestellt ist. Die Knoten 2 bis 4 speichern jeweils die entsprechenden Ordner "dir2", "dir3" und "dir4" in dem Pfad "root". Jede Art von Datei(en) kann in den Ordnern enthalten sein.
  • Die virtuellen Dateisteuersysteme an den Knoten 1 bis 4 arbeiten gemäß der Beschreibung hierin im Einklang mit der vorliegenden Erfindung zusammen, um Metainformationen und Inhalt dynamisch zu verteilen und zu replizieren, so dass jedes der virtuellen Dateisteuersysteme eine globale Dateisystemansicht darstellt, die eine aggregierte Ansicht des ganzen Netzwerks darstellt. Die Knoten 1 bis 4 weisen jeweils die gleichen Metadaten nach der Replikation auf. Dies ermöglicht es, dass jedes virtuelle Dateisteuersystem an den Knoten 1 bis 4 die gleiche globale Dateisystemansicht des Inhalts aller Knoten 1 bis 4 darstellt, unabhängig davon, welche Ordner tatsächlich in einem bestimmten Knoten gespeichert sind. Die Abbildung aus 11C zeigt ferner durch Pfeile, welche aus jedem der Knoten 1 bis 4 weg zeigen, die gleiche globale Dateisystemansicht, die durch jedes Knoten-VFCS dargestellt wird:
    "/root/dir1
    /dir2
    /dir3
    /dir4."
  • C. Inhalte bereitstellen (Serving Content)
  • Das Bereitstellen von Inhalten bzw. Content Serving wird über ein VFCS 470 in jedem Knoten bereitgestellt. Das Content Serving umfasst das Erzeugen einer Verzeichnisdarstellung eines globalen Dateisystems und die Rekonstruktion und das Serving von Daten des Dateisystemobjekts über eine Dateisystemschnittstelle des VFCS in Echtzeit. Die globale Dateisystemdarstellung wird aus der Metadateisystemstruktur und den Dateisystemobjektmetadaten erzeugt. Das durch das VFCS 470 dargestellte globale Dateisystem stellt den Inhalt des gesamten SCDN Content-Netzwerks dar. Diese Dateisystemdarstellung lässt sich nicht eins zu eins in die Daten in den lokalen Speichervorrichtungen abbilden. Die Dateisystemdarstellung ist getrennt von den tatsächlichen Daten. Die Metadateisystemstruktur stellt die Struktur des ganzen globalen Verzeichnisses in dem SCDN 100 (oder einfach "SCDN") dar, während die Dateisystemobjektmetadaten die Informationen führen, um ein Dateisystemobjekt zu konstruieren, wie zum Beispiel die Zugriffssteuerungsliste eines Datenträgers, die Erstellungs- und Modifikationsdaten eines Datenträgers oder eines Verzeichnisses, die Popularität einer Datei, die eindeutige ID bzw. Kennung des ganzen Dateisystemobjekts und die Informationen für die Rekonstruktion einer Datei aus den Blockdateien, etc. Es ist eine Schicht, welche die Dateisystemdarstellung und die tatsächlichen Daten verbindet, die in Speichervorrichtungen gespeichert sind. Die Dateimetadaten ermöglichen das Speichern von Blockdateien einer Datei in mehreren verteilten Speichervorrichtungen, und sie ermöglichen es ferner, dass Blockdateien verfolgt bzw. überwacht, aktualisiert und über ein Netzwerk von Knoten verteilt werden.
  • 1. Metadateisystemstruktur und Dateisystemobjektmetadaten
  • In Bezug auf ein ganzes Dateisystem, das erzeugt wird durch die Integration aller Knoten eines SCDN 100, ist das VFCS 470 für zwei Aspekte zuständig: (a) es stellt eine Dateisystemschnittstelle für den Zugriff von Dateisystemobjekten bereit – Datenträger, Verzeichnisse, Dateien und deren Metadaten; und (b) in Bezug auf Dateien stellt es eine Abstraktion bereit, welche eine Gruppe von Blockdateien aus dem lokalen, zugrunde liegenden Dateisystem einem intakten Dateisystem zuordnet und diese zusammensetzt (in Echtzeit), das von jedem der Knoten dem SCDN zugeführt werden kann. Um dies zu implementieren hat das SCDN eine Metadateisystemstruktur und ein Dateisystemobjektmetadatenformat für die Konstruktion der globalen Dateisystemdarstellung durch ein VFCS 470 definiert. Das VFCS 470 und der DS sind zuständig bzw. verantwortlich für die Verwaltung der Metadateisystemstruktur und der Metadatendateien, wenn neue Objekte hinzugefügt, bestehende Objekte modifiziert und gelöscht werden. Und der DS ist zuständig für die Ausbreitung der Änderungen durch das ganze SCDN. In Bezug auf Dateiobjekte weist ein Teil ihrer Metadaten eine lokale Blockindexanordnung auf. Die Blockindexanordnung jeder Datei ist an verschiedenen Knoten nicht identisch. Die Blockindexanordnung stellt einem VFCS 470 die Informationen darüber bereit, wie eine Gruppe von Blockdateien angeordnet werden kann, um die ursprüngliche Datei wiederherzustellen, wobei sie einem VFCS 470 ferner anzeigt, ob sich ein Block in dem lokalen Knoten befindet oder nicht, und wenn dies der Fall ist, wird der spezifischen Speichervorrichtung angezeigt, wo sich der Block befindet. Die Blockdateien in einem SCDN-Knoten werden in Verzeichnissen mit spezifischen Benennungsmustern gespeichert.
  • a. Metadateisystemarchitektur
  • Die Metadateisystemstruktur 1210, die in der Abbildung aus 12A dargestellt ist, stellt ein Beispiel für die Dateisystemhierarchie des globalen Dateisystems gemäß der vorliegenden Erfindung dar. Dieses Verzeichnis existiert in allen Knoten in dem zugrunde liegenden Dateisystem, auf welche die SCDN-Komponenten zugreifen können. Das VFCS 470 verwendet die Metadateisystemstruktur für die Konstruktion der globalen Dateisystemdarstellung. An jedem Knoten gibt es einen Metadaten-Stamm- bzw. Wurzelpfad 1220 – {Metapfad}, wobei in dem {Metapfad} eines oder mehrere Unterverzeichnisse vorhanden sind, die mit einer SCDN-Netzwerk-ID bezeichnet sind. Jedes der Verzeichnisse weist eine Metadateisystemstruktur und Dateisystemobjektmetadaten auf, welche eine globale Dateisystemdarstellung darstellen; wobei jedes SCDN ein globales Dateisystem aufweist.
  • Jede Metadateisystemstruktur weist eines oder mehrere Datenträger bzw. Volumen (Container) auf, wobei jeder Datenträger ein oder mehrere Verzeichnisse aufweist, wobei jedes Verzeichnis Unterverzeichnisse oder Dateien aufweist. Da es sich bei der Metadateisystemstruktur um kein echtes Dateisystem handelt, weist sie keine tatsächlichen Daten der Dateien auf. In jedem Volumen bzw. Datenträger gibt es eine Datenträgermetadatendatei, die mit {Datenträgername}.vdat bezeichnet ist. In jedem Verzeichnis gibt es eine Verzeichnismetadatendatei, die mit {Verzeichnisname}.ddat bezeichnet ist. Die Dateien befinden sich in der Metadateisystemstruktur und weisen keine echten bzw. realen Daten auf, stattdessen enthalten diese Dateien Dateimetadaten.
  • Die Metadateisystemstruktur eines SCDN muss nicht an jedem Knoten identisch sein. Die Metadateisystemstruktur eines Knotens stellt die Datenträger, Verzeichnisse und Dateien dar, die an diesen Knoten repliziert werden. Da die Verteilung der Dateisystemobjekte geführt wird durch eine Reihe von Verteilungskriterien, können einige Dateisystemobjekte an bestimmte Knoten repliziert werden und an bestimmte andere Knoten nicht. Somit befindet sich eine Dateisystemobjektdarstellung nicht in der Metadateisystemstruktur eines Knotens, wenn das Objekt nicht an diesen Knoten repliziert wird.
  • Alle diese Dateisystemobjekte – Datenträger, Verzeichnisse und Dateien – können von jedem der Knoten in dem SCDN erzeugt bzw. erstellt werden. Diese Objekte können durch DS durch einen CMS erstellt werden und sich danach durch das SCDN ausbreiten, wobei sie aber auch durch ein VFCS 470 erzeugt werden und sich durch das SCDN über DS ausbreiten können. Diese Objekte können modifiziert oder gelöscht werden über jeden CMS oder das VFCS 470 von jedem Knoten in Verbindung mit entsprechender Benutzerbefugnis.
  • b. Datenträger, Verzeichnis und Dateimetadaten
  • Dateisystemobjektmetadaten unterstützen das VFCS 470 und den DS 410 beim eindeutigen Identifizieren der Objekte, beim Lokalisieren des Ursprungsknotens, beim Lokalisieren der Knoten, die die Objekte aufweisen sowie beim Lokalisieren der Daten in den Speichervorrichtungen in einem Knoten. In einem Ausführungsbeispiel der vorliegenden Erfindung gibt es drei Dateisystemobjektmetadatendateien, nämlich Datenträger (Volume), Verzeichnis (Directory) und Datei (File). Die Metadatendateien befinden sich in der Metadateisystemstruktur, siehe 12A. Die Abbildungen der 13A–D zeigen den Inhalt von Datenträger-, Verzeichnis- und Dateimetadaten eines Ausführungsbeispiels der vorliegenden Erfindung. Im Besonderen zeigt die Abbildung aus 13A den Inhalt einer beispielhaften Datenträgermetadatendatei 1300 (auch als Datenträgermetadatenobjekt bezeichnet). Die Abbildung aus 13B zeigt den Inhalt einer beispielhaften Verzeichnismetadatendatei 1310 1300 (auch als Verzeichnismetadatenobjekt bezeichnet). Die Abbildung aus 13C zeigt den Inhalt von beispielhaften Dateimetadaten 1320 (auch als Dateimetaobjekt bezeichnet). Die Abbildung aus 13D zeigt den Inhalt einer beispielhaften Blockindexanordnung 1330, die Teil beispielhafter Dateimetadaten 1320 ist. Hiermit wird festgestellt, dass die Datenträgermetadaten, die Verzeichnismetadaten und die Dateimetadaten (mit Ausnahme der Blockindexanordnung(en)) nach Replikation an jedem Knoten (zum Beispiel an jedem Server) alle gleich sind. Die Blockindexanordnung kann sich an jedem Knoten unterscheiden, abhängig von dem jeweiligen Zustand des Speichers an dem entsprechenden Knoten.
  • In einem SCDN (identifiziert durch eine eindeutige Netzwerk-ID) werden die Dateisystemdatenträger (Container) eindeutig identifiziert durch ihre Datenträger-ID und die Ursprungsknoten-ID, sie die Datenträgermetadatendatei 1300 aus 13A. Jedes Volumen bzw. jeder Datenträger weist einen Ursprungsknoten (Ursprungsknoten-ID) auf, wo es bzw. er erstellt bzw. erzeugt wird, sowie einen Content Owner bzw. Inhalteeigentümer (Eigentümer-ID), der den Datenträger erstellt hat. Ein Datenträger weist ferner eine Zugriffssteuerliste (Access Control List) auf, welche eine Liste von Benutzerberechtigungen aufweist. Eine Datenträgermetadatendatei weist ferner eine Verteilungskarte bzw. Verteilungsabbildung auf, welche den Knoten anzeigt, wo das Volumen verteilt wird. Eine identische Datenträgermetadatendatei für den Datenträger befindet sich an allen Knoten, wo der Datenträger repliziert wird. Benutzer können Datenträger von jedem VFCS 470 an jedem Knoten aktualisieren; die neuen und aktualisierten Datenträgermetadaten werden unter Verwendung des FDP in dem gesamten Netzwerk repliziert.
  • Verzeichnisse in einem SCDN werden eindeutig identifiziert durch deren Verzeichnis-ID und deren Ursprungsknoten, andere Bezeichner, die einem Verzeichnis zugeordnet sind, sind deren Datenträger-ID und Netzwerk-ID, siehe Verzeichnis 1310 aus der Abbildung aus 13B. Wie ein Datenträger weist auch ein Verzeichnis einen Ursprungsknoten, eine Verteilungskarte und ihre eigene Zugriffssteuerungsliste auf. Ein Verzeichnis kann die Zugriffssteuerungsliste von ihrem Datenträger erben bzw. übernehmen. Die Verteilungskarte zeigt den Knoten an, wo das Verzeichnis verteilt wird. In den Knoten, wo das Verzeichnis repliziert wird, wird ein Verzeichnis mit dem gleichen Namen dieses Verzeichnisses in der Metadateisystemstruktur erstellt, und die Verzeichnismetadaten sind in dem Verzeichnis eingebettet. Die Verzeichnismetadatendateien des gleichen Verzeichnisses an allen Knoten, wo das Verzeichnis repliziert wird, sind identisch. Ebenso wie bei den Datenträgern werden Verzeichnisinformationen unter Verwendung des FDP repliziert.
  • Dateien werden eindeutig identifiziert durch ihre Datei-ID und ihre Ursprungsknoten-ID, wobei zu den anderen Bezeichnern, die einer Datei zugeordnet sind, deren Verzeichnis-ID, deren Datenträger-ID und deren Netzwerk-ID zählen, siehe Datei 1320 aus der Abbildung aus 13C. Wie bei Datenträgern und Verzeichnissen weist eine Datei einen Ursprungsknoten und eine Verteilungskarte auf, obgleich die Datei an einem VFCS 470 jedes Knotens aktualisiert werden kann. Wenn eine Datei aktualisiert wird, werden Abschnitte des Inhalts und die Dateimetadaten repliziert. Die Datei-ID in den Metadaten ermöglicht es, dass eine Datei eindeutig in dem ganzen Netzwerk identifiziert werden kann; die Verteilungskarte zeigt an, wo die Datei repliziert wird; und die Blockindexanordnung (13D), die teil der Dateimetadaten ist, weist Informationen zu dem Layout der Blockdateien auf, so dass der DS weiß, wie die Blöcke zu verteilen sind für einen beschleunigten Transport, und das VFCS 470 weist, wie die Datei in Echtzeit zusammengesetzt werden sollen. Die Metadatendatei einer Datei existiert in allen Knoten, in denen die Datei repliziert wird. Neben der Blockindexanordnung ist der sonstige Teil bzw. Abschnitt der Metadaten in allen Knoten identisch. Der Inhalt der Blockindexanordnung ist an den verschiedenen Knoten unterschiedlich.
  • Die Abbildung aus 13D zeigt ein Beispiel für die Blockindexanordnung 1330 gemäß der vorliegenden Erfindung. In dem vorliegenden Beispiel weist die Datei drei Segmente auf, wobei das Segment 1332 fünf Datenblöcke aufweist, wobei das Segment 1334 zehn Blöcke aufweist, und wobei das Segment 1336 vier Datenblöcke aufweist. Die Sequenz der gesamten Datei beginnt mit Block #1 von Segment 1332 zu Block #5 von Segment 1332, gefolgt von Block #1 von Segment 1334 bis hin zu dem Ende des Segments 1334, gefolgt von dem Segment 1334. Diese Sequenz ermöglicht es einem VFCS 470, eine Benutzeranforderung transparent zu erfüllen, wenn auf einen bestimmten Teil der Datei zugegriffen wird. Der Beginn jedes Segments ist von der größten Bedeutung für die Anwendungen dieser Art von Datei. Für gewöhnlich greift eine Anwendung auf die Datei zu, indem die Anfänge aller Segmente gleichzeitig gelesen werden.
  • Die Segmente sind auch als Spuren bzw. Tracks bekannt. Sie ermöglichen es dem DS den wichtigsten Teil einer Datei zu lokalisieren, um mit der Verteilung zu beginnen, um die Fern- bzw. Weitverkehrszugriffslatenz zu eliminieren (d. h. für einen beschleunigten Transport). Wenn die Anfangsblocks jedes Segments von DS übertragen werden, kann ein VFCS 470 die Daten vollständig über die globale Dateisystemschnittstelle des VFCS 470 darstellen. Ein Endbenutzer greift auf die Datei unter Verwendung einer entsprechenden Anwendung zu, während die DS wieder den Rest der Blockdateien in allen Segmenten füllen. Die Anzahl in allen Blockindexanordnungszellen zeigt einem VFCS 470 an, ob die Blockdatei lokal angeordnet ist, und wenn dies der Fall ist, wo die Datei anzuordnen ist. In dem vorliegenden Beispiel zeigt eine 0 an, dass sich der Block nicht in dem lokalen Speicher befindet. Wenn in diesem Fall ein VFCS 470 auf den Datenblock zugreifen möchte, so kann es einem DS signalisieren, den Block zu downloaden. Bevor ein DS einen nicht residenten Datenblock importieren kann, hat der DS ein FDP-Suchsignal an die Knoten mittels Multicasting übermittelt, wo die Datei repliziert wird (unter Verwendung der Verteilungskarte), um zu lokalisieren, welche Knoten den jeweiligen Datenblock aufweisen. Eine –1 in der Zelle zeigt an, dass ein DS sich im Prozess des Downloadens des Blocks befindet. Die positiven Zahlen in der Zelle zeigen einem VFCS 470 die Speichervorrichtungsnummer an, wo die Blockdaten gespeichert werden.
  • Die Abbildung aus 12B zeigt ein Beispiel des Ausführungsbeispiels der Metadateisystemstruktur mit Dateiobjektmetadaten in zwei unterschiedlichen SCDN-Verteilungszentren 140A, 140B (auch als Knoten bezeichnet) gemäß der vorliegenden Erfindung. Der Knoten 140A weist Metadateninformationen 1230 auf. Der Knoten 140B weist die Metadateninformationen 1240 auf, wie dies abgebildet ist. Dieses Beispiel zeigt, wie die Datenträgermetadaten, die Verzeichnismetadaten und die Dateimetadaten (mit Ausnahme der Blockindexanordnung(en)) nach der Replikation an jedem Knoten 140A, 140B identisch sind (Ma = Mb, Va = Vb, Da = Db). Die Blockindexanordnung kann sich an jedem Knoten 140A, 140B unterscheiden, abhängig von dem jeweiligen Speicherzustand an dem entsprechenden Knoten (Fa nicht gleich Fb).
  • c. Blockdateien und Knotenbegrenzungspfad
  • Im Folgenden wird das Disk-Layout der Blockdateien beschrieben. Hierin werden bestimmte Konventionen für die Beschreibung der Verzeichnispfade verwendet. Die Abbildung aus 12C zeigt ein veranschaulichendes Ausführungsbeispiel des zugrunde liegenden Dateisystem-Blockdateiverzeichnislayouts in einem SCDN-Knoten. Abgebildet ist ein Blockdateipfadname 1250.
  • Die Gruppe der Blockdateien, welche eine Datei bilden, wird in Speichervorrichtungen gespeichert, wobei der Name der ursprünglichen Datei nicht verwendet wird, jedoch die Dateiobjekt-ID und eine Blocksequenznummer. Diese Blockdateien werden in Blockspeicherpfaden gespeichert, die in einer oder mehreren Speichervorrichtungen definiert sind. Ein Blockspeicherpfad ist ein Blockdateispeicherstammverzeichnis, das Informationen zu der Blockposition bereitstellt. Die einzelnen Blöcke können so gespeichert werden, dass die E/A-Last über mehrere Vorrichtungen verteilt bzw. ausgebreitet wird, um die Platten- bzw. Disk-Leistung zu maximieren. Um dies zu unterstützen, kann der SCDN-Knoten mit mehreren Blockspeicherwurzeln konfiguriert werden. Wenn der DS in jedem Knoten Blöcke speichert, so ruft er eine Funktion auf, um auszuwählen, in welcher Speicherwurzel der Block gespeichert werden soll. In einem Fall führt diese Funktion einfache eine Auswahl der Blockspeicherwurzeln nach dem Reigenmodell (englisch: Round Robin) aus, so dass wenn neue Blöcke geschrieben werden, diese gleichmäßig auf die Speicherwurzeln aufgeteilt werden. In anderen Fällen kann diese Funktion den Speicher optimieren, indem zum Beispiel Plattenspeicherinformationen verwendet und die Last neuer Blöcke auf die Vorrichtungen mit dem meisten freien Platz verteilt werden.
  • Die separaten Blockspeicherpfade sind durch ihre Indexe identifiziert, die als Speicherindexe bezeichnet werden. Wenn ein Datenblock in einem der Speicherpfade gespeichert wird, wird der Index des Speicherpfads in der Blockindexanordnung in den Metadaten für das Dateiobjekt registriert; somit wird der Speicherindex in jeder Blockindexanordnungszelle dazu verwendet, die Position eines bestimmten Blocks zu beschreiben. Neue Speicherwurzeln können frei hinzugefügt werden, wobei die Indexreihenfolge bestehender Speicherwurzeln jedoch nicht verändert werden darf, auch dürfen die Speicherwurzeln nicht gelöscht werden ohne ein Hilfsprogramm für die neue Indexierung laufen zu lassen, um die Blockindexanordnungsmetadaten mit den neuen Speicherwurzelindexen zu aktualisieren.
  • Die Speicherindexe liegen im Beeich von 1...n, wobei n die Anzahl der konfigurierten Speicherwurzeln darstellt. Jede Nummer bzw. Zahl wird auf einen Speicherwurzelpfad, eine Textfolge und das Speicherverzeichnis für Blockdateien abgebildet. Ein Speicherindexwert von 0 in der Blockindexanordnungszelle zeigt an, dass der Block nicht vorhanden ist. Ein Speicherindex –1 in den Metadaten zeigt an, dass der Block heruntergeladen wird, wobei der Vorgang jedoch noch nicht abgeschlossen ist.
  • Zur Unterstützung des Datenaustauschs mit anderen SCDN führen die Daten eine Netzwerk-ID. Ein SCDN-Knoten speichert die Netzwerk-ID in den Daten und verwahrt die Daten jedes Netzwerks getrennt in separaten Unterverzeichnissen. Die Daten von dem "lokalen" SCDN werden mit der lokalen Netzwerk-ID gespeichert, wobei es sich in dem vorliegenden Beispiel bei der lokalen SCDN-ID um die 0 handelt. Daten von externen SCDN werden gemäß den IDs dieser Netzwerke gespeichert. Unter jedem Verzeichnis {Speicherpfad[i]} bzw. {storagepath[i]} weist jedes SCDN ihr eigenes Unterverzeichnis auf. Diese Ebene der Verzeichnisstruktur wird bezeichnet als {Speicherpfad[i-1]}/{Netzwerk_ID}/.
  • Um es zu verhindern, dass ein bestimmter Plattenverzeichnisknoten mit mehr Konten als den maximalen Unterknoten des zugrunde liegenden Dateisystems überschwemmt wird, womit die resultierende Leistungsverschlechterung einher geht, die eine derartige Wucherung der gängigen Meinung nach verursacht, wird ein Mechanismus verwendet, um die Blockdateien in Unterverzeichnisse auszubreiten. Dieser Mechanismus wird als Knotenbegrenzungspfade (Hode Limiting Paths) bezeichnet, da er Verzeichnispfade erstellt bzw. erzeugt, welche die Anzahl der Knoten in einem einzelnen Verzeichnis auf die maximale Anzahl von Unterknoten begrenzt, die von dem zugrunde liegenden Dateisystem unterstützt wird. In einer regulären bzw. normalen UNIX-Umgebung beträgt die maximale Anzahl von Unterknoten in einem Verzeichnis zum Beispiel etwa 1.000.
  • Als Beispiel dient eine große Datei. Jede Datei kann zum Beispiel mehrere Segmente/Spuren aufweisen, und jedes Segment kann Tausende von Blöcken aufweisen. Die Blöcke einer Datei können nicht in dem gleichen zugrunde liegenden Verzeichnis gespeichert werden, wenn dieses eine Begrenzung in Bezug auf die Anzahl der Knoten pro Verzeichnis aufweist. Ferner kann ein Inhalteeigentümer Tausende von Dateien aufweisen. Es wird bevorzugt, dass das System nicht alle Blockdateien des Inhalteeigentümers in einem einzigen zugrunde liegenden Verzeichnis speichert. Knotenbegrenzungspfade lösen diese und ähnliche Datei- und Verzeichniswucherungsprobleme auf eine gemeinsame bzw. übliche Art und Weise.
  • Eine Dateisystemobjekt-ID in einem SCDN ist eine eindeutige 64 Bit ganze Zahl. Für ein Dateiobjekt wird die ID gebildet aus einer 32 Bit Ursprungsknoten-ID und einer 32 Bit Datei-ID. Eine derartige 64-Bit-Zahl weist, wenn sie als ein String bzw. eine Folge dargestellt wird, eine maximale Länge von 20 Stellen auf. Wie dies bereits vorstehend im Text beschrieben worden ist, wird eine Blockdatei unter Verwendung der Dateiobjekt-ID an Stelle des tatsächlichen Dateinamens gespeichert. Ein Beispiel ist eine Datei, deren ID "00000000001234567890" lautet, die drei Segmente aufweist und deren Blockgröße 256 K Bytes entspricht. Die Blockdatei mit der Bezeichnung "00000000001234567890.1.0001.block" bedeutet, dass die Blockdatei den ersten 256 K Byte Datenblock der Datei aufweist, dessen ID an dem Segment 1 gleich "00000000001234567890" lautet. Da es sich dabei um Segmentnummer 1 handelt, bedeutet dies ferner, dass die Blockdatei die ersten 256 K Bytes der ursprünglichen Datei enthält.
  • Eine Möglichkeit für die Erzeugung eines Knotenbegrenzungspfads für dieses Dateiobjekt ist es, dessen Wert als eine Folge zu verwenden und danach die Folge in eine Verzeichnishistorie aufzuteilen, wobei jedes Unterverzeichnis die nächsten drei Stellen verwendet. Zum Beispiel: Knotebegrenzungspfad = "000/000/000/012/345/678/90/1/0/". In diesem Fall wird die Blockdatei "00000000001234567890.1.0001.block" in dem Verzeichnis "000/000/000/012/345/678/90/1/0//" in dem Blockspeicherpfad gespeichert.
  • Unabhängig davon, welche wahlfreien IDs es in des System schaffen, es sollten sich nicht mehr als 1.000 Knoten in einem Verzeichnis befinden (die Unterverzeichnisnamen reichen von "000" bis "999"), und dies sicherzustellen umfasst keinerlei Plattenanalyse. Der Knotenbegrenzungspfad wird algorithmisch gebildet.
  • Eine weitere Möglichkeit, um einen Knotenbegrenzungspfad zu erzeugen, ist das Nutzen der Tatsache, dass die Dateiobjekt-ID keine vollständig wahlfreie Zahl darstellt – es ist lediglich eine eindeutige bzw. einzigartige Zahl für jede Datei, die zum Zeitpunkt der Erstellung erzeugt wird. Sie wird wie folgt erzeugt:
    Eindeutige Datei-ID = (ID des Ursprungsknotens) + (eine Folgenummer aus der Datenbank)
  • Die Folgenummer bzw. Sequenznummer ist eine Zahl, die von 1 beginnt und die von der Datenbank mit jeder Zahl erhöht bzw. heraufgesetzt wird. Die wertniedrigsten Stellen der eindeutigen Datei-ID werden für eine Reigenmodellauswahl unter den Verzeichnissen verwendet.
  • Zuerst wird der Knotenbegrenzungspfad als "/dir1/dir2/Dateiobjekt-ID/" erstellt, wobei dir1 = "Eindeutige Datei-ID & 1000" und dir2 = "(Eindeutige Datei-ID/1000)% 1000". Das heißt, dir1 stellt die letzten drei Stellen der eindeutigen Datei-ID dar, und dir2 stellt die drei Stellen vor den letzten drei Stellen der eindeutigen Datei-ID dar.
  • Ein Knotenbegrenzungspfad für eine ID "id" wird als {Knotenbegrenzungspfad-(ID)} bezeichnet. Zurück zu dem Beispiel aus der Abbildung aus 12B, in dem es zwei Speichervorrichtungen oder Blockspeicherpfade gibt, nämlich "BlockRoot1/" und "/BlockRoot2", und wobei die SCDN-ID gleich 0 ist. Die Datei, deren ID "00000000001234567890" lautet, wird in dem Speicher gespeichert, wobei das Beispiel die ersten sechs Datenblöcke des ersten Segments zeigt. Die Blockindexanordnungszellen der ersten sechs Blöcke des ersten Segments zeigen, dass der erste Block in dem Blockspeicherpfad 1 ("BlockRoot1/") gespeichert wird, und wobei der zweite Block in dem Blockspeicherpfad 2 ("BlockRoot2/") gespeichert wird, etc.
  • Die Blockindexierung ermöglicht es nicht nur, dass Datenblöcke einer Datei in mehreren Speichervorrichtungen gespeichert werden, um die E/A-Bandbreite zu erhöhen, sie ermöglicht es auch, dass Datenblöcke parallel importiert oder exportiert werden, anstatt in einer zusammenhängenden Folge bzw. Sequenz. Die Chunking- bzw. Zerteilungsverfahren und die Metadaten ermöglichen es gemeinsam, dass im Inneren des SCDN eine Datei dynamisch wie ein Fluid und nicht wie ein starrer Körper behandelt wird. Das Blockindexierungsverfahren verhindert es, dass verschiedene DS-Threads den gleichen Datenblock gleichzeitig importieren; die Methode stellt ferner einen schnellen Datenzugriff auf das VFCS 470 während dem Prozess des Wiederzusammensetzens bereit. Durch das Entfernen der herkömmlichen Anforderung zum Speichern einer ganzen Datei in einer einzigen Speichervorrichtung, können jedem Knoten des SCDN zu jedem Zeitpunkt neue Speichervorrichtungen hinzugefügt werden, um Dateien zu verschieben. Da das SCDN als ein globales Dateisystem eines Wide Area Netzwerks fungieren kann, kann es gewaltige Datenmengen aufweisen, wobei die Speicherkapazität in einem VFCS 470 Server unter Umständen nicht ausreicht, um die vollständige Darstellung des Dateisystems zu cachen. Die Metadateisystemstruktur wird somit eingeführt, um die Objektmetadaten und Datenblöcke in eine globale Dateisystemverzeichnisstruktur abzubilden, wobei es dies dem VFCS Vnode ermöglicht, nur eine teilweise Darstellung zu erzeugen, während sich auf die Metadateisystemstruktur verlassen wird hinsichtlich des fehlenden Abschnitts bzw. Teils der Darstellung. Wenn dies erforderlich ist, kann der fehlende Teil der Darstellung zeitnah in den VFCS Vnode verschoben werden.
  • 1. Zugriff auf ein Dateisystemobjekt
  • Sobald die Metadateisystemstruktur und die Objektmetadatendateien verfügbar sind, kann ein VFCS 470 diese Informationen verwenden, um eine globale Dateisystemdarstellung zu erzeugen und danach die Dateisystemanforderung für Datenträger-, Verzeichnis- und Dateiinformationen zu bedienen. Da alle Datenträger- und Verzeichnisinformationen leicht sind und in den Datenträger- und Verzeichnismetadatendateien gespeichert werden, ist das Bereitstellen der Datenträger- und Verzeichnisinformationen geradlinig. Dateiobjekte werden allerdings nicht nur in Blockdateien unterteilt, es ist ferner nicht erforderlich, dass sich alle Blockdateien für ein Dateiobjekt in dem lokalen Speicher befinden. In dem folgenden Abschnitt wird ein Ausführungsbeispiel der vorliegenden Erfindung eines Verfahrens zur Bereitstellung bzw. Serving eines Dateiobjekts und zum Importieren nicht residenter Abschnitte der Datei beschrieben.
  • a. Rekonstruktion einer Datei aus Blockdateien
  • Die Abbildung aus 14A zeigt ein Diagramm eines Prozesses 1400 der Rekonstruktion einer Datei aus mehreren Blockdateien 1401 durch das VFCS 470. Die Blockdateien 1400 werden in einen Prozess des Zusammensetzens 1410 eingegeben. Der Umkehrprozess des Blockierens wird als "Zusammensetzen" (Assembling) bezeichnet, wie dies bereits vorstehend im Text beschrieben worden ist. Das Virtual File Control System (VFCS 470) verwendet den Prozess des Zusammensetzens 1410, um mehrere Blockdateien in lineare Segment-/Spurdateien umzuwandeln. Der Prozess des Zusammensetzens 1410 erzeugt nur eine lineare Segment-/Spurdatei (z. B. die lineare Datei 1450), wenn die ursprüngliche Datei linear ist. Wenn die ursprüngliche Datei jedoch nicht linear ist, erzeugt der Prozess des Zusammensetzens 1410 mehrere lineare Segment-/Spurdateien 1420. Eine lineare Segment-/Spurdatei wird durch die lineare Kombination der entsprechenden Blockdateien erzeugt. Zum Beispiel wird die Videospurdatei aus der Abbildung aus 10A neu erzeugt durch lineare Kombination (d. h. Summieren) der Blockdateien V1, V2, V3 und V4. Lineare Spurdateien 1420 können ferner in dem Prozess des Multiplexierens 1430 kombiniert werden, um die nicht lineare ursprüngliche Datei 1440 zu erzeugen. Der Multiplexing-Prozess setzt die Spurdateien einfach neu zusammen, so dass die ursprüngliche nicht lineare Datei erzeugt wird. Dateien werden direkt "on the fly" wieder zusammengesetzt als Reaktion auf eine Anforderung eines Benutzers für den Zugriff auf die Datei. Es wird keine zusätzliche Kopie der Datei erzeugt.
  • Die Abbildung aus 14B veranschaulicht ein Ausführungsbeispiel der vorliegenden Erfindung in der Situation, wenn Dateiobjekte regelmäßig aufgeteilt werden (d. h. die Blockgröße aller Blöcke mit Ausnahme des letzten Blocks ist identisch), und das VFCS 470 bedient wahlfreie Dateisystemanforderungen. Die Abbildung aus 14B zeigt ein Flussdiagramm eines Algorithmus 1460 zur Lokalisierung von Daten in dem Prozess des Wiederzusammensetzens einer Datei in Echtzeit (Schritte 14621466). So kann zum Beispiel eine Dateisystemanforderung verarbeitet werden, bei der es sich um eine Leseanforderung handelt. In dem Schritt 1462 kann diese Anforderung wie folgt lauten: Anzahl X Bytes aus Y-Versatz von Datei Z lesen (wobei Z eine Dateikennung ist, während Y den Versatz bezeichnet und X für die Anzahl der Bytes angibt, die beginnend bei dem Versatz gelesen werden sollen. Das VFCS 470 empfängt die Dateisystemanforderung (Schritt 1464). Da das VFCS 470 die eindeutige Datei-ID als Kennung verwendet, ist die Datei-ID bekannt. Das VFCS 470 kann das erste Byte der Daten in einem Block B mit diesem Ansatz 1164 lokalisieren:
    Setzen eindeutige Datei-ID = U = Dateikennung Z
    Setzen Blockanzahl der Datei = B = ((Y% Blockgröße) + 1)
    Setzen Versatz in Block B = F = (Y/Blockgröße)
    Setzen Segment, das Block B = M = Funktion aufweist, die B auf das Segment Func(Segmentanordnung von U, B) abbilden
    Setzen Blockanzahl von Block B innerhalb von Segment M = N
    Setzen Blockindexanordnungszellen für B = C
    Setzen Wert von C = Val(C), der den Blockspeicherpfadindex darstellt.
  • Der Pfadnahme der Blockdatei, der den Anfang der angeforderten Daten aufweist, lautet dabei:
    /Blockpfad(Val(C)/SCDN ID/Knotenbegrenzungspfad(U.M.N).block
  • Bei diesem Pfadnamen öffnet das VFCS 470 die Blockdatei, sucht eine Anzahl von F Bytes und liest die Anzahl X von Bytes. Wenn der Block B nicht die ganze Anzahl von Bytes aufweist, kann das VFCS 470 mit dem nächsten Block für die verbliebenen Daten fortfachen.
  • b. Dateizugriff
  • Ein Endbenutzer kann einen Zugriff auf ein Dateiverzeichnis über eine VFCS 470 Dateisystemschnittstelle oder über eine Anwendungsschnittstelle, wie zum Beispiel einen Web-Browser, an dm Client-System des Endbenutzers anfordern. Wenn ein Endbenutzer durch einen Anwendungsserver bedient wird, wird die Anforderung weitergeleitet an einen entsprechenden Anwendungsserver (d. h. einen Server, der sich näher an dem Endbenutzer befindet, und mit einer Bandbreite zur Bearbeitung der Anforderung), der die Datei an den Endbenutzer bereitstellt, wie zum Beispiel ein Streaming Server für die Zustellung großer Videodateien, oder ein FTP-Server, der in der Lage ist das VFCS 470 als dessen entferntes Dateisystem anzunehmen, um Zugriff auf den Inhalt in dem SCDN zu haben. Der Anwendungsserver befindet sich in dem Netzwerk und kann somit mit dem am nächsten gelegenen Knoten des SCDN verbunden werden. Die Speicherdatenträger des SCDN-Knotens (d. h. Cache-Speicher) können einige, keine oder alle der Blöcke der angeforderten Datei des Endbenutzers aufweisen. Wenn entweder zusätzlicher Inhalt oder der ganze Inhalt der Datei benötigt wird, kommuniziert das VFCS 470 (über FDP "prepare") mit einem lokalen DS, so dass eine FDP-Anforderung "search" an alle Nachbarn des DS ausgegeben wird, um die benötigten (nicht residenten) Abschnitte der Datei zu lokalisieren. Der Befehl "search" wird mittels Multicasting-Methode verteilt.
  • Zum Beispiel wird davon ausgegangen, dass die angeforderte Datei eine Länge von 10 GB aufweist, was insgesamt 20 Blöcken eines Speichers von 500 MB entspricht (d. h., wenn jeder Block gleich 500 MB ist). Ferner wird angenommen, dass sich nur sechs derartige Blöcke von 500 MB lokal in dem SCDN-Knoten befinden. Auch wenn nur 3 GB der angeforderten Datei tatsächlich in dem Speichersystem des SCDN-Knotens gespeichert werden, "scheint es" für den Endbenutzer oder den Anwendungsserver über das VFCS 470 als würde sich die ganze Datei lokal befinden. Auf Anforderung durch das VFCS 470 werden die nicht residenten Abschnitte der Datei von verschiedenen Verteilungsservern in dem SCDN gleichzeitig nicht zusammenhängend gezogen und lokal gespeichert als Blöcke in dem gemeinsam genutzten Speicher (z. B. lokale Speichervorrichtungen). Das VFCS 470 setzt die gespeicherten Blockdateien in Echtzeit zusammen und multiplexiert diese, um die Anforderungen von dem Anwendungsserver oder Endbenutzern zu erfüllen.
  • Zum Lokalisieren der nicht residenten Abschnitte der Datei gibt ein DS in einem Cluster von DS eine Suchanforderung aus, welche den SCDN-Baum beginnend von den jeweiligen Nachbarknoten durchläuft. Die Suchanforderung kann die Verteilungskriterien der angeforderten Datei und einen Zähler für die Zeit bis zur Aktivierung aufweisen (Time-to-Live-Zähler). Ein Time-to-Live-Zähler kann zum Beispiel spezifizieren, dass die Suchanforderung nur zwei Hubs des SCDN von dem anfordernden Knoten durchlaufen bzw. passieren muss. Wenn ein Nachbarknoten die Suchanforderung empfängt und evaluiert, kann der Knoten den Zähler zum Beispiel herabsetzen. Eine Suchanforderung endet, sie auf einen Blattknoten, einen "abschließenden" Knoten trifft oder wenn der Time-to-Live-Zähler auf Null steht (d. h. wenn die Suchanforderung einen Zähler aufweist). Wenn die fehlenden Daten nicht lokalisiert werden und der Time-to-Live-Zähler Null erreicht, d. h. wenn er in der Suchanforderung enthalten ist, durchläuft die Suchanforderung weiter die SCDN-Knoten in dem Umkehrpfad des anfänglichen Verteilungsprozesses. Ein Knoten antwortet direkt auf den anfordernden DS, wenn der angeforderte Teil der Datei in diesem Knoten existiert. Knoten, die keinen Teil der angeforderten Datei aufweisen, antworten nicht. Eine Antwort umfasst auch den Leistungsstatus des Knotens, der die Antwort sendet, und einen Indikator der Abschnitte der verfügbaren Datei. Wenn das anfordernde DS Cluster Antwortpakete von beliebigen Knoten in dem SCDN empfängt, was anzeigt, dass sie einen Teil oder angeforderten Datei oder die ganze angeforderte Datei aufweisen, laden die DS in dem Cluster den fehlenden Inhalt von den Knoten herunter, die am wenigstens Verkehr bzw. Aufkommen aufweisen, und wobei der Inhalt in den gemeinsam genutzten Speichervorrichtungen des Verteilungsservers lokal gespeichert wird. Während das VFCS 470 somit die Daten an den Endbenutzer bereitstellt, erhalten die Verteilungsserver (DS) den Rest der Datei von anderen Knoten, und es gibt keine Unterbrechung der Kommunikation zwischen den Endbenutzern und dem VFCS 470.
  • Wie dies bereits vorstehend im Text beschrieben worden ist, wird eine Datei in Abschnitte (z. B. Blockdateien) unterteilt bzw. aufgeteilt und über das SCDN verteilt. Wenn somit durch die Suchanforderung Knoten gefunden werden, welche Abschnitte der Datei aufweisen, kann ein Cluster von DS Abschnitte dieser Datei parallel von mehreren Knoten herunterladen, im Besonderen von den Knoten, die gegenwärtig am wenigsten verstopft sind bzw. am wenigsten Verkehr aufweisen. Das einleitende DS Cluster entscheidet auf der Basis der Leistungsinformationen in den Antwortpaketen, wo der fehlende Inhalt heruntergeladen werden soll (d. h. "pull"), um die Latenz- und Bandbreitenanforderungen an anderen Verteilungsserver-Knoten zu minimieren. Wenn mehre DS-Threads oder Prozesse verschiedene Abschnitte einer Datei gleichzeitig herunterladen, werden die DS-Threads und Prozesse mit einem Sequenz- oder Folgeserver kombiniert, so dass nicht mehr als ein Thread oder Prozess den gleichen Datenblock herunterladen.
  • Nachdem die Datenblöcke von den entsprechenden Verteilungsservern gezogen worden sind, setzt ein VFCS 470 oder ein Cluster von VFCS 470 die angeforderten Daten für eine Datei aus den Datenblöcken in Echtzeit für den Endbenutzer zusammen. Das VFCS 470 ermöglicht es den Anwendungsservern oder Endbenutzern das verteilte Dateisystem anzuzeigen, das in dem ganzen SCDN existiert, und zwar als ein einziges großes virtuelles Dateisystem.
  • c. Abrufen von nicht zusammenhängenden Dateisegmenten
  • Aus einer Perspektive entspricht jeder gespeicherte Block in dem Systemspeicher eines SCDN-Knotens einem zusammenhängenden Abschnitt einer Datei (z. B. ein zusammenhängendes Intervall eines Films, wenn es sich um eine Videodatei handelt). Da die Datei in Blöcke unterteilt ist, können all diese Blöcke unabhängig voneinander gespeichert oder neu angeordnet werden. Als Beispiel dient eine Videodatei, bei welcher der Abschnitt einen Film umfasst. Wenn eine Betrachtung bzw. Anzeige der einzelnen Abschnitte vom ersten Abschnitt bis zum letzten Abschnitt nacheinander erfolgt, so würde dies dazu führen, dass der ganze Film angezeigt bzw. angesehen wird. Da sich die gleichen Inhaltsabschnitte (d. h. Abschnitt) an mehreren unterschiedlichen Knoten in dem SCDN befinden, kann der nicht zusammenhängende Abschnitt einer Datei (z. B. nicht zusammenhängende Abschnitte eines Films) unabhängig voneinander und parallel abgerufen werden. Dies weist mehrere wichtige Nebenwirkungen auf. Da ein DS zum Beispiel benötigte Inhaltsabschnitte von mehreren unterschiedlichen Verteilungsservern erhalten kann, erhöhen sich die Zuverlässigkeit und die Verfügbarkeit des SCDN erheblich. Darüber hinaus kann der Endbenutzer effizient auf den Abschnitt einer Datei "abweichend von der Reihenfolge" zugreifen, wobei ein Film zum Beispiel schnell vorgespielt bzw. vorgespult werden kann, ohne tatsächlich alle Abschnitte des Films herunterladen zu müssen, die nicht wirklich angezeigt bzw. angesehen werden. Hiermit wird festgestellt, dass ein "Pruning" (Freimachen des Speichers, der von bestimmten Blöcken verwendet wird für eine Verwendung durch andere Blöcke) auf "Blockebene" (im Vergleich zu der ganzen "Dateiebene") auf der Basis bestimmter Richtlinien des Inhalteeigentümers vorgenommen werden kann, wobei das Pruning auf Nutzungsmustern basieren kann. Die Nutzung des Inhalts kann auch auf Blockebene bewertet werden.
  • 3. VFCS
  • a. Implementierungsoptionen für VFCS
  • Ein VFCS 470 kann auf eine Reihe unterschiedlicher Art und Weisen implementiert werden. Die Abbildung aus 15A zeigt eine erste optionale Implementierung eines Internet Protocol (IP) Front-End und eines Network Attached Storage (NAS) Back-End. Der bzw. die Anwendungsserver 1502 sind über einen IP-Link 1504 mit einer Station 1500A gekoppelt.
  • Die Station 1500A weist einen Virtual File Control System Cluster 1510, einen Verteilungsserver-Cluster 1520 und eine bzw. mehrere Steuereinheit(en) 1530 auf. Der Virtual File Control System Cluster 1510 weist ein oder mehrere Virtual File Control Systeme auf, die auf einem oder mehreren Servern ausgeführt werden.
  • Der VFCS Cluster 1510 (und die darin angeordneten Server) kommuniziert mit einer bzw. mehreren Front-End-Anwendung(en) an dem bzw. den Anwendungsserver(n) 1502 unter Verwendung von TCP/IP oder UDP/IP Kommunikation über den Link bzw. Übermittlungsabschnitt 1504 und mit einer oder mehreren Network Attached Speichervorrichtungen bzw. ans Netzwerk angeschlossenen Speichervorrichtungen (NAS 1540) an einem Back-End über den Übermittlungsabschnitt 1544. Der VFCS Cluster 1510 (und jeder Server darin) kommuniziert ebenfalls mit dem Verteilungsserver-Cluster 1520 unter Verwendung von TCP/IP oder UDP/IP Kommunikation über den Übermittlungsabschnitt bzw. den Link 1516 und mit der bzw. den Steuereinheit(en) 1503 über den Übermittlungsabschnitt 1514. Der Verteilungsserver-Cluster 1520 und die Steuereinheit(en) 1503 kommunizieren miteinander unter Verwendung von TCP/IP oder UDP/IP Kommunikation über den Übermittlungsabschnitt bzw. Link 1524. Der Verteilungsserver-Cluster 1520 und die Steuereinheit(en) 1503 kommunizieren ferner direkt mit NAS 1540 unter Verwendung von TCP/IP oder UDP/IP Kommunikation über entsprechende Übermittlungsabschnitte 1526, 1529.
  • Die Abbildung aus 15B zeigt eine zweite optionale Implementierung einer Station 1500B mit einem IP Front-End und einem Storage Area Network (SAN) Back-End. Der VFCS Server kommuniziert mit der Front-End-Anwendung unter Verwendung von TCP/IP oder UDP/IP Kommunikation sowie mit einem Storage Area Network an dem Back-End. Fibre Channel-Zwischenverbindungen (1552, 1554, 1556, 1558, die durch graue Schattierungen dargestellt sind) werden eingesetzt, um den Virtual File Control System Cluster 1510, den Verteilungsserver-Cluster 1520, die Steuereinheit(en) 1530 und ein Storage Area Network (SAN) oder ein NAS 1545 zu koppeln.
  • Die Abbildung aus 15C zeigt eine dritte optionale Implementierung einer Station 1500C mit einem integrierten Front-End, SAN oder NAS Back-End. In diesem Fall ist die VFCS Funktionalität 1570 (z. B. ein VFCS-Stapel) direkt in den bzw. die Anwendungsserver 1502 integriert. An dem Back-End kommuniziert ein VFCS mit einem SAN oder einem NAS über einen Hochgeschwindigkeits-Fibre-Channel-Übermittlungsabschnitt 1544.
  • Die folgende Beschreibung konzentriert sich auf die erste optionale Implementierung der Station 1500A, wobei der Fachmann auf dem Gebiet jedoch erkennt, dass die Konzepte auch auf andere Implementierungen anwendbar sind.
  • Einer der Schlüsselparameter in einem VFCS 470 ist die globale eindeutige Dateisystemobjekt-ID. Jedes Dateisystemobjekt, unabhängig davon, von welchem Knoten es erzeugt wird, weist einen globalen eindeutigen Bezeichner auf. Diese eindeutige ID ermöglicht es nicht nur, dass die Dateisystemobjekte an einer anderen Stelle in dem Netzwerk verfolgt werden, sie wird auch durch das VFCS 570 als eine Dateisystemobjektkennung exportiert. Durch das Exportieren der gleichen Kennung für das gleiche Dateisystemobjekt von einem beliebigen VFCS 470 kann eine Gruppe von VFCS 470 in Clustern zusammengefasst werden, um einen Endbenutzer-Client transparent zu unterstützen. Siehe dazu die Abbildung aus 6. Wenn ein VFCS einen Fehler aufweist, kann das andere VFCS die Endbenutzeranforderung erfüllen, da sie die Dateisystemobjektkennung erkennt, so wie dies jedes VFCS tut. Somit kann ein VFCS in Clustern zusammengefasst werden, um einen Lastausgleich vorzusehen und um transparent eine aktive Ausfallsicherung bereitzustellen. Wenn ein VFCS Cluster NFS UDP-Unterstützung bereitstellt, ist er in der Lage eine Ausfallsicherung bzw. Failover während der Sitzung (In-Session) vorzunehmen, wobei im Falle einer CIFS- oder NFS TCP-Unterstützung ein VFCS Cluster eine Ausfallsicherung bzw. Failover je Sitzung bereitstellen kann. Die Abbildung aus 6 zeigt ein Ausführungsbeispiel, bei dem die Lastverteilung bzw. der Lastausgleich an den VFCS Servern eingesetzt wird. Das VFCS ist so gestaltet, dass Anforderungen von einem Anwendungsserver an jeden VFCS Server in einem Cluster geleitet werden können, wodurch die Last auf die VFCS Server verteilt wird. Zu diesem Zweck ist die Dateisystemobjektkennung, welche das VFCS an die Anwendung zurückgibt, speziell so gestaltet, dass die Anwendung danach die gleiche Dateisystemobjektkennung für jeden VFCS Server verwenden kann, und wobei der VFCS-Server diese decodieren kann. Das Design bzw. der Aufbau der VFCS Dateisystemobjektkennung berücksichtigt die Tatsache, dass das VFCS zwei entfernte File Sharing-Protokolle in einem Cluster unterstützen muss, nämlich NFS und CIFS. Um die oben genannten Merkmale zu erfüllen, erfüllt die eindeutige Dateisystemobjektkennung gemäß einem weiteren Merkmal der Erfindung die folgenden beiden Kriterien:
    • (a) Die Dateisystemobjektkennung ist plattformunabhängig, so dass keine Anpassungen abhängig von dem Betriebssystem und dem Dateisystem vorgenommen werden müssen.
    • (b) Die Dateisystemobjektkennung kann durch jeden Server in dem VFCS Cluster decodiert werden, und wenn sie decodiert wird, bezeichnet sie die gleiche Datei in dem Cluster.
  • Die VFCS Dateisystemobjektkennung weist drei Informationsstücke auf: einen Dateisystembezeichner, eine Ursprungsknoten-ID und eine Dateisystemobjekt-ID (Datenträger, Verzeichnis oder Datei). Der Dateisystembezeichner wird zu dem Zeitpunkt erstellt, wenn das VFCS in den Kernel geladen wird. Die Ursprungsknoten-ID und die Dateisystemobjekt-ID werden unter Verwendung von Standarddateisystem-E/A-Schnittstellen in einer Kernel-Datenstruktur (inode) gespeichert. Eine Kennung wird von einem VFCS Server bei der Kommunikation mit Anwendungen verwendet, um eine Datei oder ein Verzeichnis in dem globalen Dateisystem des SCDN eindeutig zu identifizieren. Ein VFCS Server weiß, wie eine Dateisystemobjektkennung decodiert werden muss, die abhängig ist von dem Dateisystem. Bei einem herkömmlichen UNIX-Dateisystem weist eine Dateikennung eine Dateisystem-ID, eine inode-Nummer und eine inode-Erzeugungsnummer auf. Bei einem herkömmlichen nicht-UNIX-Dateisystem kann es sich bei einer Dateikennung um einen Zeiger auf eine Datenstruktur in dem Speicher des Dateisystems handeln. Da das herkömmliche Dateisystem keine hart codierte ID als eine Dateisystemobjektkennung verwendet, weisen zwei gespiegelte herkömmliche Dateisysteme auch identische Dateien und Verzeichnisse auf, welche nicht die gleiche Kennungsnummer für das gleiche Objekt aufweisen. Somit kann für ein herkömmliches Dateisystem keine Lastverteilung vorgenommen werden.
  • b. VFCS Initialisierungsprozedur
  • Die Abbildung aus 16 zeigt ein Flussdiagramm einer Routine 1600, wobei die Operationen eines VFCS Servers (z. B. VFCS 470) dargestellt werden, die während dem Prozess der VFCS Initialisierung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung (Schritte 16011607) ausgeführt werden. In dieser Abbildung werden NAS- Vorrichtungen (Network Attached Storage-Vorrichtungen) für das gemeinsam genutzte Speichersystem verwendet. Die Metadateisystemstruktur und die Blockspeicherpfade (einschließlich Datenträgermetadatendateien) werden in der Operation 1601 eingerichtet, um Zugriff auf deren Daten bereitzustellen. Für Zwecke der vorliegenden Veranschaulichung wird angenommen, dass die Metadateisystemstruktur an /mp/metadata/ eingerichtet wird. Für einen Zugriff auf die ganze Anordnung der Blöcke, die in dem Speichersystem zur Verfügung stehen, werden alle Speichervorrichtungen in der Operation 1602 eingerichtet (mounted). Im Sinne der vorliegenden Erläuterung lauten die Einrichtungs- bzw. Mount-Punkte /mp/blockfiles bzw. /mp/blockdateien, wie zum Beispiel /mp/blockfiles/v1, /mp/blockfiles/v2, etc.
  • Ein VFCS Server initialisiert den Datenträgernamens-Cache, indem die Datenträgermetadatendatei in den Cache geladen wird (z. B. Operation 1603). Während der Operation 1604 beginnt der VFCS Server mit der Gestaltung des im Speicher vorgesehenen Dateisystems, das das Laden der ganzen Metadateisystemstruktur umfasst, und wobei der Wurzel der Struktur eine konstante Kennung zugewiesen wird. Ein Ausführungsbeispiel der vorliegenden Erfindung kann einen Baum VNODE unter Unix als die Kernel-Schnittstelle zu dem im Speicher vorgesehenen Dateisystem verwenden (Baum von "inodes" in dem Speicher). Das im Speicher vorgesehene Dateisystem ist eine Baumstruktur von inode, welche das globale Dateisystem darstellt. Die Initialisierung weist umfasst somit die Erstellung eines teilweisen im Speicher vorgesehenen Dateisystems in Form einer inode-Struktur und eines Baums VFCS VNODE als Kernel-Schnittstelle zu dem inode-Baum. Das Front-End VFS VNODE weist eine Wurzel VFCS VNODE für das exportierte Wurzel- bzw. Stammverzeichnis auf. Die Initialisierung weist ferner die Zuordnung einer konstanten Kennung an das Wurzelverzeichnis auf. Zu Zwecken der vorliegenden Erläuterung lautet das exportierte Verzeichnis/export. Das VFCS fährt danach gemäß der Anzeige in der Operation 1605 fort mit dem Aufbau des im Speicher vorgesehenen Dateisystems, indem Datenträger bzw. Volumen und Verzeichnisse sowie die Kernel-Schnittstelle erzeugt werden, d. h. die VFCS_VNODES von Datenträgern und VFCS_VNODES von Verzeichnissen. Zum Beispiel nehmen die Datenträger die Form/export/vol1, /export/vol2, etc. an. Es gibt einen VFCS_VNODE für jeden Datenträger und jedes Verzeichnis. Die zugeordneten Datenträger- und Verzeichnismetadatendateien werden geladen und die zugeordnete für das Objekt eindeutige ID wird der Objektkennung (Datenträger oder Verzeichnis) zugeordnet. Zum Beispiel wird angenommen, dass Studio X einen Datenträger darstellt, dessen eindeutige ID "123" lautet. Wenn eine Anwendung auf den Datenträger Studio X unter Verwendung dessen Namen zugreift, wird eine Kennung von 123 an die Anwendung zurückgegeben.
  • Während der Operation 1606 initialisiert das VFCS den Dateinamenscache (File Name Cache). Zum Beispiel erhält der VFCS Server abhängig von der Speicherverfügbarkeit eine vollständige oder teilweise Liste der Dateinamen und die eindeutige ID einiger der beliebtesten Dateien. Das VFCS erstellt die VNODEs oder die zugeordneten, im Speicher vorgesehenen inodes für diese Dateien nicht bevor auf diese zugegriffen wird. Dies ist ein Beispiel für ein "selektives und dynamisches Caching", d. h. die Caches, die für die Population ausgewählt werden, und wann diese populiert bzw. besetzt werden (zum Zeitpunkt der Initialisierung oder in Laufzeit) werden aus Leistungsgründen bestimmt. Nach der Initialisierung weist das im Speicher vorgesehene Dateisystem des VFCS einen Wurzelknoten und die Datenträgerknoten in den ersten beiden Schichten des Dateisystembaums auf. Die dritte und tiefere Ebene des Dateisystembaums weist Dateien und Verzeichnisse auf, und diese Objekte werden dynamisch belegt. Wenn eine Datei oder Verzeichnismetadaten sich nicht in dem Cache befinden, wenn ein Endbenutzer das Dateisystemobjekt anfordert, muss das VFCS die Metadaten aus dem Speicher lesen und einen inode für das im Speicher vorgesehene Dateisystem und den zugeordneten VNODE erzeugen. Nachdem ein inode und VNODE erstellt bzw. erzeugt worden sind, kann das VFCS die Blockindexanordnung prüfen und ein Anforderungspaket "prepare" an einen lokalen DS senden, um die nicht residenten Datenblöcke zu importieren.
  • Das VFCS fährt weiter mit dem Aufbau des im Speicher vorgesehenen Dateisystem-Cache fort während der Laufzeit, während der auf Dateien zugegriffen wird. Wenn ein Anwendungsserver auf eine bestimmte Datei zugreift, wie zum Beispiel /export/vol1/dir1/file_nameX, liest der VFCS Server, der die Anforderung bedient, den Dateinamen in dem Dateinamen-Cache aus, erzeugt einen VFCS_VNODE und den zugeordneten "inode" in dem im Speicher vorgesehenen Dateisystem für die entsprechende Datei und erhält die Liste der Blockdateien für die Datei. Gleichzeitig gibt der VFCS Server ein Anforderungspaket "prepare" über einen DSC Load Balancer bzw. eine Lastverteilungseinrichtung an einen DS aus. Nachdem der DS die angeforderten Dateiabschnitte heruntergeladen hat, speichert der DS die Abschnitte als Blöcke, aktualisiert die zugeordnete Blockindexanordnung der Datei, um die Ankunft der neuen Datenblöcke zu reflektieren, signalisiert VFCS oder VFCS ruft die Metadatendateien ab und erkennt, dass die Blöcke in dem Speichersystem vorhanden sind; der VFCS Server liest Datenblöcke, setzt diese zusammen und multiplexiert sie und sendet die Daten an den anfordernden Anwendungsserver. Jeder VFCS Server führt ein Read-Ahead-Caching oder eine direkte Paketweiterleitung (Spoofing) aus, um die Leistung bzw. die Performance zu verbessern.
  • c. Prozedur für den Zugriff auf ein VFCS Dateisystemobjekt
  • Die Abbildung aus 17A zeigt eine Routine 1700 der Operationen des VFCS 470, die während Laufzeit ausgeführt werden (Schritte 17021719). Wenn ein Anwendungsserver oder ein Endbenutzer-Client den Zugriff auf ein Dateisystemobjekt anfordert, prüft das VFCS 470 zuerst, ob sich der VFCS_VNODE und dessen zugeordneter inode für die Datei in dem im Speicher vorgesehenen Dateisystem des VFCS befinden (Operation 1711). Anders ausgedrückt bestimmt in der Operation 1711 der VFCS Server, ob ein VFCS-Knoten (z. B. ein Front-End-Vnode) für das Dateisystemobjekt existiert. Wenn dies der Fall ist, fährt der VFCS Server mit dem Schritt 1715 fort, während er ansonsten mit dem Schritte 1712 fort fährt. Für ein Dateiobjekt überprüft das VFCS in dem Schritt 1712 dessen Dateinamens-Cache, um zu bestimmen, ob ein Eingang für die Datei existiert (d. h. existieren die verwandten Dateiobjektmetadaten in dem Cache?). Wenn keine zugeordneten Dateimetadaten existieren oder wenn es sich bei dem angeforderten Objekt um einen Datenträger oder ein Verzeichnis handelt, fährt der VFCS Server mit der Operation 1713 fort und liest die Metadateisystemstruktur und die zugeordneten Metadatendateien. Gleichzeitig kann der VFCS Server einen Teil des Speichers frei machen, indem unbenutzte oder am wenigsten genutzte inodes (im Speicher vorgesehenes Dateisystem) und Front-End-Vnodes entfernt werden. Für ein Dateiobjekt speichert das VFCS die verwandten bzw. zugeordneten Dateisystemobjektmetadaten und speichert die Informationen in dem Dateinamens-Cache (File Name Cache) und fährt danach mit der Operation 1714 fort. Wenn jedoch in dem Schritt 1712 zugeordnete Dateimetadaten in dem Dateinamens-Cache existieren, so fährt der VFCS Server unverzüglich mit der Operation 1714 fort, wobei der im Speicher vorgesehene inode des VFCS-Dateisystems und der Front-End VNODE für die Datei erstellt werden. Wenn es sich bei einem Objekt um eine Datei handelt, speichert das VFCS das Dateiobjekt in dem Dateinamens-Cache. Danach fährt das VFCS direkt mit der Operation 1715 fort.
  • Während der Operation 1715 prüft der VFCS-Dateiserver, ob es sich bei dem angeforderten Objekt um einen Datenträger oder ein Verzeichnis handelt, und wenn dies der Fall ist, springt der Ablauf zu 1717. Wenn es sich bei dem angeforderten Objekt um eine Datei handelt, prüft der Server ferner, ob etwaige Blöcke für die angeforderte Datei in dem (vorübergehenden) Vorerfassungs-Block-Cache existieren. Wenn keine derartigen Blöcke vorhanden sind, fährt der VFCS Server mit der Operation 17166 fort, wo er Blöcke aus dem Speichersystem der Station liest, die der angeforderten Datei zugeordnet sind, ein Anforderungspaket "prepare" an den DSC der Station sendet, um die fehlenden Blöcke wieder zu belegen, einen Read-Ahead-Vorgang ausführt und danach mit der Operation 1717 fort fährt. Wenn hingegen einer oder mehrere Blöcke für die angeforderte Datei in dem Cache für vorerfasste Blöcke existieren, fährt der VFCS Server nach 1715 direkt mit 1717 fort. Wenn das VFCS einen Lesevorgang aus dem Speicher ausführt, wendet es einen Algorithmus an, der in Bezug auf den Schritt 1466 aus der Abbildung aus 14B beschrieben wird, um die Datenblöcke zu lokalisieren.
  • In der Operation 1717 erfasst der VFCS Server ferner die Datenträger- oder Verzeichnisinformationen, oder wenn es sich bei den angeforderten Daten um eine Datei handelt, setzt er die Datenblöcke wieder zusammen und multiplexiert diese, und in dem schritt 1719 führt er ein Read-Ahead-Caching aus, um die Leistung zu verbessern. Ferner kann der VFCS Server eine direkte Paketweiterleitung oder ein Paket-Spoofing ausführen, um Daten direkt aus dem Back-End-Speicher ohne Pufferkopiervorgang zu der Front-End-Anwendung zu transportieren.
  • Die Anzahl der vorerfassten Blöcke, die ein VFCS im Cache speichert, ist abhängig von der lokalen Speicherverfügbarkeit in dem VFCS Server. Die dritte und tiefere Ebene von Verzeichnissen und die Datei des im Speicher vorgesehenen Dateisystems können einem Pruning unterzogen werden, und der Cache der vorerfassten Blöcke kann geleert werden, wenn der Speicherplatz knapp wird. Abhängig von der Speicherverfügbarkeit kann ein VFCS eine vollständige oder teilweise Gruppe von Dateisystemverzeichnissen im Cache speichern. Bei begrenztem Speicher werden nur die Dateimetadaten für die Dateien im Cache gespeichert, auf welche am häufigsten zugegriffen wird, und danach wird der Cache regelmäßig aktualisiert auf der Basis der letzten Nutzungsinformationen. Dabei handelt es sich um das "selektive und dynamische Caching" des globalen Dateisystems.
  • Zum Beispiel zur Unterstützung einer Anzahl X von Datenträgern/Verzeichnissen, eine Anzahl Y von Dateien und eine Anzahl Z von gleichzeitigen Benutzern, jeweils mit einer Anzahl N von vorerfassten Blöcken für die bestmögliche Leistung, wird ein VFCS mit einer Speichergröße unter Verwendung der folgenden Gleichung konfiguriert:
    Speichergröße in Mbyte =
    VFCS OS-Speicheranforderung +
    VFCS Laufzeit-Speicheranforderung +
    X·(erforderlicher Speicher für jeden Datenträger-/Verzeichnis-Cache) +
    Y·(erforderlicher Speicher für jeden Dateinamens-Cache) +
    (1 + X + Y)·(Größe des VNODE-Baums) + Z·N·(Blockgröße).
  • Während der Behandlung der Anforderung kann das VFCS auch Dienstgüterichtlinien gemäß einer Gruppe von konfigurierten Parameter anwenden. Die Abbildung aus 17B zeigt eine Routine 1720 für die Anwendung von Richtlinien zur Dienstgüte bzw. Servicequalität auf der Basis des Benutzer- und Objektsystemtyps gemäß einem Ausführungsbeispiel der vorliegenden Erfindung (Schritte 17201722). Zum Beispiel kann die Routine 1720 in den vorstehend beschriebenen schritten 1702 und 1706 ausgeführt werden.
  • Die Routine 1720 veranschaulicht, dass während eine Anforderung empfangen und behandelt bzw. bearbeitet wird oder wenn nicht residente Datenblöcke von anderen Knoten importiert werden müssen, das VFCS konfigurierte Dienstgüterichtlinien abrufen kann (Schritt 1720). Zum Beispiel kann eine Richtlinie angeben, dass einer bestimmten Benutzergruppe höhere Priorität in Bezug auf Netzwerkressourcen eingeräumt wird und somit eine höhere Dienstgüte. Die Parameter können Benutzer, Dateisystemobjekt, Dateityp, Region bzw. Gebiet, Inhalteeigentümer, etc. umfassen. Wenn eine Richtlinie identifiziert wird, kann ein VFCS Netzwerk- und Speicherressourcen von Speichervorrichtungen, Netzwerk-Switches, Routern und anderen Servern reservieren (Schritt 1722).
  • d. VFCS-Module
  • Die Abbildung aus 18 zeigt Module in einem VFCS 1800 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. In dem SCDN-Netzwerk 100 existieren Dateien in Form vieler kleiner Blockdateien mit konfigurierbarer Größe, die in mehreren Speichervorrichtungen gespeichert sind, und Verzeichnisse und Datenträger existieren in der Form einer Metadatendatei- und Metadateisystemstruktur in dem Speicher aller Knoten. Das VFCS 1800 stellt einen speziellen Proxy-Dateiserver oder einen Dateisystem-Gateway dar, der für Endbenutzer-Clients oder Anwendungsserver eine Dateisystemschnittstelle sowohl in NFS- als auch in CIFS-Protokollen bereitstellt. Die folgende Beschreibung beschreibt hauptsächlich die NFS-Implementierungen. Zu den Aufgaben des VFCS 1800 zählen: 1) die Darstellung eines globalen Dateisystems; 3) das Zusammensetzen von "Blockdateien" in Echtzeit nach Anforderung durch Anwendungsserver, so dass die Anwendungsserver glauben, dass die Datei-E/A- an einer einzelnen großen Datei ausgeführt wird; und 3) die Modifikation von Dateisystemobjekten zu ermöglichen, die Verteilung von Aktualisierungen zu verwalten und einzuleiten. Das VFCS 1800 kann als ein Dateisystem-Gateway betrachtet werden, wobei ein NFS- und CIFS-Front-End an die Benutzer-Clients bereitgestellt wird und ein zugrunde liegendes Dateisystem an dem Back-End verwendet wird. Es kann als eine Dateisystemüberlagerung betrachtet werden. Bei dem zugrunde liegenden Dateisystem kann es sich um ein lokales Dateisystem handeln, das auf direkt angeschlossenen Speicher- oder Fibre Channel Storage Area-Netzwerk-Vorrichtungen aufgebaut wird, wobei es sich aber auch um einen Network Attached Storage (NAS) handeln kann. Für den Fall, dass es sich bei dem zugrunde liegenden Dateisystem um ein NAS handelt, wird ein NFS-Client an dem Back-End eingesetzt, um ein VFCS 1800 zu unterstützen. In diesem Fall muss das VFCS 1800 das zugrunde liegende System "einrichten" (mount).
  • Für den Beginn der Verwendung von NFS über VFCS muss eine Anwendungsservervorrichtung oder ein Endbenutzergerät mit NFS-Client an dem globalen Dateisystem eines VFCS über ein Netzwerk angebracht werden, um über das VFCS auf das Dateisystemobjekt zuzugreifen und dieses zu modifizieren. Für die Anbringung an dem VFCS-Dateisystem muss ein NFS-Client die Dateikennung für die Wurzel des exportierten Dateisystems erlangen, bevor auf etwaige Dateisystemobjekte in dem Dateisystem aus der Ferne zugegriffen werden kann. Das "mount" Protokoll bzw. Einrichtungsprotokoll ist für den NFS-Client so gestaltet, dass eine erste Dateikennung des exportierten Wurzel- bzw. Stammverzeichnisses für den Zugriff auf ein Netzwerkdateisystem erhalten wird. VFCS mountd 1820 implementiert die "Einrichtung" (mount), um eine Schnittstelle bereitzustellen, um es Endbenutzer-Clients oder Anwendungsservern zu ermöglichen, die Wurzelkennung zu erlangen, wobei dies ähnlich ist der Funktion "mount", welche durch reguläre bzw. normale NAS-Speichervorrichtungen bereitgestellt wird. VFCS mountd 1820 implementiert das standardmäßige NFS-Protokoll "mount". Es unterstützt alle RPC-Programme, nämlich NULLPROC, RPCMTN_MOUNT, RPCMNT_UMOUNT, RPCMNT_DUMP und RPCMNT_UMNTALL.
  • Zum Zeitpunkt des Bootens bzw. Hochfahrens richtet VFCSd 1805 das zugrunde liegende Dateisystem am Back-End ein, wobei dies die Meetadateisystemstruktur und die Blockspeicherverzeichnisse aufweist. Zum Beispiel: /backend/metapath/, /backend/blockfiles/1/, /backend/blockfiles/2/, etc. Diese Verzeichnisse weisen den ganzen lokalen Inhaltsbestand auf. VFCSd 1805 verwendet zuerst die Chunking-Schicht (FCL) 1810, um die Metadateisystemstruktur und die Datenträgermetadatendatei zu laden, um ein in einem Speicher vorgesehenes Dateisystem 1840 als Baum von inodes zu erzeugen, um dessen globale Dateisystemdarstellung zu unterstützen. Dabei können auch das Verzeichnis und die Dateimetadaten geladen werden, abhängig von der Speicherverfügbarkeit. Für den Fall, dass der Speicher nicht ausreichend groß ist, wird nur die Datenträgerebene in den Speicher geladen, wobei die Verzeichnis- und Datei-inodes nach Bedarf erzeugt werden können.
  • Nachdem das im Speicher vorgesehene Dateisystem erstellt bzw. erzeugt worden ist, leitet VFCSd 1804 die Front-End-VFS-Kernel-Schnittstelle 1830 ein und baut danach eine VFCS-VNODE-Baumstruktur. Der Baum VFCS_VNODE stellt die globale Dateisystemdarstellung dar und wird durch das im Speicher vorgesehene Dateisystem 1840 unterstützt. Das im Speicher vorgesehene Dateisystem 1840 speichert die Blockindexanordnung jeder Datei im Cache, um die Abbildung der ursprünglichen Datei zu ermöglichen, die über die VFCS-Schnittstelle den Blockdateien in dem Back-End-Dateisystem präsentiert wird. Es kann sein, dass der Speicher eines VFCS nicht ausreicht, um den ganzen VNODE des Dateisystems zu erzeugen, wobei VFCS_VNODE für ein Dateisystemobjekt nach Bedarf erstellt werden kann. VFCSd 1805 lädt ferner teilweise Dateimetadaten in dessen Dateinamens-Cache für die beliebtesten Inhalte. Wenn VNODE erzeugt wird, wird jeder Einheit VNODE eine global eindeutige ID als ihre Kennung zugewiesen. Dem Wurzelknoten (exportiertes Verzeichnis) wird eine "hart codierte" Kennung zugewiesen. Die Kennungen für Datenträger, Verzeichnisse und Dateien werden mit ihrer eindeutigen ID as deren Metadaten zugeordnet. Da die Daten physisch bzw. physikalisch an dem Back-End-Dateisystem gespeichert werden, möglicherweise NAS-Vorrichtungen, wird das in dem Speicher vorgesehene Dateisystem 1840 durch das Back-End-VFS-Kernel-Schnittstellenmodul 1850 unterstützt, so dass ein reales Dateisystem unterstützt wird. Die Back-End-VFS-Kernel-Schnittstelle 1850 stellt eine Standard-Kernel-Schnittstelle für das zugrunde liegende Dateisystem bereit, wobei es sich um jede Art von Dateisystem handeln kann, einschließlich des lokalen Dateisystems 1885 oder um jedes Netzwerkdateisystem, wie zum Beispiel CIFS oder NFS. Auf entfernte CIFS- und NFS-Server kann entsprechend über den CIFS-Client 1880 oder den NFS-Client 1890 zugegriffen werden. Das Back-End-Dateisystem weist die tatsächlichen Daten auf -Blockdateien.
  • Nachdem VFCSd 1805 den Boot-Prozess abgeschlossen hat, erhält VFCS mountd 1820 die globale "harte" Kennung für das exportierte Wurzelverzeichnis (einen Wurzelpfadnamen) des im Speicher vorgesehenen Dateisystems. Die Kennung dient zur Verwendung bei folgenden Dateisystem-E/A-Operationen, welche den Zugriff, die Erstellung und das Löschen von Verzeichnissen (getattr, readdir, etc.) und Dateien aufweisen. Die Hauptaufgabe von VFCS mountd 1820 ist es, dessen Endbenutzer-Clients zu verwalten, indem die Endbenutzer-Clients authentifiziert und an die Wurzelkennung übergeben werden.
  • Wenn in Laufzeit ein VFCSd 1805 eine Dateisystemanforderung empfängt, wird die Anforderung zuerst authentifiziert, bevor sie über den Front-End-VFS 1830 zu einem im Speicher bereitgestellten Dateisystem 1840 weitergeleitet wird. Die Anforderung kann die Erzeugung eines neuen Dateisystemobjekts darstellt oder das Löschen oder Modifizieren eines bestehenden Dateisystemobjekts oder den Zugriff auf ein solches. Für die Erzeugung eines neuen Dateisystemobjekts wird ein inode dem im Speicher vorgesehenen Dateisystem 1840 hinzugefügt, und ein zugeordneter Front-End VFCS_VNODE wird ebenfalls erzeugt, wobei die Metadaten und Datenblöcke in dem Speicher gespeichert und danach repliziert werden über einen DS an das SCDN. Für die Anforderungen, welche ein Dateisystemobjekt modifizieren, werden der entsprechende inode und der Front-End VNODE modifiziert, wobei die zugeordneten Metadaten, die Metadateisystemstruktur und die Datenblöcke in dem Speicher ebenfalls aktualisiert werden können, und wobei die neuen Informationen über einen DS repliziert werden. Zum Löschen von Dateisystemobjekten können der VNODE, der im Speicher vorgesehene inode, Metadaten und Datenblöcke entfernt werden, und der Befehl wird an den Rest des SCDN über einen DS repliziert. Für den Zugriff auf ein Dateisystemobjekt versucht der VFCSd 1805 den zugeordneten VFCS_VNODE zu lokalisieren und gibt die entsprechenden Datenträger- oder Verzeichnisinformationen zurück, wobei er für ein Dateiobjekt die Datenblöcke von bzw. aus den Speichervorrichtungen zurückgibt. Wenn der VFCS_VNODE nicht lokalisiert werden kann, liest VFCSd 1805 die Metadateisystemstruktur, um das Objekt zu validieren, und wenn das Objekt eine Datei darstellt, wird in dem Dateinamens-Cache gesucht. Ansonsten werden die Metadaten des zugeordneten Objekts in den Speicher geladen, und der zugeordnete inode und VFCS_VNODE werden erstellt und die entsprechenden Daten werden zurückgegeben. Wenn sich die Anforderung auf ein Dateiobjekt bezieht und wenn bestimmte Abschnitte der Datei nicht lokal angeordnet sind, gibt das Back-End VFS 1830 einen FDP-Befehl "prepare" an den DS aus, um die Blöcke zu importieren.
  • Das VFCS Front-End VFS 1830 achtet stets auf Benachrichtigungen bzw. Mitteilungen von dem lokalen DS, wobei der DS VFCS 1800 über die Ankunft aller neuen Dateisystemobjekte benachrichtigt. Wenn ein Endbenutzer auf eine Datei zugreift, die sich weder in dem im Speicher vorgesehenen Dateisystem noch in dem Namens-Cache befindet, so verifiziert das Front-End VFS 1830 mit der Metadateisystemstruktur in dem Back-End-Speicher, bevor ein Fehler "Datei nicht gefunden" (File not found) zurückgegeben wird.
  • Zur Leistungsverbesserung beim Lesen des Dateiobjekts führt das VFCS 1800 entweder ein Read-Ahead-Caching oder eine direkte Paketweiterleitung aus (IP-Paket-Spoofing), um die Daten direkt aus dem Back-End-Speicher zu der Front-End-Anwendung zu transportieren, ohne den Vorgang des Pufferkopierens. Der IP Redirector, eine Komponente innerhalb des IP-Stapels 1860, führt die direkte Paketweiterleitung aus. Gemäß einem Aspekt der vorliegenden Erfindung implementiert das System eine direkte Paketweiterleitung (IP Spoofing) der gelesenen Daten. Das IP Paket-Spoofing oder die direkte Paketweiterleitung kann nur ausgeführt werden, wenn es sich bei den Back-End-Speichervorrichtungen um NAS handelt. Für den Fall, dass es sich bei dem Back-End-Speicher nicht um NAS handelt, wird die Leistung der Leseanforderung verbessert, indem die Kernel-Speicherpuffer mit Speichervorrichtungstreibern gemeinsam genutzt werden, wobei ein MBUF Director 1870 für die Übermittlung von mbuf-Daten an die Endbenutzer verantwortlich ist.
  • Die Abbildung aus 19 zeigt ein Flussdiagramm 1900 eines Ausführungsbeispiels des Leseanforderungsprozesses, welcher durch das VFCS 1800 gemäß der vorliegenden Erfindung ausgeführt wird (Schritte 19041950). Dieses Flussdiagramm 1900 bezieht sich ebenfalls auf die Operationen, die vorstehend in Bezug auf die Abbildung aus 17A bereits beschrieben worden sind. In dem Schritt 1904 empfängt VFCSd 1805 eine NFS-Leseanforderung 2600 von einem Anwendungsserver. In diesem Modul prüfen das Front-End VFS 1830 und das im Speicher vorgesehene Dateisystem 1840 den zugeordneten vnode und inode und deren Namens-Cache. Wenn der angeforderte Dateiknoten nicht im Cache gespeichert wird, erzeugen Module des Front-End VFS 1830 und eines im Speicher vorgesehenes Dateisystems 1840 den erforderlichen VNODE und inode in dem Speicher und geben einen FDP-Befehl "prepare" an den lokalen DS aus.
  • Über das im Speicher vorgesehene Dateisystemmodul 1840 werden eine oder mehrere Back-End-Leseanforderungen über den entsprechenden inode erzeugt, der Informationen für die Datenabbildung bereitstellt (Schritt 1910). Eine Back-End-Leseoperation wird durch das Back-End VFS-Modul bearbeitet bzw. behandelt. Die Back-End Leseanforderung wird durch die Module des VFCS Back-End VFS 1850 bearbeitet sowie des Kernel-Netzwerk-E/A-Redirectors 1860 und 1870. Nachdem VFCSd 1805 eine Leseanforderung von dem Anwendungsserver in dem Schritt 1904 empfangen hat, wird die Leseanforderung schließlich in Blockdateien abgebildet, die sich an Back-End Speichervorrichtungen befinden können. Die durch das VFCS VFS-Modul 1830 erzeugte Back-End Leseanforderung wird an das VFCS Back-End VFS-Modul 1850 weitergeleitet (Schritt 1910). In dem Back-End VFS-Modul 1850 wird die Back-End-Anforderung in die Warteschlange eingestellt und verarbeitet (Schritt 1920). Wenn die Back-End-Speichervorrichtungen NAS sind, wird ein NFS-Lesepaket auf der Basis der gegebenen Parameter gebildet und zu dem Back-End Dateiserver gesendet (Schritt 1920). Wenn die Daten angekommen sind, weist im Falle eines NAS Back-End der VFCS 1800 die Option auf, die direkte Paketrückführung auf der IP-Ebene auszuführen (Schritt 1930). Wenn die direkte Paketweiterleitung auszuführen ist (Schritt 1950), führt der VFCS IP Redirector 1860 die Funktionen des IP Spoofing und Weiterleitens aus, indem die Ziel-IP und die Quellen-IP in dem Paket-Header so ersetzt bzw. ausgetauscht werden, dass der Anwendungsserver glaubt, dass die Antwort auf NFS-Lesen von VFCSd 1805 stammt. Das VFCS Back-End VFS-Modul wird durch den IP Redirector benachrichtigt, wenn Daten weitergeleitet werden. Wenn es sich in diesem Fall bei dem Back-End-Dateisystem nicht um NAS handelt, oder wenn IP Spoofing ausgeschaltet bzw. deaktiviert ist, so sammelt das Back-End VFS-Modul 1850 die Daten in Kernel-Speicherpuffern, wobei nur ein Puffer kopiert, bevor Speicher-Puffer zu dem Benutzer weitergeleitet werden (Schritt 1940). Die Kernel-Speicherpuffer werden durch das MBUF Director-Modul 1870 übermittelt. Das Back-End VFS-Modul 1850 säubert ihre Warteschlange nach der Ausführung der Anforderungen (Schritt 1950).
  • e. Lastverteilungseinrichtung des VFCS Clusters
  • Die hierin beschriebene Cluster Lastverteilungseinrichtung (Cluster Load Balancer) kann in Verbindung mit dem Verteilungsserver-Cluster 410 aus der Abbildung aus 4A, dem Anwendungsserver-Cluster 420A aus 4A und dem VFCS Cluster 600 aus 6 eingesetzt werden. Durch das Exportieren der gleichen Kennung für das gleiche Dateisystemobjekt von jedem VFCS kann eine Gruppe von VFCS 470<1...L> in einem Cluster zusammengefasst werden, um einen Endbenutzer-Client transparent zu unterstützen. Siehe dazu die Abbildung aus 6. Wenn ein VFCS ausgefallen ist, kann das andere VFCS die Endbenutzeranforderung erfüllen, da es die Dateisystemobjektkennung wie jedes VFCS erkennt. Somit kann ein VFCS einem Clustering unterzogen werden, um eine Lastverteilung vorzunehmen und transparent eine aktive-aktive Ausfallsicherung (Failover) vorzusehen. Für den Fall, dass ein VFCS Cluster eine NFS UDP-Unterstützung bereitstellt, ist es in der Lage eine Ausfallsicherung während der Sitzung (In-Session Failover) ausführen, für den Fall einer CIFS oder NFS TCP Unterstützung kann ein VFCS Cluster eine Ausfallsicherung je Sitzung durchführen (Per Session Failover).
  • Eine Lastverteilungseinrichtung stellt drei Funktionen bereit: Serveranforderungsverteilung, Serverredundanz und Unterstützung der Ausfallsicherung (Failover) für eine Lastverteilungseinrichtung. Bei der ersten Funktion, der Serveranforderungsverteilung, handelt es sich um die Verteilung von ankommenden bzw. eingehenden Anforderungen unter einer Gruppe von Servern. Jeder Server empfängt nur einen bestimmten Anteil der Anforderungen insgesamt. Die Abbildung aus 20 zeigt eine Lastverteilungseinrichtung und zwei Server (Server-1 und Server-2), welche an ein Netzwerksegment angeschlossen sind. Die Pfeile stellen den ankommenden Strom von Serveranforderungen dar. Wenn die beiden Server jeweils ungefähr die Hälfte der Anforderungen empfangen, wird die ankommende bzw. eingehende Serverbelastung zwischen ihnen "verteilt". Bei der zweiten Funktion, der Serverredundanz, handelt es sich um die Fähigkeit, Clients vor Serverausfällen abzuschirmen. Die Lastverteilungseinrichtung detektiert Serverausfälle bzw. Serverfehler, indem periodische Gesundheitsprüfungen an jedem Server vorgenommen werden. Wenn ein Server ausgefallen ist, verteilt die Lastverteilungseinrichtung die Anforderungen neu an die verbliebenen bzw. verbleibenden Server. Die Lastverteilungseinrichtung führt weiter periodische Gesundheitsprüfungen an ausgefallenen Servern durch, um zu detektieren, wann sie sich erholt haben. In der Abbildung aus 21 ist der Server-1 ausgefallen, wie dies durch die Schraffierung dargestellt ist, und alle Anforderungen werden jetzt an den einzigen verbliebenen Server verteilt. Bei der dritten Funktion handelt es sich um die Unterstützung der Ausfallsicherung der Lastverteilungseinrichtung. Die Lastverteilungseinrichtung ist ausreichend zustandslos im Betrieb, so dass in den meisten Fällen bei einem Ausfall der Lastverteilungseinrichtung eine sekundäre Lastverteilungseinrichtung direkt übernehmen kann und ankommende Anforderungen weiter verteilen bzw. ausgleichen kann, ohne dass eine Client-Störung bzw. Unterbrechung auftritt. In der Abbildung aus 22 ist die primäre Lastverteilungseinrichtung ausgefallen und die sekundäre Lastverteilungseinrichtung hat übernommen. Die Anforderungen werden weiter auf die Server verteilt.
  • f. IP Weiterleitung und direkte Serverantwort:
  • Die Serveranforderungsverteilung wird für die TCP/IP UDP und TCP Protokolle unterstützt. UDP ist ein Datagramm-orientiertes Protokoll. Clients öffnen eine TCP-Verbindung mit einem Server und senden eine Reihe von Anforderungen über die Verbindung.
  • In beiden Fällen erreicht der Client einen Server im Netzwerk durch Adressierung des UDP-Datagramms oder TCP-Verbindung mit der IP-Netzwerkadresse des Servers. Die Lastverteilungseinrichtung ist mit einer speziellen IP-Adresse konfiguriert, die als eine "virtuelle" IP-Adresse bekannt ist, von denen Clients davon ausgehen, dass es sich um einen Server handelt. Clients adressieren ihre UDP-Datagramme oder TCP-Verbindungen an die virtuelle IP-Adresse der Lastverteilungseinrichtung. Die Lastverteilungseinrichtung leitet danach diese UDP-Datagramme oder TCP-Verbindungen an einen der eigentlichen Server weiter.
  • Die Weiterleitung erfolgt auf der IP-Paketebene. TCP/IP verwendet das ARP-Protokoll zum Auflösen von IP-Netzwerkadressen in physikalische Netzwerk-Hardwareadressen. Im letzten Abschnitt oder Netzwerksegment der Zustellung erfolgt dies in die Netzwerk-Hardwareadresse der Ziel-IP-Adresse. Jedes IP-Paket enthält eine Ziel-IP-Adresse, und die Pakete, welche Client-UDP-Datagramme oder TCP-Verbindungen führen, werden an die virtuelle IP-Adresse der Lastverteilungseinrichtung adressiert. Wenn das Paket an dem lokalen Netzwerksegment ankommt, wird diese IP-Adresse zu der Netzwerk-Hardwareadresse der Lastverteilungseinrichtung aufgelöst.
  • Für die Weiterleitung eines Pakets an einen eigentlichen Server, sendet die Lastverteilungseinrichtung das nicht modifizierte Paket erneut an dem lokalen Netzwerksegment. Anstelle der Verwendung der Ziel-IP-Adresse des Pakets in der ARP-Protokollauflösung verwendet die Lastverteilungseinrichtung jedoch die eigentliche bzw. tatsächliche IP-Adresse des ausgewählten Servers. Das ARP-Protokoll löst diese Adresse zu der Netzwerk-Hardwareadresse des Servers auf, und das Paket wird von diesem Server empfangen, obgleich dieser eine andere Ziel-IP-Adresse aufweist als die Adresse, die bei der ARP-Auflösung verwendet worden ist. Die Abbildung aus 23 zeigt eine Lastverteilungseinrichtung mit zwei konfigurierten IP-Adressen, 10.0.0.1 und 198.1.1.1 und zwei Servern (Server-1 und Server-2) mit den IP-Adressen 10.0.0.2 und 10.0.0.3. Die Adresse 198.1.1.1 wird als die virtuelle IP-Adresse verwendet. Client-Anforderungen kommen in IP-Paketen an, die an 198.1.1.1 adressiert sind. Der Sender dieser Pakete auf dem lokalen Netzwerksegment, wie zum Beispiel ein Router, würde diese Pakete an die Netzwerk-Hardwareadresse der Lastverteilungseinrichtung auflösen. Die Lastverteilungseinrichtung wiederum sendet die Pakete erneut in dem lokalen Netzwerksegment ohne Modifikationen und verwendet eine tatsächliche Server-IP-Adresse (an Stelle der Zieladresse des Pakets) für die Auflösung der Netzwerk-Hardwareadresse eines Servers. In Bezug auf die Abbildung aus 23 wird ein Paket an den Server-1 weitergeleitet.
  • Da die Pakete ohne Modifizierungen weitergeleitet werden, kann der das Paket empfangene Server die Antwortpakete an den Originator der Anforderung adressieren, indem einfach die Quellen- und Zieladressen ausgetauscht werden, welche in dem Anforderungspaket enthalten sind. Die Antwortzieladresse stellt die IP-Adresse des Clients dar, und die Antwortquellenadresse stellt die virtuelle IP-Adresse dar. Die Antwortpakete fließen direkt zurück zu dem Client und werden nicht von der Lastverteilungseinrichtung empfangen. Dies wird als "direkte Serverantwort" (Direct Server Return) bezeichnet. Die Abbildung aus 24 zeigt den Pfad bzw. Weg eines Antwortpakets zu dem Server-1 von der Lastverteilungseinrichtung und den Pfad eines Antwortpakets von dem Server-1 zurück zu dem Client.
  • g. Laufzeitoperationen:
  • Die Abbildung aus 25 zeigt ein Cluster-Lastverteilungseinrichtungs-Paketverteilungs-Flussdiagramm 2500 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung (Schritte 25102540). Die hierin beschriebene Cluster-Lastverteilungseinrichtung (oder einfach "Lastverteilungseinrichtung") kann in Verbindung mit dem Verteilungsserver-Cluster 410 aus 4A, dem Anwendungsserver-Cluster 420A aus 4A und dem VFCS Cluster 600 aus 6 eingesetzt werden. Die Lastverteilungseinrichtung ist als einer oder mehrere virtuelle Server konfiguriert. Ein virtueller Server ist dargestellt durch eine Kombination aus IP-Adresse und UDP- oder TCP-Port-Nummer. Ein virtueller Server kann als ein "Match any Port" konfiguriert werden anstatt mit einer bestimmten Port-Nummer. Jeder virtuelle Server ist so konfiguriert, dass er einen oder mehrere reale Server aufweist, und jeder reale Server ist mit dessen IP-Adresse konfiguriert und mit der Netzwerkschnittstelle, die so zu verwenden ist, dass der reale Server erreicht wird. Jeder virtuelle Server ist separat konfiguriert für die Server-Gesundheitsprüfungen.
  • Für jedes an einer Netzwerk-Hardwareschnittstelle empfangene IP-Paket (Schritt 2510) scannt die Lastverteilungseinrichtung die Konfiguration des virtuellen Servers in Bezug auf eine Übereinstimmung hinsichtlich der IP-Adresse und der Port-Nummer (Schritt 2512). wenn eine Übereinstimmung festgestellt wird, so wird einer der realen Server ausgewählt, entweder nach dem Reigenmodell, wenn es sich bei dem Protokoll um UDP handelt (Schritt 2516) oder über die Server-Hash-Funktion (oder eine modifizierte Hash-Funktion), wenn es sich bei dem Protokoll um TCP handelt (Schritt 2530). Nachdem der reale Server ausgewählt worden ist, wird das Paket an der für den realen Server konfigurierten Netzwerkschnittstelle konfiguriert sowie unter Verwendung der für den realen Server für die ARP-Hardwareadressenauflösung (ARP als englische Abkürzung von Address Resolution Protocol) ausgewählten IP-Adresse (Schritt 2526). Wenn keine derartigen realen Server für die Weiterleitung zur Verfügung stehen, wird das Paket zurückgewiesen, wobei ein Fehlerpaket "Port nicht erreichbar" (Port unreachable) des ICMP-Protokolls zurück zu dem Client übermittelt wird.
  • Für Anforderungen, die über das UDP-Protokoll übermittelt bzw. gesendet werden, wird jede Anforderung in einem UDP-Datagramm geführt, welches wiederum in einem einzelnen IP- Paket geführt wird. Da die Lastverteilungseinrichtung so gestaltet ist, dass sie mit dem NFS-Dateiserverprotokoll des VFCS arbeitet, wobei es bekannt ist, das jede einzelne Anforderung unabhängig ist von allen anderen Anforderungen. Somit werden IP-Pakete, welche UDP-Datagramme führen, mittels einfachem Reigenmodell unter den Servern verteilt (Schritt 2516). Wenn zum Beispiel drei Server gegeben sind, Server-1, Server-2 und Server-3, so empfängt Server-1 jedes dritte Paket.
  • In Bezug auf Anforderungen, die über das TCP-Protokoll gesendet werden, werden Anforderungen in TCP-Verbindungen transportiert. Die IP-Pakete, welche TCP-Verbindungsdaten führen, können nicht mittels Reigenmodell verteilt werden. Erstens besteht keine direkte Korrelation zwischen IP-Paketen, die TCP-Verbindungsdaten führen, und einzelnen Anforderungen – eine Anforderung kann auf mehrere Pakete aufgeteilt werden, und ein Paket kann mehr als eine Anforderung aufweisen. Ferner kann eine TCP-Verbindung nicht einfach zwischen Servern gemeinsam genutzt werden, indem einfach Pakete weitergeleitet werden. Somit müssen alle Pakete für eine bestimmte TCP-Verbindung zu dem gleichen Server weitergeleitet werden.
  • IP-Pakete, welche TCP-Verbindungen führen, werden auf der Basis der Quellen-IP-Adresse und der Quellen-TCP-Port-Nummer jedes Pakets verteilt. Da diese über die Lebensdauer einer TCP-Verbindung konstant bleiben und in jedem IP-Paket vorhanden sind, das TCP-Daten führt, werden alle Pakete der TCP-Verbindung zu dem gleichen Server verteilt.
  • Für die Auswahl eines Servers für die Weiterleitung des Pakets, wird die Quellen-IP-Adresse zu dem Quellen-TCP-Port hinzugefügt, und zwar als eine vorzeichenlose ganze Zahl von 32 Bit, und wobei sie danach durch die Anzahl der Server geteilt wird. Der Hashing-Algorithmus lautet: Serverindex = (Quellen-IP-Adresse + TCP Port)/Anzahl der Server in der Gruppe (Schritt 2530). Der arithmetische Rest der Division ist eine Zahl, die zwischen Null und eins weniger als die Anzahl der Server liegt. Dies wird als "Server-Hash-Funktion" bezeichnet. Wenn zum Beispiel drei Server vorhanden sind, ist das Ergebnis der Server-Hash-Funktion immer 0, 1 oder 2. Dieses Ergebnis dient als nullbasierter Index für die Auswahl eines Servers. Zum Beispiel wählt 0 den ersten Server aus, während 1 den zweiten Server auswählt, und wobei 2 den dritten Server auswählt. Hiermit wird festgestellt, dass die Lastverteilungseinrichtung keinen TCP-Verbindungsstatus aufrechterhalten bzw. speichern muss oder jegliches Wissen bzw. Informationen über aktuell offene Verbindungen, da jedes ankommende Paket die Informationen führt, die für dessen korrekte Verteilung verwendet werden.
  • Da die TCP-Portnummer bei einem typischen Client für aufeinander folgende CP-Verbindungen erhöht bzw. heraufgesetzt wird, werden mehrere Verbindungen von dem gleichen Client statistisch im Zeitverlauf gleichmäßig auf die Server verteilt, da die inkrementierende Port-Nummer dazu führt, dass die Server-Hash-Funktion wiederholt zyklisch verläuft. Zum Beispiel führt eine inkrementierende Port-Nummer zu einer zyklischen Reihe von Ergebnissen, wie etwa 0, 1, 2, 0, 1, 2, 0, 1, 2, etc. Da die Quellen-IP-Adresse ferner in der Server-Hash-Funktion enthalten ist, sollten Verbindungen von mehreren Clients statistisch zu unterschiedlichen Ergebnissen der Hash-Funktion führen, selbst wenn diese die gleiche TCP-Port-Nummer verwenden, da sich ihre IP-Adressen unterscheiden. Bei dieser Methode wird es versucht, eine statistisch ausgewogene Verteilung von TCP-Verbindungen über die Server vorzunehmen und somit eine statistisch ausgewogene Verteilung von Anforderungen.
  • Wenn ein Server ausfällt, verteilt die Lastverteilungseinrichtung neue Anforderungen an die verbleibenden Server. Für UDP-Pakete stellt dies kein Problem dar, da die Verteilung im Reigenmodell (Round Robin) erfolgt (Übergang von 2524 zu 2516). Die Pakete werden einfach im Reigenmodell auf die verbleibenden Server verteilt. Für TCP können die Pakete jedoch nicht einfach zu einem anderen Server weitergeleitet werden, da der Server die TCP-Verbindung nicht kennt bzw. keine Informationen über diese besitzt. Nachdem der Server ausgefallen ist, kann für diese TCP-Verbindungen nichts mehr getan werden. Wenn Pakete jedoch nicht um einen ausgefallenen Server zu einem anderen, aktiven bzw. laufenden Server neu verteilt werden, so schlagen die neuen TCP-Verbindungsversuche durch Clients fehl, sollten diese zu dem ausgefallenen Server verteilt werden.
  • Zur Behandlung dieses Problems wird eine modifizierte Hash-Funktion eingesetzt, wenn die Server-Hash-Funktion, die auf das Paket angewandt wird, zu einem ausgefallenen Server führt. Die modifizierte Hash-Funktion funktioniert wie die Server-Hash-Funktion, teilt jedoch durch die Anzahl der aktiven Server an Stelle der Anzahl aller Server. Das Ergebnis ist ein Index in die Gruppe bzw. Anordnung der aktiven Server. Dies leitet das Paket zu einem alternativen aktiven Server um, und so lange die Gruppe der aktiven Server die gleiche bleibt, werden alle Pakete an der gleichen TCP-Verbindung zu dem gleichen alternativen Server geleitet. Dies ist unter 2538 dargestellt, wobei der tote bzw. inaktive Server aus der Gruppe entfernt wird, bevor der Hash-Algorithmus in 2530 erneut angewandt wird. Hiermit wird festgestellt, dass die modifizierte Hash-Funktion angewandt wird, erst nachdem die Server-Hash-Funktion einen ausgefallenen Server ausgewählt hat. Dies beeinflusst nicht andere TCP-Verbindungen, die aktuell zu aktiven Servern geleitet werden.
  • Wenn die Lastverteilungseinrichtung (Load Balancer) damit beginnt, die modifizierte Hash-Funktion auf eine bestehende TCP-Verbindung anzuwenden, handelt es sich bei dem Ergebnis darum, dass Pakete, nachdem sie an einen ausgefallenen Server weitergeleitet worden sind, jetzt zu einem alternativen Server weitergeleitet werden. Dieser Server besitzt jedoch keine Informationen über die in den Paketen dargestellte TCP-Verbindung. Dies wird von dem Server als eine "halb offene" TCP-Verbindung erkannt, ein Zustand, der normalerweise an bzw. in einem TCP/IP Netzwerk auftreten kann und den das TCP-Protokoll bereits behandelt. Der alternative Server setzt die Verbindung zurück. Der Client, wenn er eine entsprechende Fehlerbehebung aufweist, öffnet eine neue TCP-Verbindung. Diese neue Verbindung, gesteuert durch die modifizierte Hash-Funktion, wird zu dem alternativen Server geöffnet. Unabhängig davon, wie lange der ursprüngliche Server außer Betrieb bleibt, sieht der Client nur eine vorübergehende Serviceunterbrechung.
  • Wenn sich der ausgefallene Server später erholt, führt die Server-Hash-Funktion nicht mehr zu einem ausgefallenen Server, und somit wird nicht mehr auf die modifizierte Hash-Funktion zurückgegriffen. In diesem Fall werden jetzt alle TCP-Verbindungen, die geöffnet wurden, während sie unter der Steuerung durch die modifizierte Hash-Funktion standen, jetzt zu einem anderen Server geleitet, dem durch die ursprüngliche Server-Hash-Funktion vorgegebene Server-Hash-Funktion. Wiederum interpretiert dieser Server diese Verbindungen als halb offene Verbindungen und setzt sie zurück. Alle angeschlossenen Clients erleben bzw. sehen eine vorübergehende Dienstunterbrechung. Der alternative Server, zu dem diese Verbindungen gemäß der modifizierten Hash-Funktion geöffnet worden sind, erlebt bzw. erfährt scheinbar inaktive Clients, und dies Verbindungen werden schließlich an dem Server ausgeschaltet bzw. laufen ab und werden geschlossen.
  • h. Server-Gesundheitsprüfungen:
  • Die Lastverteilungseinrichtung unterstützt zwei Verfahren der Server-Gesundheitsprüfungen. Bei dem ersten Verfahren handelt es sich um ein NFS-Protokoll NULL RPC über das UDP-Protokoll, Schritt 2524 aus 25. Bei dem zweiten Verfahren handelt es sich um eine offene TCP-Verbindung, gefolgt von einem unverzüglichen Schließen in Schritt 2538 aus 25. Wenn die Gesundheitsprüfung innerhalb eines spezifischen Zeitraums erfolgreich ist, wird angenommen, dass der Server aktiv und funktionsfähig ist. Wenn die Prüfung fehlschlägt bzw. ein negatives Ergebnis liefert, so wird davon ausgegangen, dass der Server ausgefallen ist.
  • Für die Gesundheitsprüfung werden drei Zeiträume konfiguriert und diese laufen für jeden Server unabhängig. Der Zeitraum "aktiv" (Up) entspricht dem Zeitraum, über den eine Gesundheitsprüfung nicht erforderlich ist. Während diesem Zeitraum werden Pakete zu dem Server weitergeleitet. Dies ist in den Schritten 2518 bis 2526 und 2532 bis 2526 aus der Abbildung aus 25 dargestellt.
  • Der Zeitraum "prüfen" (Check) ist der Zeitraum, über den eine Gesundheitsprüfung ausgeführt werden darf. Nachdem der Zeitraum "aktiv" abgelaufen ist, löst das nächste zu dem Server weitergeleitete Paket einen Versuch zur Gesundheitsprüfung aus, und der Zeitraum "prüfen" wird gestartet bzw. beginnt. Während dem Zeitraum "prüfen" werden Pakete weiter zu dem ausgewählten Server weitergeleitet. Dies ist in den Schritten 2520, 2522, 2534, 2536 und 2526 aus der Abbildung aus 25 dargestellt.
  • Der Zeitraum "inaktiv" (Dead) ist der Zeitraum bevor eine erneute Prüfung eines ausgefallenen Servers erfolgt. Wenn die Gesundheitsprüfung erfolgreich ist, bevor der Prüfzeitraum abgelaufen ist, so beginnt ein neuer Zeitraum "aktiv". Wenn die Gesundheitsprüfung hingegen fehlschlägt oder der Prüfzeitraum abläuft, so beginnt der Zeitraum "inaktiv". Jeder Beginn des Zeitraums "aktiv" löst einen neuen Versuch der Gesundheitsprüfung aus. Nachdem der Zeitraum "inaktiv" abgelaufen ist, löst das nächste Paket, das zu diesem Server weitergeleitet worden wäre (über die Server modifizierte Hash-Funktion vor dem Aufrufen der modifizierten Hash-Funktion), eine Prüfung bzw. Untersuchung des Ergebnisses der Gesundheitsprüfung aus, Siehe dazu die Schritte 25242516 und 25382530 aus der Abbildung aus 25, und entweder einen Übergang zu dem Zeitraum "aktiv" oder einen Neustart des Zeitraums "inaktiv" (mit dem Starten einer neuen Gesundheitsprüfung). Ein Server in dem Zeitraum "aktiv" oder "prüfen" gilt als aktiv und gesund. Ein Server in dem Zeitraum "inaktiv" gilt als ausgefallen.
  • Die Abbildung aus 26 zeigt ein Flussdiagramm 2600 einer Gesundheitsprüfungsfolge (Schritte 26522660). Wenn eine Gesundheitsprüfung fehlschlägt oder der Prüfzeitraum ausläuft, beginnt der inaktive Zeitraum des Servers, 2652, 2656 und 2654 aus 26. Ansonsten beginnt der aktive Zeitraum des Servers, 2658 aus 26, bis dieser abgeschlossen ist (Schritt 2660).
  • Die Zeiträume und Ergebnisse der Gesundheitsprüfungen werden nur geprüft, wenn Pakete ankommen, und sie werden zu dem Server geleitet (entweder im Reigenmodell, durch die Server-Hash-Funktion oder durch die modifizierte Hash-Funktion). Die Pakete dienen als Ereignisse, um die Gesundheitsprüfungsfolge weiter nach vorne zu bringen.
  • 4. Die Steuereinheitdatenspeicher und Verwaltungsteilsysteme
  • Die Abbildung aus 27 zeigt eine Darstellung der Steuereinheit und Daten einer Station 2700 in dem SCDN 100 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Die Station 2700 weist die Steuereinheit 2710 und die Datenspeicher 2730 auf. Die Steuereinheit 2710 kann ein eingebettetes System darstellen, das in einem Ausführungsbeispiel der vorliegenden Erfindung vier Steuerteilsysteme aufweist. Die Abbildung aus 27 identifiziert die Teilsysteme der Steuereinheit und die Datenspeicher einer Station. Die Steuereinheit 2710 weist ein Ressourcenverwaltungs-Teilsystem 2712, ein Lernteilsystem 2714, ein Speicherverwaltungsteilsystem 2716 und ein Serviceverwaltungsteilsystem 2719 auf, die gemeinsam als Steuerungsteilsysteme bezeichnet werden. Der Datenspeicher 2730 in der Station weist einen Netzwerkressourcenspeicher 2732, einen Stammdaten- und Statistikressourcenspeicher 2734, einen Ereignisressourcenspeicher 2736 und einen Inhaltsspeicher 2738 auf.
  • Das Serviceverwaltungsteilsystem 2718 der Steuereinheit überwacht und verwaltet die DS und VFCS Server der Station. Das Ressourcenverwaltungs-Teilsystem 2712 unterstützt SCDN-Netzwerk- und Service- bzw. Dienstkonfigurationen und Protkoll- und Nutzungsdaten-Roll-Up-Aktivitäten. Das Lernteilsystem 2714 unterstützt die automatische Initialisierung, das inkrementale Lernen bzw. Erlernen von Inhalten und andere adaptive Methoden zur Verwaltung und Steuerung der Station. Das Speicherverwaltungs-Teilsystem 2716 überwacht die Cluster-Speichernutzung, unterstützt das Rating und Pruning von Inhalten und meldet dem CMS 170 die Speichernutzung jedes Inhalteeigentümers. Das Serviceverwaltungs-Teilsystem 2718 überwacht und steuert Dienste auf der Basis von Schwellenwerteinstellungen, gibt SNMP-Traps (SNMP als englische Abkürzung von Simple Network Management Protocol) aus, exportiert Enterprise MIBs (Verwaltungsinformationsbanken) und exportiert Stamm-, Statistik- und Ereignisdaten. Für den Durchschnittsfachmann auf dem Gebiet ist es ersichtlich, dass die hierin beschriebenen Funktionen aus Gründen der Praktikabilität eingesetzt werden, und dass weitere Funktionen hinzugefügt, subtrahiert oder ersetzt werden können, sofern diese zu einer effizienten und zuverlässigen Steuerung und Verwaltung der SCDN-Station führen.
  • a. Speicherverwaltungsinformationsbank
  • Das Speicherverwaltungs-Teilsystem 2716 verwaltet in einem Ausführungsbeispiel der vorliegenden Erfindung eine Informationsbank in einer relationalen Datenbank mit der Bezeichnung SM_DB, welche sich an dem CU befindet. Ferner wird auf die Abbildung aus 30 verwiesen, welche beispielhafte Speicherverwaltungs-Informationsbanktabellen (3005, 3015, 3025, 3035, 3045) und Datenträgermetadaten 3023, Dateimetadaten 3033 sowie Spurdateimetadaten 3043 veranschaulicht. In dieser Datenbank gibt es sieben Datenbanktabellen:
    • • Tabelle DS Log
    • • Tabelle Nutzungs-Log
    • • Tabelle Datenträgerinfo
    • • Tabelle Dateiinfo
    • • Tabelle Spurinfo
    • • Tabelle Speicheralarm-Log
    • • Tabelle SM Prüfungs-Log
  • Diese Tabellen werden nachstehend im Text beschrieben:
  • i. Tabelle DS Log
  • Die Tabelle DS Log 3005 oder Prism_DS_Log weist Datensätze für zahlreiche der Ereignisse oder Befehle auf, die von dem Verteilungsserver bearbeitet bzw. behandelt werden. Sie wird von dein Verteilungsserver-Teilsystem verwaltet. Wenn der DS etwaige dieser sechs FDP-Befehle verarbeitet, protokolliert er die vollständige Ausführung des Ereignisses an die Datenbank.
  • Die Felder der Tabelle Prism_DS_Log sind wie folgt gegeben:
    FELD BEDEUTUNG
    CommandType Entweder: INFO, PUT, REPLICATE, PREPARE, REMOVE oder CLEAN
    InfoCategory Entweder: CPUDATE, CPRESERVE, CPDELETE oder FILEUPDATE
    Direction Eingehend oder Abgehend
    NetworkID Die eindeutige ID des Netzwerks, wo dieser Datenträger seinen Ursprung hat
    VolumeID Die eindeutige ID des Datenträgers in dem Netzwerk
    FileID Die eindeutige ID der Datei in dem Netzwerk
    TrackIndex Der Index dieser Spur
    ByteCount Anzahl der betroffenen Bytes insgesamt, soweit zutreffend
    Status OK oder Fehlercode
    OriginTime Zeitpunkt, zu dem das Paket ursprünglich gesendet worden ist
    StartTime Zeitpunkt, zu dem die Ausführung des Befehls begonnen hat
    EndTime Zeitpunkt, zu dem die Ausführung des Befehls abgeschlossen war
  • ii. Tabelle Nutzungs-Log
  • Das VFCS (wie etwa das VFCS 470, 600, 1800) ist zuständig dafür, den Inhalt über eine Dateisystemschnittstelle wie etwa NFS und CIFS bereitzustellen. Wenn das VFCS eine Anforderung für einen Datenblock empfängt, wird das Ereignis als eine Datei protokolliert. Die Granularität der Protokollierung ist konfigurierbar. Wenn auf das erste Byte einer Datei zugegriffen wird, erfolgt eine Aktualisierung der letzten Zugriffszeit/des letzten Zugriffsdatums des Inhalts mit der aktuellen Zeit. Die Tabelle Nutzungs-Log 3015 oder Prism_Usage_Log weist einen Datensatz für jede durch ein VFCS erfüllte "Leseanforderung" auf. Eine "Leseanforderung" ist definiert als jede Dateioperation, die das Lesen des ersten Bytes ("Byte 0") der Datei aufweist. Die Tabelle Nutzungs-Log wird von dem VFCS-Teilsystem zur Aufzeichnung der Dateinutzung verwaltet (d. h. Anforderungen der Datei).
  • Die Felder in der Tabelle Nutzungs-Log 3015 sind wie folgt gegeben:
    FELD BEDEUTUNG
    RequestTime Zeitpunkt, zu dem die Anforderung "Lesen" von dem VFCS empfangen worden ist
    DataSource Identifizieren einer Datenquelle (das Feld kann auch ungenutzt bleiben)
    RequestorIp Identifizieren einer IP-Adresse des Anforderers (das Feld kann auch ungenutzt bleiben)
    NetworkId Die eindeutige ID des Netzwerks, wo dieser Datenträger seinen Ursprung hat
    VolumeId Die eindeutige ID des Datenträgers in dem Netzwerk
    FileID Die eindeutige ID der Datei in dem Netzwerk
  • iii. Die Tabelle VolumeInfo (Datenträgerinfo)
  • Die Tabellen VolumeInfo, FileInfo und TrackInfo (3025, 3035, 3045) sind den VFCS Metadatendateien für die gleichen Objekte ähnlich (Datenträgermetadatendateien 3023, Dateimetadatendatei 3033 und Spurdateimetadaten 3043), wobei sie jedoch Daten auslassen, die nicht relevant sind für die Speicherverwaltungsaufgaben, und sie weisen andere bzw. weitere dynamische Daten auf, die für die Speicherverwaltungsaufgaben besonders sind.
  • Die Tabelle VolumeInfo 3025 weist einen Datensatz für jeden Datenträger auf. Die Felder in jedem Datensatz VolumeInfo sind wie folgt gegeben:
    FELD BEDEUTUNG
    NetworkId Die eindeutige ID des Netzwerks, wo dieser Datenträger seinen Ursprung hat
    VolumeId Die eindeutige ID des Datenträgers in dem Netzwerk
    CurrentUsage Die Gesamtgröße aller Blockdateien, die sich zu diesem Zeitpunkt an dieser Station im Speicher befinden
    ReservedSpace Der maximale Speicherplatz, den der Datenträger zu einem bestimmten Zeitpunkt an dieser Station beleben darf
    AssignedStation Die ID der Ursprungsstation für diesen Datenträger
    PruningThreshold Ein prozentualer Anteil des reservierten Raums bzw. Platzes, so dass für den Fall dass CurrentUsage einmal über diesem Wert liegt, der Speichermanager im nächsten Pruning-Zyklus ausreichend Blockdateien wieder zurück bereinigt, um CurrentUsage wieder unter diesen Wert zu führen.
    AlarmThreshold Ein prozentualer Anteil des reservierten Raums bzw. Platzes, so dass für den Fall, dass CurrentUsage einmal über diesen Wert ansteigt, sendet der Speichermanager eine Alarmmitteilung an die CMS-Anwendung, und dem Eigentümer wird es untersagt bzw. ist nicht befugt, weitere Dateien in das System einzuführen, bis CurrentUsage (aktuelle Nutzung) wieder zurück unter diesen Wert gebracht worden ist.
  • Die Tabelle VolumeInfo 3025 kann Daten aufweisen, die aus der Datenträgermetadatendatei 3023 kopiert worden sind, wie dies durch den Pfeil 3020 dargestellt ist.
  • iv. Die Tabelle FileInfo (Dateiinfo)
  • Die Tabelle FileInfo 3035 weist einen Datensatz für jede an dieser Station bekannte Datei auf. Die Tabelle FileInfo 3035 kann Daten aufweisen, die aus dem Nutzungs-Log bzw. Nutzungsprotokoll 3010 kopiert worden sind und Dateimetadaten 3033, wie dies durch die Pfeile 3010 und 3030 dargestellt ist. Die Felder jedes Datensatzes FileInfo sind wie folgt gegeben:
    FELD BEDEUTUNG
    NetworkId Die eindeutige ID des Netzwerks, wo diese Datei ihren Ursprung hat
    VolumeId Die eindeutige ID (in dem Netzwerk) des Datenträgers, dem diese Datei gehört
    FileID Die eindeutige ID dieser Datei in dem Netzwerk
    TrackCount Die Anzahl der Spuren (Tracks), in welche diese Datei zerlegt worden ist
    BlockSize Die Größe (in Bytes) jeder Blockdatei für diese Datei (der letzte Block jeder Spur kann kleiner sein als dieser)
    Duration (Dauer) Die Dauer oder "Wiedergabezeit" dieser Datei, sofern dies zutreffend ist
    Popularity Die prognostizierte oder erwartete Nachfrage nach dieser Datei auf einer Skala von 0 bis 10.
    ExpirationDate Das Datum, an dem diese Datei ausläuft bzw. verfällt (die genau Zeit des Ablaufs ist 23:59:59 GMT an diesem Datum). Die Datei wird während dem ersten Pruning-Zyklus am ersten Tag ORTSzeit NACH der genauen Ablaufzeit von jeder lokalen Station entfernt.
    FirstUsed Zeitpunkt der ersten Anforderung dieser Datei durch einen Benutzer (innerhalb des von Usage Log abgedeckten Zeitraums)
    LastUsed Zeitpunkt der letzten (zeitlich am kürzesten zurück liegenden) Anforderung dieser Datei (innerhalb des Zeitraums).
    UseCount Die Häufigkeit der Anforderung der Datei (innerhalb des Zeitraums)
  • v. Die Tabelle TrackInfo (Spurinfo)
  • Die Tabelle TrackInfo 3045 enthält einen Datensatz für jede Spur jeder an dieser Station bekannten Datei. Die Tabelle TrackInfo 3045 kann Daten aufweisen, die aus den Metadaten TrackFile 3043 kopiert werden, wie dies durch den Pfeil 3040 dargestellt ist. Die Felder jedes Datensatzes TrackInfo sind wie folgt gegeben:
    FELD BEDEUTUNG
    NetworkId Die eindeutige ID des Netzwerks, wo diese Datei ihren Ursprung hat
    VolumeId Die eindeutige ID (in dem Netzwerk) des Datenträgers
    FileID Die eindeutige ID dieser Datei in dem Netzwerk
    TrackIndex Der Index dieser Spur
    TrackLength Die ganze Größe dieser Spur
    CurrentSize Die gesamte Größe aller Blockdateien, die sich aktuell im Speicher befinden
    MinRetainSize Die Mindestgröße, auf welche diese Spur beschnitten werden soll
    BlockSize Die Größe jeder Blockdatei dieser Spur (unter Umständen mit Ausnahme des letzten Blocks)
    Truncatable Boolscher Wert, der anzeigt, ob überhaupt Blöcke aus dieser Spur entfernt bzw. beschnitten werden können
  • vi. Die Tabelle Speicheralarm-Log (Storage Alarm Log)
  • Die Tabelle Speicheralarm-Log weist einen Eintrag für jedes Mal auf, wenn ein Datenträger in einen Alarmzustand eintritt oder diesen verlässt. Ein Datenträger befindet sich in einem Alarmzustand, wenn die aktuelle Speichernutzung den Alarmschwellenwert überschreitet. Die Felder des Speicheralarm-Log sind wie folgt gegeben:
    FELD BEDEUTUNG
    NetworkId Die eindeutige ID des Netzwerks, wo diese Datei ihren Ursprung hat
    VolumeId Die eindeutige ID (in dem Netzwerk) des Datenträgers, dem diese Datei gehört
    UpdateTime Der Zeitpunkt, zu dem dieser Datensatz erstellt worden ist
    CurrentUsage Die Anzahl der Speicherbytes, welche der Datenträger zum Zeitpunkt der Aktualisierung genutzt hat
    ReservedSpace Die Anzahl der Speicherbytes, welche der Datenträger reserviert hat
    AlarmState Ob sich der Datenträger IN oder NICHT IN einem Alarmzustand befindet (wahr oder falsch)
  • vii. Die Tabelle Speicherverwaltungs-Prüf-Log
  • Die Tabelle Speicherverwaltungs-Prüf-Log weist die folgenden Datensatzfelder auf:
    Lokaler Netzwerkspeicher insgesamt
    Speichergröße insgesamt
    Lokale Netzwerkspeichernutzung und -verfügbarkeit insgesamt
    Speichernutzung = Summe der vollständigen Speicherdatenträgergröße – Summe der vollständigen Datenträgerspeichernutzung.
  • 5. Optimierte Speicherverwaltung
  • a. Die Rolle der Speicherverwaltung
  • Wenn Inhalt veröffentlicht wird, wird die vollständige Datei im Ganzen oder ein Teil dieser an die Speichervorrichtungen im ganzen Netzwerk verteilt. Wenn eine Inhaltsdatei von einem Benutzer über VFCS angefordert wird, werden nicht residente Datenblöcke für die angeforderte Datei von anderen DS in die lokalen Speichervorrichtungen importiert. Das Importieren von Datenblöcken füllt letztlich den lokalen Speicher, was es erforderlich macht, das bestimmte weniger genutzte Inhalte gelöscht werden, um Platz für die neu importierten Blicke zu schaffen. Somit muss die Speichernutzung an jedem Verteilungszentrum sorgfältig überwacht und verwaltet werden, so dass die Speichernutzung optimiert wird.
  • Das Löschen von weniger beliebten Inhalten, um Platz für beliebtere Inhalte zu schaffen, wird als "Pruning" bezeichnet. Es ist die Aufgabe des Speicherverwaltungsteilsystems 2716, das auch als Speichermanager (Storage Manager) bezeichnet wird, das Pruning nach Bedarf auszuführen. Für die Verwaltung der Speichervorrichtungen, müssen die Speicherverfügbarkeit, die Benutzernachfrage und die Datenimportaktivitäten alle überwacht werden, so dass eine präzise Prognose der Daten, für welche ein Zugriff am wahrscheinlichsten ist, vorgenommen werden kann, und so dass lokale Speichervorrichtungen so angepasst werden können, dass sie nur die beliebtesten Inhalte speichern.
  • Der Speichermanager 2716 überwacht ferner die Speichernutzung jedes Datenträgers insgesamt. Er meldet dem Content Management Server (CMS 170) die Speichernutzung eines Datenträgers. Er meldet einem CMS ferner, wenn die Speichernutzung eines Datenträgers die reservierte Quote übersteigt.
  • Um Speicherverwaltungsentscheidungen zu treffen, überwacht der Speichermanager 2716 folgendes: 1) die Speicherverfügbarkeit insgesamt; 2) die Datenträgerspeicherreservierung und -informationen; 3) die Speicheraktivitäten für einen Datenträgerspeicherplatzraum; 4) die Speicheraktivitäten in der Station; 5) die Nutzung von Inhalten; 6) die Netzwerksituationen; und 7) die Attribute des Inhalts. Er entscheidet, wann er bestimmte Inhalte entfernen muss, um Platz für neue oder beliebtere Inhalte zu schaffen. Er entscheidet ferner darüber, welche und wie viele Datenblöcke entfernt werden sollen. Verschiedene unterschiedliche intelligente Algorithmen können eingesetzt werden, um Inhaltsblöcke für das Pruning gemäß Ausführungsbeispielen der vorliegenden Erfindung auszuwählen.
  • Wenn festgestellt wird, dass ein oder mehrere Datenträger (Volumen) sich oberhalb ihres Speicherschwellenwertes befindet bzw. befinden, wird der Inhalt in den Datenträgern untersucht und nach "Pruning-Fähigkeit" geordnet. Ein Inhalt gilt als Pruning-fähig, wenn er beschnitten werden kann, nicht auf seine zulässige Mindestgröße reduziert worden ist und zurzeit nicht verwendet wird (siehe unten). Diese Inhalte, die Pruning-fähig sind, werden für das Pruning geordnet (priorisiert), um eine ausgewählte Kostenfunktion zu optimieren. Zum Beispiel kann die Ordnung bzw. Sortierung abhängig von der Netzwerkkostenstruktur des Datenträgers mit dem Ziel vorgenommen werden, die Gesamtanzahl von Bytes des Netzwerkverkehrs für den Datenträger zu minimieren. Alternativ kann es Ziel der Rangordnung sein, lediglich die Spitzenbandbreitennutzung für den Datenträger zu minimieren oder eine Kostenfunktion zu minimieren, die eine mathematische Kombination dieser und anderer Faktoren darstellt, wie zum Beispiel des rechenbetonten Overheads oder der Lastverteilung über das gesamte Netzwerk.
  • Die Rangordnung umfasst das Analysieren der Informationen in der Informationsbank bzw. der Wissensbank, das heißt des aktuellen Status und des Nutzungsverlaufs des Inhalts. Unter Verwendung all dieser verfügbaren Informationen werden die unterschiedlichen Inhalte gemäß ihrer wahrscheinlichen Auswirkung auf die ausgewählte Kostenfunktion sortiert bzw. angeordnet. Wenn es sich bei der Kostenfunktion zum Beispiel nur um den Netzwerkverkehr insgesamt (in Bytes) handelt, so gilt ein Inhalt mehr Pruning-fähig als ein anderer Inhalt, wenn es für ihn weniger wahrscheinlich ist, dass er wieder angefordert wird (er wird weniger häufig verwendet). Bin Algorithmus zur seltensten Verwendung (Least Frequently Used) kann für diese Kostenfunktion eingesetzt werden. Die Indexe der sortierten Ergebnisse werden entweder in einer Datenbank oder einer Datei gespeichert, so dass mehrere Speichermanager einen gemeinsamen Zugriff auf die Ergebnisse ihrer Berechnungen aufweisen.
  • Der Speichermanager 2716 verwendet einen beliebigen einer Reihe von Algorithmen, welche die Nutzungsdaten untersuchen und bestimmen, welcher Inhalt die ausgewählte Kostenfunktion optimiert. Die Architektur ermöglicht das Hinzufügen neuer Algorithmen. Zusätzlich zu einem LFU-Algorithmus (Least Frequently Used Algorithmus) unterstützt der Speichermanager 2716 aktuell die Algorithmen Least Recently Used (LRU), Least Frequently Used Capped (LFUCapped), Lest Recently Used K-times (LRU-2, LRU-3, ...), Uniform Decay (UD) und ein Zufallsauswahlalgorithmus. Der LRU versucht die gleiche Kostenfunktion zu optimieren wie LFU (Netzwerkverkehr insgesamt), wobei jedoch ein Teil des Ziels geopfert wird im Austausch für eine bessere Recheneffizienz. LRU-K ist ein rechenbetonter Kompromiss zwischen LFU und LRU. LFUCapped ist eine auf den Zählwert begrenzte Version von LFU, welche empfindlicher sein möchte in Bezug auf Veränderungen der Popularität bzw. der Beliebtheit des Inhalts im Zeitverlauf. UD weist das Ziel der Reduzierung der Variabilität der Netzwerknutzung auf, so dass der resultierende Netzwerkverkehr ein höheres Gesamtvolumen aufweisen kann, jedoch im Zeitverlauf gleichmäßiger verteilt wird.
  • Der Speichermanager 2716 wechselt zwischen Algorithmen, wenn er bestimmt, dass bestimmte Netzwerkbedingungen oder Nutzungsmuster eine temporäre Präferenz für einen Algorithmus gegenüber einem anderen anzeigen. Der Speichermanager 2716 kann automatisch und/oder manuell zwischen Algorithmen wechseln als Reaktion auf die Auswahl eines Administrators oder eines Benutzers.
  • Das Maß des Pruning, das heißt, wie viel Pruning erfolgen soll, kann ebenfalls geregelt werden. Der Speichermanager 2716 erzeugt eine sortierte Liste von Inhalten, die nach Pruning-Fähigkeit geordnet werden. Durch das Besuchen jedes Inhaltsobjekts der Reihe nach, beginnend mit dem Objekt mit der größten Pruning-Fähigkeit, löscht er eine bestimmte Anzahl von Datenblöcken aus jedem Inhalt. Er stoppt diesen Prozess, wenn eine ausreichende Anzahl von Bytes einem Pruning unterzogen worden ist, um die Gesamtnutzung des Datenträgers auf ein akzeptables Maß zu senken – das unterhalb des Pruning-Schwellenwerts liegt. Die Anzahl der Datenblöcke, die er aus einem bestimmten Inhalt löscht, wird auf der Basis der ausgewählten Kostenfunktion und des Algorithmus berechnet.
  • Die meisten Algorithmen führen ein Pruning einer variablen Anzahl von Blockdateien aus jeder Pruning-fähigen Inhaltsdatei aus. Ein Algorithmus "Uniform Decay" kann zum Beispiel jedoch eingesetzt werden, welcher nur einen kleinen Teil jeder Pruning-fähigen Inhaltsdatei einem Pruning unterzieht, so dass die Gesamtanzahl an Bytes, die einem Pruning unterzogen werden müssen, so einheitlich wie möglich allen Pruning-fähigen Inhalten entnommen werden. Als Folge dessen neigt im Zeitverlauf jeder Inhalt eines Datenträgers dazu, dass daraus eine Menge gelöscht wird, die umgekehrt proportional ist zu dessen Häufigkeit der Verwendung. Je seltener ein Inhalt verwendet wird, desto mehr Bytes des Inhalts werden nicht lokal gespeichert. Es lässt sich mathematisch zeigen, dass diese Anordnung bei bestimmten Anwendungen zu einer geringeren Variabilität (statistische Varianz bzw. Abweichung) in dem Netzwerkverkehr führt. Die Fähigkeit für das Pruning von Inhaltsabschnitten bzw. Inhaltsteilen ermöglicht es einem Speichermanager 2716, die bestimmte Optimierung auszuführen.
  • Wie wird das Pruning ausgeführt?
  • Wenn der Speichermanager 2716 entscheidet, eine Inhaltsdatei einem Pruning zu unterziehen, wird die Datei genau untersucht bzw. geprüft, um den richtigen Bereich der Blöcke zu bestimmen, die entfernt werden sollen. Ein Pruning-Modell ist das Entfernen der Blöcke nur von dem Ende (temporär) der Datei. Ein weiteres Modell ist die Entfernung von Blöcken, beginnend mit Blocknummer (n + 1), wobei die Blöcke 1 bis n die entsprechende Anzahl der mindestens gespeicherten Blöcke darstellen.
  • Nachdem der Entfernungsbereich bestimmt worden ist, gibt der Speichermanager 2716 einen Befehl FDP REMOVE an den DS aus. Der Speichermanager 2716 aktualisiert nicht seine Informationsbank, bis nicht alle Blöcke tatsächlich durch den DS entfernt werden und der DS die Entfernung in dem DS-Log bzw. dem DS-Protokoll protokolliert hat.
  • Schutz während dem Einsatz
  • Wenn bestimmt wird, dass ein Inhalt eingesetzt wird, versucht der Speichermanager 2716 nicht, davon etwas zu löschen, d. h. die Datei wird nicht durch einen Pruning-Algorithmus untersucht.
  • In einem Beispiel gilt ein Inhalt als sich im Einsatz befindend, wenn die folgende Bedingung erfüllt ist:
    Aktuelle Zeit < Anfangszeit des Ansehens + max(Inhaltsdauer·Einsatzfaktor, Inhaltsdauer + minPufferimEinsatz).
  • In bestimmten Situationen kann der Speichermanager 2716 bestimmen, dass der Inhalt Pruning-fähig ist, und während diesem Prozess kann der Inhalt in den Einsatz gelangen. Um es zu verhindern, dass Inhalte gelöscht werden, wurde eine Sicherheitsmaßnahme ergriffen, wodurch der DS verifiziert, dass sich der Inhalt nicht im Einsatz befindet, bevor die Löschung ausgeführt wird. Diese Sicherheitsmaßnahmen können Datenträgerspeichersicherheitsschwellenwerte für den Inhalt aufweisen, wie etwa ein Alarmschwellenwert und ein Pruning-Schwellenwert. Jeder Schwellenwert stellt einen prozentualen Anteil der reservierten Speichergröße des Datenträgers dar; wobei der prozentuale Anteil konfigurierbar ist.
  • Die Funktionsweise des Speichermanagement-Teilsystems bzw. des Speicherverwaltungs-Teilsystems 2716 wird später im Text beschrieben.
  • b. Überblick über den Speicherverwaltungszyklus
  • Das Speicherverwaltungs-Teilsystem 2716 läuft ununterbrochen in einer Endlosschleife. Jeder vollständige Schleifendurchlauf wird als Zyklus bzw. Pruning-Zyklus bezeichnet. Die Abbildung aus 28 zeigt ein Ausführungsbeispiel des Zustandsdiagramms eines Speicherverwaltungszyklus der vorliegenden Erfindung (Schritte 28102870). Der Speichermanager 2716 verarbeitet periodisch die DS- und VFCS Aktivitätsprotokolle, um dessen Informationsbank zu aktualisieren und die erforderlichen Maßnahmen zu ergreifen, um den lokalen Speicher zu verwalten. Der maximale Zeitraum zwischen Zyklen ist konfigurierbar. Die in jedem Schritt eines Pruning-Zyklus ausgeführte Verarbeitung wird nachstehend wie folgt beschrieben:
    • • Schritt 0: (2870 aus 28) Ruhen über einen ausreichend langen Zeitraum, so dass ausreichend Aktivität aufgetreten sein kann, um einen weiteren Pruning-Zyklus nützlich zu machen, wobei der Zeitraum aber auch ausreichend kurz sein muss, so dass es unwahrscheinlich ist, dass ein Datenträger die Kapazität von 100% erreicht hat.
    • • Schritt 1: (2810 aus 28) Scannen des DS-Log auf Ereignisse, die Veränderungen von Informationen über Datenträger, Dateien oder Spurdateien bewirken oder von Parametern, die Datenträgern, Dateien oder Spurdateien zugeordnet sind. Für jedes "berührte" Objekt wird die Speicherverwaltungs-Informationsbank mit aus den VFCS Metadaten gewonnenen aktuellen Daten aktualisiert.
    • • Schritt 2: (2820 aus 28) Einmal täglich oder immer dann, wenn die Ablaufdaten von Dateien modifiziert worden sind, wird auf Dateien geprüft, die vor dem aktuellen Datum des Tages abgelaufen sind, und wobei diese Dateien gelöscht werden.
    • • Schritt 3: (2830 aus 28) Berechnen der aktuellen Speichernutzung jedes Datenträgers als prozentualer Anteil des reservierten Speicherplatzes des Datenträgers. Warnmeldung an CMS senden für jeden Datenträger, dessen prozentualer Nutzungsanteil den Alarmschwellenwert erreicht hat. Aufstellen einer Liste von Datenträgern, deren prozentuale Nutzung den Pruning-Schwellenwert überschritten hat.
    • • Schritt 4: (2840 aus 28) Für jeden Datenträger, dessen Speichernutzung über dem Pruning-Schwellenwert liegt wird entschieden, welche Blöcke welcher Dateien gelöscht werden sollen, um die Speichernutzung wieder sicher unter den Pruning-Schwellenwert zu bringen.
    • • Schritt 5: (2850 aus 28) Ausgeben von FDP-Befehlen REMOVE (Entfernen) an den DS, um die ausgewählten Blöcke zu erntfernen. Der DS stellt diese Befehle unabhängig von dem Speichermanager in die Warteschlange ein und verarbeitet sie später.
    • • Schritt 6: (2860 aus 28) Datenträgernutzungsstatistiken an CMS melden.
  • Der in der Abbildung aus 28 dargestellte Speicherverwaltungszyklus kann in mehreren Vorrichtungen implementiert werden als mehrere Prozesse, die parallel ausgeführt werden, während sie die gleiche Informations- bzw. Wissensbank nutzen.
  • Jeder der Schritte (oder Zustände) des Speicherverwaltungszyklus aus der Abbildung aus 28 wird später im Text in Bezug auf zusätzliche Implementierungen der vorliegenden Erfindung näher beschrieben. Die Abbildungen der 29A29E zeigen zusätzliche Unterschritte zur Ausführung der Schritte 1 bis 6 (d. h. der Schritte 28102860).
  • c. Bestimmung des Ruheintervalls zwischen Pruning-Zyklen
  • Es folgt eine Beschreibung von Schritt 2 aus 28 (Schritt 2800) gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Vor Beginn jedes neuen Pruning-Zyklus wird ein Algorithmus angewandt, um zu entscheiden, ob der Zyklus unverzüglich beginnen soll oder ob bis zu dem Beginn einen bestimmten Zeitraum lang "geruht" (gewartet) werden soll. Wenn ein Inhaltsdatenträger den Pruning-Schwellenwert in dem vorherigen Zyklus überschritten hat (was bedeutet, dass ein bestimmter Inhalt einem Pruning unterzogen werden musste, um die aktuelle Nutzung dieses Datenträgers auf einen Wert unterhalb des Schwellenwerts zu senken), so beginnt der nächste Zyklus unverzüglich. Wenn in dem vorherigen Zyklus für keinen Datenträger ein Pruning erforderlich gewesen ist, so ruht der Datenträger eine Weile bevor mit dem nächsten Zyklus begonnen wird. Die Dauer des Ruhezustands basiert darauf, wie lange es her ist, seit das letzte Pruning erforderlich gewesen ist. Je länger es zurückliegt, dass ein Pruning erforderlich gewesen ist, desto länger ist der Ruhezustand, maximal bis zu einem bestimmten maximalen Ruheintervall. Das maximale Ruheintervall stellt einen konfigurierbaren Parameter dar. Für den Fachmann auf dem Gebiet ist es unter Berücksichtigung der vorliegenden Beschreibung offensichtlich, dass ein höherer Algorithmus an dieser Stelle eingesetzt werden kann, um einen sicheren Zeitraum für den Ruhezustand zu schätzen bzw. zu prognostizieren, der das Risiko minimieren würde, dass ein Datenträger 100% des für ihn reservierten Speicherplatzes füllt, während sich der Speichermanager 2716 im Ruhezustand befindet.
  • d. Aktualisierung der Informationsbank
  • Es folgt eine Beschreibung von Schritt 2 (2810) aus 28 gemäß der Implementierung in einem Ausführungsbeispiel der vorliegenden Erfindung. Zu den dabei aktualisierten Informationen zählen die Speichernutzung des Inhaltsdatenträgers, die Inhaltsnutzung, die Datenträgerliste und Informationen, die Inhaltsdateiliste und Informationen, die aktuellen Bandbreitenkosten, die Kosten für die Übertragung jeder Inhaltsdatei, die tatsächliche Popularität der Inhalte, die optimale Speichergröße für jeden Inhalt und die Pruning-Fähigkeit der Inhalte. Die Unterschritte in diesem Zustand sind in dem Diagramm aus der Abbildung aus 29A dargestellt und werden nachstehend wie folgt beschrieben:
    • • (2911) Lesen des DS-Log für alle INFO-Befehle: die Arten der INFO-Befehle, die erfasst werden, lauten CPUdate (neue oder überarbeitete Daten zu einem Datenträger), ResUpdate (neue oder überarbeitete Speicherreservierung für einen Datenträger), CPDelete (Löschen eines Datenträgers) und FileUpdate (neue oder überarbeitete Daten zu einer Datei).
    • • (2912) Für jeden Datenträger, der von einem Info-Befehl betroffen ist, wird der Eintrag dieses Datenträgers in der Tabelle VolumeInfo aktualisiert, indem die Metadaten für den Datenträger aus dem VFCS gelesen werden. Für jede betroffene Datei wird der Eintrag in der Tabelle FileInfo für diese Datei aktualisiert, indem die aktuellen VFCS Metadaten für diese Datei gelesen werden.
    • • (2913) Lesen des DS-Log für alle Ereignisse, welche die aktuelle Größe von Dateien beeinflussen können. Derartige Ereignisse sind PUT, REPLICATE, PREPARE, REMOVE und CLEAN, die jeweils eine ganze Datei oder eine Spur in einer Datei beeinflussen.
    • • (2914) Für jede betroffene Spurdatei oder Datei wird der entsprechende Eintrag in der entsprechenden Tabelle TrackInfo oder FileInfo aktualisiert, indem die aktuellen Metadaten aus dem VFCS gelesen werden.
  • e. Abgelaufene Inhalte entfernen
  • Es folgt eine Beschreibung von Schritt 2 (2820) aus 28. Die Unterschritte sind in der Abbildung aus 29B als Diagramm dargestellt und werden nachstehend wie folgt beschrieben:
    • • (2921 & 2922) Bestimmen, ob der Zeitpunkt gekommen ist, um eine Prüfung hinsichtlich eines Dateiablaufs vorzunehmen. Dies ist der Fall, wenn an diesem Kalendertag noch keine Prüfung in Bezug auf abgelaufene Dateien vorgenommen worden ist (2921) oder wenn ein Teil der Dateiinformationen nach der letzten Prüfung aktualisiert worden ist (2922). Wenn keine dieser Bedingungen zutrifft, wird mit diesen Schritten nicht fortgefahren.
    • • (2923) Aus der Tabelle FileInfo eine Liste aller Dateien einholen, deren Ablaufdatum vor dem aktuellen Datum lag. (Das "Ablaufdatum" ist der letzte Tag, an dem die Datei gültig ist, so dass die Datei erst nach dem Ablaufdatum gelöscht wird.)
    • • (2924) Für jede abgelaufene Datei wird ein FDP-Befehl REMOVE an den DS ausgegeben, um die Datei zu entfernen.
  • f. Bestimmen, ob ein Pruning erforderlich ist
  • Es folgt eine Beschreibung von Schritt 3 (2830) aus 28. Untersuchen der Speicherverfügbarkeit und der Inhaltsdatenträgerreservierung, um zu bestimmen, ob ein Pruning in diesen Zyklus erforderlich ist. Die Unter- bzw. Teilschritte sind in der Abbildung aus 29C in Diagrammform dargestellt und werden nachstehend wie folgt beschrieben:
    • • (2931) Neue Berechnung des Felds CurrentUsage (aktuelle Nutzung) in der Tabelle VolumeInfo für jeden Datenträger auf der Basis der Summe aller Werte für die aktuelle Größe für alle Spurdateien, die allen Dateien zugeordnet sind, die zu diesem Datenträger gehören.
    • • (2932) Abfrage der Tabelle VolumeInfo in Bezug auf eine Liste aller Datenträger, deren aktuelle Nutzung oberhalb deren Alarmschwellenwerts liegt. Der Alarmschwellenwert für jeden Datenträger ist ein bestimmter prozentualer Anteil des reservierten Speicherplatzes dieses Datenträgers, wie zum Beispiel 90%.
    • • (2933) Für jeden Datenträger, dessen Nutzung den Alarmschwellenwert überschreitet, wird ein Alarmdatensatz in der Tabelle StorageAlarmLog (Speicheralarm-Log) gesetzt. (Ein separater Prozess nimmt diesen Eintrag auf und leitet ihn an den CMS an der dem Datenträger zugeordneten Station weiter).
    • • (2934) Abfrage der Tabelle VolumeInfo in Bezug auf eine Liste aller Datenträger, deren aktuelle Nutzung deren Pruning-Schwellenwert überschreitet. Der Pruning-Schwellenwert für jeden Datenträger ist ein bestimmter prozentualer Anteil des reservierten Speicherplatzes dieses Datenträgers an der Station, wie zum Beispiel 80%.
  • g. Aktualisierung des Inhaltsnutzungsverlaufs
  • Dies ist der erste Abschnitt von Schritt 4 (2840) aus 28. Immer, wenn bestimmt wird, dass ein oder mehrere Datenträger ein Pruning benötigen, erfolgt ein einzelner Durchlauf durch die Nutzungs-Log-Tabelle, um die Einträge zu löschen, die älter sind als ein bestimmter Zeitraum. Diese hilft dabei, sicherzustellen, dass das Nutzungs-Log bzw. Nutzungsprotokoll nicht zu groß wird. Im Allgemeinen werden Nutzungsdaten nur für die letzten 30 Tage zurückverfolgt bzw. überwacht, wobei jedoch der Zeitraum, über den die Überwachung erfolgt, einen konfigurierbaren Parameter darstellt.
  • h. Priorisierung von Inhalten für das Pruning
  • Es folgt eine Beschreibung des Rests von Schritt 4 (2840) aus 28. Die Unterschritte sind in der Abbildung aus 29D in Diagrammform dargestellt und werden nachstehend beschrieben. Diese Schritte werden für jeden Datenträger aus der in dem Schritt 2934 aus 29C erzeugten Liste wiederholt, das heißt, für jeden Datenträger, dessen Speichernutzung oberhalb des Schwellenwertes liegt:
    • • (2941) Aktualisieren der Nutzungszusammenfassungsinformationen in der Tabelle FileInfo für alle Dateien, die diesem Datenträger angehören, auf der Basis der Daten in der Nutzungs-Log-Tabelle. Die Felder FirstUsed, LastUsed und UsageCount in der Tabelle FileInfo werden für jede Datei aktualisiert, die diesem Datenträger angehört.
    • • (2942) Auswahl der Dateirangordnungskriterien und der Dateischutzkriterien. Die Dateirangordnungskriterien stellen eines der Kriterien LRU, LFU, UD, LRU-k oder anderer vorstehend beschriebener Kriterien dar. Die Schutzkriterien gelten für Dateien oder Dateiabschnitte. Wenn dieser Schritt zum ersten Mal ausgeführt wird, werden Dateien, die sich im Einsatz befinden und Dateien, die erst sehr kürzlich eingeführt worden sind, werden vor einem Pruning geschützt, d. h. sie werden nicht in die Kandidatenliste aufgenommen. Ferner wird ein anfänglicher Abschnitt jeder Spur jeder Datei in der Kandidatenliste geschützt, so dass Benutzer in der Lage sind, mit einer Latenz von Null auf Dateien zuzugreifen, selbst wenn der Rest jeder Spur einem Pruning unterzogen wird. In folgenden Runden werden die Schutzkriterien gelockert, so dass mehr Dateien Kandidaten werden und mehr Bytes jeder Kandidatendatei werden für das Pruning in Betracht gezogen: zuerst werden die Latenschutzvorkehrungen aufgehoben, danach wird der Schutz der zuletzt hinzufügten Dateien aufgehoben und schließlich wird der Schutz während dem Einsatz aufgehoben.
    • • (2943) Nutzung der Daten in der Tabelle FileInfo, um eine sortierte bzw. geordnete Liste von Kandidatendateien zu erstellen, die für das Pruning zur Verfügung stehen. Die Rangordnung basiert auf den in 2942 festgelegten Kriterien.
    • • (2944) Wenn die Kandidatenliste leer ist, erfolgt ein Rücksprung zu dem Schritt 2942 und eine Lockerung der Schutzkriterien, so dass mehr Dateien in eine neue Kandidatenliste aufgenommen werden. Im anderen Fall erfolgt ein Sprung zu 2945.
    • • (2945) Die obere bzw. führende Datei wird der Kandidatenliste aus Schritt 2943 entnommen. Ein Löschziel für die Datei wird festgelegt (eine Zielanzahl von Bytes, die mittels Pruning versucht werden, daraus zu entfernen) und es wird versucht daraus Blöcke zu löschen, welche insgesamt diese vielen Bytes ergeben (Schritt 5 (2850) aus 28 gemäß der nachstehenden Beschreibung). Das Löschziel ist abhängig von der Anzahl an Bytes, die noch erforderlich sind, um die Nutzung des Datenträgers unter den Schwellenwert zu senken sowie in Bezug auf die Rangordnungs- und Schutzkriterien, die in 2942 festgelegt worden sind. Algorithmen können das Löschziel so hoch wie möglich festlegen (100% der Datei), so dass so viel wie möglich einer Kandidatendatei einem Pruning unterzogen wird, bevor die nächste Datei aus der Kandidatenliste einem Pruning unterzogen wird. Der Algorithmus Uniform Decay (einheitlicher Verfall) versucht jedoch einige Bytes aus jeder Kandidatendatei einem Pruning zu unterziehen, und zwar auf eine Art und Weise, so dass die aus jeder Datei einem Pruning unterzogene Menge umgekehrt proportional ist zu der Häufigkeit der Nutzung der Datei.
    • • (2946) Wenn die kumulative Anzahl von Bytes, die erfolgreich aus allen Kandidatendateien gelöscht worden sind, die bislang besucht wurden, ausreicht, um die Nutzung des Datenträgers unter den Pruning-Schwellenwert zu senken, wird das Pruning ausgefürt (2947). Ansonsten kehrt die Steuerung zurück zu dem Schritt 2944, um die nächste Kandidatendatei für das Pruning zu untersuchen.
  • i. Blockdateien entfernen
  • Es folgt eine Beschreibung von Schritt 5 (2850) aus 28, aufgerufen aus 2945 aus 29D, wobei wir versuchen, Blockdateien zu löschen, die insgesamt eine bestimmte Anzahl von Bytes einer bestimmten Datei entsprechen. Wenn die Datei mehrere Tracks bzw. Spuren aufweist, können Blockdateien aus mehreren Spuren gelöscht werden. Die einfachste Strategie, die bei einer Implementierung der vorliegenden Erfindung eingesetzt wird, ist es, nacheinander jede Spur zu besuchen und mit der Auswahl von Blöcken fortzufahren, bis entweder keine Blöcke mehr aus dieser Spur gelöscht werden können oder bis die Gesamtgröße aller bislang ausgewählten Blöcke ausreicht, um das Löschziel zu erreichen. Nach der Auswahl, welche Blöcke einer Spur einem Pruning unterzogen werden sollen, gibt der Speichermanager einen FDP-Befehl "Remove" aus, um die tatsächliche Entfernung der ausgewählten Blöcke auszuführen.
  • Die Schritte für die Entscheidung, wie viele und welche Blöcke aus einer bestimmten Spur- bzw. Track-Dateie einem Pruning unterzogen werden sollen, sind in der Abbildung aus 29E in Diagrammform dargestellt und werden nachstehend im Text wie folgt beschrieben:
    • • (2951) Bestimmen der zulässigen Mindestgröße (als MinRetainSize bezeichnet) für die Spur auf der Basis des Dateityps und der Schutzkriterien, die in 2942 aus 29D festgelegt worden sind. Die MinRetainSize ist in allen Fällen gleich 0, ausgenommen dann, wenn der Latenzschutz aktiv ist und es sich bei der Datei um eine Mediendatei oder einen anderen Dateityp handelt. Für den Fall, dass die Datei in der Tabelle TrackInfo NICHT als trunkierbar gekennzeichnet ist, stellt die MinRetainSize die ganze Spur dar (die Datei kann in keiner Weise einem Pruning ausgesetzt werden). Im anderen Fall entspricht MinRetainSize dem Maximum von: i) einer bestimmten festen Anzahl von Bytes, ii) einem bestimmten festen prozentualen Anteil der Spur, iii) ausreichend Bytes für die Unterstützung des Streaming der ersten S Sekunden der Datei, wobei S eine feste Anzahl von Sekunden bezeichnet (die Gesamtdauer D der Datei ist aus der Tabelle FileInfo bekannt, so dass der Anteil S/D der Spur für S Sekunden ausreichen sollte.
  • Diese festen Anzahlen aus i), ii) und iii) stellen alle konfigurierbaren Parameter dar. In einem anderen Ausführungsbeispiel der vorliegenden Erfindung kann S dynamisch angepasst werden auf der Basis der gemessenen und prognostizierten Netzwerklatenz zwischen dieser Station und anderen Stationen. Nach der Berechnung von MinRetainSize muss diese auf eine ganze Anzahl von Blöcken aufgerundet werden. Dies wird in geeigneter Weise unter Verwendung der folgenden ganzzahligen Operationen berechnet: MinRetatinSize = ((MinRetainSize + BlockSize – 1)BlockSize)·BlockSize(BlockSize = Blockgröße).
    • • Berechnen der verfügbaren Größe der Spur (AvailableSize) als aktuelle Größe (CurrentSize) – MinRetainSize. Dabei handelt es sich um die Mindestanzahl von Bytes, die wir hoffen, aus dieser Spur löschen zu können. Der Wert der CurrentSize steht in der Tabelle TrackInfo zur Verfügung oder kann aus den Metadaten TrackFile gewonnen werden.
    • • Wenn AvailableSize <= 0, so kann an dieser Spur kein Pruning vorgenommen werden.
    • • Anpassen des Löschziels für diese Spur nach unten, sofern dies erforderlich ist, so dass das Ziel nicht größer ist als die AvailableSize.
    • • Aus den Metadaten der Spurdatei eine "Bitmap" erhalten, die angibt, welche Blockdateien dieser Spur sich aktuell im Speicher befinden. Diese Bitmap ist eine Anordnung von "0ern" und "1ern", indexiert von 0 bis N – 1, wobei N der Anzahl von Blöcken in der Spur entspricht, wobei ein Wert von "0" anzeigt, dass der Block aktuell nicht im Speicher enthalten ist, und wobei eine "1" anzeigt, dass sich der Block aktuell im Speicher befindet. Zum Beispiel: 111111111110011101110101110111111111100000000000
    • • Unter Verwendung der vorstehenden Bitmap werden die Anfangs- und Endblockindizes iStart und iEnd bestimmt, so dass iStart ausreichend "1er" (Blöcke, die vorhanden sind) aufweist, BEVOR es die MinRetainSize Bytes aufweist, die NICHT gelöscht werden, und es gibt ausreichend "1er" ZWISCHEN iStart und iEnd inklusive, um das Löschziel zu erfüllen. Dies ist möglich, da das Löschziel nicht größer ist (oder so angepasst wurde, dass es nicht größer ist) als die AvailableSize. Eine konkrete Methode, um iStart und iEnd auszuwählen, die in einem Ausführungsbeispiel der Erfindung eingesetzt wird, ist es, zuerst iEnd gleich dem Indes der letzten "1" in der Bitmap zu setzen, wobei iStart danach rückwärts abgetastet wird, beginnend bei iEnd, bis ausreichend "1er" gezählt worden sind, um das Löschziel zu erreichen. Diese Methode bewirkt, dass die Spurdateien stets "von dem Ende" einem Pruning ausgesetzt werden können. Andere Ausführungsbeispiele der vorliegenden erfindung können anders vorgehen, wie zum Beispiel indem iStart zuerst auf den Mindestindex gesetzt wird, der weiter MinRetainSize Bytes vorher aufweist, und wobei danach iEnd vorwärts abgetastet wird, bis ausreichend "1er" gezählt worden sind, um das Löschziel zu erreichen.
    • • Ausgabe eines FDP-Befehls REMOVE an den DS, wobei dieser aufgefordert wird, alle Blöcke von iStart bis iEnd (inklusive) aus dieser Spur dieser Datei zu entfernen. (Einige dieser Blöcke können bereits nicht mehr vorhanden sein, wobei diese redundanten Löschungsanforderungen jedoch unschädlich sind.)
    • • Hinzufügen der Anzahl von Bytes, die tatsächlich aus der Spur gelöscht worden sind, zu der kumulativen Summe aller Bytes, die aus dieser Datei gelöscht worden sind.
  • j. Datenträgerspeichernutzung an deren CMS melden
  • Es folgt eine Beschreibung von Schritt 6 (2860) aus 28. Die CMS-Adresse eines Datenträgers wird in der Datenträgertabelle in dem Inhaltsspeicher gespeichert. Wenn eine Speichernutzung des Inhaltsdatenträgers den Alarmschwellenwert übersteigt und der Speichermanager keinen der Inhaltsblöcke entfernen kann, die zu dem Datenträger gehören, so benachrichtigt der Speichermanager den CMS des Datenträgers und den Netzwerkbetreiber. Nach Empfang der Benachrichtigung bzw. Mitteilung verhindert der CMS, dass der Inhalteeigentümer mehr Inhalt hochlädt, ohne dem Datenträger zusätzlichen reservierten Speicherplatz hinzuzufügen. Wenn die Nutzung des Datenträgerspeichers unter den Alarmschwellenwert sinkt, benachrichtigt der Speichermanager den CMS hinsichtlich der Aufhebung der Upload-Beschränkung.
  • Während dem gesamten Verwaltungszyklus meldet der Speichermanager ferner Fehler, Warnungen und die Speichernutzungsstatistiken insgesamt an das Servicemanaagement-Teilsystem.
  • Der Speichermanager stellt sicher, dass der Speicherplatz insgesamt ausreichend groß ist für den insgesamt reservierten Speicherplatz für den Inhaltsdatenträger. Dies wird durchgesetzt mithilfe der Kooperation des CMS und des lernenden Agenten bzw. des Lernagenten an einer Station. Der Speichermanager informiert den CMS bezüglich der Speichernutzung jedes Datenträgers. Er sendet ferner eine Alarm- bzw. Warnmeldung an den CMS, wenn sich eine Datenträgernutzung jenseits des Sicherheitsschwellenwertes befindet. Der CMS kann es verhindern, dass der Inhalteeigentümer bzw. Content Owner des Datenträgers dem Netzwerk neue Inhalte hinzufügt. Der lernende Agent kann dessen Lernen von Inhalten aussetzen, wenn ein Datenträger dessen Quote überschreitet.
  • 6. Rechenumgebung
  • Die vorliegende Erfindung kann in Software, Hardware oder einer Kombination beider implementiert werden sowie unter Verwendung eines oder mehrerer Computersysteme oder Verarbeitungssysteme. Ein Beispiel für ein Computersystem, das eingesetzt werden kann, um zum Beispiel einen Content Management Server 170, einen Content Provider Client 130, einen Verteilungsserver in einem Cluster DSC 410, eine Steuereinheit 450, einen Anwendungsserver, ein VFCS 470, 1800 oder jede andere Rechenplattform zu implementieren (hierin auch als "Maschinen", "Vorrichtungen", "Geräte" oder "Server" bezeichnet), ist das Computersystem 3100, das in der Abbildung aus 31 dargestellt ist. Das Computersystem 3100 weist einen oder mehrere Prozessoren auf, wie etwa den Prozessor 3104. Der Prozessor 3104 ist mit einer Kommunikationsinfrastruktur 3106 (z. B. einem Bus oder einem Netzwerk) verbunden. Verschiedene Ausführungsbeispiele können in Bezug auf dieses beispielhafte Computersystem beschrieben werden. Nach dem Lesen der vorliegenden Beschreibung ist es für den Fachmann auf dem Gebiet jedoch erkennbar, wie die Erfindung unter Verwendung anderer Computersysteme und/oder Computerarchitekturen implementiert werden kann.
  • Das Computersystem 3100 kann auch einen Hauptspeicher 3108 aufweisen, vorzugsweise einen Direktzugriffsspeicher (RAM), und es kann ferner einen sekundären Speicher 3110 aufweisen. Der sekundäre Speicher 3110 kann zum Beispiel ein Festplattenlaufwerk 3112 und/oder ein entfernbares bzw. Wechselspeicherlaufwerk 3114 aufweisen, das ein Floppy-Diskettenlaufwerk, ein Magnetbandlaufwerk, ein optisches Plattenlaufwerk, etc. darstellt. Das Wechselspeicherlaufwerk 3114 liest aus einer entfernbaren bzw. Wechselspeichereinheit 3118 bzw. beschreibt diese auf allgemein bekannte Art und Weise. Die Wechselspeichereinheit 3118 stellt eine Floppy-Diskette, ein Magnetband, eine optische Disk, etc. dar. Wie dies erkennbar ist, weist die Wechselspeichereinheit 3118 ein in einem Computer einsetzbares Speichermedium auf, auf dem Computersoftware und/oder Daten gespeichert sind.
  • Der sekundäre Speicher 3110 kann auch weitere ähnliche Einrichtungen aufweisen, die es ermöglichen, dass Computerprogramme oder Eingabedaten in das Computersystem 3100 geladen werden. Zu derartigen Einrichtungen können zum Beispiel eine Wechselspeichereinheit 3122 und eine Schnittstelle 3120 zählen. Zu den Beispielen dafür zählen eine Programmkassette und eine Kassettenschnittstelle (wie diese etwa in Videospielvorrichtungen vorhanden sind), ein Wechselspeicherchip (wie etwa ein EPROM oder PROM) und ein zugeordneter Steckplatz sowie sonstige Wechselspeichereinheiten 3122 und Schnittstellen 3120, die es ermöglichen, dass Software und Daten von der Wechselspeichereinheit 3122 zu dem Computersystem 3100 übertragen werden.
  • Das Computersystem 3100 kann ferner eine Kommunikationsschnittstelle 3124 aufweisen. Die Kommunikationsschnittstelle 3124 ermöglicht es, dass Software und Daten zwischen dem Computersystem 3100 und externen Vorrichtungen übertragen werden. Zu den Beispielen für die Kommunikationsschnittstelle 3124 können unter anderem ein Modem, eine Netzwerkkarte (z. B. eine Ethernet-Karte), ein Kommunikations-Port, ein PCMCIA-Steckplatz und eine PCMCIA-Karte, etc. zählen. Software und Daten, die über die Kommunikationsschnittstelle 3124 übertragen werden, sind in Form von Signalen 3128 gegeben, bei denen es sich um elektronische, elektromagnetische, optische oder andere Signale handeln kann, die von der Kommunikationsschnittstelle 3124 empfangen werden können. Diese Signale 3128 werden an die Kommunikationsschnittstelle 3124 über einen Kommunikationspfad (d. h. Kanal) 3126 bereitgestellt. Dieser Kanal 3126 führt Signale 3128 in das und aus dem Computersystem 3100 und kann implementiert werden unter Verwendung von Draht oder Kabel, Lichtwellenleitern, einer Telefonleitung, eines Mobiltelefonvermittlungsabschnitts, eines HF-Links und sonstiger Kommunikationskanäle.
  • In einem Ausführungsbeispiel der vorliegenden Erfindung können die Signale 3128 Inhalte oder verschiedene Signale, die von Prozessen erzeugt werden, die auf dem Computersystem 3100 erzeugt werden, übermitteln, um Blockdateien zu erfassen bzw. zu senden und um das Zusammensetzen einer Nutzlast zu verwalten.
  • In dem vorliegenden Dokument werden die Begriffe "Computerprogrammmedium" und "in einem Computer einsetzbares Medium" eingesetzt, um allgemein Medien zu bezeichnen, wie etwa ein Wechselspeicherlaufwerk 3114, eine in einem Festplattenlaufwerk 3112 installierte Festplatte und die Signale 3128. Diese Computerprogrammprodukte sind Einrichtungen, die Software an das Computersystem 3100 bereitstellen. Die vorliegende Erfindung weist derartige Computerprogrammprodukte auf.
  • Computerprogramme (auch als Computersteuerlogik bezeichnet) werden in dem Hauptspeicher 3108 und/oder dem sekundären Speicher 3110 gespeichert. Die Computerprogramme können auch über die Kommunikationsschnittstelle 3124 empfangen werden. Wenn derartige Computerprogramme ausgeführt werden, ermöglichen sie es, dass das Computersystem 3100 die Merkmale der vorliegenden Erfindung ausführt, wie dies hierin beschrieben ist. Im Besonderen ermöglichen es die Computerprogramme, wenn sie ausgeführt werden, dass der Prozessor 3104 die Merkmale der vorliegenden Erfindung ausführt. Folglich stellen derartige Computerprogramme Steuereinheiten des Computersystems 3100 dar.
  • D. Schlussfolgerung
  • Zu den Vorteilen der vorliegenden Erfindung zählen die Fähigkeiten, Dateisystemobjekte von jedem Knoten eines Netzwerks von Knoten zu speichern, zu verteilen, zu verwalten und zu synchronisieren, ohne die Darstellung des Objekts an den Benutzer zu verzögern, wobei aber auch gleichzeitig nur ein Mindestmaß an Speicherplatz erforderlich ist. Die Erfindung ermöglicht die Festlegung und Durchsetzung von Servicequalitätsrichtlinien über eine generische Dateisystemschnittstelle. Die Erfindung integriert Speichervorrichtungen und Dateisysteme in einem lokalen oder Wide Area-Netzwerk und sorgt dafür, dass die Vorrichtungen als eine mit einer integrierten Dateisystemansicht funktionieren. Ein Dateisystemserver gemäß der vorliegenden Erfindung ist in der Lage, ein "selektives und dynamisches Caching" auszuführen, um Endbenutzern eine riesige Bibliothek von Inhalten bereitzustellen, mit begrenzten Speicher- und Netzwerkressourcen. Die Dateiserver sind zu Clustern zusammengefasst, die durch eine zustandslose Lastverteilungseinrichtung unterstützt werden können.
  • Die vorstehende Beschreibung der Ausführungsbeispiele dient dazu, es Fachleuten auf dem Gebiet zu ermöglichen, die vorliegende Erfindung zu implementieren oder zu nutzen. Die Erfindung wurde zwar speziell in Bezug auf deren Ausführungsbeispiele dargestellt und beschrieben, wobei hiermit für den Fachmann auf dem Gebiet festgestellt wird, dass verschiedene Abänderungen in Bezug auf Ausführung und Einzelheiten diesbezüglich vorgenommen werden können, ohne dabei vom Umfang der vorliegenden Erfindung abzuweichen, der durch die folgenden Ansprüche definiert ist.

Claims (5)

  1. Verfahren zur effizienten Speicherverwaltung (420) in einem verteilten Netzwerk (100) mit einer Mehrzahl von verbundenen Knoten, wobei das Verfahren die folgenden Schritte umfasst: das Bestimmen (2830, 2934), wenn ein bestimmter Dateispeicherparameter einen Pruning-Schwellenwert überschreitet; und das Ausführen eines Pruning-Zyklus, wobei dies folgendes aufweist: (a) das Identifizieren (2840) der dem Speicher zugeordneten Inhaltskomponenten; (b) das selektive Pruning (2850) der Inhaltskomponenten zumindest teilweise auf der Basis der Nutzungsstatistik, so dass der Dateispeicherparameter auf einen Wert unterhalb des Pruning-Schwellenwerts reduziert wird; und (c) das Aktualisieren von Metadaten (2860), die den Inhaltskomponenten zugeordnet sind, um die aktualisierten Speichersystemparameter zu reflektieren; gekennzeichnet durch: (d) das Präsentieren des Inhalts des aktualisierten Speichernetzwerks als ein virtuelles Dateisystem, so dass alle Dateien für jeden Knoten lokal zugänglich erscheinen.
  2. Verfahren nach Anspruch 1, wobei dieses ferner den folgenden Schritt umfasst: das Bereitstellen der Dateien an Benutzer unabhängig von der physikalischen Position der Inahltskomponenten.
  3. Verfahren nach Anspruch 2, wobei dieses ferner den folgenden Schritt umfasst: das Bereitstellen der Dateien an Benutzer mit der gleichen Rate, wie dies möglich wäre, wenn die ganze Datei lokal gespeichert werden würde.
  4. Verfahren nach Anspruch 3, wobei: der Schritt des Bereitstellens weniger Netzwerkübertragungsverkehr insgesamt erfordert, als wie dieser erforderlich wäre, wenn die ganze Datei über einen einzigen Knoten dem Benutzer bereitgestellt werden würde.
  5. Verfahren nach Anspruch 2, wobei: der Schritt des Bereitstellens parallel zu dem Pruning-Schritt ausgeführt wird.
DE60131900T 2000-10-26 2001-10-26 Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten Expired - Lifetime DE60131900T2 (de)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US26628600P 2000-10-26 2000-10-26
US266286P 2000-10-26
US27840901P 2001-03-23 2001-03-23
US27840801P 2001-03-23 2001-03-23
US27846901P 2001-03-23 2001-03-23
US27828501P 2001-03-23 2001-03-23
US278408P 2001-03-23
US278409P 2001-03-23
US278285P 2001-03-23
US278469P 2001-03-23
US09/681,644 US6970939B2 (en) 2000-10-26 2001-05-15 Method and apparatus for large payload distribution in a network
US681644 2001-05-15
PCT/US2001/042785 WO2002035359A2 (en) 2000-10-26 2001-10-26 Method and system for managing distributed content and related metadata

Publications (2)

Publication Number Publication Date
DE60131900D1 DE60131900D1 (de) 2008-01-24
DE60131900T2 true DE60131900T2 (de) 2008-12-04

Family

ID=27559463

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60131900T Expired - Lifetime DE60131900T2 (de) 2000-10-26 2001-10-26 Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten

Country Status (7)

Country Link
US (1) US7272613B2 (de)
EP (1) EP1364510B1 (de)
AT (1) ATE381191T1 (de)
AU (1) AU2002214659A1 (de)
DE (1) DE60131900T2 (de)
HK (1) HK1058279A1 (de)
WO (1) WO2002035359A2 (de)

Families Citing this family (1277)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058696B1 (en) * 1996-11-22 2006-06-06 Mangosoft Corporation Internet-based shared file service with native PC client access and semantics
US6453334B1 (en) 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US7281168B1 (en) 2000-03-03 2007-10-09 Intel Corporation Failover architecture for local devices that access remote storage
US7203731B1 (en) 2000-03-03 2007-04-10 Intel Corporation Dynamic replication of files in a network storage system
US7266555B1 (en) 2000-03-03 2007-09-04 Intel Corporation Methods and apparatus for accessing remote storage through use of a local device
US6952737B1 (en) * 2000-03-03 2005-10-04 Intel Corporation Method and apparatus for accessing remote storage in a distributed storage cluster architecture
US7428540B1 (en) 2000-03-03 2008-09-23 Intel Corporation Network storage system
US7506034B2 (en) * 2000-03-03 2009-03-17 Intel Corporation Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US7380007B1 (en) * 2000-06-30 2008-05-27 Aol Llc, A Delaware Limited Liability Company Automatic user session
US8281022B1 (en) * 2000-06-30 2012-10-02 Emc Corporation Method and apparatus for implementing high-performance, scaleable data processing and storage systems
AU2002248158A1 (en) * 2000-11-02 2002-08-12 Pirus Networks Tcp/udp acceleration
US8831995B2 (en) 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US6912543B2 (en) * 2000-11-14 2005-06-28 International Business Machines Corporation Object-oriented method and system for transferring a file system
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7346928B1 (en) * 2000-12-01 2008-03-18 Network Appliance, Inc. Decentralized appliance virus scanning
US7778981B2 (en) * 2000-12-01 2010-08-17 Netapp, Inc. Policy engine to control the servicing of requests received by a storage server
US7266556B1 (en) 2000-12-29 2007-09-04 Intel Corporation Failover architecture for a distributed storage system
US7627897B2 (en) * 2001-01-03 2009-12-01 Portauthority Technologies Inc. Method and apparatus for a reactive defense against illegal distribution of multimedia content in file sharing networks
US7788335B2 (en) 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US20040133606A1 (en) 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US8195760B2 (en) 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
US8239354B2 (en) 2005-03-03 2012-08-07 F5 Networks, Inc. System and method for managing small-size files in an aggregated file system
US7509322B2 (en) 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US7512673B2 (en) 2001-01-11 2009-03-31 Attune Systems, Inc. Rule based aggregation of files and transactions in a switched file system
JP2005502096A (ja) 2001-01-11 2005-01-20 ゼット−フォース コミュニケイションズ インコーポレイテッド ファイルスイッチ及び交換ファイルシステム
US20040019658A1 (en) * 2001-03-26 2004-01-29 Microsoft Corporation Metadata retrieval protocols and namespace identifiers
US6643845B2 (en) * 2001-04-16 2003-11-11 Handyglove, Llc Magnetic work glove
US7110525B1 (en) 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
EP1298878A1 (de) * 2001-09-26 2003-04-02 Telefonaktiebolaget L M Ericsson (Publ) Hierarchische Cachespeicherung in Telekommunikationsnetzen
US7415539B2 (en) * 2001-09-28 2008-08-19 Siebel Systems, Inc. Method and apparatus for detecting insufficient memory for data extraction processes
JP2003131924A (ja) * 2001-10-19 2003-05-09 Fujitsu Ltd リモートアクセスプログラム、リモートアクセス要求処理プログラム、およびクライアントコンピュータ
US7958199B2 (en) * 2001-11-02 2011-06-07 Oracle America, Inc. Switching systems and methods for storage management in digital networks
FI115358B (fi) * 2001-11-05 2005-04-15 Nokia Corp Tilaton kuormanjako
US7194563B2 (en) * 2001-12-05 2007-03-20 Scientific-Atlanta, Inc. Disk driver cluster management of time shift buffer with file allocation table structure
ATE497207T1 (de) * 2001-12-06 2011-02-15 Toyota Motor Sales Usa Inc Fahrzeug-abspiel-system
US7962011B2 (en) 2001-12-06 2011-06-14 Plourde Jr Harold J Controlling substantially constant buffer capacity for personal video recording with consistent user interface of available disk space
US20030108044A1 (en) * 2001-12-11 2003-06-12 Roland Hendel Stateless TCP/IP protocol
US7360034B1 (en) * 2001-12-28 2008-04-15 Network Appliance, Inc. Architecture for creating and maintaining virtual filers on a filer
US6931410B2 (en) * 2002-01-11 2005-08-16 International Business Machines Corporation Method, apparatus, and program for separate representations of file system locations from referring file systems
US20030142129A1 (en) * 2002-01-31 2003-07-31 Kleven Michael L. Content processing and distribution systems and processes
US7043503B2 (en) * 2002-02-15 2006-05-09 International Business Machines Corporation Ditto address indicating true disk address for actual data blocks stored in one of an inode of the file system and subsequent snapshot
US7117201B2 (en) * 2002-03-20 2006-10-03 Hewlett-Packard Development Company, L.P. Resource searching
US7096228B2 (en) * 2002-03-27 2006-08-22 Microsoft Corporation Method and system for managing data records on a computer network
WO2003087982A2 (en) 2002-04-08 2003-10-23 Cyanea Systems Corp. Method and system for problem determination in distributed enterprise applications
GB2387684A (en) * 2002-04-19 2003-10-22 Hewlett Packard Co Management of a long term digital document storage system
US7526519B2 (en) * 2002-05-01 2009-04-28 Bea Systems, Inc. High availability application view deployment
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US20030220860A1 (en) * 2002-05-24 2003-11-27 Hewlett-Packard Development Company,L.P. Knowledge discovery through an analytic learning cycle
US20040039754A1 (en) * 2002-05-31 2004-02-26 Harple Daniel L. Method and system for cataloging and managing the distribution of distributed digital assets
US7219096B2 (en) * 2002-06-06 2007-05-15 International Business Machines Corporation Method for migrating open files on a busy file system
US9344235B1 (en) * 2002-06-07 2016-05-17 Datacore Software Corporation Network managed volumes
US7089323B2 (en) * 2002-06-21 2006-08-08 Microsoft Corporation Method for multicasting a message on a computer network
US7870244B2 (en) * 2002-06-25 2011-01-11 International Business Machines Corporation Monitoring performance of applications in a distributed environment
JP3687631B2 (ja) * 2002-06-26 2005-08-24 日本電気株式会社 コンテンツ配信システム、コンテンツ配信方法、無線回線制御装置及びプログラム
US7334099B2 (en) * 2002-06-28 2008-02-19 Microsoft Corporation Method and system for managing image files
US7293150B2 (en) 2002-06-28 2007-11-06 Microsoft Corporation Method and system for creating and restoring an image file
US7362349B2 (en) * 2002-07-10 2008-04-22 Seiko Epson Corporation Multi-participant conference system with controllable content delivery using a client monitor back-channel
JP4240930B2 (ja) 2002-07-15 2009-03-18 株式会社日立製作所 複数ネットワークストレージの仮送想一元化方法及び装置
JP2004054721A (ja) * 2002-07-23 2004-02-19 Hitachi Ltd ネットワークストレージ仮想化方法
US7289500B1 (en) * 2003-07-17 2007-10-30 Novell, Inc. Method and system for reliable multicast data transmission
US7047321B1 (en) * 2002-08-26 2006-05-16 Network Appliance, Inc. Unblocking an operating system thread for managing input/output requests to hardware devices
US7882081B2 (en) * 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US7146389B2 (en) * 2002-08-30 2006-12-05 Hitachi, Ltd. Method for rebalancing free disk space among network storages virtualized into a single file system view
CA2497305A1 (en) * 2002-09-10 2004-03-25 Exagrid Systems, Inc. Primary and remote data backup with nodal failover
US8181205B2 (en) 2002-09-24 2012-05-15 Russ Samuel H PVR channel and PVR IPG information
US20040068523A1 (en) * 2002-10-07 2004-04-08 Keith Robert Olan Method and system for full asynchronous master-to-master file synchronization
US7509645B2 (en) * 2002-10-17 2009-03-24 Intel Corporation Methods and apparatus for load balancing storage nodes in a distributed network attached storage system
US20040093427A1 (en) * 2002-10-29 2004-05-13 Lopez Ricardo Jorge Service diversity for communication system
US7991827B1 (en) 2002-11-13 2011-08-02 Mcafee, Inc. Network analysis system and method utilizing collected metadata
US7567993B2 (en) 2002-12-09 2009-07-28 Netapp, Inc. Method and system for creating and using removable disk based copies of backup data
US8024172B2 (en) 2002-12-09 2011-09-20 Netapp, Inc. Method and system for emulating tape libraries
US9314691B2 (en) 2002-12-10 2016-04-19 Sony Computer Entertainment America Llc System and method for compressing video frames or portions thereof based on feedback information from a client device
US8549574B2 (en) 2002-12-10 2013-10-01 Ol2, Inc. Method of combining linear content and interactive content compressed together as streaming interactive video
US8366552B2 (en) 2002-12-10 2013-02-05 Ol2, Inc. System and method for multi-stream video compression
US10201760B2 (en) 2002-12-10 2019-02-12 Sony Interactive Entertainment America Llc System and method for compressing video based on detected intraframe motion
US9192859B2 (en) 2002-12-10 2015-11-24 Sony Computer Entertainment America Llc System and method for compressing video based on latency measurements and other feedback
US20090118019A1 (en) 2002-12-10 2009-05-07 Onlive, Inc. System for streaming databases serving real-time applications used through streaming interactive video
US9446305B2 (en) 2002-12-10 2016-09-20 Sony Interactive Entertainment America Llc System and method for improving the graphics performance of hosted applications
US8711923B2 (en) 2002-12-10 2014-04-29 Ol2, Inc. System and method for selecting a video encoding format based on feedback data
US8964830B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for multi-stream video compression using multiple encoding formats
US9138644B2 (en) 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
US9108107B2 (en) 2002-12-10 2015-08-18 Sony Computer Entertainment America Llc Hosting and broadcasting virtual events using streaming interactive video
US9077991B2 (en) 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US9061207B2 (en) 2002-12-10 2015-06-23 Sony Computer Entertainment America Llc Temporary decoder apparatus and method
US8526490B2 (en) 2002-12-10 2013-09-03 Ol2, Inc. System and method for video compression using feedback including data related to the successful receipt of video content
US20040128269A1 (en) * 2002-12-27 2004-07-01 Milligan Charles A. System and method for managing data through families of inter-related metadata tables
US7877511B1 (en) 2003-01-13 2011-01-25 F5 Networks, Inc. Method and apparatus for adaptive services networking
US9372870B1 (en) 2003-01-21 2016-06-21 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems and cluster storage system
US8626820B1 (en) 2003-01-21 2014-01-07 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems
JP2004234158A (ja) * 2003-01-29 2004-08-19 Sony Corp 情報処理装置、およびコンテンツ管理方法、コンテンツ情報管理方法、並びにコンピュータ・プログラム
US7240361B2 (en) * 2003-01-31 2007-07-03 Qwest Communications International Inc. Systems and methods for controlled transmittance in a telecommunication system
JP2004234558A (ja) * 2003-01-31 2004-08-19 Hitachi Ltd 記憶デバイス制御装置、及びプログラム
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US7890633B2 (en) * 2003-02-13 2011-02-15 Oracle America, Inc. System and method of extending virtual address resolution for mapping networks
WO2004073657A2 (en) * 2003-02-19 2004-09-02 Protein Design Labs, Inc. Methods of diagnosis of cancer and other diseases, composition and methods of screening for modulators of cancer and other diseases
US20040179538A1 (en) * 2003-03-13 2004-09-16 Makofka Douglas S. System and method for delivery network resource management in a broadband
JP4265245B2 (ja) * 2003-03-17 2009-05-20 株式会社日立製作所 計算機システム
US7216253B2 (en) * 2003-03-26 2007-05-08 Pillar Data Systems, Inc. Methods and systems for management of systems metadata
JP2004295464A (ja) * 2003-03-27 2004-10-21 Hitachi Ltd 計算機システム
US20040215802A1 (en) * 2003-04-08 2004-10-28 Lisa Amini System and method for resource-efficient live media streaming to heterogeneous clients
US20040215747A1 (en) * 2003-04-11 2004-10-28 Jonathan Maron System and method for a configuration repository
WO2004097624A1 (en) * 2003-04-24 2004-11-11 Neopath Networks, Inc. Large file support for a network file server
US7587422B2 (en) * 2003-04-24 2009-09-08 Neopath Networks, Inc. Transparent file replication using namespace replication
US7346664B2 (en) * 2003-04-24 2008-03-18 Neopath Networks, Inc. Transparent file migration using namespace replication
US9420072B2 (en) 2003-04-25 2016-08-16 Z124 Smartphone databoost
US20040236830A1 (en) * 2003-05-15 2004-11-25 Steve Nelson Annotation management system
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
JP3663199B2 (ja) * 2003-05-16 2005-06-22 三洋電機株式会社 迷惑メール自動判定機能を有する通信装置
US20040230655A1 (en) * 2003-05-16 2004-11-18 Chia-Hsin Li Method and system for media playback architecture
JP4562115B2 (ja) * 2003-06-11 2010-10-13 ソニー株式会社 ファイル生成装置および方法、プログラム、並びに記録媒体
US8533254B1 (en) * 2003-06-17 2013-09-10 F5 Networks, Inc. Method and system for replicating content over a network
US20040267705A1 (en) * 2003-06-17 2004-12-30 Connie Lemus Memory with file deletion system
EP1634176B1 (de) * 2003-06-18 2014-07-02 Fujitsu Technology Solutions Intellectual Property GmbH Clusteranordnung für dezentrale lastverteilung
WO2005008439A2 (en) * 2003-07-11 2005-01-27 Computer Associates Think, Inc. San/storage self-healing/capacity planning system and method
US7349906B2 (en) * 2003-07-15 2008-03-25 Hewlett-Packard Development Company, L.P. System and method having improved efficiency for distributing a file among a plurality of recipients
US7650563B2 (en) * 2003-07-18 2010-01-19 Microsoft Corporation Aggregating metadata for media content from multiple devices
KR100984497B1 (ko) * 2003-07-24 2010-10-01 파나소닉 주식회사 파일 관리 방법 및 정보 처리 장치
US7379989B2 (en) * 2003-07-31 2008-05-27 International Business Machines Corporation Method for dual agent processes and dual active server processes
US8112449B2 (en) * 2003-08-01 2012-02-07 Qwest Communications International Inc. Systems and methods for implementing a content object access point
US7536674B2 (en) * 2003-08-13 2009-05-19 Intel Corporation Method and system for configuring network processing software to exploit packet flow data locality
JP2005071227A (ja) * 2003-08-27 2005-03-17 Sony Corp メタデータ流通管理システム,メタデータ流通管理装置,個人別メタデータ管理装置,クライアント端末,メタデータ流通管理方法およびコンピュータプログラム
US20050050243A1 (en) * 2003-08-29 2005-03-03 Clark Stacey A. Modified core-edge topology for a fibre channel network
US7143112B2 (en) 2003-09-10 2006-11-28 Hitachi, Ltd. Method and apparatus for data integration
US8539081B2 (en) * 2003-09-15 2013-09-17 Neopath Networks, Inc. Enabling proxy services using referral mechanisms
JP4257783B2 (ja) * 2003-10-23 2009-04-22 株式会社日立製作所 論理分割可能な記憶装置及び記憶装置システム
US7127545B1 (en) * 2003-11-19 2006-10-24 Veritas Operating Corporation System and method for dynamically loadable storage device I/O policy modules
US7333993B2 (en) * 2003-11-25 2008-02-19 Network Appliance, Inc. Adaptive file readahead technique for multiple read streams
US9075851B2 (en) * 2003-12-09 2015-07-07 Emc Corporation Method and apparatus for data retention in a storage system
US20050131965A1 (en) * 2003-12-11 2005-06-16 Lam Wai T. System and method for replicating data
EP1545059B1 (de) * 2003-12-16 2007-03-07 Alcatel Anordnung mit einem Terminal, einem Zugangsmultiplexer und einem Netzwerk
US8103772B2 (en) 2003-12-24 2012-01-24 Sap Aktiengesellschaft Cluster extension in distributed systems using tree method
US8499078B2 (en) * 2003-12-24 2013-07-30 Sap Aktiengesellschaft Address generation in distributed systems using tree method
US20050216823A1 (en) * 2003-12-30 2005-09-29 Microsoft Corporation Assigning textual ads based on article history
US8386503B2 (en) 2004-01-16 2013-02-26 International Business Machines Corporation Method and apparatus for entity removal from a content management solution implementing time-based flagging for certainty in a relational database environment
US20050165912A1 (en) * 2004-01-23 2005-07-28 Colbeck Scott J. GUI-based grid computing data management apparatus method and system
JP4227035B2 (ja) 2004-02-03 2009-02-18 株式会社日立製作所 計算機システム、管理装置、ストレージ装置及びコンピュータ装置
JP4859348B2 (ja) * 2004-02-18 2012-01-25 大日本印刷株式会社 コンピュータシステム
US7680864B2 (en) * 2004-03-02 2010-03-16 Intel Corporation Method and apparatus for managing access to stored objects based on retention policy
WO2005099188A1 (ja) * 2004-03-05 2005-10-20 Nec Corporation 通信品質管理方法および装置
US7698699B2 (en) * 2004-03-22 2010-04-13 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US8069192B2 (en) * 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
US7817659B2 (en) * 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US7167880B2 (en) * 2004-04-14 2007-01-23 Hitachi, Ltd. Method and apparatus for avoiding journal overflow on backup and recovery system using storage based journaling
US7418454B2 (en) 2004-04-16 2008-08-26 Microsoft Corporation Data overlay, self-organized metadata overlay, and application level multicasting
US8190741B2 (en) * 2004-04-23 2012-05-29 Neopath Networks, Inc. Customizing a namespace in a decentralized storage environment
US8195627B2 (en) 2004-04-23 2012-06-05 Neopath Networks, Inc. Storage policy monitoring for a storage network
US7720796B2 (en) * 2004-04-23 2010-05-18 Neopath Networks, Inc. Directory and file mirroring for migration, snapshot, and replication
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US8108429B2 (en) 2004-05-07 2012-01-31 Quest Software, Inc. System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services
US7565661B2 (en) 2004-05-10 2009-07-21 Siew Yong Sim-Tang Method and system for real-time event journaling to provide enterprise data services
US7649854B2 (en) * 2004-05-19 2010-01-19 Bea Systems, Inc. System and method for providing channels in application servers and transaction-based systems
EP1759311A2 (de) * 2004-05-21 2007-03-07 Computer Associates Think, Inc. Ununterbrochene datenbank-index-umorganisation bzw. verschiebung
US7707618B1 (en) * 2004-05-28 2010-04-27 Netapp, Inc. System and method for implementing access controls using file protocol rule sets
US7209967B2 (en) * 2004-06-01 2007-04-24 Hitachi, Ltd. Dynamic load balancing of a storage system
US7631098B2 (en) * 2004-06-08 2009-12-08 International Business Machines Corporation Method, system and program product for optimized concurrent data download within a grid computing environment
US7680834B1 (en) 2004-06-08 2010-03-16 Bakbone Software, Inc. Method and system for no downtime resychronization for real-time, continuous data protection
GB0412815D0 (en) * 2004-06-09 2004-07-14 Hewlett Packard Development Co Pathname translation method and system
US7685128B2 (en) * 2004-06-10 2010-03-23 International Business Machines Corporation Remote access agent for caching in a SAN file system
US7536693B1 (en) * 2004-06-30 2009-05-19 Sun Microsystems, Inc. Method for load spreading of requests in a distributed data storage system
US7552356B1 (en) 2004-06-30 2009-06-23 Sun Microsystems, Inc. Distributed data storage system for fixed content
US7734643B1 (en) 2004-06-30 2010-06-08 Oracle America, Inc. Method for distributed storage of data
US20060041580A1 (en) * 2004-07-09 2006-02-23 Intransa, Inc. Method and system for managing distributed storage
US7277985B2 (en) 2004-07-13 2007-10-02 International Business Machines Corporation Method, system and program product for storing downloadable content on a plurality of enterprise storage system (ESS) cells
US20060031230A1 (en) * 2004-07-21 2006-02-09 Kumar Sinha M Data storage systems
US7640274B2 (en) * 2004-07-21 2009-12-29 Tinker Jeffrey L Distributed storage architecture based on block map caching and VFS stackable file system modules
US8412685B2 (en) * 2004-07-26 2013-04-02 Riverbed Technology, Inc. Method and system for managing data
US7657581B2 (en) * 2004-07-29 2010-02-02 Archivas, Inc. Metadata management for fixed content distributed data storage
JP4626210B2 (ja) * 2004-07-30 2011-02-02 ソニー株式会社 コンテンツ提供システム,コンテンツ提供サーバ,情報処理装置およびコンピュータプログラム
US8521687B2 (en) * 2004-08-03 2013-08-27 International Business Machines Corporation Apparatus, system, and method for selecting optimal replica sources in a grid computing environment
US8832595B2 (en) * 2004-08-06 2014-09-09 Nokia Corporation Mobile communications terminal and method
US8335807B1 (en) * 2004-08-30 2012-12-18 Sprint Communications Company, L.P. File distribution system and method
US7979404B2 (en) 2004-09-17 2011-07-12 Quest Software, Inc. Extracting data changes and storing data history to allow for instantaneous access to and reconstruction of any point-in-time data
WO2006036811A2 (en) * 2004-09-22 2006-04-06 Xyratex Technnology Limited System and method for configuring memory devices for use in a network
JP4281658B2 (ja) * 2004-09-24 2009-06-17 日本電気株式会社 ファイルアクセスサービスシステムとスイッチ装置及びクオータ管理方法並びにプログラム
DE102004047367A1 (de) * 2004-09-29 2006-03-30 Siemens Ag Verfahren zum Verteilen von Software und Konfigurationsdaten mit Zeitüberwachung sowie entsprechendes Datennetz
US7657543B1 (en) * 2004-10-12 2010-02-02 Sun Microsystems, Inc. Method and system for creating and using shadow roots
US7904913B2 (en) 2004-11-02 2011-03-08 Bakbone Software, Inc. Management interface for a system that provides automated, real-time, continuous data protection
JP2008527468A (ja) 2004-11-13 2008-07-24 ストリーム セオリー,インコーポレイテッド ハイブリッド・ローカル/リモート・ストリーミング
US7389298B2 (en) * 2004-11-18 2008-06-17 International Business Machines Corporation Seamless remote traversal of multiple NFSv4 exported file systems
US7457930B2 (en) * 2004-11-19 2008-11-25 International Business Machines Corporation Method for application transparent autonomic data replication improving access performance for a storage area network aware file system
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US7383406B2 (en) 2004-11-19 2008-06-03 International Business Machines Corporation Application transparent autonomic availability on a storage area network aware file system
JP4341072B2 (ja) * 2004-12-16 2009-10-07 日本電気株式会社 データ配置管理方法及びシステムと装置およびプログラム
KR100758281B1 (ko) * 2004-12-20 2007-09-12 한국전자통신연구원 다중 서비스 타입 관리 기능을 가지는 컨텐츠 분배 관리시스템 및 그 방법
KR100700717B1 (ko) * 2004-12-22 2007-03-27 한국전자통신연구원 컨텐트 구분에 의한 전송시스템의 클러스터링 장치 및 방법
US7613704B2 (en) * 2005-01-19 2009-11-03 Hewlett-Packard Development Company, L.P. Enterprise digital asset management system and method
US7885970B2 (en) 2005-01-20 2011-02-08 F5 Networks, Inc. Scalable system for partitioning and accessing metadata over multiple servers
US20060182050A1 (en) * 2005-01-28 2006-08-17 Hewlett-Packard Development Company, L.P. Storage replication system with data tracking
US7562125B2 (en) * 2005-02-02 2009-07-14 Cisco Technology, Inc. Techniques for locating distributed objects on a network based on physical communication costs
US7958347B1 (en) 2005-02-04 2011-06-07 F5 Networks, Inc. Methods and apparatus for implementing authentication
EP1688841A1 (de) * 2005-02-04 2006-08-09 Sap Ag Parallele dynamische Verarbeitung
JP2006227843A (ja) * 2005-02-16 2006-08-31 Sony Corp コンテンツ情報管理システム、コンテンツ情報管理装置及びコンテンツ情報管理方法、並びにコンピュータ・プログラム
US20060200517A1 (en) * 2005-03-03 2006-09-07 Steve Nelson Method and apparatus for real time multi-party conference document copier
US9176955B2 (en) * 2005-03-09 2015-11-03 Vvond, Inc. Method and apparatus for sharing media files among network nodes
US7191215B2 (en) * 2005-03-09 2007-03-13 Marquee, Inc. Method and system for providing instantaneous media-on-demand services by transmitting contents in pieces from client machines
US7937379B2 (en) 2005-03-09 2011-05-03 Vudu, Inc. Fragmentation of a file for instant access
US8904463B2 (en) 2005-03-09 2014-12-02 Vudu, Inc. Live video broadcasting on distributed networks
US20080022343A1 (en) * 2006-07-24 2008-01-24 Vvond, Inc. Multiple audio streams
US20090025046A1 (en) * 2005-03-09 2009-01-22 Wond, Llc Hybrid architecture for media services
US8219635B2 (en) 2005-03-09 2012-07-10 Vudu, Inc. Continuous data feeding in a distributed environment
US8887224B2 (en) 2005-03-09 2014-11-11 Vudu, Inc. Updating content libraries by transmitting release data
US7698451B2 (en) 2005-03-09 2010-04-13 Vudu, Inc. Method and apparatus for instant playback of a movie title
US7536390B2 (en) * 2005-03-11 2009-05-19 Microsoft Corporation Accessing Web content from any virtualized store
US8024523B2 (en) 2007-11-07 2011-09-20 Endeavors Technologies, Inc. Opportunistic block transmission with time constraints
US8108579B2 (en) * 2005-03-31 2012-01-31 Qualcomm Incorporated Mechanism and method for managing data storage
US8055680B2 (en) * 2005-04-19 2011-11-08 International Business Machines Corporation Assigning access control lists to a hierarchical namespace to optimize ACL inheritance
US7675861B2 (en) * 2005-04-25 2010-03-09 Cisco Technology, Inc. Active probe target management
US7711897B1 (en) 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
US8099511B1 (en) 2005-06-11 2012-01-17 Vudu, Inc. Instantaneous media-on-demand
US7739318B2 (en) * 2005-06-20 2010-06-15 Netapp, Inc. System and method for maintaining mappings from data containers to their parent directories
EP1900189B1 (de) * 2005-06-29 2018-04-18 Cisco Technology, Inc. Paralleles dateisystemtraversal zur transparenten spiegelung von verzeichnissen und dateien
US7801890B1 (en) * 2005-07-18 2010-09-21 Adobe Systems Inc. Methods and apparatus to identify accessed digital content
US7689602B1 (en) * 2005-07-20 2010-03-30 Bakbone Software, Inc. Method of creating hierarchical indices for a distributed object system
US7788521B1 (en) 2005-07-20 2010-08-31 Bakbone Software, Inc. Method and system for virtual on-demand recovery for real-time, continuous data protection
US9558498B2 (en) * 2005-07-29 2017-01-31 Excalibur Ip, Llc System and method for advertisement management
US8539604B2 (en) * 2005-08-03 2013-09-17 International Business Machines Corporation Method, system and program product for versioning access control settings
US8856091B2 (en) * 2005-09-09 2014-10-07 Open Invention Network, Llc Method and apparatus for sequencing transactions globally in distributed database cluster
US20070061379A1 (en) * 2005-09-09 2007-03-15 Frankie Wong Method and apparatus for sequencing transactions globally in a distributed database cluster
US7567966B2 (en) 2005-09-15 2009-07-28 International Business Machines Corporation Method and apparatus for managing multi-stream input/output requests in a network file server
US11474903B1 (en) 2005-09-30 2022-10-18 Pure Storage, Inc. Rebuilding of encoded data slices using locally decodable code segments
US10356177B2 (en) 2005-09-30 2019-07-16 International Business Machines Corporation Prioritizing ranges to rebuild based on namespace health
US10270858B2 (en) 2005-09-30 2019-04-23 International Business Machines Corporation Inducing memory device idle time through rolling read prioritizations
US10866754B2 (en) 2010-04-26 2020-12-15 Pure Storage, Inc. Content archiving in a distributed storage network
US10250686B2 (en) 2005-09-30 2019-04-02 International Business Machines Corporation Finding alternate storage locations to support failing disk migration
US7953937B2 (en) 2005-09-30 2011-05-31 Cleversafe, Inc. Systems, methods, and apparatus for subdividing data for storage in a dispersed data storage grid
US10257276B2 (en) 2005-09-30 2019-04-09 International Business Machines Corporation Predictive rebalancing according to future usage expectations
US11416339B1 (en) 2005-09-30 2022-08-16 Pure Storage, Inc. Validating requests based on stored vault information
US10044807B2 (en) 2005-09-30 2018-08-07 International Business Machines Corporation Optimistic checked writes
US10938418B2 (en) 2005-09-30 2021-03-02 Pure Storage, Inc. Online disk replacement/removal
US10282440B2 (en) 2015-03-31 2019-05-07 International Business Machines Corporation Prioritizing rebuilding of encoded data slices
US9632872B2 (en) 2012-06-05 2017-04-25 International Business Machines Corporation Reprioritizing pending dispersed storage network requests
US8131689B2 (en) * 2005-09-30 2012-03-06 Panagiotis Tsirigotis Accumulating access frequency and file attributes for supporting policy based storage management
US10855769B2 (en) 2005-09-30 2020-12-01 Pure Storage, Inc. Prioritizing memory devices to replace based on namespace health
US9063881B2 (en) 2010-04-26 2015-06-23 Cleversafe, Inc. Slice retrieval in accordance with an access sequence in a dispersed storage network
US8209363B2 (en) * 2007-10-09 2012-06-26 Cleversafe, Inc. File system adapted for use with a dispersed data storage network
US11620185B2 (en) 2005-09-30 2023-04-04 Pure Storage, Inc. Integrity processing in a dispersed storage network
US9027080B2 (en) 2008-03-31 2015-05-05 Cleversafe, Inc. Proxy access to a dispersed storage network
US9774684B2 (en) 2005-09-30 2017-09-26 International Business Machines Corporation Storing data in a dispersed storage network
US10154034B2 (en) 2010-04-26 2018-12-11 International Business Machines Corporation Cooperative data access request authorization in a dispersed storage network
US11909418B1 (en) 2005-09-30 2024-02-20 Pure Storage, Inc. Access authentication in a dispersed storage network
US8352782B2 (en) * 2005-09-30 2013-01-08 Cleversafe, Inc. Range based rebuilder for use with a dispersed data storage network
US9996413B2 (en) * 2007-10-09 2018-06-12 International Business Machines Corporation Ensuring data integrity on a dispersed storage grid
US11221917B1 (en) 2005-09-30 2022-01-11 Pure Storage, Inc. Integrity processing in a dispersed storage network
US7574570B2 (en) * 2005-09-30 2009-08-11 Cleversafe Inc Billing system for information dispersal system
US10051057B2 (en) 2005-09-30 2018-08-14 International Business Machines Corporation Prioritizing read locations based on an error history
US8171101B2 (en) * 2005-09-30 2012-05-01 Cleversafe, Inc. Smart access to a dispersed data storage network
US10289688B2 (en) 2010-06-22 2019-05-14 International Business Machines Corporation Metadata access in a dispersed storage network
US10747616B2 (en) 2015-03-31 2020-08-18 Pure Storage, Inc. Adapting rebuilding of encoded data slices in a dispersed storage network
US11080138B1 (en) 2010-04-26 2021-08-03 Pure Storage, Inc. Storing integrity information in a vast storage system
US10389814B2 (en) 2005-09-30 2019-08-20 Pure Storage, Inc. Prioritizing memory devices to replace based on namespace health
US10432726B2 (en) 2005-09-30 2019-10-01 Pure Storage, Inc. Last-resort operations to save at-risk-data
US8595435B2 (en) * 2009-07-30 2013-11-26 Cleversafe, Inc. Dispersed storage write process
US7904475B2 (en) * 2007-10-09 2011-03-08 Cleversafe, Inc. Virtualized data storage vaults on a dispersed data storage network
US10169229B2 (en) 2012-06-05 2019-01-01 International Business Machines Corporation Protocols for expanding existing sites in a dispersed storage network
US8880799B2 (en) * 2005-09-30 2014-11-04 Cleversafe, Inc. Rebuilding data on a dispersed storage network
US8285878B2 (en) * 2007-10-09 2012-10-09 Cleversafe, Inc. Block based access to a dispersed data storage network
US11340988B2 (en) 2005-09-30 2022-05-24 Pure Storage, Inc. Generating integrity information in a vast storage system
US11272009B1 (en) 2005-09-30 2022-03-08 Pure Storage, Inc. Managed data slice maintenance in a distributed storage system
US10860424B1 (en) 2005-09-30 2020-12-08 Pure Storage, Inc. Background verification processing in a storage network
US11327674B2 (en) 2012-06-05 2022-05-10 Pure Storage, Inc. Storage vault tiering and data migration in a distributed storage network
US9632722B2 (en) 2010-05-19 2017-04-25 International Business Machines Corporation Balancing storage unit utilization within a dispersed storage network
US8694668B2 (en) * 2005-09-30 2014-04-08 Cleversafe, Inc. Streaming media software interface to a dispersed data storage network
US11841770B2 (en) 2005-09-30 2023-12-12 Pure Storage, Inc. Storage unit connection security in a storage network and methods for use therewith
US8555109B2 (en) * 2009-07-30 2013-10-08 Cleversafe, Inc. Method and apparatus for distributed storage integrity processing
US8522290B2 (en) * 2005-10-07 2013-08-27 Infosys Technologies, Ltd. Video on demand system and methods thereof
US20080256147A1 (en) * 2005-10-18 2008-10-16 Medical Research Council Method and a System for Storing Files
US8938594B2 (en) * 2005-11-04 2015-01-20 Oracle America, Inc. Method and system for metadata-based resilvering
US8738565B2 (en) * 2005-11-07 2014-05-27 International Business Machines Corporation Collecting data from data sources
US20070112876A1 (en) * 2005-11-07 2007-05-17 Blaisdell Russell C Method and apparatus for pruning data in a data warehouse
KR100683502B1 (ko) * 2005-12-08 2007-02-15 한국전자통신연구원 트래픽 신호와 제어 신호를 분리하여 제어하는 무선 액세스라우터
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US7464116B2 (en) * 2005-12-28 2008-12-09 Network Appliance, Inc. Method and apparatus for cloning filesystems across computing systems
US20070283329A1 (en) * 2006-01-09 2007-12-06 Infosys Technologies, Ltd. System and method for performance monitoring and diagnosis of information technology system
US20070174360A1 (en) * 2006-01-11 2007-07-26 Yuichi Yagawa Storage system embedding database
US7987160B2 (en) * 2006-01-30 2011-07-26 Microsoft Corporation Status tool to expose metadata read and write queues
US20070179981A1 (en) * 2006-01-31 2007-08-02 International Business Machines Corporation Efficient data management in a cluster file system
US8447829B1 (en) 2006-02-10 2013-05-21 Amazon Technologies, Inc. System and method for controlling access to web services resources
US8996482B1 (en) * 2006-02-10 2015-03-31 Amazon Technologies, Inc. Distributed system and method for replicated storage of structured data records
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US20070214105A1 (en) * 2006-03-08 2007-09-13 Omneon Video Networks Network topology for a scalable data storage system
US20070226224A1 (en) * 2006-03-08 2007-09-27 Omneon Video Networks Data storage system
US7689630B1 (en) * 2006-03-15 2010-03-30 Richard L. Lam Two-level bitmap structure for bit compression and data management
US8417746B1 (en) 2006-04-03 2013-04-09 F5 Networks, Inc. File system management with enhanced searchability
US20070250365A1 (en) * 2006-04-21 2007-10-25 Infosys Technologies Ltd. Grid computing systems and methods thereof
US20070260674A1 (en) * 2006-05-02 2007-11-08 Research In Motion Limited Push framework for delivery of dynamic mobile content
US7941455B2 (en) * 2006-05-31 2011-05-10 Harmonic Inc. Notification for a distributed file system
US8412561B2 (en) * 2006-08-09 2013-04-02 Infosys Technologies, Ltd. Business case evaluation system and methods thereof
WO2008024037A1 (en) * 2006-08-21 2008-02-28 Telefonaktiebolaget Lm Ericsson (Publ) A distributed server network for providing triple and play services to end users
US8296812B1 (en) 2006-09-01 2012-10-23 Vudu, Inc. Streaming video using erasure encoding
US8442989B2 (en) * 2006-09-05 2013-05-14 Thomson Licensing Method for assigning multimedia data to distributed storage devices
US8244694B2 (en) * 2006-09-12 2012-08-14 International Business Machines Corporation Dynamic schema assembly to accommodate application-specific metadata
US10354516B2 (en) 2006-09-15 2019-07-16 Tyco Safety Products Canada, Ltd. Method and apparatus for automated activation of a security system
US20080077638A1 (en) * 2006-09-21 2008-03-27 Microsoft Corporation Distributed storage in a computing environment
WO2008038271A1 (en) * 2006-09-28 2008-04-03 Xeround Systems Ltd. An apparatus and method for a distributed storage global database
US8943218B2 (en) 2006-10-12 2015-01-27 Concurrent Computer Corporation Method and apparatus for a fault resilient collaborative media serving array
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing policy to an application session
US8261345B2 (en) 2006-10-23 2012-09-04 Endeavors Technologies, Inc. Rule-based application access management
US7519602B2 (en) * 2006-10-31 2009-04-14 Sap Ag Systems and methods for information exchange using object warehousing
US9489456B1 (en) * 2006-11-17 2016-11-08 Blue Coat Systems, Inc. Previewing file information over a network
US9946791B1 (en) * 2006-11-21 2018-04-17 Google Llc Making modified content available
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US7853691B2 (en) * 2006-11-29 2010-12-14 Broadcom Corporation Method and system for securing a network utilizing IPsec and MACsec protocols
US7865887B2 (en) 2006-11-30 2011-01-04 Sap Ag Context based event handling and execution with prioritization and interrupt management
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7711683B1 (en) * 2006-11-30 2010-05-04 Netapp, Inc. Method and system for maintaining disk location via homeness
US8019723B2 (en) * 2006-12-20 2011-09-13 International Business Machines Corporation Deferred copy target pull of volume data
US7925626B2 (en) * 2006-12-20 2011-04-12 International Business Machines Corporation Immediate copy target pull of volume data
US8006281B2 (en) 2006-12-21 2011-08-23 Microsoft Corporation Network accessible trusted code
US8395996B2 (en) 2007-01-11 2013-03-12 Foundry Networks, Llc Techniques for processing incoming failure detection protocol packets
US8561199B2 (en) * 2007-01-11 2013-10-15 International Business Machines Corporation Method and system for secure lightweight stream processing
US7930263B2 (en) * 2007-01-12 2011-04-19 Health Information Flow, Inc. Knowledge utilization
US20080172448A1 (en) * 2007-01-16 2008-07-17 Microsoft Corporation Packetized boot service broadcasting
EP2835951B1 (de) * 2007-01-17 2018-08-22 Intertrust Technologies Corporation Verfahren, systeme und vorrichtung zur teilung fragmentierter dateien
CA2577030A1 (en) * 2007-01-31 2008-07-31 Unlimi-Tech Software Inc. Improved data transfer method, system and protocol
US20080208806A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Techniques for a web services data access layer
US20080205376A1 (en) * 2007-02-28 2008-08-28 Michael Patmon Redundant router having load sharing functionality
US7747634B2 (en) * 2007-03-08 2010-06-29 Microsoft Corporation Rich data tunneling
US20080228773A1 (en) * 2007-03-14 2008-09-18 Hand Held Products, Inc. Apparatus and method for data input device
US20080225837A1 (en) * 2007-03-16 2008-09-18 Novell, Inc. System and Method for Multi-Layer Distributed Switching
US8131723B2 (en) 2007-03-30 2012-03-06 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US7827147B1 (en) 2007-03-30 2010-11-02 Data Center Technologies System and method for automatically redistributing metadata across managers
US8364648B1 (en) 2007-04-09 2013-01-29 Quest Software, Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US8311990B2 (en) * 2007-04-16 2012-11-13 Michael Martinek Fragmented data file forensic recovery system and method
US8775450B2 (en) 2007-04-19 2014-07-08 Sap Ag Systems and methods for information exchange using object warehousing
US7877644B2 (en) * 2007-04-19 2011-01-25 International Business Machines Corporation Computer application performance optimization system
US8086652B1 (en) * 2007-04-27 2011-12-27 Netapp, Inc. Storage system-based hole punching for reclaiming unused space from a data container
US20080288563A1 (en) * 2007-05-14 2008-11-20 Hinshaw Foster D Allocation and redistribution of data among storage devices
US8682916B2 (en) 2007-05-25 2014-03-25 F5 Networks, Inc. Remote file virtualization in a switched file system
US9578288B2 (en) * 2007-06-08 2017-02-21 At&T Intellectual Property I, L.P. Peer-to-peer distributed storage for internet protocol television
US8560691B2 (en) * 2007-06-19 2013-10-15 Microsoft Corporation Relocating item in distributed storage system
GB0712640D0 (en) * 2007-06-28 2007-08-08 Symbian Software Ltd Domputing device having a merged directory hierarchy from multiple filesystems
US8615798B2 (en) * 2007-06-29 2013-12-24 International Business Machines Corporation Optimizing a data deduplication system using client authentication information
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US7856437B2 (en) * 2007-07-31 2010-12-21 Hewlett-Packard Development Company, L.P. Storing nodes representing respective chunks of files in a data store
US9177115B2 (en) 2007-08-22 2015-11-03 International Business Machines Corporation Data subscription management system
US8671256B2 (en) * 2007-08-27 2014-03-11 International Business Machines Corporation Migrating contents of a memory on a virtual machine
US9274949B2 (en) * 2007-08-27 2016-03-01 International Business Machines Corporation Tracking data updates during memory migration
US8694990B2 (en) * 2007-08-27 2014-04-08 International Business Machines Corporation Utilizing system configuration information to determine a data migration order
US8661211B2 (en) * 2007-08-27 2014-02-25 International Business Machines Corporation Method for migrating contents of a memory on a virtual machine
US8149839B1 (en) 2007-09-26 2012-04-03 Foundry Networks, Llc Selection of trunk ports and paths using rotation
US8046378B1 (en) 2007-09-26 2011-10-25 Network Appliance, Inc. Universal quota entry identification
US8131784B1 (en) * 2007-09-26 2012-03-06 Network Appliance, Inc. Multiple node quota filter
US7783666B1 (en) 2007-09-26 2010-08-24 Netapp, Inc. Controlling access to storage resources by using access pattern based quotas
US8185614B2 (en) * 2007-10-09 2012-05-22 Cleversafe, Inc. Systems, methods, and apparatus for identifying accessible dispersed digital storage vaults utilizing a centralized registry
US8478865B2 (en) * 2007-10-09 2013-07-02 Cleversafe, Inc. Systems, methods, and apparatus for matching a connection request with a network interface adapted for use with a dispersed data storage network
US10027478B2 (en) 2007-10-09 2018-07-17 International Business Machines Corporation Differential key backup
US9697171B2 (en) 2007-10-09 2017-07-04 Internaitonal Business Machines Corporation Multi-writer revision synchronization in a dispersed storage network
US8965956B2 (en) 2007-10-09 2015-02-24 Cleversafe, Inc. Integrated client for use with a dispersed data storage network
US9888076B2 (en) 2007-10-09 2018-02-06 International Business Machines Corporation Encoded data slice caching in a distributed storage network
US8549351B2 (en) * 2007-10-09 2013-10-01 Cleversafe, Inc. Pessimistic data reading in a dispersed storage network
US8533256B2 (en) * 2007-10-09 2013-09-10 Cleversafe, Inc. Object interface to a dispersed data storage network
US9959076B2 (en) 2007-10-09 2018-05-01 International Business Machines Corporation Optimized disk load distribution
US8572429B2 (en) * 2007-10-09 2013-10-29 Cleversafe, Inc. Optimistic data writing in a dispersed storage network
US8819179B2 (en) 2007-10-09 2014-08-26 Cleversafe, Inc. Data revision synchronization in a dispersed storage network
CN101952810B (zh) * 2007-10-24 2013-10-30 兰特罗尼克斯公司 用于中心站分配虚拟ip地址的各种方法和设备
DE112007003693B4 (de) * 2007-10-25 2014-05-15 Hewlett-Packard Development Co., L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8140637B2 (en) * 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
CN101855636B (zh) 2007-10-25 2016-03-16 惠普开发有限公司 数据处理设备及数据处理方法
US20090119375A1 (en) * 2007-11-05 2009-05-07 Research In Motion Limited Method and system for optimizing delivery of mobile content using differential metadata updates
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US20100268750A1 (en) * 2007-11-08 2010-10-21 Koninklijke Philips Electronics N.V. Method and electronic device for managing content
US8117244B2 (en) 2007-11-12 2012-02-14 F5 Networks, Inc. Non-disruptive file migration
US8548953B2 (en) 2007-11-12 2013-10-01 F5 Networks, Inc. File deduplication using storage tiers
US8180747B2 (en) 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US9168457B2 (en) 2010-09-14 2015-10-27 Sony Computer Entertainment America Llc System and method for retaining system state
US8352785B1 (en) 2007-12-13 2013-01-08 F5 Networks, Inc. Methods for generating a unified virtual snapshot and systems thereof
US9507784B2 (en) 2007-12-21 2016-11-29 Netapp, Inc. Selective extraction of information from a mirrored image file
US8224864B1 (en) * 2008-01-07 2012-07-17 Network Appliance, Inc. Striping directories across a striped volume set by the filenames contained in the directories
JP2009182458A (ja) * 2008-01-29 2009-08-13 Sony Corp 通信装置、通信システム、通信方法及びプログラム
KR20090087269A (ko) * 2008-02-12 2009-08-17 삼성전자주식회사 컨텍스트 기반 정보 처리 방법 및 장치, 그리고 컴퓨터기록 매체
US7899850B2 (en) * 2008-02-22 2011-03-01 Bycast, Inc. Relational objects for the optimized management of fixed-content storage systems
US8224831B2 (en) * 2008-02-27 2012-07-17 Dell Products L.P. Virtualization of metadata for file optimization
US8219534B2 (en) * 2008-02-27 2012-07-10 Dell Products L.P. Multiple file compaction for network attached storage
US8327017B1 (en) * 2008-03-12 2012-12-04 United Services Automobile Association (Usaa) Systems and methods for an autonomous intranet
JP2009237763A (ja) * 2008-03-26 2009-10-15 Hitachi Ltd サーバシステム及びその制御方法
CN101547161B (zh) 2008-03-28 2012-09-26 阿里巴巴集团控股有限公司 文件夹传输系统、文件夹传输装置及文件夹传输方法
US9501355B2 (en) 2008-03-31 2016-11-22 International Business Machines Corporation Storing data and directory information in a distributed storage network
US9002906B1 (en) * 2008-03-31 2015-04-07 Emc Corporation System and method for handling large transactions in a storage virtualization system
US8103628B2 (en) 2008-04-09 2012-01-24 Harmonic Inc. Directed placement of data in a redundant data storage system
US8200638B1 (en) 2008-04-30 2012-06-12 Netapp, Inc. Individual file restore from block-level incremental backups by using client-server backup protocol
US8949187B1 (en) * 2008-05-30 2015-02-03 Symantec Corporation Systems and methods for creating and managing backups based on health information
US20090307329A1 (en) * 2008-06-06 2009-12-10 Chris Olston Adaptive file placement in a distributed file system
US20090319285A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Techniques for managing disruptive business events
US8560578B2 (en) * 2008-06-26 2013-10-15 Microsoft Corporation Common block storage infrastructure
US8549582B1 (en) 2008-07-11 2013-10-01 F5 Networks, Inc. Methods for handling a multi-protocol content name and systems thereof
US9323681B2 (en) 2008-09-18 2016-04-26 Avere Systems, Inc. File storage system, cache appliance, and method
US8214404B2 (en) * 2008-07-11 2012-07-03 Avere Systems, Inc. Media aware distributed data layout
US8819011B2 (en) * 2008-07-16 2014-08-26 Cleversafe, Inc. Command line interpreter for accessing a data object stored in a distributed storage network
US8630987B2 (en) * 2008-07-16 2014-01-14 Cleversafe, Inc. System and method for accessing a data object stored in a distributed storage network
US8103718B2 (en) * 2008-07-31 2012-01-24 Microsoft Corporation Content discovery and transfer between mobile communications nodes
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8243589B1 (en) * 2008-08-14 2012-08-14 United Services Automobile Association (Usaa) Systems and methods for data center load balancing
US8706878B1 (en) 2008-08-21 2014-04-22 United Services Automobile Association Preferential loading in data centers
US20100070544A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Virtual block-level storage over a file system
AU2010276462B1 (en) 2010-12-27 2012-01-12 Limelight Networks, Inc. Partial object caching
WO2012105967A1 (en) * 2011-02-01 2012-08-09 Limelight Networks, Inc. Asset management architecture for content delivery networks
US8458290B2 (en) 2011-02-01 2013-06-04 Limelight Networks, Inc. Multicast mapped look-up on content delivery networks
AU2010202034B1 (en) 2010-04-07 2010-12-23 Limelight Networks, Inc. Partial object distribution in content delivery network
BRPI0918658A2 (pt) * 2008-09-19 2015-12-01 Limelight Networks Inc distribuição de vinheta de servidor de fluxo de rede de entrega de contéudo.
US8600937B1 (en) * 2008-09-30 2013-12-03 Emc Corporation System and method for fast volume cloning
SE533007C2 (sv) 2008-10-24 2010-06-08 Ilt Productions Ab Distribuerad datalagring
US8510352B2 (en) * 2008-10-24 2013-08-13 Microsoft Corporation Virtualized boot block with discovery volume
US8868675B2 (en) * 2008-12-04 2014-10-21 Cisco Technology, Inc. Network optimization using distributed virtual resources
US9197678B2 (en) * 2008-12-11 2015-11-24 Skype Method and system for data transmission
US8166067B2 (en) * 2008-12-26 2012-04-24 Sandisk Il Ltd. Method and apparatus for providing access to files based on user identity
US8943409B2 (en) * 2008-12-26 2015-01-27 Sandisk Il Ltd. Storage device managing playable content
US20100169395A1 (en) * 2008-12-26 2010-07-01 Sandisk Il Ltd. Device and method for filtering a file system
US8239395B2 (en) * 2008-12-26 2012-08-07 Sandisk Il Ltd. Storage device presenting to hosts only files compatible with a defined host capability
US8898267B2 (en) * 2009-01-19 2014-11-25 Netapp, Inc. Modifying information lifecycle management rules in a distributed system
US8417969B2 (en) * 2009-02-19 2013-04-09 Microsoft Corporation Storage volume protection supporting legacy systems
US8073886B2 (en) 2009-02-20 2011-12-06 Microsoft Corporation Non-privileged access to data independent of filesystem implementation
US9348842B2 (en) * 2009-03-23 2016-05-24 Riverbed Technology, Inc. Virtualized data storage system optimizations
US20100257218A1 (en) * 2009-04-03 2010-10-07 Konstantin Iliev Vassilev Merging multiple heterogeneous file systems into a single virtual unified file system
US8656187B2 (en) * 2009-04-20 2014-02-18 Cleversafe, Inc. Dispersed storage secure data decoding
US10104045B2 (en) 2009-04-20 2018-10-16 International Business Machines Corporation Verifying data security in a dispersed storage network
US8819781B2 (en) * 2009-04-20 2014-08-26 Cleversafe, Inc. Management of network devices within a dispersed data storage network
US9483656B2 (en) 2009-04-20 2016-11-01 International Business Machines Corporation Efficient and secure data storage utilizing a dispersed data storage system
US10447474B2 (en) * 2009-04-20 2019-10-15 Pure Storage, Inc. Dispersed data storage system data decoding and decryption
US9092294B2 (en) * 2009-04-20 2015-07-28 Cleversafe, Inc. Systems, apparatus, and methods for utilizing a reachability set to manage a network upgrade
US11868498B1 (en) 2009-04-20 2024-01-09 Pure Storage, Inc. Storage integrity processing in a storage network
US8744071B2 (en) * 2009-04-20 2014-06-03 Cleversafe, Inc. Dispersed data storage system data encryption and encoding
US8504847B2 (en) * 2009-04-20 2013-08-06 Cleversafe, Inc. Securing data in a dispersed storage network using shared secret slices
US8601259B2 (en) * 2009-04-20 2013-12-03 Cleversafe, Inc. Securing data in a dispersed storage network using security sentinel value
US20100275219A1 (en) * 2009-04-23 2010-10-28 International Business Machines Corporation Scsi persistent reserve management
US9239840B1 (en) 2009-04-24 2016-01-19 Swish Data Corporation Backup media conversion via intelligent virtual appliance adapter
US9087066B2 (en) * 2009-04-24 2015-07-21 Swish Data Corporation Virtual disk from network shares and file servers
US8090901B2 (en) * 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
CN101645038A (zh) * 2009-05-20 2010-02-10 中国科学院声学研究所 基于彼特森的网络存储结构的数据存储方法
US8416692B2 (en) * 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US9497039B2 (en) * 2009-05-28 2016-11-15 Microsoft Technology Licensing, Llc Agile data center network architecture
US8504529B1 (en) * 2009-06-19 2013-08-06 Netapp, Inc. System and method for restoring data to a storage device based on a backup image
US10230692B2 (en) * 2009-06-30 2019-03-12 International Business Machines Corporation Distributed storage processing module
US20110004750A1 (en) * 2009-07-03 2011-01-06 Barracuda Networks, Inc Hierarchical skipping method for optimizing data transfer through retrieval and identification of non-redundant components
US8280895B2 (en) * 2009-07-03 2012-10-02 Barracuda Networks Inc Multi-streamed method for optimizing data transfer through parallelized interlacing of data based upon sorted characteristics to minimize latencies inherent in the system
CN101621405B (zh) * 2009-07-07 2012-02-29 中兴通讯股份有限公司 分布式管理监控系统及其监控方法、创建方法
US8489685B2 (en) 2009-07-17 2013-07-16 Aryaka Networks, Inc. Application acceleration as a service system and method
US8706980B2 (en) * 2009-07-30 2014-04-22 Cleversafe, Inc. Method and apparatus for slice partial rebuilding in a dispersed storage network
US9558059B2 (en) 2009-07-30 2017-01-31 International Business Machines Corporation Detecting data requiring rebuilding in a dispersed storage network
US9009575B2 (en) 2009-07-30 2015-04-14 Cleversafe, Inc. Rebuilding a data revision in a dispersed storage network
US9208025B2 (en) 2009-07-30 2015-12-08 Cleversafe, Inc. Virtual memory mapping in a dispersed storage network
US10108492B2 (en) 2009-07-30 2018-10-23 International Business Machines Corporation Rebuilding data stored in a dispersed storage network
US8489915B2 (en) * 2009-07-30 2013-07-16 Cleversafe, Inc. Method and apparatus for storage integrity processing based on error types in a dispersed storage network
US9207870B2 (en) 2009-07-30 2015-12-08 Cleversafe, Inc. Allocating storage units in a dispersed storage network
US8560798B2 (en) * 2009-07-30 2013-10-15 Cleversafe, Inc. Dispersed storage network virtual address space
US8352719B2 (en) 2009-07-31 2013-01-08 Cleversafe, Inc. Computing device booting utilizing dispersed storage
US9959131B2 (en) * 2009-08-03 2018-05-01 Quantum Corporation Systems and methods for providing a file system viewing of a storeage environment
US9167277B2 (en) * 2009-08-03 2015-10-20 Cleversafe, Inc. Dispersed storage network data manipulation
US8560855B2 (en) * 2009-08-27 2013-10-15 Cleversafe, Inc. Verification of dispersed storage network access control information
US9690513B2 (en) * 2009-08-27 2017-06-27 International Business Machines Corporation Dispersed storage processing unit and methods with operating system diversity for use in a dispersed storage system
US9411810B2 (en) 2009-08-27 2016-08-09 International Business Machines Corporation Method and apparatus for identifying data inconsistency in a dispersed storage network
US8949695B2 (en) 2009-08-27 2015-02-03 Cleversafe, Inc. Method and apparatus for nested dispersed storage
US8473531B2 (en) * 2009-09-03 2013-06-25 Quantum Corporation Presenting a file system for a file containing items
CN102025515A (zh) 2009-09-14 2011-04-20 阿里巴巴集团控股有限公司 基于文件目录的文件传输方法及其装置和系统
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US8689354B2 (en) 2009-09-29 2014-04-01 Cleversafe, Inc. Method and apparatus for accessing secure data in a dispersed storage system
US8473677B2 (en) * 2009-09-29 2013-06-25 Cleversafe, Inc. Distributed storage network memory access based on memory state
US8924387B2 (en) * 2009-09-29 2014-12-30 Cleversafe, Inc. Social networking utilizing a dispersed storage network
US8478937B2 (en) 2009-09-30 2013-07-02 Cleversafe, Inc. Method and apparatus for dispersed storage memory device utilization
US8438456B2 (en) * 2009-10-05 2013-05-07 Cleversafe, Inc. Method and apparatus for dispersed storage of streaming data
US8996909B2 (en) * 2009-10-08 2015-03-31 Microsoft Corporation Modeling distribution and failover database connectivity behavior
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US10757187B2 (en) 2009-10-29 2020-08-25 Pure Storage, Inc. Streaming all-or-nothing encoding with random offset support
US8522074B2 (en) * 2009-10-29 2013-08-27 Cleversafe, Inc. Intentionally introduced storage deviations in a dispersed storage network
US9774678B2 (en) 2009-10-29 2017-09-26 International Business Machines Corporation Temporarily storing data in a dispersed storage network
US8732206B2 (en) * 2009-10-29 2014-05-20 Cleversafe, Inc. Distributed storage timestamped revisions
US9661356B2 (en) 2009-10-29 2017-05-23 International Business Machines Corporation Distribution of unique copies of broadcast data utilizing fault-tolerant retrieval from dispersed storage
US10389845B2 (en) 2009-10-29 2019-08-20 Pure Storage, Inc. Determining how to service requests based on several indicators
US9311185B2 (en) 2009-10-30 2016-04-12 Cleversafe, Inc. Dispersed storage unit solicitation method and apparatus
US8589637B2 (en) * 2009-10-30 2013-11-19 Cleversafe, Inc. Concurrent set storage in distributed storage network
US8351600B2 (en) * 2009-10-30 2013-01-08 Cleversafe, Inc. Distributed storage network and method for encrypting and decrypting data using hash functions
US9195408B2 (en) 2009-10-30 2015-11-24 Cleversafe, Inc. Highly autonomous dispersed storage system retrieval method
US8769035B2 (en) 2009-10-30 2014-07-01 Cleversafe, Inc. Distributed storage network for storing a data object based on storage requirements
US9413529B2 (en) 2009-10-30 2016-08-09 International Business Machines Corporation Distributed storage network and method for storing and retrieving encryption keys
US10073737B2 (en) 2009-10-30 2018-09-11 International Business Machines Corporation Slice location identification
US8572282B2 (en) * 2009-10-30 2013-10-29 Cleversafe, Inc. Router assisted dispersed storage network method and apparatus
US9098376B2 (en) 2009-10-30 2015-08-04 Cleversafe, Inc. Distributed storage network for modification of a data object
US9667701B2 (en) 2009-10-30 2017-05-30 International Business Machines Corporation Robust reception of data utilizing encoded data slices
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US9270298B2 (en) 2009-11-24 2016-02-23 International Business Machines Corporation Selecting storage units to rebuild an encoded data slice
US8918897B2 (en) * 2009-11-24 2014-12-23 Cleversafe, Inc. Dispersed storage network data slice integrity verification
US9152514B2 (en) 2009-11-24 2015-10-06 Cleversafe, Inc. Rebuilding a data segment in a dispersed storage network
US9501349B2 (en) 2009-11-24 2016-11-22 International Business Machines Corporation Changing dispersed storage error encoding parameters
US9836352B2 (en) 2009-11-25 2017-12-05 International Business Machines Corporation Detecting a utilization imbalance between dispersed storage network storage units
US9489264B2 (en) 2009-11-25 2016-11-08 International Business Machines Corporation Storing an encoded data slice as a set of sub-slices
US9996548B2 (en) 2009-11-25 2018-06-12 International Business Machines Corporation Dispersed storage using localized peer-to-peer capable wireless devices in a peer-to-peer or femto cell supported carrier served fashion
US8527807B2 (en) 2009-11-25 2013-09-03 Cleversafe, Inc. Localized dispersed storage memory system
US10015141B2 (en) 2009-11-25 2018-07-03 International Business Machines Corporation Dispersed data storage in a VPN group of devices
US9672109B2 (en) 2009-11-25 2017-06-06 International Business Machines Corporation Adaptive dispersed storage network (DSN) and system
US8621268B2 (en) * 2009-11-25 2013-12-31 Cleversafe, Inc. Write threshold utilization in a dispersed storage system
US8688907B2 (en) * 2009-11-25 2014-04-01 Cleversafe, Inc. Large scale subscription based dispersed storage network
US8819452B2 (en) * 2009-11-25 2014-08-26 Cleversafe, Inc. Efficient storage of encrypted data in a dispersed storage network
US9626248B2 (en) 2009-11-25 2017-04-18 International Business Machines Corporation Likelihood based rebuilding of missing encoded data slices
US8321569B2 (en) * 2009-12-17 2012-11-27 International Business Machines Corporation Server resource allocation
US8762343B2 (en) 2009-12-29 2014-06-24 Cleversafe, Inc. Dispersed storage of software
US9507735B2 (en) 2009-12-29 2016-11-29 International Business Machines Corporation Digital content retrieval utilizing dispersed storage
US9798467B2 (en) 2009-12-29 2017-10-24 International Business Machines Corporation Security checks for proxied requests
US10237281B2 (en) 2009-12-29 2019-03-19 International Business Machines Corporation Access policy updates in a dispersed storage network
US20180335967A1 (en) 2009-12-29 2018-11-22 International Business Machines Corporation User customizable data processing plan in a dispersed storage network
US10067831B2 (en) 2009-12-29 2018-09-04 International Business Machines Corporation Slice migration in a dispersed storage network
US9727266B2 (en) 2009-12-29 2017-08-08 International Business Machines Corporation Selecting storage units in a dispersed storage network
US9152489B2 (en) 2009-12-29 2015-10-06 Cleversafe, Inc. Revision synchronization of a dispersed storage network
US8468368B2 (en) * 2009-12-29 2013-06-18 Cleversafe, Inc. Data encryption parameter dispersal
US10158648B2 (en) 2009-12-29 2018-12-18 International Business Machines Corporation Policy-based access in a dispersed storage network
US10133632B2 (en) 2009-12-29 2018-11-20 International Business Machines Corporation Determining completion of migration in a dispersed storage network
US9672108B2 (en) 2009-12-29 2017-06-06 International Business Machines Corporation Dispersed storage network (DSN) and system with improved security
US9305597B2 (en) 2009-12-29 2016-04-05 Cleversafe, Inc. Accessing stored multi-media content based on a subscription priority level
US9413393B2 (en) 2009-12-29 2016-08-09 International Business Machines Corporation Encoding multi-media content for a centralized digital video storage system
US10031669B2 (en) 2009-12-29 2018-07-24 International Business Machines Corporation Scheduling migration related traffic to be non-disruptive and performant
US10289505B2 (en) 2009-12-29 2019-05-14 International Business Machines Corporation Dispersed multi-media content for a centralized digital video storage system
US10001923B2 (en) 2009-12-29 2018-06-19 International Business Machines Corporation Generation collapse
US8352831B2 (en) * 2009-12-29 2013-01-08 Cleversafe, Inc. Digital content distribution utilizing dispersed storage
US9922063B2 (en) 2009-12-29 2018-03-20 International Business Machines Corporation Secure storage of secret data in a dispersed storage network
US9866595B2 (en) 2009-12-29 2018-01-09 International Busines Machines Corporation Policy based slice deletion in a dispersed storage network
US8990585B2 (en) 2009-12-29 2015-03-24 Cleversafe, Inc. Time based dispersed storage access
US10148788B2 (en) 2009-12-29 2018-12-04 International Business Machines Corporation Method for providing schedulers in a distributed storage network
US9330241B2 (en) 2009-12-29 2016-05-03 International Business Machines Corporation Applying digital rights management to multi-media file playback
US9369526B2 (en) 2009-12-29 2016-06-14 International Business Machines Corporation Distributed storage time synchronization based on retrieval delay
US10372686B2 (en) 2009-12-29 2019-08-06 International Business Machines Corporation Policy-based storage in a dispersed storage network
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US8285692B2 (en) * 2010-01-15 2012-10-09 Oracle America, Inc. Method and system for attribute encapsulated data resolution and transcoding
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US9043548B2 (en) 2010-01-28 2015-05-26 Cleversafe, Inc. Streaming content storage
US8918674B2 (en) 2010-01-28 2014-12-23 Cleversafe, Inc. Directory file system in a dispersed storage network
US8954667B2 (en) * 2010-01-28 2015-02-10 Cleversafe, Inc. Data migration in a dispersed storage network
US9201732B2 (en) 2010-01-28 2015-12-01 Cleversafe, Inc. Selective activation of memory to retrieve data in a dispersed storage network
US9760440B2 (en) 2010-01-28 2017-09-12 International Business Machines Corporation Site-based namespace allocation
US8959366B2 (en) 2010-01-28 2015-02-17 Cleversafe, Inc. De-sequencing encoded data slices
US11301592B2 (en) 2010-01-28 2022-04-12 Pure Storage, Inc. Distributed storage with data obfuscation and method for use therewith
US8522113B2 (en) * 2010-01-28 2013-08-27 Cleversafe, Inc. Selecting storage facilities and dispersal parameters in a dispersed storage network
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8204860B1 (en) 2010-02-09 2012-06-19 F5 Networks, Inc. Methods and systems for snapshot reconstitution
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
US9058334B2 (en) * 2010-02-11 2015-06-16 Emc Corporation Parallel file system processing
US20180365105A1 (en) 2014-06-05 2018-12-20 International Business Machines Corporation Establishing an operation execution schedule in a dispersed storage network
US10268374B2 (en) 2010-02-27 2019-04-23 International Business Machines Corporation Redundant array of independent discs and dispersed storage network system re-director
US9606867B2 (en) 2014-06-05 2017-03-28 International Business Machines Corporation Maintaining data storage in accordance with an access metric
US9311184B2 (en) * 2010-02-27 2016-04-12 Cleversafe, Inc. Storing raid data as encoded data slices in a dispersed storage network
US10324791B2 (en) 2010-11-01 2019-06-18 International Business Machines Corporation Selectable parallel processing of dispersed storage error encoding
US10007575B2 (en) 2010-02-27 2018-06-26 International Business Machines Corporation Alternative multiple memory format storage in a storage network
US9135115B2 (en) 2010-02-27 2015-09-15 Cleversafe, Inc. Storing data in multiple formats including a dispersed storage format
US11429486B1 (en) 2010-02-27 2022-08-30 Pure Storage, Inc. Rebuilding data via locally decodable redundancy in a vast storage network
US10216647B2 (en) 2010-02-27 2019-02-26 International Business Machines Corporation Compacting dispersed storage space
US10275347B2 (en) * 2010-03-08 2019-04-30 Excalibur Ip, Llc System, method and computer program product for managing caches
JP5336405B2 (ja) * 2010-03-10 2013-11-06 富士フイルム株式会社 社内情報閲覧用サーバ・システムおよびその制御方法
US8566552B2 (en) 2010-03-12 2013-10-22 Cleversafe, Inc. Dispersed storage network resource allocation
US8707091B2 (en) * 2010-03-15 2014-04-22 Cleversafe, Inc. Failsafe directory file system in a dispersed storage network
US9170884B2 (en) 2010-03-16 2015-10-27 Cleversafe, Inc. Utilizing cached encoded data slices in a dispersed storage network
US9229824B2 (en) 2010-03-16 2016-01-05 International Business Machines Corporation Caching rebuilt encoded data slices in a dispersed storage network
US8938013B2 (en) * 2010-03-16 2015-01-20 Cleversafe, Inc. Dispersal of priority data in a dispersed storage network
US20110239231A1 (en) * 2010-03-23 2011-09-29 International Business Machines Corporation Migrating electronic document version contents and version metadata as a collection with a single operation
US9391716B2 (en) 2010-04-05 2016-07-12 Microsoft Technology Licensing, Llc Data center using wireless communication
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US9170892B2 (en) 2010-04-19 2015-10-27 Microsoft Technology Licensing, Llc Server failure recovery
US9813529B2 (en) 2011-04-28 2017-11-07 Microsoft Technology Licensing, Llc Effective circuits in packet-switched networks
US9454441B2 (en) 2010-04-19 2016-09-27 Microsoft Technology Licensing, Llc Data layout for recovery and durability
US8620724B2 (en) * 2010-04-20 2013-12-31 Accenture Global Services Limited Integration framework for enterprise content management systems
EP2387200B1 (de) 2010-04-23 2014-02-12 Compuverde AB Verteilte Datenspeicherung
US8625635B2 (en) 2010-04-26 2014-01-07 Cleversafe, Inc. Dispersed storage network frame protocol header
US9495117B2 (en) 2010-04-26 2016-11-15 International Business Machines Corporation Storing data in a dispersed storage network
US8914669B2 (en) 2010-04-26 2014-12-16 Cleversafe, Inc. Secure rebuilding of an encoded data slice in a dispersed storage network
US9606858B2 (en) 2010-04-26 2017-03-28 International Business Machines Corporation Temporarily storing an encoded data slice
US8938552B2 (en) 2010-08-02 2015-01-20 Cleversafe, Inc. Resolving a protocol issue within a dispersed storage network
US10956292B1 (en) 2010-04-26 2021-03-23 Pure Storage, Inc. Utilizing integrity information for data retrieval in a vast storage system
US9092386B2 (en) 2010-04-26 2015-07-28 Cleversafe, Inc. Indicating an error within a dispersed storage network
US10447767B2 (en) 2010-04-26 2019-10-15 Pure Storage, Inc. Resolving a performance issue within a dispersed storage network
US9898373B2 (en) 2010-04-26 2018-02-20 International Business Machines Corporation Prioritizing rebuilding of stored data in a dispersed storage network
US11740972B1 (en) 2010-05-19 2023-08-29 Pure Storage, Inc. Migrating data in a vast storage network
US8521697B2 (en) 2010-05-19 2013-08-27 Cleversafe, Inc. Rebuilding data in multiple dispersed storage networks
US8621580B2 (en) 2010-05-19 2013-12-31 Cleversafe, Inc. Retrieving access information in a dispersed storage network
US10193689B2 (en) 2010-05-19 2019-01-29 International Business Machines Corporation Storing access information in a dispersed storage network
US10353774B2 (en) 2015-10-30 2019-07-16 International Business Machines Corporation Utilizing storage unit latency data in a dispersed storage network
US10911230B2 (en) 2010-05-19 2021-02-02 Pure Storage, Inc. Securely activating functionality of a computing device in a dispersed storage network
US8448044B2 (en) 2010-05-19 2013-05-21 Cleversafe, Inc. Retrieving data from a dispersed storage network in accordance with a retrieval threshold
US8909858B2 (en) 2010-06-09 2014-12-09 Cleversafe, Inc. Storing encoded data slices in a dispersed storage network
US8612831B2 (en) 2010-06-22 2013-12-17 Cleversafe, Inc. Accessing data stored in a dispersed storage memory
US8321487B1 (en) * 2010-06-30 2012-11-27 Emc Corporation Recovery of directory information
US9218359B2 (en) 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
US9131263B2 (en) 2010-07-09 2015-09-08 Sling Media, Inc. Methods and apparatus for controlled removal of content from a distributed network
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US20190095101A1 (en) 2010-08-02 2019-03-28 International Business Machines Corporation Authenticating a credential in a dispersed storage network
US9063968B2 (en) 2010-08-02 2015-06-23 Cleversafe, Inc. Identifying a compromised encoded data slice
US10162524B2 (en) 2010-08-02 2018-12-25 International Business Machines Corporation Determining whether to compress a data segment in a dispersed storage network
US8627114B2 (en) 2010-08-02 2014-01-07 Cleversafe, Inc. Authenticating a data access request to a dispersed storage network
US9077734B2 (en) 2010-08-02 2015-07-07 Cleversafe, Inc. Authentication of devices of a dispersed storage network
US9940195B2 (en) 2010-08-25 2018-04-10 International Business Machines Corporation Encryption of slice partials
US10255135B2 (en) 2010-08-25 2019-04-09 International Business Machines Corporation Method and apparatus for non-interactive information dispersal
US8904226B2 (en) 2010-08-26 2014-12-02 Cleversafe, Inc. Migrating stored copies of a file to stored encoded data slices
US8788576B2 (en) * 2010-09-27 2014-07-22 Z124 High speed parallel data exchange with receiver side data handling
US8751682B2 (en) 2010-09-27 2014-06-10 Z124 Data transfer using high speed connection, high integrity connection, and descriptor
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
TWI592805B (zh) * 2010-10-01 2017-07-21 傅冠彰 網路儲存與計算資源分享系統與方法
US9571230B2 (en) 2010-10-06 2017-02-14 International Business Machines Corporation Adjusting routing of data within a network path
US10298957B2 (en) 2010-10-06 2019-05-21 International Business Machines Corporation Content-based encoding in a multiple routing path communications system
US10970168B2 (en) 2010-10-06 2021-04-06 Pure Storage, Inc. Adjusting dispersed storage error encoding parameters based on path performance
US9843412B2 (en) 2010-10-06 2017-12-12 International Business Machines Corporation Optimizing routing of data across a communications network
US8656138B2 (en) 2010-10-06 2014-02-18 Cleversafe, Inc. Efficiently accessing an encoded data slice utilizing a memory bin
US8918693B2 (en) 2010-10-06 2014-12-23 Cleversafe, Inc. Data transmission utilizing data processing and dispersed storage error encoding
US9286298B1 (en) 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
US10209967B2 (en) 2010-10-18 2019-02-19 Infosys Technologies Ltd. System and method for detecting preventative maintenance operations in computer source code
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
JP5822452B2 (ja) * 2010-10-22 2015-11-24 株式会社インテック ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US10082970B2 (en) 2010-11-01 2018-09-25 International Business Machines Corporation Storing an effective dynamic width of encoded data slices
US10146645B2 (en) 2010-11-01 2018-12-04 International Business Machines Corporation Multiple memory format storage in a storage network
US10805042B2 (en) 2010-11-01 2020-10-13 Pure Storage, Inc. Creating transmission data slices for use in a dispersed storage network
US10289318B2 (en) 2010-11-01 2019-05-14 International Business Machines Corporation Adjusting optimistic writes in a dispersed storage network
US9015499B2 (en) 2010-11-01 2015-04-21 Cleversafe, Inc. Verifying data integrity utilizing dispersed storage
US8707105B2 (en) 2010-11-01 2014-04-22 Cleversafe, Inc. Updating a set of memory devices in a dispersed storage network
US10768833B2 (en) 2010-11-01 2020-09-08 Pure Storage, Inc. Object dispersal load balancing
US8627065B2 (en) 2010-11-09 2014-01-07 Cleversafe, Inc. Validating a certificate chain in a dispersed storage network
US9590838B2 (en) 2010-11-09 2017-03-07 International Business Machines Corporation Transferring data of a dispersed storage network
US11061597B2 (en) 2010-11-09 2021-07-13 Pure Storage, Inc. Supporting live migrations and re-balancing with a virtual storage unit
US10394757B2 (en) 2010-11-18 2019-08-27 Microsoft Technology Licensing, Llc Scalable chunk store for data deduplication
US10216759B2 (en) 2010-11-22 2019-02-26 Microsoft Technology Licensing, Llc Heterogeneous file optimization
US9336139B2 (en) 2010-11-29 2016-05-10 Cleversafe, Inc. Selecting a memory for storage of an encoded data slice in a dispersed storage network
US11789631B2 (en) 2010-11-29 2023-10-17 Pure Storage, Inc. Utilizing metadata storage trees in a vast storage network
US9454431B2 (en) 2010-11-29 2016-09-27 International Business Machines Corporation Memory selection for slice storage in a dispersed storage network
US8856846B2 (en) * 2010-11-29 2014-10-07 At&T Intellectual Property I, L.P. Content placement
US11307930B1 (en) 2010-11-29 2022-04-19 Pure Storage, Inc. Optimized selection of participants in distributed data rebuild/verification
US10922179B2 (en) 2010-11-29 2021-02-16 Pure Storage, Inc. Post rebuild verification
US10372350B2 (en) 2010-11-29 2019-08-06 Pure Storage, Inc. Shared ownership of namespace ranges
US10802763B2 (en) 2010-11-29 2020-10-13 Pure Storage, Inc. Remote storage verification
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US9170882B2 (en) 2010-12-22 2015-10-27 Cleversafe, Inc. Retrieving data segments from a dispersed storage network
IL210169A0 (en) 2010-12-22 2011-03-31 Yehuda Binder System and method for routing-based internet security
US8683231B2 (en) 2010-12-27 2014-03-25 Cleversafe, Inc. Obfuscating data stored in a dispersed storage network
SE1051394A1 (sv) * 2010-12-30 2011-10-13 Axiomatics Ab A system and method for evaluating a reverse query
US9646164B2 (en) 2010-12-30 2017-05-09 Aziomatics Ab System and method for evaluating a reverse query
US8478858B2 (en) 2011-02-01 2013-07-02 Limelight Networks, Inc. Policy management for content storage in content delivery networks
US8521813B2 (en) 2011-02-01 2013-08-27 Limelight Networks, Inc. Content replication workflow in content delivery networks
US8396970B2 (en) 2011-02-01 2013-03-12 Limelight Networks, Inc. Content processing between locations workflow in content delivery networks
US8615577B2 (en) 2011-02-01 2013-12-24 Limelight Networks, Inc. Policy based processing of content objects in a content delivery network using mutators
US8291083B2 (en) 2011-02-01 2012-10-16 Limelight Networks, Inc. Distributed landing pad and brick topology for content storage in content delivery networks
US8726127B2 (en) 2011-02-01 2014-05-13 Cleversafe, Inc. Utilizing a dispersed storage network access token module to access a dispersed storage network memory
US8688949B2 (en) 2011-02-01 2014-04-01 Cleversafe, Inc. Modifying data storage in response to detection of a memory system imbalance
TWI424322B (zh) * 2011-02-08 2014-01-21 Kinghood Technology Co Ltd 提供大量資料流存取的資料流管理系統
US8910022B2 (en) 2011-03-02 2014-12-09 Cleversafe, Inc. Retrieval of encoded data slices and encoded instruction slices by a computing device
US9658911B2 (en) 2011-03-02 2017-05-23 International Business Machines Corporation Selecting a directory of a dispersed storage network
US8510267B2 (en) * 2011-03-08 2013-08-13 Rackspace Us, Inc. Synchronization of structured information repositories
US8843804B2 (en) 2011-04-01 2014-09-23 Cleversafe, Inc. Adjusting a dispersal parameter of dispersedly stored data
US10298684B2 (en) 2011-04-01 2019-05-21 International Business Machines Corporation Adaptive replication of dispersed data to improve data access performance
US8874990B2 (en) 2011-04-01 2014-10-28 Cleversafe, Inc. Pre-fetching data segments stored in a dispersed storage network
US11418580B2 (en) 2011-04-01 2022-08-16 Pure Storage, Inc. Selective generation of secure signatures in a distributed storage network
US8649995B2 (en) 2011-04-07 2014-02-11 Infosys Technologies, Ltd. System and method for efficient test case generation using input dependency information
US8707393B2 (en) 2011-05-09 2014-04-22 Cleversafe, Inc. Providing dispersed storage network location information of a hypertext markup language file
US8996910B2 (en) 2011-05-09 2015-03-31 Cleversafe, Inc. Assigning a dispersed storage network address range in a maintenance free storage container
US20170192684A1 (en) 2011-05-09 2017-07-06 International Business Machines Corporation Auditing a transaction in a dispersed storage network
US9219604B2 (en) 2011-05-09 2015-12-22 Cleversafe, Inc. Generating an encrypted message for storage
US9298550B2 (en) 2011-05-09 2016-03-29 Cleversafe, Inc. Assigning a dispersed storage network address range in a maintenance free storage container
US10949301B2 (en) 2011-06-06 2021-03-16 Pure Storage, Inc. Pre-positioning pre-stored content in a content distribution system
US10061650B2 (en) 2011-06-06 2018-08-28 International Business Machines Corporation Priority based rebuilding
US8756480B2 (en) 2011-06-06 2014-06-17 Cleversafe, Inc. Prioritized deleting of slices stored in a dispersed storage network
US8656253B2 (en) 2011-06-06 2014-02-18 Cleversafe, Inc. Storing portions of data in a dispersed storage network
US10042709B2 (en) 2011-06-06 2018-08-07 International Business Machines Corporation Rebuild prioritization during a plurality of concurrent data object write operations
US8396836B1 (en) 2011-06-30 2013-03-12 F5 Networks, Inc. System for mitigating file virtualization storage import latency
US8924770B2 (en) 2011-07-06 2014-12-30 Cleversafe, Inc. Rebuilding a data slice of a maintenance free storage container
US8762770B2 (en) 2011-07-06 2014-06-24 Cleversafe, Inc. Distribution of a customized preview of multi-media content
US9553817B1 (en) 2011-07-14 2017-01-24 Sprint Communications Company L.P. Diverse transmission of packet content
EP2737431A4 (de) 2011-07-27 2015-03-25 Cleversafe Inc Erzeugung von verteilten speichernetzwerkereignisaufzeichnungen
US10678619B2 (en) 2011-07-27 2020-06-09 Pure Storage, Inc. Unified logs and device statistics
US11016702B2 (en) 2011-07-27 2021-05-25 Pure Storage, Inc. Hierarchical event tree
US8683008B1 (en) 2011-08-04 2014-03-25 Google Inc. Management of pre-fetched mapping data incorporating user-specified locations
US9772784B2 (en) 2011-08-10 2017-09-26 Nutanix, Inc. Method and system for maintaining consistency for I/O operations on metadata distributed amongst nodes in a ring structure
US9229823B2 (en) 2011-08-17 2016-01-05 International Business Machines Corporation Storage and retrieval of dispersed storage network access information
US10454678B2 (en) 2011-08-17 2019-10-22 Pure Storage, Inc. Accesor-based audit trails
US9971802B2 (en) 2011-08-17 2018-05-15 International Business Machines Corporation Audit record transformation in a dispersed storage network
US10120756B2 (en) 2011-08-17 2018-11-06 International Business Machines Corporation Audit object generation in a dispersed storage network
US8954448B1 (en) 2011-08-31 2015-02-10 Amazon Technologies, Inc. Presenting content related to current media consumption
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US10235237B2 (en) 2011-09-06 2019-03-19 Intertnational Business Machines Corporation Decoding data streams in a distributed storage network
US8930649B2 (en) 2011-09-06 2015-01-06 Cleversafe, Inc. Concurrent coding of data streams
US8204966B1 (en) 2011-09-26 2012-06-19 Google Inc. Map tile data pre-fetching based on user activity analysis
US8280414B1 (en) 2011-09-26 2012-10-02 Google Inc. Map tile data pre-fetching based on mobile device generated event analysis
US9774721B2 (en) 2011-09-27 2017-09-26 Z124 LTE upgrade module
US9495012B2 (en) 2011-09-27 2016-11-15 Z124 Secondary single screen mode activation through user interface activation
US9274864B2 (en) 2011-10-04 2016-03-01 International Business Machines Corporation Accessing large amounts of data in a dispersed storage network
US8677214B2 (en) 2011-10-04 2014-03-18 Cleversafe, Inc. Encoding data utilizing a zero information gain function
US8555130B2 (en) 2011-10-04 2013-10-08 Cleversafe, Inc. Storing encoded data slices in a dispersed storage unit
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
JP5818630B2 (ja) * 2011-10-25 2015-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仕様検証方法、プログラム及びシステム
US8463850B1 (en) 2011-10-26 2013-06-11 F5 Networks, Inc. System and method of algorithmically generating a server side transaction identifier
US9304843B2 (en) 2011-11-01 2016-04-05 Cleversafe, Inc. Highly secure method for accessing a dispersed storage network
US10365969B2 (en) 2011-11-01 2019-07-30 International Business Machines Corporation Multiple wireless communication systems stream slices based on geography
US10496500B2 (en) 2011-11-01 2019-12-03 Pure Storage, Inc. Preemptively reading extra encoded data slices
US10437678B2 (en) 2011-11-01 2019-10-08 Pure Storage, Inc. Updating an encoded data slice
US9798616B2 (en) 2011-11-01 2017-10-24 International Business Machines Corporation Wireless sending a set of encoded data slices
US11329830B1 (en) 2011-11-01 2022-05-10 Pure Storage, Inc. Dispersed credentials
US8627066B2 (en) 2011-11-03 2014-01-07 Cleversafe, Inc. Processing a dispersed storage network access request utilizing certificate chain validation information
US9047019B2 (en) * 2011-11-08 2015-06-02 Sybase, Inc. Shared temporary storage management in a shared disk database cluster
US9275374B1 (en) 2011-11-15 2016-03-01 Google Inc. Method and apparatus for pre-fetching place page data based upon analysis of user activities
US8886715B1 (en) 2011-11-16 2014-11-11 Google Inc. Dynamically determining a tile budget when pre-fetching data in a client device
US9063951B1 (en) 2011-11-16 2015-06-23 Google Inc. Pre-fetching map data based on a tile budget
US8711181B1 (en) 2011-11-16 2014-04-29 Google Inc. Pre-fetching map data using variable map tile radius
US8848906B2 (en) 2011-11-28 2014-09-30 Cleversafe, Inc. Encrypting data for storage in a dispersed storage network
US10055283B2 (en) 2011-11-28 2018-08-21 International Business Machines Corporation Securely distributing random keys in a dispersed storage network
US10469578B2 (en) 2011-11-28 2019-11-05 Pure Storage, Inc. Prioritization of messages of a dispersed storage network
US10318445B2 (en) 2011-11-28 2019-06-11 International Business Machines Corporation Priority level adaptation in a dispersed storage network
US20130138705A1 (en) * 2011-11-28 2013-05-30 Hitachi, Ltd. Storage system controller, storage system, and access control method
US11474958B1 (en) 2011-11-28 2022-10-18 Pure Storage, Inc. Generating and queuing system messages with priorities in a storage network
US10387071B2 (en) 2011-11-28 2019-08-20 Pure Storage, Inc. On-the-fly cancellation of unnecessary read requests
US10558592B2 (en) 2011-11-28 2020-02-11 Pure Storage, Inc. Priority level adaptation in a dispersed storage network
US10977194B2 (en) 2011-11-28 2021-04-13 Pure Storage, Inc. Securely storing random keys in a dispersed storage network
US9386088B2 (en) 2011-11-29 2016-07-05 A10 Networks, Inc. Accelerating service processing using fast path TCP
US20130138884A1 (en) * 2011-11-30 2013-05-30 Hitachi, Ltd. Load distribution system
US9305107B2 (en) 2011-12-08 2016-04-05 Google Inc. Method and apparatus for pre-fetching place page data for subsequent display on a mobile computing device
US9197713B2 (en) 2011-12-09 2015-11-24 Google Inc. Method and apparatus for pre-fetching remote resources for subsequent display on a mobile computing device
US10346218B2 (en) 2011-12-12 2019-07-09 International Business Machines Corporation Partial task allocation in a dispersed storage network
US9141468B2 (en) 2011-12-12 2015-09-22 Cleversafe, Inc. Managing memory utilization in a distributed storage and task network
US9674155B2 (en) 2011-12-12 2017-06-06 International Business Machines Corporation Encrypting segmented data in a distributed computing system
US9817701B2 (en) 2011-12-12 2017-11-14 International Business Machines Corporation Threshold computing in a distributed computing system
US8898542B2 (en) 2011-12-12 2014-11-25 Cleversafe, Inc. Executing partial tasks in a distributed storage and task network
US20180083930A1 (en) 2011-12-12 2018-03-22 International Business Machines Corporation Reads for dispersed computation jobs
US10176045B2 (en) 2011-12-12 2019-01-08 International Business Machines Corporation Internet based shared memory in a distributed computing system
US10348640B2 (en) 2011-12-12 2019-07-09 International Business Machines Corporation Partial task execution in a dispersed storage network
US10666596B2 (en) 2011-12-12 2020-05-26 Pure Storage, Inc. Messaging via a shared memory of a distributed computing system
US10104168B2 (en) 2011-12-12 2018-10-16 International Business Machines Corporation Method for managing throughput in a distributed storage network
US10146621B2 (en) 2011-12-12 2018-12-04 International Business Machines Corporation Chaining computes in a distributed computing system
US20130238900A1 (en) 2011-12-12 2013-09-12 Cleversafe, Inc. Dispersed storage network secure hierarchical file directory
US8803920B2 (en) 2011-12-12 2014-08-12 Google Inc. Pre-fetching map tile data along a route
US10360106B2 (en) 2011-12-12 2019-07-23 International Business Machines Corporation Throttled real-time writes
US9009567B2 (en) 2011-12-12 2015-04-14 Cleversafe, Inc. Encrypting distributed computing data
US9389088B2 (en) 2011-12-12 2016-07-12 Google Inc. Method of pre-fetching map data for rendering and offline routing
US9430286B2 (en) 2011-12-12 2016-08-30 International Business Machines Corporation Authorizing distributed task processing in a distributed storage network
US9584359B2 (en) 2011-12-12 2017-02-28 International Business Machines Corporation Distributed storage and computing of interim data
US8832296B2 (en) * 2011-12-15 2014-09-09 Microsoft Corporation Fast application streaming using on-demand staging
US8938550B2 (en) * 2011-12-15 2015-01-20 Microsoft Corporation Autonomous network streaming
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US9154367B1 (en) * 2011-12-27 2015-10-06 Google Inc. Load balancing and content preservation
US10860563B2 (en) * 2012-01-06 2020-12-08 Microsoft Technology Licensing, Llc Distributed database with modular blocks and associated log files
US8850054B2 (en) * 2012-01-17 2014-09-30 International Business Machines Corporation Hypertext transfer protocol live streaming
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US9146810B2 (en) 2012-01-31 2015-09-29 Cleversafe, Inc. Identifying a potentially compromised encoded data slice
US9514132B2 (en) 2012-01-31 2016-12-06 International Business Machines Corporation Secure data migration in a dispersed storage network
US9465861B2 (en) 2012-01-31 2016-10-11 International Business Machines Corporation Retrieving indexed data from a dispersed storage network
US9891995B2 (en) 2012-01-31 2018-02-13 International Business Machines Corporation Cooperative decentralized rebuild scanning
US10671585B2 (en) 2012-01-31 2020-06-02 Pure Storage, Inc. Storing indexed data to a dispersed storage network
US9203902B2 (en) 2012-01-31 2015-12-01 Cleversafe, Inc. Securely and reliably storing data in a dispersed storage network
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9588994B2 (en) 2012-03-02 2017-03-07 International Business Machines Corporation Transferring task execution in a distributed storage and task network
US9355120B1 (en) * 2012-03-02 2016-05-31 Netapp, Inc. Systems and methods for managing files in a content storage system
US9171031B2 (en) 2012-03-02 2015-10-27 Cleversafe, Inc. Merging index nodes of a hierarchical dispersed storage index
US10157051B2 (en) 2012-03-02 2018-12-18 International Business Machines Corporation Upgrading devices in a dispersed storage network
US11232093B2 (en) 2012-03-02 2022-01-25 Pure Storage, Inc. Slice migration in a dispersed storage network
US10402393B2 (en) 2012-03-02 2019-09-03 Pure Storage, Inc. Slice migration in a dispersed storage network
US20130254248A1 (en) * 2012-03-23 2013-09-26 Alcatel-Lucent Usa Inc. Method And Apparatus For A Distributed File System In A Cloud Network
US9118618B2 (en) 2012-03-29 2015-08-25 A10 Networks, Inc. Hardware-based packet editor
CN102611758B (zh) * 2012-03-30 2016-08-17 浪潮电子信息产业股份有限公司 一种利用负载均衡器同步集群数据的方法
WO2013155392A1 (en) * 2012-04-13 2013-10-17 Citrix Systems, Inc. Systems and methods for trap monitoring in multi-core and cluster systems
US10621044B2 (en) 2012-04-25 2020-04-14 Pure Storage, Inc. Mapping slice groupings in a dispersed storage network
US10795766B2 (en) 2012-04-25 2020-10-06 Pure Storage, Inc. Mapping slice groupings in a dispersed storage network
US9380032B2 (en) 2012-04-25 2016-06-28 International Business Machines Corporation Encrypting data for storage in a dispersed storage network
US9332387B2 (en) 2012-05-02 2016-05-03 Google Inc. Prefetching and caching map data based on mobile network coverage
US10474395B2 (en) 2012-06-05 2019-11-12 Pure Storage, Inc. Abstracting namespace mapping in a dispersed storage network through multiple hierarchies
US10073638B2 (en) 2012-06-05 2018-09-11 International Business Machines Corporation Automatic namespace ordering determination
US9613052B2 (en) 2012-06-05 2017-04-04 International Business Machines Corporation Establishing trust within a cloud computing system
US10447471B2 (en) 2012-06-05 2019-10-15 Pure Storage, Inc. Systematic secret sharing
US10002047B2 (en) 2012-06-05 2018-06-19 International Business Machines Corporation Read-if-not-revision-equals protocol message
US20180336097A1 (en) 2012-06-25 2018-11-22 International Business Machines Corporation Namespace affinity and failover for processing units in a dispersed storage network
US10114697B2 (en) 2012-06-25 2018-10-30 International Business Machines Corporation Large object parallel writing
US10120574B2 (en) 2012-06-25 2018-11-06 International Business Machines Corporation Reversible data modifications within DS units
US11093327B1 (en) 2012-06-25 2021-08-17 Pure Storage, Inc. Failure abatement approach for failed storage units common to multiple vaults
US10157011B2 (en) 2012-06-25 2018-12-18 International Business Machines Corporation Temporary suspension of vault access
US9141297B2 (en) 2012-06-25 2015-09-22 Cleversafe, Inc. Verifying encoded data slice integrity in a dispersed storage network
US9110833B2 (en) 2012-06-25 2015-08-18 Cleversafe, Inc. Non-temporarily storing temporarily stored data in a dispersed storage network
US10430276B2 (en) 2012-06-25 2019-10-01 Pure Storage, Inc. Optimal orderings of processing unit priorities in a dispersed storage network
US9223799B1 (en) * 2012-06-29 2015-12-29 Emc Corporation Lightweight metadata sharing protocol for location transparent file access
US8782221B2 (en) 2012-07-05 2014-07-15 A10 Networks, Inc. Method to allocate buffer for TCP proxy session based on dynamic network conditions
US8904224B2 (en) * 2012-07-20 2014-12-02 International Business Machines Corporation Providing replication and fail-over as a network service in data centers
US8849942B1 (en) 2012-07-31 2014-09-30 Google Inc. Application programming interface for prefetching map data
US10651975B2 (en) 2012-08-02 2020-05-12 Pure Storage, Inc. Forwarding data amongst cooperative DSTN processing units of a massive data ingestion system
US9258177B2 (en) 2012-08-02 2016-02-09 International Business Machines Corporation Storing a data stream in a set of storage devices
US9778856B2 (en) * 2012-08-30 2017-10-03 Microsoft Technology Licensing, Llc Block-level access to parallel storage
US9875158B2 (en) 2012-08-31 2018-01-23 International Business Machines Corporation Slice storage in a dispersed storage network
US10331518B2 (en) 2012-08-31 2019-06-25 International Business Machines Corporation Encoding data in a dispersed storage network
US10409679B2 (en) 2012-08-31 2019-09-10 Pure Storage, Inc. Migrating data slices in a dispersed storage network
US10409678B2 (en) 2012-08-31 2019-09-10 Pure Storage, Inc. Self-optimizing read-ahead
US9154298B2 (en) 2012-08-31 2015-10-06 Cleversafe, Inc. Securely storing data in a dispersed storage network
US11360851B2 (en) 2012-08-31 2022-06-14 Pure Storage, Inc. Duplicating authentication information between connections
US10241863B2 (en) 2012-08-31 2019-03-26 International Business Machines Corporation Slice rebuilding in a dispersed storage network
US9317508B2 (en) * 2012-09-07 2016-04-19 Red Hat, Inc. Pro-active self-healing in a distributed file system
US10402423B2 (en) 2012-09-13 2019-09-03 Pure Storage, Inc. Sliding windows for batching index updates
US10318549B2 (en) 2012-09-13 2019-06-11 International Business Machines Corporation Batching modifications to nodes in a dispersed index
US10417253B2 (en) 2012-09-13 2019-09-17 Pure Storage, Inc. Multi-level data storage in a dispersed storage network
US9483539B2 (en) 2012-09-13 2016-11-01 International Business Machines Corporation Updating local data utilizing a distributed storage network
US10057351B2 (en) 2012-09-13 2018-08-21 International Business Machines Corporation Modifying information dispersal algorithm configurations in a dispersed storage network
US10331698B2 (en) 2012-09-13 2019-06-25 International Business Machines Corporation Rebuilding data in a dispersed storage network
US9355036B2 (en) 2012-09-18 2016-05-31 Netapp, Inc. System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US8799335B2 (en) * 2012-09-28 2014-08-05 International Business Machines Corporation Supporting coordinated access to a file system's shared storage using automatic alignment of a parallel file access protocol and metadata management
US9519501B1 (en) 2012-09-30 2016-12-13 F5 Networks, Inc. Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system
US10127111B2 (en) 2012-10-08 2018-11-13 International Business Machines Corporation Client provided request prioritization hints
US10331519B2 (en) 2012-10-08 2019-06-25 International Business Machines Corporation Application of secret sharing schemes at multiple levels of a dispersed storage network
US10606700B2 (en) 2012-10-08 2020-03-31 Pure Storage, Inc. Enhanced dispersed storage error encoding using multiple encoding layers
US9311179B2 (en) 2012-10-30 2016-04-12 Cleversafe, Inc. Threshold decoding of data based on trust levels
US9794337B2 (en) 2012-10-30 2017-10-17 International Business Machines Corporation Balancing storage node utilization of a dispersed storage network
US20140143779A1 (en) * 2012-11-19 2014-05-22 Raytheon Company Contextual routing of data elements
US9521197B2 (en) 2012-12-05 2016-12-13 International Business Machines Corporation Utilizing data object storage tracking in a dispersed storage network
US9811533B2 (en) 2012-12-05 2017-11-07 International Business Machines Corporation Accessing distributed computing functions in a distributed computing system
US10558621B2 (en) 2012-12-05 2020-02-11 Pure Storage, Inc. Lock stealing writes for improved reliability
US10587691B2 (en) 2012-12-05 2020-03-10 Pure Storage, Inc. Impatient writes
US9338225B2 (en) 2012-12-06 2016-05-10 A10 Networks, Inc. Forwarding policies on a virtual service network
US8924425B1 (en) 2012-12-06 2014-12-30 Netapp, Inc. Migrating data from legacy storage systems to object storage systems
US9348840B2 (en) * 2012-12-14 2016-05-24 Intel Corporation Adaptive data striping and replication across multiple storage clouds for high availability and performance
US9264499B2 (en) 2012-12-14 2016-02-16 Intel Corporation Cloud data storage location monitoring
US9268797B2 (en) * 2012-12-21 2016-02-23 Zetta Inc. Systems and methods for on-line backup and disaster recovery
US10423491B2 (en) 2013-01-04 2019-09-24 Pure Storage, Inc. Preventing multiple round trips when writing to target widths
US10013203B2 (en) 2013-01-04 2018-07-03 International Business Machines Corporation Achieving storage compliance in a dispersed storage network
US10642992B2 (en) 2013-01-04 2020-05-05 Pure Storage, Inc. Password augmented all-or-nothin transform
US10241866B2 (en) 2013-01-04 2019-03-26 International Business Machines Corporation Allocating rebuilding queue entries in a dispersed storage network
US10402270B2 (en) 2013-01-04 2019-09-03 Pure Storage, Inc. Deterministically determining affinity for a source name range
US9311187B2 (en) 2013-01-04 2016-04-12 Cleversafe, Inc. Achieving storage compliance in a dispersed storage network
US11416340B1 (en) 2013-01-04 2022-08-16 Pure Storage, Inc. Storage system with multiple storage types in a vast storage network
US10229002B2 (en) 2013-01-04 2019-03-12 International Business Machines Corporation Process to migrate named objects to a dispersed or distributed storage network (DSN)
US20190250823A1 (en) 2013-01-04 2019-08-15 International Business Machines Corporation Efficient computation of only the required slices
US10204009B2 (en) 2013-01-04 2019-02-12 International Business Machines Corporation Prioritized rebuilds using dispersed indices
US9558067B2 (en) 2013-01-04 2017-01-31 International Business Machines Corporation Mapping storage of data in a dispersed storage network
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US9197549B2 (en) * 2013-01-23 2015-11-24 Cisco Technology, Inc. Server load balancer traffic steering
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US10621021B2 (en) 2013-02-05 2020-04-14 Pure Storage, Inc. Using dispersed data structures to point to slice or date source replicas
US10055441B2 (en) 2013-02-05 2018-08-21 International Business Machines Corporation Updating shared group information in a dispersed storage network
US9043499B2 (en) 2013-02-05 2015-05-26 Cleversafe, Inc. Modifying a dispersed storage network memory data access response plan
US10310763B2 (en) 2013-02-05 2019-06-04 International Business Machines Corporation Forming a distributed storage network memory without namespace aware distributed storage units
US10664360B2 (en) 2013-02-05 2020-05-26 Pure Storage, Inc. Identifying additional resources to accelerate rebuildling
US10430122B2 (en) 2013-02-05 2019-10-01 Pure Storage, Inc. Using partial rebuilding to change information dispersal algorithm (IDA)
US10268554B2 (en) 2013-02-05 2019-04-23 International Business Machines Corporation Using dispersed computation to change dispersal characteristics
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9274908B2 (en) 2013-02-26 2016-03-01 International Business Machines Corporation Resolving write conflicts in a dispersed storage network
US11036392B2 (en) 2013-02-26 2021-06-15 Pure Storage, Inc. Determining when to use convergent encryption
US10642489B2 (en) 2013-02-26 2020-05-05 Pure Storage, Inc. Determining when to initiate an intra-distributed storage unit rebuild vs. an inter-distributed storage unit rebuild
US9554418B1 (en) 2013-02-28 2017-01-24 F5 Networks, Inc. Device for topology hiding of a visited network
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
CN105191225A (zh) * 2013-03-28 2015-12-23 株式会社东芝 通信装置、通信方法、以及通信程序
US10075523B2 (en) 2013-04-01 2018-09-11 International Business Machines Corporation Efficient storage of data in a dispersed storage network
US9363132B2 (en) * 2013-04-24 2016-06-07 International Business Machines Corporation Maximizing throughput of streaming media by simultaneously connecting to streaming media server over multiple independent network connections
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
US10223213B2 (en) 2013-05-03 2019-03-05 International Business Machines Corporation Salted zero expansion all or nothing transformation
WO2014179753A2 (en) 2013-05-03 2014-11-06 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US9456035B2 (en) 2013-05-03 2016-09-27 International Business Machines Corporation Storing related data in a dispersed storage network
US9405609B2 (en) 2013-05-22 2016-08-02 International Business Machines Corporation Storing data in accordance with a performance threshold
US9432341B2 (en) 2013-05-30 2016-08-30 International Business Machines Corporation Securing data in a dispersed storage network
US9424132B2 (en) 2013-05-30 2016-08-23 International Business Machines Corporation Adjusting dispersed storage network traffic due to rebuilding
US11226860B1 (en) 2013-05-30 2022-01-18 Pure Storage, Inc. Difference based rebuild list scanning
US9350800B2 (en) 2013-06-05 2016-05-24 Microsoft Technology Licensing, Llc Defragmenting clusters with reserved resources
US10133635B2 (en) 2013-07-01 2018-11-20 International Business Machines Corporation Low-width vault in distributed storage system
US10169369B2 (en) 2013-07-01 2019-01-01 International Business Machines Corporation Meeting storage requirements with limited storage resources
US11221916B2 (en) 2013-07-01 2022-01-11 Pure Storage, Inc. Prioritized data reconstruction in a dispersed storage network
US9501360B2 (en) 2013-07-01 2016-11-22 International Business Machines Corporation Rebuilding data while reading data in a dispersed storage network
US9652470B2 (en) 2013-07-01 2017-05-16 International Business Machines Corporation Storing data in a dispersed storage network
EP2836901B1 (de) * 2013-07-02 2017-09-06 Hitachi Data Systems Engineering UK Limited Verfahren und vorrichtung zur virtualisierung eines dateisystems, datenspeichersystem zur virtualisierung eines dateisystems und dateiserver zur verwendung in einem datenspeichersystem
US9626125B2 (en) 2013-07-31 2017-04-18 International Business Machines Corporation Accounting for data that needs to be rebuilt or deleted
US20180188964A1 (en) 2013-07-31 2018-07-05 International Business Machines Corporation Managed storage unit shutdown in a distributed storage network
US10180880B2 (en) 2013-07-31 2019-01-15 International Business Machines Corporation Adaptive rebuilding rates based on sampling and inference
US10681134B2 (en) 2013-07-31 2020-06-09 Pure Storage, Inc. Accelerated learning in adaptive rebuilding by applying observations to other samples
US9848044B2 (en) 2013-07-31 2017-12-19 International Business Machines Corporation Distributed storage network with coordinated partial task execution and methods for use therewith
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US9304997B2 (en) * 2013-08-27 2016-04-05 Netapp, Inc. Asynchronously migrating a file system
US9311331B2 (en) 2013-08-27 2016-04-12 Netapp, Inc. Detecting out-of-band (OOB) changes when replicating a source file system using an in-line system
US20160041996A1 (en) 2014-08-11 2016-02-11 Netapp, Inc. System and method for developing and implementing a migration plan for migrating a file system
US9311314B2 (en) * 2013-08-27 2016-04-12 Netapp, Inc. System and method for migrating data from a source file system to a destination file system with use of attribute manipulation
US9300692B2 (en) 2013-08-27 2016-03-29 Netapp, Inc. System and method for implementing data migration while preserving security policies of a source filer
US10860529B2 (en) 2014-08-11 2020-12-08 Netapp Inc. System and method for planning and configuring a file system migration
US10601918B2 (en) 2013-08-29 2020-03-24 Pure Storage, Inc. Rotating inactive storage units in a distributed storage network
US10686880B2 (en) 2013-08-29 2020-06-16 Pure Storage, Inc. Dispersed storage based on range availability and methods for use therewith
US10489071B2 (en) 2013-08-29 2019-11-26 Pure Storage, Inc. Vault provisioning within dispersed or distributed storage network (DSN)
US9661074B2 (en) 2013-08-29 2017-05-23 International Business Machines Corporations Updating de-duplication tracking data for a dispersed storage network
US10514857B2 (en) 2013-08-29 2019-12-24 Pure Storage, Inc. Dynamic adjusting of parameters based on resource scoring
US10484474B2 (en) 2013-08-29 2019-11-19 Pure Storage, Inc. Rotating offline DS units
US8718445B1 (en) 2013-09-03 2014-05-06 Penthera Partners, Inc. Commercials on mobile devices
US10291503B2 (en) 2013-09-26 2019-05-14 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed network
US10341208B2 (en) 2013-09-26 2019-07-02 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed network
US9633041B2 (en) * 2013-09-26 2017-04-25 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed file system network
US9244916B2 (en) * 2013-10-01 2016-01-26 Penthera Partners, Inc. Downloading media objects
US9857974B2 (en) 2013-10-03 2018-01-02 International Business Machines Corporation Session execution decision
US9781208B2 (en) 2013-11-01 2017-10-03 International Business Machines Corporation Obtaining dispersed storage network system registry information
US10182115B2 (en) 2013-11-01 2019-01-15 International Business Machines Corporation Changing rebuild priority for a class of data
US10304096B2 (en) 2013-11-01 2019-05-28 International Business Machines Corporation Renting a pipe to a storage system
US10230770B2 (en) 2013-12-02 2019-03-12 A10 Networks, Inc. Network proxy layer for policy-based application proxies
US9900316B2 (en) 2013-12-04 2018-02-20 International Business Machines Corporation Accessing storage units of a dispersed storage network
US9594639B2 (en) 2014-01-06 2017-03-14 International Business Machines Corporation Configuring storage resources of a dispersed storage network
US10922181B2 (en) 2014-01-06 2021-02-16 Pure Storage, Inc. Using storage locations greater than an IDA width in a dispersed storage network
US11340993B2 (en) 2014-01-06 2022-05-24 Pure Storage, Inc. Deferred rebuilding with alternate storage locations
US9280780B2 (en) 2014-01-27 2016-03-08 Umbel Corporation Systems and methods of generating and using a bitmap index
US9778987B2 (en) 2014-01-31 2017-10-03 International Business Machines Corporation Writing encoded data slices in a dispersed storage network
US9552261B2 (en) 2014-01-31 2017-01-24 International Business Machines Corporation Recovering data from microslices in a dispersed storage network
US10318382B2 (en) 2014-01-31 2019-06-11 International Business Machines Corporation Determining missing encoded data slices
US11204836B1 (en) 2014-01-31 2021-12-21 Pure Storage, Inc. Using trap slices for anomaly detection in a distributed storage network
US9798631B2 (en) 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
US9529834B2 (en) 2014-02-26 2016-12-27 International Business Machines Corporation Concatenating data objects for storage in a dispersed storage network
US9665429B2 (en) 2014-02-26 2017-05-30 International Business Machines Corporation Storage of data with verification in a dispersed storage network
US10769016B2 (en) 2014-02-26 2020-09-08 Pure Storage, Inc. Storing a plurality of correlated data in a dispersed storage network
US10635312B2 (en) 2014-02-26 2020-04-28 Pure Storage, Inc. Recovering data in a dispersed storage network
US10678638B2 (en) 2014-02-26 2020-06-09 Pure Storage, Inc. Resolving write conflicts in a dispersed storage network
US10140182B2 (en) 2014-02-26 2018-11-27 International Business Machines Corporation Modifying allocation of storage resources in a dispersed storage network
US11016941B2 (en) 2014-02-28 2021-05-25 Red Hat, Inc. Delayed asynchronous file replication in a distributed file system
US9590843B2 (en) 2014-03-12 2017-03-07 Nutanix, Inc. Method and system for providing distributed management in a networked virtualization environment
US9965505B2 (en) * 2014-03-19 2018-05-08 Red Hat, Inc. Identifying files in change logs using file content location identifiers
US9986029B2 (en) 2014-03-19 2018-05-29 Red Hat, Inc. File replication using file content location identifiers
US20150271072A1 (en) * 2014-03-24 2015-09-24 Cisco Technology, Inc. Method and apparatus for rate controlled content streaming from cache
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9330103B1 (en) * 2014-03-28 2016-05-03 Emc Corporation Preserving file handles when moving file system operation between storage processors
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US20150288680A1 (en) 2014-04-02 2015-10-08 Cleversafe, Inc. Distributing registry information in a dispersed storage network
US10761917B2 (en) 2014-04-02 2020-09-01 Pure Storage, Inc. Using global namespace addressing in a dispersed storage network
US10015152B2 (en) 2014-04-02 2018-07-03 International Business Machines Corporation Securing data in a dispersed storage network
US10020826B2 (en) 2014-04-02 2018-07-10 International Business Machines Corporation Generating molecular encoding information for data storage
US10681138B2 (en) 2014-04-02 2020-06-09 Pure Storage, Inc. Storing and retrieving multi-format content in a distributed storage network
US20190087599A1 (en) 2014-04-02 2019-03-21 International Business Machines Corporation Compressing a slice name listing in a dispersed storage network
US11347590B1 (en) 2014-04-02 2022-05-31 Pure Storage, Inc. Rebuilding data in a distributed storage network
US9697228B2 (en) * 2014-04-14 2017-07-04 Vembu Technologies Private Limited Secure relational file system with version control, deduplication, and error correction
US10394476B2 (en) 2014-04-30 2019-08-27 Pure Storage, Inc. Multi-level stage locality selection on a large system
US9735967B2 (en) 2014-04-30 2017-08-15 International Business Machines Corporation Self-validating request message structure and operation
US10296263B2 (en) 2014-04-30 2019-05-21 International Business Machines Corporation Dispersed bloom filter for determining presence of an object
US9612882B2 (en) 2014-04-30 2017-04-04 International Business Machines Corporation Retrieving multi-generational stored data in a dispersed storage network
US10802732B2 (en) 2014-04-30 2020-10-13 Pure Storage, Inc. Multi-level stage locality selection on a large system
US10496671B1 (en) * 2014-05-05 2019-12-03 EMC IP Holding Company LLC Zone consistency
US10542049B2 (en) * 2014-05-09 2020-01-21 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US9699251B2 (en) * 2014-05-13 2017-07-04 Nutanix, Inc. Mechanism for providing load balancing to an external node utilizing a clustered environment for storage management
US10735137B2 (en) 2016-03-15 2020-08-04 ClineHair Commercial Endeavors Distributed storage system data management and security
US20190036648A1 (en) * 2014-05-13 2019-01-31 Datomia Research Labs Ou Distributed secure data storage and transmission of streaming media content
US9740472B1 (en) 2014-05-15 2017-08-22 Nutanix, Inc. Mechanism for performing rolling upgrades in a networked virtualization environment
US9733958B2 (en) 2014-05-15 2017-08-15 Nutanix, Inc. Mechanism for performing rolling updates with data unavailability check in a networked virtualization environment for storage management
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US10445339B1 (en) 2014-05-28 2019-10-15 EMC IP Holding Company LLC Distributed contextual analytics
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US10095872B2 (en) 2014-06-05 2018-10-09 International Business Machines Corporation Accessing data based on a dispersed storage network rebuilding issue
US10509577B2 (en) 2014-06-05 2019-12-17 Pure Storage, Inc. Reliable storage in a dispersed storage network
US9766981B2 (en) * 2014-06-10 2017-09-19 Institute For Information Industry Synchronization apparatus, method, and non-transitory computer readable storage medium
US9824133B1 (en) * 2014-06-20 2017-11-21 Amazon Technologies, Inc. Cloud analytics marketplace
CN106575296B (zh) * 2014-06-20 2020-04-03 亚马逊技术股份有限公司 用于托管的分析的动态n维立方体
US9882949B1 (en) 2014-06-20 2018-01-30 Amazon Technologies, Inc. Dynamic detection of data correlations based on realtime data
EP3158478B1 (de) 2014-06-20 2023-06-07 Amazon Technologies, Inc. Einbettbare cloud-analytik
US11868372B1 (en) 2014-06-20 2024-01-09 Amazon Technologies, Inc. Automated hierarchy detection for cloud-based analytics
US9229997B1 (en) 2014-06-20 2016-01-05 Amazon Technologies, Inc. Embeddable cloud analytics
US9690520B2 (en) 2014-06-30 2017-06-27 International Business Machines Corporation Recovering an encoded data slice in a dispersed storage network
US9841925B2 (en) 2014-06-30 2017-12-12 International Business Machines Corporation Adjusting timing of storing data in a dispersed storage network
US10459797B2 (en) 2014-06-30 2019-10-29 Pure Storage, Inc. Making trade-offs between rebuild scanning and failing memory device flexibility
US9838478B2 (en) 2014-06-30 2017-12-05 International Business Machines Corporation Identifying a task execution resource of a dispersed storage network
US11606431B2 (en) 2014-06-30 2023-03-14 Pure Storage, Inc. Maintaining failure independence for storage of a set of encoded data slices
US11099763B1 (en) 2014-06-30 2021-08-24 Pure Storage, Inc. Migrating generational storage to a decentralized agreement protocol paradigm
US10447612B2 (en) 2014-06-30 2019-10-15 Pure Storage, Inc. Migrating encoded data slices in a dispersed storage network
US11398988B1 (en) 2014-06-30 2022-07-26 Pure Storage, Inc. Selection of access resources in a distributed storage network
US10042564B2 (en) 2014-06-30 2018-08-07 International Business Machines Corporation Accessing data while migrating storage of the data
US10440105B2 (en) 2014-06-30 2019-10-08 Pure Storage, Inc. Using a decentralized agreement protocol to rank storage locations for target width
US10673946B2 (en) 2014-06-30 2020-06-02 Pure Storage, Inc. Using separate weighting scores for different types of data in a decentralized agreement protocol
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US11728964B2 (en) 2014-07-31 2023-08-15 Pure Storage, Inc. Performance aided data migration in a distributed storage network
US10089036B2 (en) 2014-07-31 2018-10-02 International Business Machines Corporation Migrating data in a distributed storage network
US10644874B2 (en) 2014-07-31 2020-05-05 Pure Storage, Inc. Limiting brute force attacks against dispersed credentials in a distributed storage system
US10613936B2 (en) 2014-07-31 2020-04-07 Pure Storage, Inc. Fractional slices in a distributed storage system
US10089315B2 (en) * 2014-08-22 2018-10-02 AsterionDB, Inc. Systems, apparatus, and methods for accessing data from a database as a file
US10402395B2 (en) 2014-09-05 2019-09-03 Pure Storage, Inc. Facilitating data consistency in a dispersed storage network
US11442921B1 (en) 2014-09-05 2022-09-13 Pure Storage, Inc. Data access in a dispersed storage network with consistency
US10176191B2 (en) 2014-09-05 2019-01-08 International Business Machines Corporation Recovering from conflicts that emerge from eventually consistent operations
US10049120B2 (en) 2014-09-05 2018-08-14 International Business Machines Corporation Consistency based access of data in a dispersed storage network
US10268545B2 (en) 2014-09-08 2019-04-23 International Business Machines Corporation Using reinforcement learning to select a DS processing unit
US9591076B2 (en) 2014-09-08 2017-03-07 International Business Machines Corporation Maintaining a desired number of storage units
US10146622B2 (en) 2014-09-08 2018-12-04 International Business Machines Corporation Combining deduplication with locality for efficient and fast storage
US10257274B2 (en) * 2014-09-15 2019-04-09 Foundation for Research and Technology—Hellas (FORTH) Tiered heterogeneous fast layer shared storage substrate apparatuses, methods, and systems
US20180101457A1 (en) 2014-10-29 2018-04-12 International Business Machines Corporation Retrying failed write operations in a dispersed storage network
US10459792B2 (en) 2014-10-29 2019-10-29 Pure Storage, Inc. Using an eventually consistent dispersed memory to implement storage tiers
US9916114B2 (en) 2014-10-29 2018-03-13 International Business Machines Corporation Deterministically sharing a plurality of processing resources
US10282135B2 (en) 2014-10-29 2019-05-07 International Business Machines Corporation Strong consistency write threshold
US10481833B2 (en) 2014-10-29 2019-11-19 Pure Storage, Inc. Transferring data encoding functions in a distributed storage network
US10095582B2 (en) 2014-10-29 2018-10-09 International Business Machines Corporation Partial rebuilding techniques in a dispersed storage unit
US10223033B2 (en) 2014-10-29 2019-03-05 International Business Machines Corporation Coordinating arrival times of data slices in a dispersed storage network
US9838477B2 (en) * 2014-10-30 2017-12-05 Netapp, Inc. Techniques for storing and distributing metadata among nodes in a storage cluster system
GB201419498D0 (en) * 2014-10-31 2014-12-17 Ocado Innovation Ltd System and method for fulfilling E-commerce orders from a hierarchy of fulfilment centres
US10268467B2 (en) 2014-11-11 2019-04-23 A10 Networks, Inc. Policy-driven management of application traffic for providing services to cloud-based applications
US10051052B2 (en) * 2014-11-18 2018-08-14 Red Hat, Inc. Replication with adustable consistency levels
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US10521298B2 (en) 2014-12-02 2019-12-31 Pure Storage, Inc. Temporarily storing dropped and rebuilt slices in a DSN memory
US10503592B2 (en) 2014-12-02 2019-12-10 Pure Storage, Inc. Overcoming bottlenecks in partial and traditional rebuild operations
US10558527B2 (en) 2014-12-02 2020-02-11 Pure Storage, Inc. Rebuilding strategy in memory managed multi-site duplication
US10481832B2 (en) 2014-12-02 2019-11-19 Pure Storage, Inc. Applying a probability function to avoid storage operations for already-deleted data
US10402271B2 (en) 2014-12-02 2019-09-03 Pure Storage, Inc. Overcoming bottlenecks in zero information gain (ZIG) rebuild operations
US10120739B2 (en) 2014-12-02 2018-11-06 International Business Machines Corporation Prioritized data rebuilding in a dispersed storage network
US9727275B2 (en) 2014-12-02 2017-08-08 International Business Machines Corporation Coordinating storage of data in dispersed storage networks
US9930115B1 (en) 2014-12-18 2018-03-27 EMC IP Holding Company LLC Virtual network storage function layer comprising one or more virtual network storage function instances
US10356169B1 (en) 2014-12-23 2019-07-16 EMC IP Holding Company LLC Virtual content delivery network
US10778601B1 (en) 2014-12-23 2020-09-15 EMC IP Holding Company LLC Automated assurance analysis providing feedback to orchestration of resources in virtualization infrastructure
US10387252B2 (en) 2014-12-31 2019-08-20 Pure Storage, Inc. Synchronously storing data in a plurality of dispersed storage networks
US9727427B2 (en) 2014-12-31 2017-08-08 International Business Machines Corporation Synchronizing storage of data copies in a dispersed storage network
US10642687B2 (en) 2014-12-31 2020-05-05 Pure Storage, Inc. Pessimistic reads and other smart-read enhancements with synchronized vaults
US10623495B2 (en) 2014-12-31 2020-04-14 Pure Storage, Inc. Keeping synchronized writes from getting out of synch
US10126974B2 (en) 2014-12-31 2018-11-13 International Business Machines Corporation Redistributing encoded data slices in a dispersed storage network
US10489247B2 (en) 2014-12-31 2019-11-26 Pure Storage, Inc. Generating time-ordered globally unique revision numbers
US10656866B2 (en) 2014-12-31 2020-05-19 Pure Storage, Inc. Unidirectional vault synchronization to support tiering
US11604707B2 (en) 2014-12-31 2023-03-14 Pure Storage, Inc. Handling failures when synchronizing objects during a write operation
US10621042B2 (en) 2014-12-31 2020-04-14 Pure Storage, Inc. Vault transformation within a dispersed storage network
US10423359B2 (en) 2014-12-31 2019-09-24 Pure Storage, Inc. Linking common attributes among a set of synchronized vaults
US10452317B2 (en) 2014-12-31 2019-10-22 Pure Storage, Inc. DAP redistribution operation within a dispersed storage network
US10169123B2 (en) 2015-01-30 2019-01-01 International Business Machines Corporation Distributed data rebuilding
US10511665B2 (en) 2015-01-30 2019-12-17 Pure Storage, Inc. Efficient resource reclamation after deletion of slice from common file
US9826038B2 (en) 2015-01-30 2017-11-21 International Business Machines Corporation Selecting a data storage resource of a dispersed storage network
US10620878B2 (en) 2015-01-30 2020-04-14 Pure Storage, Inc. Write threshold plus value in dispersed storage network write operations
US10289342B2 (en) 2015-01-30 2019-05-14 International Business Machines Corporation Data access optimization protocol in a dispersed storage network
US10498822B2 (en) 2015-01-30 2019-12-03 Pure Storage, Inc. Adaptive scanning rates
US10592132B2 (en) 2015-01-30 2020-03-17 Pure Storage, Inc. Read-foreign-slices request for improved read efficiency with bundled writes
US10740180B2 (en) 2015-01-30 2020-08-11 Pure Storage, Inc. Storing and retrieving data using proxies
US10440116B2 (en) 2015-01-30 2019-10-08 Pure Storage, Inc. Minimizing data movement through rotation of spare memory devices
US9740547B2 (en) 2015-01-30 2017-08-22 International Business Machines Corporation Storing data using a dual path storage approach
US10423490B2 (en) 2015-01-30 2019-09-24 Pure Storage, Inc. Read-source requests to support bundled writes in a distributed storage system
US10498823B2 (en) 2015-01-30 2019-12-03 Pure Storage, Inc. Optimally apportioning rebuilding resources
US10506045B2 (en) 2015-01-30 2019-12-10 Pure Storage, Inc. Memory access using deterministic function and secure seed
US10530862B2 (en) 2015-01-30 2020-01-07 Pure Storage, Inc. Determining slices to rebuild from low-level failures
US10642507B2 (en) 2015-01-30 2020-05-05 Nutanix, Inc. Pulsed leader consensus management
US10594793B2 (en) 2015-01-30 2020-03-17 Pure Storage, Inc. Read-prepare requests to multiple memories
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10313243B2 (en) 2015-02-24 2019-06-04 Commvault Systems, Inc. Intelligent local management of data stream throttling in secondary-copy operations
US11188665B2 (en) 2015-02-27 2021-11-30 Pure Storage, Inc. Using internal sensors to detect adverse interference and take defensive actions
US10503591B2 (en) 2015-02-27 2019-12-10 Pure Storage, Inc. Selecting retrieval locations in a dispersed storage network
US10437677B2 (en) 2015-02-27 2019-10-08 Pure Storage, Inc. Optimized distributed rebuilding within a dispersed storage network
US10069915B2 (en) 2015-02-27 2018-09-04 International Business Machines Corporation Storing data in a dispersed storage network
US10530861B2 (en) 2015-02-27 2020-01-07 Pure Storage, Inc. Utilizing multiple storage pools in a dispersed storage network
US10387067B2 (en) 2015-02-27 2019-08-20 Pure Storage, Inc. Optimizing data storage in a dispersed storage network
US10440115B2 (en) 2015-02-27 2019-10-08 Pure Storage, Inc. Write intent messaging in a dispersed storage network
US11836369B1 (en) 2015-02-27 2023-12-05 Pure Storage, Inc. Storing data in an expanded storage pool of a vast storage network
US10528425B2 (en) 2015-02-27 2020-01-07 Pure Storage, Inc. Transitioning to an optimized data storage approach in a dispersed storage network
US10437676B2 (en) 2015-02-27 2019-10-08 Pure Storage, Inc. Urgent reads and using data source health to determine error recovery procedures
US10423502B2 (en) 2015-02-27 2019-09-24 Pure Storage, Inc. Stand-by distributed storage units
US10409772B2 (en) 2015-02-27 2019-09-10 Pure Storage, Inc. Accessing serially stored data in a dispersed storage network
US10534668B2 (en) 2015-02-27 2020-01-14 Pure Storage, Inc. Accessing data in a dispersed storage network
US10078472B2 (en) 2015-02-27 2018-09-18 International Business Machines Corporation Rebuilding encoded data slices in a dispersed storage network
US10404410B2 (en) 2015-02-27 2019-09-03 Pure Storage, Inc. Storage unit (SU) report cards
US10657000B2 (en) 2015-02-27 2020-05-19 Pure Storage, Inc. Optimizing data storage in a dispersed storage network
US10579451B2 (en) 2015-02-27 2020-03-03 Pure Storage, Inc. Pro-actively preparing a dispersed storage network memory for higher-loads
US10275185B2 (en) 2015-02-27 2019-04-30 International Business Machines Corporation Fail-in-place supported via decentralized or Distributed Agreement Protocol (DAP)
US9986033B2 (en) * 2015-03-17 2018-05-29 Panzura, Inc. Facilitating access to remote cloud services
US10528282B2 (en) 2015-03-31 2020-01-07 Pure Storage, Inc. Modifying and utilizing a file structure in a dispersed storage network
US11055177B2 (en) 2015-03-31 2021-07-06 Pure Storage, Inc. Correlating operational information with an error condition in a dispersed storage network
US10915261B2 (en) 2015-03-31 2021-02-09 Pure Storage, Inc. Selecting a set of storage units in a distributed storage network
US10437515B2 (en) 2015-03-31 2019-10-08 Pure Storage, Inc. Selecting storage units in a dispersed storage network
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10713374B2 (en) 2015-03-31 2020-07-14 Pure Storage, Inc. Resolving detected access anomalies in a dispersed storage network
US10079887B2 (en) 2015-03-31 2018-09-18 International Business Machines Corporation Expanding storage capacity of a set of storage units in a distributed storage network
US10963180B2 (en) 2015-03-31 2021-03-30 Pure Storage, Inc. Adding incremental storage resources in a dispersed storage network
US10852957B2 (en) 2015-03-31 2020-12-01 Pure Storage, Inc. Migration agent employing moveslice request
US10331384B2 (en) 2015-03-31 2019-06-25 International Business Machines Corporation Storing data utilizing a maximum accessibility approach in a dispersed storage network
US10534661B2 (en) 2015-03-31 2020-01-14 Pure Storage, Inc. Selecting a storage error abatement alternative in a dispersed storage network
US10387070B2 (en) 2015-03-31 2019-08-20 Pure Storage, Inc. Migrating data in response to adding incremental storage resources in a dispersed storage network
US10078561B2 (en) 2015-04-30 2018-09-18 International Business Machines Corporation Handling failing memory devices in a dispersed storage network
US10055170B2 (en) 2015-04-30 2018-08-21 International Business Machines Corporation Scheduling storage unit maintenance tasks in a dispersed storage network
US10168904B2 (en) 2015-04-30 2019-01-01 International Business Machines Corporation Quasi-error notifications in a dispersed storage network
US10037171B2 (en) 2015-04-30 2018-07-31 International Business Machines Corporation Accessing common data in a dispersed storage network
US10067998B2 (en) 2015-04-30 2018-09-04 International Business Machines Corporation Distributed sync list
US10157094B2 (en) 2015-04-30 2018-12-18 International Business Machines Corporation Validating system registry files in a dispersed storage network
US10254992B2 (en) 2015-04-30 2019-04-09 International Business Machines Corporation Rebalancing data storage in a dispersed storage network
US10268376B2 (en) 2015-04-30 2019-04-23 International Business Machines Corporation Automated deployment and assignment of access devices in a dispersed storage network
US10216594B2 (en) 2015-04-30 2019-02-26 International Business Machines Corporation Automated stalled process detection and recovery
US9965262B2 (en) 2015-05-21 2018-05-08 International Business Machines Corporation Application bundle pulling
US10389850B2 (en) 2015-05-21 2019-08-20 International Business Machines Corporation Managing redundancy among application bundles
US10389794B2 (en) 2015-05-21 2019-08-20 International Business Machines Corporation Managing redundancy among application bundles
US9888057B2 (en) 2015-05-21 2018-02-06 International Business Machines Corporation Application bundle management across mixed file system types
US10530660B2 (en) * 2015-05-21 2020-01-07 International Business Machines Corporation Application bundle preloading
US10152516B2 (en) 2015-05-21 2018-12-11 International Business Machines Corporation Managing staleness latency among application bundles
US10430107B2 (en) 2015-05-29 2019-10-01 Pure Storage, Inc. Identifying stored data slices during a slice migration activity in a dispersed storage network
US10324657B2 (en) 2015-05-29 2019-06-18 International Business Machines Corporation Accounting for data whose rebuilding is deferred
US10523241B2 (en) 2015-05-29 2019-12-31 Pure Storage, Inc. Object fan out write operation
US10409522B2 (en) 2015-05-29 2019-09-10 Pure Storage, Inc. Reclaiming storage capacity in a dispersed storage network
US10891058B2 (en) 2015-05-29 2021-01-12 Pure Storage, Inc. Encoding slice verification information to support verifiable rebuilding
US10613798B2 (en) 2015-05-29 2020-04-07 Pure Storage, Inc. Slice fanout write request
US10169125B2 (en) 2015-05-29 2019-01-01 International Business Machines Corporation Re-encoding data in a dispersed storage network
US10402122B2 (en) 2015-05-29 2019-09-03 Pure Storage, Inc. Transferring encoded data slices in a dispersed storage network
US11115221B2 (en) 2015-05-29 2021-09-07 Pure Storage, Inc. Verifying a rebuilt encoded data slice using slice verification information
US10838664B2 (en) 2015-05-29 2020-11-17 Pure Storage, Inc. Determining a storage location according to legal requirements
US10789128B2 (en) 2015-05-29 2020-09-29 Pure Storage, Inc. External healing mode for a dispersed storage network memory
US9954751B2 (en) 2015-05-29 2018-04-24 Microsoft Technology Licensing, Llc Measuring performance of a network using mirrored probe packets
US9588815B1 (en) 2015-06-17 2017-03-07 EMC IP Holding Company LLC Architecture for data collection and event management supporting automation in service provider cloud environments
US11669546B2 (en) 2015-06-30 2023-06-06 Pure Storage, Inc. Synchronizing replicated data in a storage network
US10437671B2 (en) 2015-06-30 2019-10-08 Pure Storage, Inc. Synchronizing replicated stored data
US10055291B2 (en) 2015-06-30 2018-08-21 International Business Machines Corporation Method and system for processing data access requests during data transfers
CN107851112A (zh) * 2015-07-08 2018-03-27 云聚公司 用于从摄像机安全传输信号的系统和方法
US11782789B2 (en) 2015-07-31 2023-10-10 Pure Storage, Inc. Encoding data and associated metadata in a storage network
US10229004B2 (en) 2015-07-31 2019-03-12 International Business Machines Corporation Data transfer priority levels
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10176182B2 (en) * 2015-08-31 2019-01-08 International Business Machines Corporation File deletion in storage devices based on the deletion priority rules
US10466914B2 (en) 2015-08-31 2019-11-05 Pure Storage, Inc. Verifying authorized access in a dispersed storage network
US10298680B1 (en) 2015-09-23 2019-05-21 Cohesity, Inc. Dynamic throughput ingestion of backup sources
US10073652B2 (en) 2015-09-24 2018-09-11 International Business Machines Corporation Performance optimized storage vaults in a dispersed storage network
US10169147B2 (en) 2015-10-30 2019-01-01 International Business Machines Corporation End-to-end secure data storage in a dispersed storage network
US10346246B2 (en) 2015-11-30 2019-07-09 International Business Machines Corporation Recovering data copies in a dispersed storage network
US10409514B2 (en) 2015-11-30 2019-09-10 International Business Machines Corporation IP multicast message transmission for event notifications
US20170192688A1 (en) 2015-12-30 2017-07-06 International Business Machines Corporation Lazy deletion of vaults in packed slice storage (pss) and zone slice storage (zss)
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10855759B2 (en) 2016-01-26 2020-12-01 Pure Storage, Inc. Utilizing a hierarchical index in a dispersed storage network
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
US10089178B2 (en) 2016-02-29 2018-10-02 International Business Machines Corporation Developing an accurate dispersed storage network memory performance model through training
US10185699B2 (en) * 2016-03-14 2019-01-22 Futurewei Technologies, Inc. Reconfigurable data interface unit for compute systems
US10931402B2 (en) 2016-03-15 2021-02-23 Cloud Storage, Inc. Distributed storage system data management and security
US10831381B2 (en) 2016-03-29 2020-11-10 International Business Machines Corporation Hierarchies of credential and access control sharing between DSN memories
US10387248B2 (en) 2016-03-29 2019-08-20 International Business Machines Corporation Allocating data for storage by utilizing a location-based hierarchy in a dispersed storage network
US10419538B2 (en) 2016-04-26 2019-09-17 International Business Machines Corporation Selecting memory for data access in a dispersed storage network
US10169082B2 (en) 2016-04-27 2019-01-01 International Business Machines Corporation Accessing data in accordance with an execution deadline
US10007444B2 (en) 2016-04-29 2018-06-26 International Business Machines Corporation Batching access requests in a dispersed storage network
US10628399B2 (en) 2016-04-29 2020-04-21 International Business Machines Corporation Storing data in a dispersed storage network with consistency
US9607104B1 (en) 2016-04-29 2017-03-28 Umbel Corporation Systems and methods of using a bitmap index to determine bicliques
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10091298B2 (en) 2016-05-27 2018-10-02 International Business Machines Corporation Enhancing performance of data storage in a dispersed storage network
US10353772B2 (en) 2016-05-31 2019-07-16 International Business Machines Corporation Selecting data for storage in a dispersed storage network
US10122795B2 (en) 2016-05-31 2018-11-06 International Business Machines Corporation Consistency level driven data storage in a dispersed storage network
US10027755B2 (en) 2016-06-01 2018-07-17 International Business Machines Corporation Selecting storage units in one or more dispersed storage networks
US10394650B2 (en) 2016-06-03 2019-08-27 International Business Machines Corporation Multiple writes using inter-site storage unit relationship
US10652350B2 (en) 2016-06-06 2020-05-12 International Business Machines Corporation Caching for unique combination reads in a dispersed storage network
US10735545B2 (en) 2016-06-06 2020-08-04 International Business Machines Corporation Routing vault access requests in a dispersed storage network
US10719499B2 (en) 2016-06-06 2020-07-21 INTERNATIONAL BUSINESS MACHINES CORPORATIOb Establishing distributed consensus via alternate voting strategies in a dispersed storage network
US10334045B2 (en) 2016-06-06 2019-06-25 International Business Machines Corporation Indicating multiple encoding schemes in a dispersed storage network
US10007438B2 (en) 2016-06-25 2018-06-26 International Business Machines Corporation Method and system for achieving consensus using alternate voting strategies (AVS) with incomplete information
US10564852B2 (en) 2016-06-25 2020-02-18 International Business Machines Corporation Method and system for reducing memory device input/output operations
US10235085B2 (en) 2016-06-27 2019-03-19 International Business Machines Corporation Relocating storage unit data in response to detecting hotspots in a dispersed storage network
US11115469B2 (en) 2016-06-28 2021-09-07 International Business Machines Corporation Efficient updates within a dispersed storage network
US10157021B2 (en) 2016-06-29 2018-12-18 International Business Machines Corporation Processing incomplete data access transactions
US10025505B2 (en) 2016-06-29 2018-07-17 International Business Machines Corporation Accessing data in a dispersed storage network during write operations
US10387286B2 (en) 2016-06-30 2019-08-20 International Business Machines Corporation Managing configuration updates in a dispersed storage network
US9934092B2 (en) 2016-07-12 2018-04-03 International Business Machines Corporation Manipulating a distributed agreement protocol to identify a desired set of storage units
US10417094B1 (en) 2016-07-13 2019-09-17 Peer Fusion, Inc. Hyper storage cluster
US10114696B2 (en) 2016-07-14 2018-10-30 International Business Machines Corporation Tracking data access in a dispersed storage network
US10534666B2 (en) 2016-07-14 2020-01-14 International Business Machines Corporation Determining storage requirements based on licensing right in a dispersed storage network
US10102067B2 (en) 2016-07-14 2018-10-16 International Business Machines Corporation Performing a desired manipulation of an encoded data slice based on a metadata restriction and a storage operational condition
US9992063B2 (en) 2016-07-18 2018-06-05 International Business Machines Corporation Utilizing reallocation via a decentralized, or distributed, agreement protocol (DAP) for storage unit (SU) replacement
US10360103B2 (en) 2016-07-18 2019-07-23 International Business Machines Corporation Focused storage pool expansion to prevent a performance degradation
US10277490B2 (en) 2016-07-19 2019-04-30 International Business Machines Corporation Monitoring inter-site bandwidth for rebuilding
US10769015B2 (en) 2016-07-19 2020-09-08 International Business Machines Corporation Throttling access requests at different layers of a DSN memory
US10554752B2 (en) 2016-07-20 2020-02-04 International Business Machines Corporation Efficient transfer of encoded data slice sets to new or alternate storage units
US10459796B2 (en) 2016-07-20 2019-10-29 International Business Machines Corporation Prioritizing rebuilding based on a longevity estimate of the rebuilt slice
US10031809B2 (en) 2016-07-20 2018-07-24 International Business Machines Corporation Efficient method for rebuilding a set of encoded data slices
US10127112B2 (en) 2016-07-20 2018-11-13 International Business Machines Corporation Assigning prioritized rebuild resources optimally
US10379744B2 (en) 2016-07-21 2019-08-13 International Business Machines Corporation System for collecting end-user feedback and usability metrics
US10416930B2 (en) 2016-07-21 2019-09-17 International Business Machines Corporation Global access permit listing
US10459790B2 (en) 2016-07-26 2019-10-29 International Business Machines Corporation Elastic storage in a dispersed storage network
US10395043B2 (en) 2016-07-29 2019-08-27 International Business Machines Corporation Securely storing data in an elastically scalable dispersed storage network
US10031805B2 (en) 2016-08-09 2018-07-24 International Business Machines Corporation Assigning slices to storage locations based on a predicted lifespan
US10223036B2 (en) 2016-08-10 2019-03-05 International Business Machines Corporation Expanding a dispersed storage network (DSN)
US10129023B2 (en) 2016-08-11 2018-11-13 International Business Machines Corporation Enhancing security for multiple storage configurations
US10114559B2 (en) * 2016-08-12 2018-10-30 International Business Machines Corporation Generating node access information for a transaction accessing nodes of a data set index
US10348829B2 (en) 2016-08-15 2019-07-09 International Business Machines Corporation Auto indexing with customizable metadata
US10013309B2 (en) 2016-08-17 2018-07-03 International Business Machines Corporation Missing slice reconstruction in a dispersed storage network
US10078468B2 (en) 2016-08-18 2018-09-18 International Business Machines Corporation Slice migration in a dispersed storage network
US10379778B2 (en) 2016-08-18 2019-08-13 International Business Machines Corporation Using a master encryption key to sanitize a dispersed storage network memory
US10389683B2 (en) 2016-08-26 2019-08-20 International Business Machines Corporation Securing storage units in a dispersed storage network
US10379773B2 (en) 2016-08-29 2019-08-13 International Business Machines Corporation Storage unit for use in a dispersed storage network
US10581807B2 (en) 2016-08-29 2020-03-03 International Business Machines Corporation Using dispersal techniques to securely store cryptographic resources and respond to attacks
CN106254833B (zh) * 2016-08-30 2020-01-14 浙江宇视科技有限公司 一种分布式文件的下载方法及装置
US10061524B2 (en) 2016-09-01 2018-08-28 International Business Machines Corporation Wear-leveling of memory devices
US10169149B2 (en) 2016-09-06 2019-01-01 International Business Machines Corporation Standard and non-standard dispersed storage network data access
US10225271B2 (en) 2016-09-09 2019-03-05 International Business Machines Corporation Distributed storage network with enhanced security monitoring
US10387079B2 (en) 2016-09-09 2019-08-20 International Business Machines Corporation Placement of dispersed storage data based on requestor properties
US10547615B2 (en) * 2016-09-12 2020-01-28 International Business Machines Corporation Security response protocol based on security alert encoded data slices of a distributed storage network
US10558396B2 (en) 2016-09-14 2020-02-11 International Business Machines Corporation Pre-caching data according to a current or predicted requester location
US10558389B2 (en) 2016-09-20 2020-02-11 International Business Machines Corporation Per-storage class quality of service (QoS) management within a distributed storage network (DSN) where the DSN stores data using dispersed storage error decoding/encoding
US10067822B2 (en) 2016-09-26 2018-09-04 International Business Machines Corporation Combined slice objects in alternate memory locations
US10362092B1 (en) 2016-10-14 2019-07-23 Nutanix, Inc. Entity management in distributed systems
US10956393B2 (en) * 2016-10-20 2021-03-23 Hitachi, Ltd. Data storage system and process for providing distributed storage in a scalable cluster system and computer program for such data storage system
US10448062B2 (en) 2016-10-26 2019-10-15 International Business Machines Corporation Pre-fetching media content to reduce peak loads
US10394630B2 (en) 2016-10-26 2019-08-27 International Business Machines Corporation Estimating relative data importance in a dispersed storage network
US10585751B2 (en) 2016-10-27 2020-03-10 International Business Machines Corporation Partial rebuild operation within a dispersed storage network including local memory and cloud-based alternative memory
US10412198B1 (en) 2016-10-27 2019-09-10 F5 Networks, Inc. Methods for improved transmission control protocol (TCP) performance visibility and devices thereof
US10481977B2 (en) 2016-10-27 2019-11-19 International Business Machines Corporation Dispersed storage of error encoded data objects having multiple resolutions
US11169731B2 (en) * 2016-10-31 2021-11-09 International Business Machines Corporation Managing storage resources in a dispersed storage network
US10540247B2 (en) 2016-11-10 2020-01-21 International Business Machines Corporation Handling degraded conditions using a redirect module
US10585607B2 (en) 2016-11-10 2020-03-10 International Business Machines Corporation Determining an optimum selection of functions for units in a DSN memory
US11003658B2 (en) * 2016-11-21 2021-05-11 International Business Machines Corporation Selectively retrieving data from remote share nothing computer clusters
US10409495B1 (en) * 2016-12-29 2019-09-10 EMC IP Holding Company LLC Data optimization decision control based on file system metadata
US10114698B2 (en) 2017-01-05 2018-10-30 International Business Machines Corporation Detecting and responding to data loss events in a dispersed storage network
US10782921B2 (en) 2017-01-25 2020-09-22 International Business Machines Corporation Non-writing device finalization of a write operation initiated by another device
US10180787B2 (en) 2017-02-09 2019-01-15 International Business Machines Corporation Dispersed storage write process with lock/persist
US10530864B2 (en) * 2017-02-15 2020-01-07 Dell Products, L.P. Load balancing internet-of-things (IOT) gateways
US10241865B2 (en) 2017-02-15 2019-03-26 International Business Machines Corporation Handling storage unit failure in a dispersed storage network
US10579309B2 (en) 2017-02-16 2020-03-03 International Business Machines Corporation Method for increasing throughput in a distributed storage network
US10552341B2 (en) 2017-02-17 2020-02-04 International Business Machines Corporation Zone storage—quickly returning to a state of consistency following an unexpected event
US10248495B2 (en) 2017-02-17 2019-04-02 International Business Machines Corporation Eventual consistency intent cleanup in a dispersed storage network
US10382553B2 (en) 2017-02-20 2019-08-13 International Business Machines Corporation Zone storage—resilient and efficient storage transactions
US10394468B2 (en) 2017-02-23 2019-08-27 International Business Machines Corporation Handling data slice revisions in a dispersed storage network
US10241677B2 (en) 2017-02-24 2019-03-26 International Business Machines Corporation Ensuring consistency between content and metadata with intents
US9998147B1 (en) 2017-02-27 2018-06-12 International Business Machines Corporation Method for using write intents in a distributed storage network
US10642532B2 (en) 2017-02-28 2020-05-05 International Business Machines Corporation Storing data sequentially in zones in a dispersed storage network
US10372380B2 (en) 2017-03-01 2019-08-06 International Business Machines Corporation Asserting integrity with a verifiable codec
US10169392B2 (en) 2017-03-08 2019-01-01 International Business Machines Corporation Persistent data structures on a dispersed storage network memory
US11226980B2 (en) 2017-03-13 2022-01-18 International Business Machines Corporation Replicating containers in object storage using intents
US10235241B2 (en) 2017-03-15 2019-03-19 International Business Machines Corporation Method for partial updating data content in a distributed storage network
US10693640B2 (en) 2017-03-17 2020-06-23 International Business Machines Corporation Use of key metadata during write and read operations in a dispersed storage network memory
US10241861B2 (en) 2017-03-23 2019-03-26 International Business Machines Corporation Method for tenant isolation in a distributed computing system
US10133634B2 (en) 2017-03-30 2018-11-20 International Business Machines Corporation Method for performing in-place disk format changes in a distributed storage network
US10360391B2 (en) 2017-04-03 2019-07-23 International Business Machines Corporation Verifiable keyed all-or-nothing transform
US10545699B2 (en) 2017-04-11 2020-01-28 International Business Machines Corporation Dynamic retention policies and optional deletes
US10379961B2 (en) 2017-04-11 2019-08-13 International Business Machines Corporation Ensuring metadata and index consistency using write intents
US10489381B2 (en) * 2017-04-13 2019-11-26 Sap Se Adaptive metadata refreshing
US10146694B1 (en) * 2017-04-28 2018-12-04 EMC IP Holding Company LLC Persistent cache layer in a distributed file system
US10545913B1 (en) * 2017-04-30 2020-01-28 EMC IP Holding Company LLC Data storage system with on-demand recovery of file import metadata during file system migration
US10567492B1 (en) 2017-05-11 2020-02-18 F5 Networks, Inc. Methods for load balancing in a federated identity environment and devices thereof
US10567509B2 (en) 2017-05-15 2020-02-18 International Business Machines Corporation Rebuilding derived content
US10540323B2 (en) 2017-05-30 2020-01-21 Western Digital Technologies, Inc. Managing I/O operations in a storage network
US10491386B2 (en) 2017-06-01 2019-11-26 International Business Machines Corporation Slice-level keyed encryption with support for efficient rekeying
US10339003B2 (en) 2017-06-01 2019-07-02 International Business Machines Corporation Processing data access transactions in a dispersed storage network using source revision indicators
US10467097B2 (en) 2017-06-02 2019-11-05 International Business Machines Corporation Indicating data health in a DSN memory
US10372381B2 (en) 2017-06-05 2019-08-06 International Business Machines Corporation Implicit leader election in a distributed storage network
US10361813B2 (en) 2017-06-16 2019-07-23 International Business Machine Corporation Using slice routers for improved storage placement determination
KR102170160B1 (ko) * 2017-06-16 2020-10-28 한국전자통신연구원 Opc-ua 기반의 단방향 데이터 송신 장치 및 방법
US10534548B2 (en) 2017-06-20 2020-01-14 International Business Machines Corporation Validating restricted operations on a client using trusted environments
US10324855B2 (en) 2017-06-23 2019-06-18 International Business Machines Corporation Associating a processing thread and memory section to a memory device
US10594790B2 (en) 2017-06-28 2020-03-17 International Business Machines Corporation Data compression in a dispersed storage network
US10540111B2 (en) 2017-06-28 2020-01-21 International Business Machines Corporation Managing data container instances in a dispersed storage network
US10489693B2 (en) 2017-08-03 2019-11-26 Motorola Solutions, Inc. Method and apparatus for distributed edge learning
US10599502B2 (en) 2017-08-07 2020-03-24 International Business Machines Corporation Fault detection and recovery in a distributed storage network
US10509699B2 (en) 2017-08-07 2019-12-17 International Business Machines Corporation Zone aware request scheduling and data placement
US10783052B2 (en) 2017-08-17 2020-09-22 Bank Of America Corporation Data processing system with machine learning engine to provide dynamic data transmission control functions
US10671746B2 (en) 2017-08-28 2020-06-02 International Business Machines Corporation Controlling access when processing intents in a dispersed storage network
US10379942B2 (en) 2017-09-27 2019-08-13 International Business Machines Corporation Efficient transfer of objects between containers on the same vault
US10802713B2 (en) 2017-09-29 2020-10-13 International Business Machines Corporation Requester-associated storage entity data
US10409661B2 (en) 2017-09-29 2019-09-10 International Business Machines Corporation Slice metadata for optimized dispersed storage network memory storage strategies
US10585748B2 (en) 2017-09-29 2020-03-10 International Business Machines Corporation Scalable cloud—assigning scores to requesters and treating requests differently based on those scores
US10361859B2 (en) 2017-10-06 2019-07-23 Stealthpath, Inc. Methods for internet communication security
US10374803B2 (en) 2017-10-06 2019-08-06 Stealthpath, Inc. Methods for internet communication security
US10367811B2 (en) * 2017-10-06 2019-07-30 Stealthpath, Inc. Methods for internet communication security
US10540120B2 (en) 2017-11-14 2020-01-21 International Business Machines Corporation Contention avoidance on associative commutative updates
US10423497B2 (en) 2017-11-28 2019-09-24 International Business Machines Corporation Mechanism for representing system configuration changes as a series of objects writable to an object storage container
US10565392B2 (en) 2017-11-28 2020-02-18 International Business Machines Corporation Secure and verifiable update operations
US10884671B2 (en) * 2017-11-29 2021-01-05 International Business Machines Corporation Cognitive optimization of a multi-part object
US10785194B2 (en) 2017-12-07 2020-09-22 International Business Machines Corporation Processing intents using trusted entities in a dispersed storage network
US10681135B2 (en) 2017-12-08 2020-06-09 International Business Machines Corporation Generating slices from a broadcast message and a recipient identity
CN109960460B (zh) * 2017-12-25 2022-02-25 上海盛霄云计算技术有限公司 一种分布式存储系统
US11223689B1 (en) 2018-01-05 2022-01-11 F5 Networks, Inc. Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof
WO2019162728A1 (en) * 2018-02-25 2019-08-29 Pratik Sharma Intelligent content delivery network
US10833943B1 (en) 2018-03-01 2020-11-10 F5 Networks, Inc. Methods for service chaining and devices thereof
US11412041B2 (en) 2018-06-25 2022-08-09 International Business Machines Corporation Automatic intervention of global coordinator
CN110740353B (zh) * 2018-07-20 2021-07-09 阿里巴巴(中国)有限公司 请求识别方法及装置
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US10951395B2 (en) * 2018-08-20 2021-03-16 Fujitsu Limited Data fetching in data exchange networks
CN109165212A (zh) * 2018-08-31 2019-01-08 浪潮软件集团有限公司 一种大数据实时监控与稽核的方法
US11050637B2 (en) 2018-09-26 2021-06-29 International Business Machines Corporation Resource lifecycle optimization in disaggregated data centers
US10831580B2 (en) * 2018-09-26 2020-11-10 International Business Machines Corporation Diagnostic health checking and replacement of resources in disaggregated data centers
US10754720B2 (en) 2018-09-26 2020-08-25 International Business Machines Corporation Health check diagnostics of resources by instantiating workloads in disaggregated data centers
US10761915B2 (en) 2018-09-26 2020-09-01 International Business Machines Corporation Preemptive deep diagnostics and health checking of resources in disaggregated data centers
US10838803B2 (en) 2018-09-26 2020-11-17 International Business Machines Corporation Resource provisioning and replacement according to a resource failure analysis in disaggregated data centers
US11188408B2 (en) 2018-09-26 2021-11-30 International Business Machines Corporation Preemptive resource replacement according to failure pattern analysis in disaggregated data centers
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US10936452B2 (en) 2018-11-14 2021-03-02 International Business Machines Corporation Dispersed storage network failover units used to improve local reliability
EP3918484A4 (de) 2019-01-29 2023-03-29 Cloud Storage, Inc. Codierungs- und speicherknotenreparaturverfahren für minimumspeicherregenerierungscodes für verteilte speichersysteme
US11245750B2 (en) * 2019-02-16 2022-02-08 International Business Machines Corporation File server load balancing
US10754559B1 (en) * 2019-03-08 2020-08-25 EMC IP Holding Company LLC Active-active storage clustering with clock synchronization
US10846194B1 (en) * 2019-05-02 2020-11-24 More Cowbell Unlimited, Inc Methods and systems for estimating process capacity
US11288396B2 (en) 2019-06-18 2022-03-29 International Business Machines Corporation Data security through physical separation of data
US20210019285A1 (en) * 2019-07-16 2021-01-21 Citrix Systems, Inc. File download using deduplication techniques
US11388467B1 (en) * 2019-07-17 2022-07-12 Walgreen Co. Media content distribution platform
US11558423B2 (en) 2019-09-27 2023-01-17 Stealthpath, Inc. Methods for zero trust security with high quality of service
US11514097B2 (en) * 2019-09-30 2022-11-29 Dell Products L.P. System and method for update of data and meta data via an enumerator
CN110636144A (zh) * 2019-11-07 2019-12-31 腾讯科技(深圳)有限公司 数据下载的方法和装置
FR3103299B1 (fr) 2019-11-20 2023-04-28 Amadeus Sas Système informatique distribué pour délivrer des données
CN111026751B (zh) * 2019-11-22 2024-02-09 北京金山云网络技术有限公司 分布式表格的处理方法、装置、系统及电子设备
CN113127414B (zh) * 2019-12-31 2023-05-23 贵州白山云科技股份有限公司 一种请求处理方法和系统及边缘节点
WO2021171240A1 (en) * 2020-02-26 2021-09-02 Tafur Castillo Alvaro Bernardo Method and system for storing and accessing content
US11593026B2 (en) 2020-03-06 2023-02-28 International Business Machines Corporation Zone storage optimization using predictive protocol patterns
US10970066B1 (en) * 2020-04-08 2021-04-06 International Business Machines Corporation Duplicate code section detection for source code
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
CN113726832B (zh) * 2020-05-26 2024-03-05 杭州海康存储科技有限公司 分布式存储系统的数据存储方法、装置、系统及设备
CN113625264A (zh) * 2021-06-16 2021-11-09 中国铁道科学研究院集团有限公司铁道建筑研究所 一种并行处理铁路检测大数据的方法及系统
WO2023069068A1 (en) * 2021-10-18 2023-04-27 Jason Kim Gui based methods and systems for working with large numbers of interactive items

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ504100A0 (en) * 2000-01-11 2000-02-03 Notron (No. 325) Pty Limited A method for distribution of streamed data packets on a switched network utilising an intelligent distribution network
US4466060A (en) 1982-02-11 1984-08-14 At&T Bell Telephone Laboratories, Incorporated Message routing in a computer network
US4914571A (en) * 1987-06-15 1990-04-03 International Business Machines Corporation Locating resources in computer networks
CA1337132C (en) * 1988-07-15 1995-09-26 Robert Filepp Reception system for an interactive computer network and method of operation
US5079767A (en) 1988-09-27 1992-01-07 Digital Equipment Corporation Method of multicast message distribution
US5367698A (en) 1991-10-31 1994-11-22 Epoch Systems, Inc. Network file migration system
GB2272310A (en) * 1992-11-07 1994-05-11 Ibm Method of operating a computer in a network.
US5903566A (en) 1994-06-24 1999-05-11 Metricom, Inc. Method for distributing program code to intelligent nodes in a wireless mesh data communication network
JPH08329021A (ja) 1995-03-30 1996-12-13 Mitsubishi Electric Corp クライアントサーバシステム
US6003030A (en) * 1995-06-07 1999-12-14 Intervu, Inc. System and method for optimized storage and retrieval of data on a distributed computer network
US5926101A (en) 1995-11-16 1999-07-20 Philips Electronics North America Corporation Method and apparatus for routing messages in a network of nodes with minimal resources
IL115263A (en) * 1995-09-12 1999-04-11 Vocaltec Ltd System and method for distributing multi-media presentations in a computer network
JP3741767B2 (ja) * 1996-02-26 2006-02-01 富士通株式会社 光ファイバ増幅器
US5872773A (en) * 1996-05-17 1999-02-16 Lucent Technologies Inc. Virtual trees routing protocol for an ATM-based mobile network
US5812773A (en) * 1996-07-12 1998-09-22 Microsoft Corporation System and method for the distribution of hierarchically structured data
US5924094A (en) * 1996-11-01 1999-07-13 Current Network Technologies Corporation Independent distributed database system
KR100194608B1 (ko) * 1996-11-20 1999-06-15 이계철 Atm 통신망에서의 멀티캐스트 경로 할당방법
US5924116A (en) * 1997-04-02 1999-07-13 International Business Machines Corporation Collaborative caching of a requested object by a lower level node as a function of the caching status of the object at a higher level node
US5991804A (en) * 1997-06-20 1999-11-23 Microsoft Corporation Continuous media file server for cold restriping following capacity change by repositioning data blocks in the multiple data servers
US6014701A (en) * 1997-07-03 2000-01-11 Microsoft Corporation Selecting a cost-effective bandwidth for transmitting information to an end user in a computer network
US6038601A (en) * 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
US6101534A (en) * 1997-09-03 2000-08-08 Rothschild; Leigh M. Interactive, remote, computer interface system
US6105029A (en) * 1997-09-17 2000-08-15 International Business Machines Corporation Retrieving network files through parallel channels
US7447712B2 (en) * 1997-09-28 2008-11-04 Global 360, Inc. Structured workfolder
US6081840A (en) * 1997-10-14 2000-06-27 Zhao; Yan Two-level content distribution system
US6145089A (en) * 1997-11-10 2000-11-07 Legato Systems, Inc. Server fail-over system
US6415373B1 (en) * 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6374336B1 (en) * 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6460087B1 (en) * 1998-02-25 2002-10-01 Kdd Corporation Method of transferring file
US6212240B1 (en) * 1998-06-24 2001-04-03 Motorola, Inc. Method and apparatus for conveying data between communication devices
US20010052015A1 (en) 1998-06-24 2001-12-13 Chueng-Hsien Lin Push-pull sevices for the internet
US6370146B1 (en) 1998-06-29 2002-04-09 Lucent Technologies Inc. Method and apparatus for non-disruptive addition of a new node to an inter-nodal network
US6515967B1 (en) 1998-06-30 2003-02-04 Cisco Technology, Inc. Method and apparatus for detecting a fault in a multicast routing infrastructure
US6108703A (en) 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US20020138640A1 (en) 1998-07-22 2002-09-26 Uri Raz Apparatus and method for improving the delivery of software applications and associated data in web-based systems
US6222530B1 (en) 1998-08-21 2001-04-24 Corporate Media Partners System and method for a master scheduler
US6363416B1 (en) 1998-08-28 2002-03-26 3Com Corporation System and method for automatic election of a representative node within a communications network with built-in redundancy
US6765868B1 (en) * 1998-09-22 2004-07-20 International Business Machines Corp. System and method for large file transfers in packet networks
US6691165B1 (en) * 1998-11-10 2004-02-10 Rainfinity, Inc. Distributed server cluster for controlling network traffic
US6427212B1 (en) * 1998-11-13 2002-07-30 Tricord Systems, Inc. Data fault tolerance software apparatus and method
US6498795B1 (en) * 1998-11-18 2002-12-24 Nec Usa Inc. Method and apparatus for active information discovery and retrieval
US6356903B1 (en) * 1998-12-30 2002-03-12 American Management Systems, Inc. Content management system
US6691312B1 (en) * 1999-03-19 2004-02-10 University Of Massachusetts Multicasting video
US6535869B1 (en) * 1999-03-23 2003-03-18 International Business Machines Corporation Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
US6269080B1 (en) * 1999-04-13 2001-07-31 Glenayre Electronics, Inc. Method of multicast file distribution and synchronization
US6523064B1 (en) * 1999-04-29 2003-02-18 Mitsubishi Electric Research Laboratories, Inc Network gateway for collecting geographic data information
JP3429707B2 (ja) * 1999-06-30 2003-07-22 株式会社次世代情報放送システム研究所 送信装置および送信方法、受信装置および受信方法、ならびに、送受信システムおよび送受信方法
US6647408B1 (en) * 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6718486B1 (en) 2000-01-26 2004-04-06 David E. Lovejoy Fault monitor for restarting failed instances of the fault monitor
US6560610B1 (en) * 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database
US6842896B1 (en) * 1999-09-03 2005-01-11 Rainbow Technologies, Inc. System and method for selecting a server in a multiple server license management system
US6785704B1 (en) * 1999-12-20 2004-08-31 Fastforward Networks Content distribution system for operation over an internetwork including content peering arrangements
JP3463803B2 (ja) 1999-11-09 2003-11-05 松下電器産業株式会社 クラスタサーバ装置
US6772337B1 (en) 1999-11-09 2004-08-03 Lucent Technologies Inc. Light weight security for parallel access to multiple mirror sites
WO2001040903A2 (en) 1999-12-06 2001-06-07 Warp Solutions, Inc. System and method for enhancing operation of a web server cluster
US6460039B1 (en) * 1999-12-09 2002-10-01 International Business Machines Corporation Middleware support for primary component in a partitionable cluster environment
US6708217B1 (en) * 2000-01-05 2004-03-16 International Business Machines Corporation Method and system for receiving and demultiplexing multi-modal document content
US6629110B2 (en) * 2000-01-10 2003-09-30 Connected Corporation Administration of a differential backup system in a client-server environment
US6587866B1 (en) * 2000-01-10 2003-07-01 Sun Microsystems, Inc. Method for distributing packets to server nodes using network client affinity and packet distribution table
US6711607B1 (en) 2000-02-04 2004-03-23 Ensim Corporation Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service
US6456599B1 (en) * 2000-02-07 2002-09-24 Verizon Corporate Services Group Inc. Distribution of potential neighbor information through an ad hoc network
US6931397B1 (en) * 2000-02-11 2005-08-16 International Business Machines Corporation System and method for automatic generation of dynamic search abstracts contain metadata by crawler
US6845396B1 (en) * 2000-02-25 2005-01-18 Navic Systems, Inc. Method and system for content deployment and activation
US6763377B1 (en) * 2000-03-03 2004-07-13 International Business Machines Corporation Asset management and scheduling graphical user interface for media streamer
US6523069B1 (en) * 2000-03-13 2003-02-18 Yahoo! Inc. Transmission of multicast media between networks
US6772209B1 (en) * 2000-04-06 2004-08-03 International Business Machines Corporation Efficient method for rule-based distribution and management of content in a distributed hierarchy of storage devices
US6993587B1 (en) * 2000-04-07 2006-01-31 Network Appliance Inc. Method and apparatus for election of group leaders in a distributed network
US6718361B1 (en) * 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
US6748447B1 (en) * 2000-04-07 2004-06-08 Network Appliance, Inc. Method and apparatus for scalable distribution of information in a distributed network
US6922724B1 (en) * 2000-05-08 2005-07-26 Citrix Systems, Inc. Method and apparatus for managing server load
DE10025929B4 (de) * 2000-05-26 2006-02-16 Harman Becker Automotive Systems (Becker Division) Gmbh Verfahren zum Übertragen von Daten
US6826564B2 (en) * 2000-07-10 2004-11-30 Fastforward Networks Scalable and programmable query distribution and collection in a network of queryable devices
US6772217B1 (en) * 2000-08-23 2004-08-03 International Business Machines Corporation Internet backbone bandwidth enhancement by initiating an additional data stream when individual bandwidth are approximately equal to the backbone limit
US6804719B1 (en) * 2000-08-24 2004-10-12 Microsoft Corporation Method and system for relocating files that are partially stored in remote storage
US20020040479A1 (en) 2000-10-04 2002-04-04 Eric Ehrman Method and apparatus for streaming content via a network
AU2002224448A1 (en) 2000-10-26 2002-05-06 Prismedia Networks, Inc. Method and apparatus for large payload distribution in a network
WO2002039323A2 (en) 2000-10-26 2002-05-16 Prismedia Networks, Inc. Method and apparatus for real-time parallel delivery of segments of a large payload file
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network

Also Published As

Publication number Publication date
WO2002035359A3 (en) 2003-09-18
EP1364510A2 (de) 2003-11-26
ATE381191T1 (de) 2007-12-15
HK1058279A1 (en) 2004-05-07
EP1364510B1 (de) 2007-12-12
DE60131900D1 (de) 2008-01-24
AU2002214659A1 (en) 2002-05-06
US7272613B2 (en) 2007-09-18
WO2002035359A2 (en) 2002-05-02
US20020133491A1 (en) 2002-09-19

Similar Documents

Publication Publication Date Title
DE60131900T2 (de) Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten
EP1892921B1 (de) Verfahren und System zur Verwaltung verteilter Inhalte und damit zusammenhängender Metadaten
DE60111072T2 (de) Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten
US10929435B2 (en) Content delivery network analytics management via edge stage collectors
DE69635047T2 (de) Vernetzte server mit kundenspezifischen diensten zum herunterladen von videos
DE60122691T2 (de) Verfahren und vorrichtung zum verteilten cachen
DE60317925T2 (de) Steuerung von netzwerkverkehr in einer peer-to-peer umgebung
DE69909839T2 (de) Optimierte Lokalisierung von Netzwerkbetriebsmittel
DE112005003035B4 (de) Teilen einer Arbeitslast eines Knotens
DE60317403T2 (de) Mehrstufige Cache-Speicherarchitektur und Cache-Speicherverwaltungsverfahren für gleichrangiges Namensauflösungs-Protokoll
DE69907631T2 (de) Netzzugang zu inhaltsadressierbaren daten
DE202014010898U1 (de) Hierarchische Stückelung von Objekten in einem dezentralen Speichersystem
WO2002035799A2 (en) Method and apparatus for large payload distribution in a network
DE60204031T2 (de) Hierarchische cachespeicherung in telekommunikationsnetzen
DE202023102700U1 (de) Datenaufnahmereplizierung und Notfallwiederherstellung
EP1524608B1 (de) Kommunikationssystem zur Verwaltung und Bereitstellung von Daten
DE112020004493T5 (de) Zwischenspeicherfähigkeit von single-page-anwendungen
CH717605B1 (de) Verfahren und Vorrichtung zur Übertragung von Mediadateien von zumindest einer zentralen Servervorrichtung auf eine Mehrzahl von Empfangsgeräten über ein digitales Netzwerk.

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: FLOOD, JAMES C. JUN., PORTLAND, OREG., US

Owner name: HUANG, TSAN-FUNG, SAN MARINO, CALIF., US

Owner name: INTEL CORPORATION, SANTA CLARA, CALIF., US

Owner name: ISAACSON, TRYGVE, SAN LORENZO, CALIF., US

Owner name: ORZEN, MATTHEW, SAN FRANCISCO, CALIF., US

8381 Inventor (new situation)

Inventor name: HUANG, TSAN-FUNG, SAN MARINO, CA 91108, US

Inventor name: ISAACSON, TRYGVE, SAN LORENZO, CA 94580, US

Inventor name: FLOOD, JAMES C. JR., PORTLAND, OR 97225, US

Inventor name: ORZEN, MATTHEW, SAN FRANCISCO, CA 94131, US

Inventor name: SIM, SIEW YOUNG, CUPERTINO, CA 95014, US

Inventor name: CHAN, DESMOND CHO-HUNG, MOUNTAIN VIEW, CA 9404, US

Inventor name: CHAI, WENCHENG, SAN JOSE, CA 95129, US

Inventor name: MILLS, GEORGE HARLOW, PALO ALTO, CA 94580, US

8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806