DE102012221813A1 - METHOD FOR OPTIMIZING THE MEMORY ASSIGNMENT IN A VIRTUAL WORKPLACE ENVIRONMENT - Google Patents

METHOD FOR OPTIMIZING THE MEMORY ASSIGNMENT IN A VIRTUAL WORKPLACE ENVIRONMENT Download PDF

Info

Publication number
DE102012221813A1
DE102012221813A1 DE102012221813A DE102012221813A DE102012221813A1 DE 102012221813 A1 DE102012221813 A1 DE 102012221813A1 DE 102012221813 A DE102012221813 A DE 102012221813A DE 102012221813 A DE102012221813 A DE 102012221813A DE 102012221813 A1 DE102012221813 A1 DE 102012221813A1
Authority
DE
Germany
Prior art keywords
file
virtual
user
identifier
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102012221813A
Other languages
German (de)
Inventor
Randa Salem
Pietro Iannucci
Cristiana D'Amore
Luigi Pichetti
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102012221813A1 publication Critical patent/DE102012221813A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Verfahren, Rechnersystem und Programmprodukt zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung, wobei die virtuelle Arbeitsplatzumgebung eine gemeinschaftlich genutzte Speicherkapazität verwaltet. Die gemeinschaftlich genutzte Speicherkapazität enthält eine oder mehrere zuvor gespeicherte Dateien, wobei jede gespeicherte Datei einer jeweiligen eindeutigen ersten Dateikennung zugeordnet wird, wobei die virtuelle Arbeitsplatzumgebung einer Verarbeitungseinheit eines Benutzers mindestens einen virtuellen Arbeitsplatz bereitstellt. Das Verfahren weist nach dem Empfang einer ersten Schreibanforderung, eine in der Anforderung angegebene zweite Datei zu schreiben, die folgenden Schritte auf: Festlegen einer zweiten Dateikennung der angegebenen zweiten Datei; Vergleichen der zweiten Dateikennung mit der ersten Dateikennung einer beliebigen ersten Datei, die in der gemeinschaftlich genutzten Speicherkapazität gespeichert wird; wenn die zweite Dateikennung mit einer der ersten Dateikennungen identisch ist, Erzeugen eines Zeigers auf die gespeicherte erste Datei, die dieser ersten Dateikennung zugeordnet ist; und wenn die zweite Dateikennung nicht mit einer beliebigen der ersten Dateikennungen identisch ist, Speichern der angegebenen Datei, die der zweiten Dateikennung zugeordnet ist, in der gemeinschaftlich genutzten Speicherkapazität, wobei die zweite Dateikennung als eine weitere erste Dateikennung gespeichert wird und die zweite Datei als eine weitere erste Datei gespeichert wird, und Erzeugen des Zeigers auf die gespeicherte weitere erste Datei.A method, computer system, and program product for optimizing memory allocation in a virtual desktop environment, wherein the virtual desktop environment manages a shared memory capacity. The shared storage capacity includes one or more previously stored files, each stored file being associated with a respective unique first file identifier, wherein the virtual desktop environment provides a user's processing unit with at least one virtual workstation. The method, after receiving a first write request to write a second file specified in the request, comprises the steps of: setting a second file identifier of the specified second file; Comparing the second file identifier with the first file identifier of any first file stored in the shared memory capacity; if the second file identifier is identical to one of the first file identifiers, generating a pointer to the stored first file associated with that first file identifier; and if the second file identifier is not identical to any of the first file identifiers, storing the specified file associated with the second file identifier in the shared memory capacity, the second file identifier being stored as another first file identifier and the second file being stored as a first file identifier another first file is stored, and generating the pointer to the stored further first file.

Description

Gebiet der ErfindungField of the invention

Die Erfindung betrifft Systeme in einer virtuellen Umgebung und insbesondere ein Verfahren zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung.The invention relates to systems in a virtual environment, and more particularly to a method for optimizing memory allocation in a virtual workspace environment.

Hintergrundbackground

Die Virtualisierung von Rechnern entwickelt sich für Unternehmen unterschiedlicher Größe zu einer der bedeutenderen Technologien. Sie erhöht die Rechenleistung und die Flexibilität einer der Datenverarbeitung dienenden Hardware-Plattform. Insbesondere die Nutzung der Speichervirtualisierung in einer virtuellen Arbeitsplatzumgebung wird ebenfalls ein entscheidender Teil der betrieblichen Informationsverarbeitung in diesen Unternehmen.Virtualization of computers is becoming one of the more important technologies for companies of different sizes. It increases the computing power and flexibility of a data processing hardware platform. In particular, the use of storage virtualization in a virtual workplace environment is also becoming a critical part of enterprise information processing in these companies.

In einer virtuellen Arbeitsplatzumgebung ist das lokale Dateisystem, das jedem Arbeitsplatz zugewiesen wird, ein Bereich des fest zugeordneten virtualisierten Speichers, der einem physischen Speicherpool entnommen wird. Jedes Mal, wenn ein Benutzer eine Datei in seinem Dateisystem speichert, wird eine Kopie dieser Datei in dem fest zugeordneten Bereich des physischen Speichers für diesen Arbeitsplatz gespeichert. In dem Fall, in dem mehrere Benutzer eines virtuellen Arbeitsplatzes, die zu demselben Geschäftskontext gehören, dieselbe Datei in ihrem Dateisystem speichern, hat dies zur Folge, dass wahrscheinlich mehrere Kopien derselben Datei in dem gemeinsamen physischen Speicher abgelegt werden. Diese Redundanz führt zu einer unnötigen Belegung von zusätzlichem Speicherplatz, wodurch es notwendig wird, größere Speicherdatenträger als tatsächlich benötigt zu erwerben.In a virtual workplace environment, the local file system assigned to each workstation is an area of dedicated virtualized storage taken from a physical storage pool. Each time a user saves a file to his file system, a copy of that file is stored in the dedicated area of physical memory for that workstation. In the case where multiple users of a virtual workstation belonging to the same business context store the same file in their file system, this will likely result in multiple copies of the same file being stored in the shared physical memory. This redundancy leads to an unnecessary allocation of additional storage space, which makes it necessary to purchase larger storage volumes than actually needed.

Ein weiteres Problem im Zusammenhang mit der Nutzung von anderen Systemen nach dem Stand der Technik besteht darin, dass die Benutzer vorher festgelegte oder gemeinsam benutzte Verzeichnisbaumstrukturen verwenden müssen und ihre Dateien nicht an einem vom Benutzer angegebenen Speicherort speichern können. Die Benutzer der Systeme können auch die Verzeichnisstruktur der gemeinschaftlich genutzten Speicherdatenträger nicht verändern, da dies andere Benutzer verwirren würde, die davon ausgehen, dass ihre Dateien nach wie vor über den ursprünglichen Dateipfad zur Verfügung stehen.Another problem associated with the use of other prior art systems is that users need to use pre-determined or shared directory tree structures and can not store their files in a user-specified location. Users of the systems also can not change the directory structure of the shared storage volumes as this would confuse other users who assume that their files are still available through the original file path.

Kurzdarstellung der ErfindungBrief description of the invention

Eine Aufgabe von Ausführungsformen der Erfindung ist es, ein verbessertes, von einem Rechner durchgeführtes Verfahren, Datenverarbeitungssystem und ein entsprechendes rechnerlesbares Speichermedium bereitzustellen. Diese Aufgabe wird durch den Erfindungsgegenstand der unabhängigen Ansprüche gelöst. Vorteilhafte Ausführungsformen sind in den abhängigen Ansprüchen beschrieben.An object of embodiments of the invention is to provide an improved computer-implemented method, data processing system, and corresponding computer-readable storage medium. This object is achieved by the subject matter of the independent claims. Advantageous embodiments are described in the dependent claims.

In der hier verwendeten Weise bezeichnet der Begriff „virtueller Arbeitsplatz” eine virtuelle Maschine, die sich physisch in einem Datenspeicher befindet, der von einer virtuellen Arbeitsplatzumgebung verwaltet wird. Insbesondere kann der virtuelle Arbeitsplatz von der virtuellen Arbeitsplatzumgebung bereitgestellt werden, die auf einem Server statt auf dem lokalen Speicher eines Client ausgeführt wird. Wenn Benutzer von ihren lokalen Client-Maschinen aus arbeiten, werden folglich alle Programme, Anwendungen, Prozesse und Daten, die verwendet werden, gemäß Ausführungsformen auf dem Server abgelegt und zentral ausgeführt. Die Virtualisierung von Arbeitsplätzen ermöglicht Benutzern, Betriebssysteme und Anwendungen von einem Smartphone oder von einer beliebigen anderen Form eines Thin Client aus auszuführen, der über begrenzte Hardware-Ressourcen verfügt. Gemäß manchen anderen Anwendungen können die virtuellen Arbeitsplätze vorübergehend in die Arbeitsspeicher der Client-Einheiten geladen werden, während jedwede Änderung an den Daten nur in Speicherdatenträgern, die von dem Server verwaltet werden, bestehen bleibt.As used herein, the term "virtual workstation" refers to a virtual machine that is physically located in a data store maintained by a virtual desktop environment. In particular, the virtual workspace may be provided by the virtual workspace running on a server instead of on the client's local storage. Thus, as users operate from their local client machines, all programs, applications, processes and data that are used are stored on the server and executed centrally according to embodiments. Virtualization of workstations allows users to run operating systems and applications from a smartphone or any other form of thin client that has limited hardware resources. According to some other applications, the virtual workstations may be temporarily loaded into the workstations of the client devices, while any change to the data will persist only in storage volumes maintained by the server.

Der Begriff „rechnerlesbares Speichermedium” umfasst in der hier verwendeten Weise jedes physische Speichermedium, das Befehle speichern kann, die von einem Prozessor einer Datenverarbeitungseinheit ausgeführt werden können. Das rechnerlesbare Speichermedium kann als ein rechnerlesbares, übergangsloses Speichermedium bezeichnet werden. Das rechnerlesbare Speichermedium kann als ein physischer rechnerlesbarer Datenträger bezeichnet werden. In manchen Ausführungsformen ist ein rechnerlesbares Speichermedium gegebenenfalls auch in der Lage, Daten zu speichern, auf die der Prozessor der Datenverarbeitungseinheit zugreifen kann. Zu Beispielen für rechnerlesbare Speichermedien gehören, ohne darauf beschränkt zu sein: eine Diskette, ein Lochstreifen, Lochkarten, ein Magnet-Festplattenlaufwerk, ein Halbleiterlaufwerk, ein Flash-Speicher, ein USB-Speicherstick, ein Direktzugriffspeicher (Random Access Memory (RAM)), ein Nur-Lese-Speicher (Read Only Memory (ROM)), eine optische Platte, eine magnetooptische Platte und die Registerdatei des Prozessors. Zu Beispielen für optische Platten gehören Compact Disks (CD) und Digital Versatile Disks (DVD), zum Beispiel CD-ROM-, CD-RW-, CD-R-, DVD-ROM-, DVD-RW- oder DVD-R-Platten. Der Begriff „rechnerlesbares Speichermedium” bezeichnet auch verschiedene Arten von Aufzeichnungsmedien, auf die die Rechnereinheit über ein Netzwerk oder eine Übertragungsverbindung zugreifen kann. Beispielsweise können Daten über ein Modem, über das Internet oder über ein lokales Netzwerk abgerufen werden. Erwähnungen eines rechnerlesbaren Speichermediums sollten so verstanden werden, dass es möglichicherweise mehrere rechnerlesbare Speichermedien aufweist. Verschiedene ausführbare Bestandteile von einem Programm oder von Programmen können an verschiedenen Orten gespeichert werden. Das rechnerlesbare Speichermedium kann zum Beispiel mehrere rechnerlesbare Speichermedien in demselben Rechnersystem aufweisen. Das rechnerlesbare Speichermedium kann auch ein rechnerlesbares Speichermedium sein, das über mehrere Rechnersysteme oder Datenverarbeitungseinheiten verteilt ist.The term "computer-readable storage medium" as used herein includes any physical storage medium capable of storing instructions that may be executed by a processor of a computing device. The computer readable storage medium may be referred to as a computer readable, seamless storage medium. The computer readable storage medium may be referred to as a physical computer readable medium. In some embodiments, a computer-readable storage medium may also be capable of storing data that the processor of the computing device may access. Examples of computer-readable storage media include, but are not limited to, a floppy disk, a punched tape, punched cards, a magnetic hard disk drive, a solid state drive, a flash memory, a USB flash drive, Random Access Memory (RAM), a read only memory (ROM), an optical disk, a magneto-optical disk, and the register file of the processor. Examples of optical disks include Compact Discs (CD) and Digital Versatile Disks (DVD), for example CD-ROM, CD-RW, CD-R, DVD-ROM, DVD-RW or DVD-R discs. Plates. The term "computer-readable storage medium" also refers to various types of recording media that can be accessed by the computing unit via a network or communication link. For example, data may be retrieved over a modem, over the Internet, or over a local area network. mentions A computer-readable storage medium should be understood as having possibly several computer-readable storage media. Various executable components of a program or programs may be stored in different locations. The computer-readable storage medium may, for example, comprise a plurality of computer-readable storage media in the same computer system. The computer-readable storage medium may also be a computer-readable storage medium which is distributed over a plurality of computer systems or data processing units.

Der Begriff „Metadaten-Ablage” (metadata repository) umfasst vorliegend ein Speichermedium oder einen Teil eines Speichermediums mit gespeicherten Metadaten. Die Metadaten-Ablage kann zum Beispiel als ein Datenbanksystem realisiert werden, das zur Unterstützung der Speicherung, der Verwendung und des Abrufs von Metadaten durch einen Prozessor konzipiert ist. Metadaten können beispielsweise Informationen über die Art und Weise des Zugriffs auf bestimmte Daten oder weitere Einzelheiten über die Daten enthalten.The term "metadata repository" (metadata repository) in this case comprises a storage medium or a part of a storage medium with stored metadata. For example, the metadata store may be implemented as a database system designed to support the storage, use, and retrieval of metadata by a processor. For example, metadata may include information about how to access certain data or more details about the data.

Der Begriff „Anwendungsprogrammierschnittstelle” (application programming interface (API)) bezeichnet vorliegend eine Schnittstelle, die von Software, welche die Schnittstelle realisieren, verwendet wird, um miteinander in Dialogverkehr zu treten; in ziemlich der gleichen Weise, in der Software eine Benutzerschnittstelle realisieren könnte, um Benutzern zu ermöglichen, mit ihr in Dialogverkehr zu treten. APIs werden von Software-Anwendungen (software applications (SAs), Bibliotheken und Betriebssystemen eingesetzt, um festzulegen, wie andere Software-Programme Aufrufe an sie durchführen oder Dienste von ihnen anfordern können. Eine API bestimmt das Vokabular und Aufrufkonventionen, die der Programmierer verwenden sollte, um die Dienste in Anspruch zu nehmen. Sie kann Spezifikationen für Routinen, Datenstrukturen, Objektklassen und Protokolle enthalten, die zur Kommunikation zwischen einem Nutzer und einem Implementierer der API verwendet werden.As used herein, the term "application programming interface (API)" refers to an interface used by software that implements the interface to interact with each other; in much the same way that software could implement a user interface to allow users to interact with it. APIs are used by software applications (SAs), libraries, and operating systems to determine how other software programs can make calls to or request services from them.An API determines the vocabulary and calling conventions the programmer should use to use the services and may include specifications for routines, data structures, object classes, and protocols used for communication between a user and an implementer of the API.

Der Begriff „Zugriffssteuerungsliste” (access control list (ACL)) bezeichnet vorliegend eine in jedem Sicherheitskonzept (z. B. Zugriffssteuerungskonzept, zwingend erforderliches Zugriffssteuerungskonzept, benutzerbestimmbares Zugriffssteuerungskonzept, gitterbasiertes Zugriffssteuerungskonzept usw.) gemachte Angabe von Benutzern und/oder Gruppen von Benutzern, denen der Zugriff auf eine Datei gestattet ist. Gemäß Ausführungsformen kann die Stufe des erlaubten Zugriffs (z. B. Nur-Lese-Zugriff, Schreib-Lese-Zugriff, Löschzugriff usw.) auch in der Zugriffssteuerungsliste angegeben werden.The term "access control list" (ACL) in the present case denotes an indication of users and / or groups of users who are made in each security concept (eg access control concept, mandatory access control concept, user-defined access control concept, grid-based access control concept, etc.) the access to a file is allowed. According to embodiments, the level of allowed access (eg read-only access, read-write access, delete access, etc.) may also be specified in the access control list.

Der Begriff „Rechnerspeicher” oder „Speicher” ist ein Beispiel für ein rechnerlesbares Speichermedium. Der Rechnerspeicher ist ein beliebiger Speicher, auf den ein Prozessor zugreifen kann. Zu Beispielen für Rechnerspeicher gehören, ohne darauf beschränkt zu sein: RAM-Speicher, Register und Registerdateien. In manchen Fällen kann ein Rechnerspeicher auch beinhalten: ein Festplattenlaufwerk, ein Diskettenlaufwerk oder ein Halbleiterlaufwerk. Ein Teil eines Speichers kann tatsächlich Auslagerungsbereich auf einem Festplattenlaufwerk sein. Erwähnungen der Begriffe „Rechnerspeicher” oder „Speicher” sollten so verstanden werden, dass Letztere möglicherweise mehrere Speicher aufweisen. Der Speicher kann zum Beispiel mehrere Speicher in demselben Rechnersystem aufweisen. Der Speicher kann auch mehrere Speicher aufweisen, die über mehrere Rechnersysteme oder Datenverarbeitungseinheiten verteilt sind.The term "computer memory" or "memory" is an example of a computer-readable storage medium. The computer memory is any memory that can be accessed by a processor. Examples of computer memory include, but are not limited to, RAM, registers, and register files. In some cases, a computer memory may also include: a hard disk drive, a floppy disk drive, or a solid state drive. Part of a memory can actually be swap space on a hard disk drive. Mention of the terms "computer memory" or "memory" should be understood to mean that the latter may have multiple memories. For example, the memory may include multiple memories in the same computer system. The memory may also have a plurality of memories which are distributed over a plurality of computer systems or data processing units.

Der Begriff „Prozessor” umfasst vorliegend eine elektronische Komponente, die ein Programm oder einen von einer Maschine ausführbaren Befehl ausführen kann. Erwähnungen der Datenverarbeitungseinheit dahingehend, dass sie „einen Prozessor” aufweist, sollten so verstanden werden, dass sie möglicherweise mehr als einen Prozessor oder Verarbeitungskern aufweist. Der Prozessor kann zum Beispiel ein Prozessor mit mehreren Rechenkernen sein. Ein Prozessor kann auch eine Gruppe von Prozessoren bezeichnen, die sich in einem einzigen Rechnersystem befinden oder über mehrere Rechnersysteme verteilt sind.The term "processor" herein includes an electronic component that can execute a program or machine-executable instruction. Mentions of the computing device to include "a processor" should be understood to potentially include more than one processor or processing core. The processor may be, for example, a multi-core processor. A processor may also refer to a group of processors residing in a single computer system or distributed across multiple computer systems.

In einer Erscheinungsform betrifft die vorliegende Erfindung ein Verfahren zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung, wobei die virtuelle Arbeitsplatzumgebung eine gemeinschaftlich genutzte Speicherkapazität verwaltet, wobei die gemeinschaftlich genutzte Speicherkapazität dazu dient, eine oder mehrere erste Dateien zu speichern, wobei jede gespeicherte erste Datei einer jeweiligen eindeutigen ersten Dateikennung zugeordnet wird, wobei die virtuelle Arbeitsplatzumgebung einer Verarbeitungseinheit eines Benutzers mindestens einen virtuellen Arbeitsplatz bereitstellt, wobei das Verfahren aufweist:

  • – Empfangen einer ersten Schreibanforderung, eine in der Anforderung angegebene zweite Datei zu schreiben;
  • – Festlegen einer zweiten Dateikennung der angegebenen zweiten Datei;
  • – Vergleichen der zweiten Dateikennung mit der ersten Dateikennung einer beliebigen ersten Datei, die in der gemeinschaftlich genutzten Speicherkapazität gespeichert wird;
  • – wenn die zweite Dateikennung mit einer der ersten Dateikennungen identisch ist, Erzeugen eines Zeigers auf die gespeicherte erste Datei, die dieser ersten Dateikennung zugeordnet ist; und
  • – wenn die zweite Dateikennung nicht mit einer beliebigen der ersten Dateikennungen identisch ist, Speichern der angegebenen Datei, die der zweiten Dateikennung zugeordnet ist, in der gemeinschaftlich genutzten Speicherkapazität, wobei die zweite Dateikennung als eine weitere erste Dateikennung gespeichert wird und die zweite Datei als eine weitere erste Datei gespeichert wird, und Erzeugen des Zeigers auf die gespeicherte weitere erste Datei.
In one aspect, the present invention relates to a method for optimizing memory allocation in a virtual workspace environment wherein the virtual desktop environment manages a shared memory capacity, the shared memory capacity serving to store one or more first files, each stored first file of one associated with each unique first file identifier, the virtual desktop environment providing a processing unit of a user with at least one virtual workstation, the method comprising:
  • - receiving a first write request to write a second file specified in the request;
  • - specify a second file identifier of the specified second file;
  • Comparing the second file identifier with the first file identifier of any first file stored in the shared memory capacity;
  • If the second file identifier is identical to one of the first file identifiers, generating a pointer to the stored first file associated with that first file identifier; and
  • If the second file identifier is not identical to any of the first file identifiers, storing the specified file associated with the second file identifier in the shared memory capacity, the second file identifier being stored as a further first file identifier and the second file being stored as a first file identifier another first file is stored, and generating the pointer to the stored further first file.

Die Ausführungsform kann vorteilhaft sein, weil das Verfahren die Speicherung von identischen Dateien in der gemeinschaftlich genutzten Speicherkapazität verhindert und es auch verschiedenen Benutzern ermöglicht, auf dieselbe gespeicherte Datei zuzugreifen. Dadurch kann nicht nur bereits im Vorwege Speicherplatz gespart werden, sondern auch die Leistungsfähigkeit des Speichers verbessert werden. Dies steht im Gegensatz zu einem nach der Speicherung erfolgenden Deduplizierungsverfahren, das erst ausgeführt wird, wenn die Dateien in dem Speicherbereich bereits dupliziert sind.The embodiment may be advantageous because the method prevents the storage of identical files in the shared storage capacity and also allows different users to access the same stored file. This not only saves space in advance, but also improves the performance of the memory. This is in contrast to a post-storage deduplication process, which is performed only when the files in the storage area are already duplicated.

Gemäß einer anderen Ausführungsform wird der Zeiger in einem lokalen Dateisystem des virtuellen Arbeitsplatzes erzeugt, wobei das lokale Dateisystem vorzugsweise in einem benutzerspezifischen Speicherbereich gespeichert wird, auf den nur dieser Benutzer zugreifen kann.According to another embodiment, the pointer is generated in a local file system of the virtual workstation, wherein the local file system is preferably stored in a user-specific memory area, which only this user can access.

Gemäß einer anderen Ausführungsform wird die erste Schreibanforderung von dem mindestens einen virtuellen Arbeitsplatz empfangen, und der Zeiger wird in dem lokalen Dateisystem des virtuellen Arbeitsplatzes erzeugt.According to another embodiment, the first write request is received from the at least one virtual workstation and the pointer is generated in the local file system of the virtual workstation.

Gemäß einer weiteren Ausführungsform weist das Verfahren des Weiteren die Schritte des Empfangens einer Angabe eines Pfades in dem lokalen Dateisystem von dem mindestens einen virtuellen Arbeitsplatz des Benutzers des mindestens einen virtuellen Arbeitsplatzes auf. Der Zeiger wird an einem Speicherort in dem lokalen Dateisystem erzeugt, der von dem angegebenen Pfad angegeben wird. Gemäß Ausführungsformen kann der Benutzer den Pfad über ein GUI-Element, z. B. eine Datei-Auswahleinheit, angeben, was dem Benutzer die Möglichkeit gibt, in einem vorhandenen Verzeichnisbaum eines lokalen Dateisystems zu navigieren. Im Gegensatz zu manchen Systemen nach dem Stand der Technik darf der Benutzer folglich einen Dateipfad in seinem eigenen lokalen Verzeichnis angeben und muss sich nicht eine vorher festgelegte, gemeinschaftlich genutzte Dateiverzeichnisstruktur merken und diese übernehmen. Überdies wird die Duplizierung der Dateien, die in der gemeinschaftlich genutzten Speicherkapazität gespeichert werden, vermieden. Die Ausführungsformen können vorteilhaft sein, da der Benutzer, der die Anforderung stellt, eine Datei in einen bestimmten Ordner seines virtuellen Arbeitsplatzes zu schreiben, feststellt, dass die Datei mit den gewünschten Kenndaten auf dem lokalen Dateisystem erzeugt wurde (z. B. Dateiname, Speicherort des Ordners usw.), obgleich das lokale Dateisystem in Wirklichkeit lediglich über eine Verknüpfung (Link) zu der tatsächlich vorhandenen physischen Datei verfügt, die in der gemeinschaftlich genutzten Speicherkapazität gespeichert ist. Gemäß Ausführungsformen wird das lokale Dateisystem des Benutzers in einem benutzerspezifischen Speichermedium des Benutzers gespeichert. Der benutzerspezifische Speicher wird ebenfalls von der virtuellen Arbeitsplatzumgebung verwaltet.According to another embodiment, the method further comprises the steps of receiving an indication of a path in the local file system from the at least one virtual workstation of the user of the at least one virtual workstation. The pointer is generated to a location on the local file system specified by the specified path. According to embodiments, the user may access the path via a GUI element, e.g. A file selector, which gives the user the ability to navigate within an existing directory tree of a local file system. Thus, unlike some prior art systems, the user is allowed to specify a file path in his own local directory and does not need to remember and adopt a predetermined shared directory structure. In addition, the duplication of files stored in the shared storage capacity is avoided. The embodiments may be advantageous in that the user making the request to write a file to a particular folder of his virtual workstation determines that the file having the desired characteristics has been created on the local file system (eg, file name, location folder, etc.), although in reality the local file system merely has a link to the actual physical file stored in the shared storage capacity. According to embodiments, the user's local file system is stored in a user-specific storage medium of the user. The user-specific storage is also managed by the virtual workplace environment.

Gemäß einer weiteren Ausführungsform ist die erste und/oder die zweite Dateikennung eine Nummer einer zyklischen Redundanzprüfung (Cyclic Redundancy Check) der Datei, eine Hash-Nummer, SHA-1 oder MD5, der jeweiligen, zu der Kennung gehörenden Datei. Dies kann den Vorteil haben, dass ein robustes Verfahren bereitgestellt wird, das dazu dient, eine eindeutige Kennnummer zu berechnen, so dass verschiedene Dateien verschiedene Kennungen haben. Dadurch kann geprüft werden, ob es sich bei der Datei, die gerade zur Speicherung angefordert wird, um eine der zuvor gespeicherten Dateien in der gemeinschaftlich genutzten Speicherkapazität handelt.According to a further embodiment, the first and / or the second file identifier is a number of the cyclic redundancy check of the file, a hash number, SHA-1 or MD5, of the respective file belonging to the identifier. This may have the advantage of providing a robust method that serves to compute a unique identification number so that different files have different identifiers. This makes it possible to check if the file being requested for storage is one of the previously stored files in the shared storage capacity.

Gemäß einer anderen Ausführungsform weist das Verfahren des Weiteren auf: nach der Speicherung von beliebigen der ersten Dateien und nach der Speicherung der zweiten Datei in der gemeinschaftlich genutzten Speicherkapazität ein Zuordnen der ersten und/oder der zweiten Datei zu einer Zugriffssteuerungsliste, die Benutzerkennungen von allen Benutzern aufweist, die Zugriff auf die gespeicherte erste oder zweite Datei haben. Darüber hinaus oder alternativ weist das Verfahren nach der Speicherung von beliebigen der ersten Dateien und nach der Speicherung der zweiten Datei in der gemeinschaftlich genutzten Speicherkapazität ein Zuordnen der gespeicherten Datei zu einer Referenzanzahl auf, die die Anzahl der Benutzer darstellt, welche Zugriff auf die gespeicherte erste oder zweite Datei haben.According to another embodiment, the method further comprises: after storing any of the first files and after storing the second file in the shared storage capacity, associating the first and / or the second file with an access control list containing user IDs from all users that has access to the stored first or second file. Additionally or alternatively, after storing any of the first files and storing the second file in the shared storage capacity, the method comprises associating the stored file with a reference number representative of the number of users accessing the stored first or have a second file.

Die Ausführungsform kann vorteilhaft sein, da sie einen sicheren und kontrollierten Zugriff auf die gespeicherten Dateien sicherstellt, die aufgrund dessen geschützt sind, dass nur den Benutzern der Zugriff gewährt wird, deren Benutzer-IDs in der Zugriffssteuerungsliste angegeben sind.The embodiment may be advantageous as it ensures secure and controlled access to the stored files that are protected by granting access only to users whose user IDs are specified in the access control list.

Gemäß Ausführungsformen sind nur Benutzerkennungen von Benutzern, denen der Zugriff auf eine gespeicherte Datei gestattet ist, in der Zugriffssteuerungsliste der gespeicherten Datei enthalten. Ein weiterer Vorteil kann darin bestehen, dass die Anzahl der Benutzer, die Zugriff auf eine gespeicherte Datei haben, einfach ermittelt werden kann, indem man eine Referenzanzahl liest, bei der es sich um eine einzelne Zahl handelt. Dies geht schneller, als wenn man diese Zahl aus der Zugriffssteuerungsliste der gespeicherten Datei lesen und ableiten müsste, indem man beispielsweise die Anzahl der in der Zugriffssteuerungsliste ausgewiesenen Benutzer zählt.According to embodiments, only user IDs of users allowed to access a stored file are included in the ACL of the stored file. Another advantage may be that the number of users who access a stored File can be easily determined by reading a reference number, which is a single number. This is faster than having to read and derive this number from the access control list of the stored file, for example by counting the number of users listed in the access control list.

Gemäß einer weiteren Ausführungsform weist das Verfahren des Weiteren das Empfangen einer Löschanforderung von dem Benutzer auf. Die Löschanforderung gibt eine der ersten Dateien an. Nach dem Empfang der Löschanforderung wird die Benutzerkennung des Benutzers, der die Löschanforderung übergeben hat, aus der Zugriffssteuerungsliste derjenigen Datei gelöscht, die in der Löschanforderung angegeben ist. Gemäß einer weiteren Ausführungsform wird neben dem Entfernen der Benutzerkennung in diesem Fall die Referenzanzahl verringert. Dadurch wird sichergestellt, dass die Zugriffssteuerungsliste und die Referenzanzahl weiterhin die genaue Anzahl der Benutzer darstellen, die Zugriff auf die Datei haben. Gemäß einer anderen Ausführungsform wird in diesem Fall der Zeiger dieser Datei, die in dem lokalen Dateisystem des virtuellen Arbeitsplatzes des Benutzers gespeichert ist, ebenfalls gelöscht. Auch wird die Datei aus der gemeinsam genutzten Speicherkapazität gelöscht, wenn die Referenzanzahl den Wert null hat.According to another embodiment, the method further comprises receiving an erase request from the user. The delete request specifies one of the first files. Upon receipt of the delete request, the user ID of the user who submitted the deletion request is deleted from the access control list of the file specified in the deletion request. According to a further embodiment, in addition to removing the user identifier in this case, the reference number is reduced. This will ensure that the access control list and the reference count continue to represent the exact number of users who have access to the file. According to another embodiment, in this case, the pointer of this file, which is stored in the local file system of the user's virtual workstation, is also deleted. Also, the file is deleted from the shared storage capacity if the reference count is null.

Gemäß einer anderen Ausführungsform weist der Schritt des Speicherns der angegebenen zweiten Datei des Weiteren die Schritte auf: Erzeugen der Zugriffssteuerungsliste und/oder der Referenzanzahl für die angegebene zweite Datei; und Hinzufügen der Benutzerkennung zu der Zugriffssteuerungsliste und/oder Erhöhen der Referenzanzahl.According to another embodiment, the step of storing the specified second file further comprises the steps of: generating the access control list and / or the reference number for the specified second file; and adding the user identifier to the access control list and / or increasing the reference number.

Gemäß einer weiteren Ausführungsform weist der Schritt des Erzeugens des Zeigers den Schritt des Hinzufügens der Benutzerkennung zu der Zugriffssteuerungsliste der Datei, auf die der Zeiger gerichtet wird, und/oder das Erhöhen der Referenzanzahl auf.According to another embodiment, the step of generating the pointer comprises the step of adding the user identifier to the access control list of the file to which the pointer is being directed and / or increasing the reference number.

Gemäß einer weiteren Ausführungsform weist das Verfahren des Weiteren auf:
Empfangen einer zweiten Schreibanforderung, die zweite Datei zu schreiben;
Erzeugen eines zweiten Zeigers auf die vorhandene erste Datei, die als Reaktion auf die erste Schreibanforderung gespeichert worden ist, wobei der zweite Zeiger in dem lokalen Dateisystem des virtuellen Arbeitsplatzes eines Benutzers erzeugt wird, der die zweite Schreibanforderung gestellt hat.
According to another embodiment, the method further comprises:
Receiving a second write request to write the second file;
Generating a second pointer to the existing first file that has been stored in response to the first write request, wherein the second pointer is generated in the local file system of the virtual workstation of a user who made the second write request.

Gemäß einer Ausführungsform werden die erste Schreibanforderung und die zweite Schreibanforderung von demselben Benutzer empfangen, und die Referenzanzahl bleibt unverändert. Dies hat den Vorteil, dass dem Benutzer die Flexibilität gewährt wird, seine eigenen Dateien in dem Dateisystem zu organisieren, zum Beispiel, indem er dieselbe Datei ohne Einschränkungen an verschiedenen Speicherorten speichert. Gleichzeitig gestatten es diese Merkmale, nur eine Kopie der Datei in der gemeinschaftlich genutzten Speicherkapazität aufzubewahren.According to one embodiment, the first write request and the second write request are received from the same user, and the reference number remains unchanged. This has the advantage of giving the user the flexibility to organize his own files in the file system, for example, by storing the same file in various locations without restrictions. At the same time, these features allow only one copy of the file to be kept in the shared memory.

Gemäß Ausführungsformen werden in dem Fall, in dem die erste Schreibanforderung und die zweite Schreibanforderung von verschiedenen Benutzern empfangen werden, die Referenzanzahl und die Dateizugriffsliste entsprechend aktualisiert.According to embodiments, in the case where the first write request and the second write request are received from different users, the reference number and the file access list are updated accordingly.

Gemäß Ausführungsformen weist das Verfahren des Weiteren die Schritte auf:

  • – Empfangen einer Aktualisierungsanforderung von dem Benutzer, wobei die Aktualisierungsanforderung eine der ersten Dateien angibt, die von dem Benutzer geändert werden soll;
  • – Speichern der geänderten ersten Datei in der gemeinschaftlich genutzten Speicherkapazität;
  • – Erzeugen eines Zeigers auf die geänderte Datei in dem lokalen Dateisystem des Benutzers.
According to embodiments, the method further comprises the steps of:
  • - receiving an update request from the user, the update request indicating one of the first files to be changed by the user;
  • Storing the changed first file in the shared storage capacity;
  • Generate a pointer to the changed file in the user's local file system.

Gemäß Ausführungsformen weist das Verfahren des Weiteren das Löschen des Zeigers auf, der auf die gespeicherte geänderte erste Datei zeigt.According to embodiments, the method further includes deleting the pointer pointing to the stored modified first file.

Gemäß Ausführungsformen wird die Änderung der Datei ausgeführt, indem eine geänderte lokale Kopie F' der ersten Datei F, die geändert werden soll, erzeugt wird, wobei die lokale Kopie in dem lokalen Dateisystem des Benutzers gespeichert wird, und eine Schreibanforderung wie zuvor beschrieben ausgeführt wird, um die geänderte lokale Kopie F zu schreiben.According to embodiments, the modification of the file is performed by creating a modified local copy F 'of the first file F to be changed, storing the local copy in the user's local file system, and executing a write request as described above to write the modified local copy F.

Gemäß einer Ausführungsform wird der virtuelle Arbeitsplatz von der virtuellen Arbeitsplatzumgebung als eine Instanz eines Abbilds einer virtuellen Maschine bereitgestellt, und eine grafische Benutzeroberfläche des virtuellen Arbeitsplatzes wird auf einem Bildschirm einer benutzerspezifischen Verarbeitungseinheit dem Benutzer der Verarbeitungseinheit angezeigt. In Abhängigkeit von der Ausführungsform kann die Verarbeitungseinheit ein Smartphone, ein Netbook, ein Arbeitsplatzrechner (Workstation) oder dergleichen sein. Insbesondere kann die Verarbeitungseinheit eine Verarbeitungseinheit in Form eines Thin Client sein, der lediglich über begrenzte Hardware-Ressourcen verfügt.According to one embodiment, the virtual workspace is provided by the virtual workspace environment as an instance of a virtual machine image, and a graphical user interface of the virtual workspace is displayed on a user-specific processing unit screen to the user of the processing unit. Depending on the embodiment, the processing unit may be a smartphone, a netbook, a workstation or the like. In particular, the processing unit may be a processing unit in the form of a thin client having only limited hardware resources.

Gemäß einer weiteren Ausführungsform ist der Benutzer ein Benutzer aus einer Vielzahl von Benutzern, denen jeweils eine benutzerspezifische Verarbeitungseinheit zugewiesen ist, und wobei der virtuelle Arbeitsplatz ein virtueller Arbeitsplatz aus einer Vielzahl von virtuellen Arbeitsplätzen ist. Jeder der Vielzahl der virtuellen Arbeitsplätze wird von der virtuellen Arbeitsplatzumgebung einer der Verarbeitungseinheiten bereitgestellt. Ein Server, der die virtuelle Arbeitsplatzumgebung beherbergt, ist über ein Netzwerk mit jeder der benutzerspezifischen Verarbeitungseinheiten verbunden. Die Schritte, die von Ausführungsformen der vorliegenden Erfindung, welche vorstehend beschrieben wurden, ausgeführt werden, werden von einer Speicherinfrastruktur-Verwaltungseinheit ausgeführt, die auf dem Server läuft.According to another embodiment, the user is a user of a plurality of users, each of whom is assigned a user-specific processing unit, and wherein the virtual workstation is a virtual workstation from a plurality of virtual workstations. Each of the variety of virtual workplaces is covered by the virtual workspace environment of one of the processing units. A server hosting the virtual workspace environment is connected to each of the user-specific processing units via a network. The steps performed by embodiments of the present invention described above are performed by a storage infrastructure management unit running on the server.

In einer weiteren Erscheinungsform betrifft die Erfindung ein rechnerlesbares, übergangsloses Speichermedium, das rechnerlesbare Befehle aufweist, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, die Schritte des Verfahrens einer beliebigen der vorstehenden Ausführungsformen durchzuführen.In another aspect, the invention relates to a computer-readable, seamless storage medium having computer-readable instructions that, when executed by a processor, cause the processor to perform the steps of the method of any of the foregoing embodiments.

In einer anderen Erscheinungsform betrifft die Erfindung ein Rechnersystem zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung, wobei die virtuelle Arbeitsplatzumgebung eine gemeinschaftlich genutzte Speicherkapazität verwaltet, wobei die geteilte Speicherkapazität eine oder mehrere zuvor gespeicherte Dateien speichert, wobei jede gespeicherte Datei einer jeweiligen eindeutigen ersten Dateikennung zugeordnet wird, wobei die virtuelle Arbeitsplatzumgebung einer Verarbeitungseinheit eines Benutzers mindestens einen virtuellen Arbeitsplatz bereitstellt, wobei das Rechnersystem aufweist:

  • – die gemeinschaftlich genutzte Speicherkapazität; und
  • – eine Server-Verarbeitungseinheit, die eine Verwaltungseinheit für eine virtuelle Speicherinfrastruktur beherbergt, wobei die Verwaltungseinheit für die virtuelle Speicherinfrastruktur so gestaltet ist, dass sie: – über die virtuelle Arbeitsplatzumgebung eine erste Schreibanforderung, eine in der Anforderung angegebene zweite Datei zu schreiben, empfängt; – eine zweite Dateikennung der angegebenen Datei festlegt; – die zweite Dateikennung mit einer jeden der ersten Dateikennungen einer beliebigen ersten Datei vergleicht, die in den gemeinschaftlich genutzten Speicherkapazitäten gespeichert worden sind; – wenn die zweite Dateikennung mit einer der ersten Dateikennungen identisch ist, einen Zeiger auf die gespeicherte erste Datei erzeugt, die dieser ersten Dateikennung zugeordnet ist; und – wenn die zweite Dateikennung nicht mit einer beliebigen der ersten Dateikennungen identisch ist, die angegebene zweite Datei, die der zweiten Dateikennung zugeordnet ist, in der gemeinschaftlich genutzten Speicherkapazität speichert, wobei die zweite Dateikennung als eine weitere erste Dateikennung gespeichert wird und die zweite Datei als eine weitere erste Datei gespeichert wird, und einen Zeiger auf die gespeicherte weitere erste Datei erzeugt.
In another aspect, the invention relates to a computer system for optimizing memory allocation in a virtual desktop environment wherein the virtual desktop environment manages shared memory, the shared memory storing one or more previously stored files, each associated file being associated with a respective unique first file identifier wherein the virtual workstation environment provides at least one virtual workstation to a processing unit of a user, the computing system comprising:
  • - the shared storage capacity; and
  • A server processing unit hosting a virtual storage infrastructure management unit, wherein the virtual storage infrastructure management unit is configured to: receive via the virtual desktop environment a first write request to write a second file specified in the request; - specifies a second file identifier of the specified file; - compares the second file identifier with each of the first file identifiers of any first file that has been stored in the shared storage capacities; If the second file identifier is identical to one of the first file identifiers, generates a pointer to the stored first file associated with that first file identifier; and if the second file identifier is not identical to any one of the first file identifiers, stores the specified second file associated with the second file identifier in the shared memory capacity, the second file identifier being stored as another first file identifier and the second file is stored as another first file, and generates a pointer to the stored further first file.

Gemäß einer weiteren Ausführungsform ist die Client-Verarbeitungseinheit mit der Server-Verarbeitungseinheit über ein Netzwerk verbunden, und sie dient dazu, den virtuellen Arbeitsplatz über das Netzwerk von der virtuellen Arbeitsplatzumgebung anzufordern.According to another embodiment, the client processing unit is connected to the server processing unit via a network and serves to request the virtual workstation via the network from the virtual workstation environment.

Gemäß weiteren Ausführungsformen ist die Client-Einheit eine Client-Einheit aus einer Vielzahl von Client-Einheiten, die jeweils einem Benutzer aus einer Vielzahl von verschiedenen Benutzern zugewiesen werden, wobei jede der Client-Einheiten dazu dient, über das Netzwerk einen virtuellen Arbeitsplatz von der virtuellen Arbeitsplatzumgebung anzufordern.According to further embodiments, the client unit is a client unit of a plurality of client units, each assigned to a user of a plurality of different users, each of the client units serving to provide a virtual workstation over the network to request a virtual workplace environment.

Gemäß bestimmten Ausführungsformen weisen die virtuellen Arbeitsplatzrechner, die jeder der Client-Einheiten bereitgestellt werden, GUI-Elemente auf, die jeweils die Zeiger darstellen, welche nach einer Schreibanforderung des Benutzers der jeweiligen Client-Einheit erzeugt worden sind. Die sichtbaren Eigenschaften der GUI-Elemente, z. B. die Farbe, der Symboltyp und dergleichen, sind identisch mit GUI-Elementen, die von der jeweiligen virtuellen Arbeitsplatzumgebung zur Anzeige von Dateien verwendet werden, so dass dem Benutzer folglich der Eindruck vermittelt wird, dass er mit einer realen Datei statt mit einer Verknüpfung arbeitet.According to certain embodiments, the virtual workstations provided to each of the client devices comprise GUI elements, each representing the pointers generated after a write request from the user of the respective client device. The visible properties of the GUI elements, e.g. The color, type of icon, and the like are identical to GUI elements used by the respective virtual desktop environment to display files, thus giving the user the impression of being with a real file rather than a link is working.

Wie der Fachmann verstehen wird, können Erscheinungsformen der vorliegenden Erfindung als ein System, ein Verfahren oder ein Rechnerprogrammprodukt realisiert werden. Folglich können Erscheinungsformen der vorliegenden Erfindung, soweit nicht ausdrücklich anders angegeben, die Gestalt einer ganz in Hardware realisierten Ausführungsform, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Erscheinungsformen kombiniert, die hier alle allgemein als ein „Modul” oder ein „System” bezeichnet werden können. Jede beliebige Kombination aus einem oder mehreren rechnerlesbaren Datenträgern kann verwendet werden.As those skilled in the art will appreciate, aspects of the present invention may be practiced as a system, method, or computer program product. Thus, unless expressly stated otherwise, aspects of the present invention may take the form of a wholly hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment including software and hardware. Manifestations, all of which may be collectively referred to herein as a "module" or a "system." Any combination of one or more computer-readable media may be used.

Kurze Beschreibung der ZeichnungenBrief description of the drawings

Im Folgenden werden bevorzugte Ausführungsformen der Erfindung lediglich beispielhaft ausführlicher beschrieben, wobei Bezug auf die Zeichnungen genommen wird, bei denen:Hereinafter, preferred embodiments of the invention will be described in more detail by way of example only, with reference to the drawings, in which:

1 eine Systemarchitektur für die Ausführung eines Verfahrens zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung zeigt, 1 shows a system architecture for carrying out a method for optimizing memory allocation in a virtual workplace environment,

2 ein Ablaufplan eines Verfahrens zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung ist und 2 is a flowchart of a method for optimizing memory allocation in a virtual workplace environment is and

3 ein Blockschaltbild einer Server-Verarbeitungseinheit und einer Client-Verarbeitungseinheit ist. 3 is a block diagram of a server processing unit and a client processing unit.

Ausführliche BeschreibungDetailed description

Im Folgenden bezeichnen gleich nummerierte Elemente in den Figuren entweder ähnliche Elemente oder Elemente, die eine gleiche oder gleichwertige Funktion erfüllen. Elemente, die zuvor bereits erörtert worden sind, werden in späteren Figuren nicht unbedingt erörtert, wenn die Funktion gleich oder gleichwertig ist.Hereinafter, like numbered elements in the figures indicate either similar elements or elements that perform the same or equivalent function. Elements previously discussed will not necessarily be discussed in later figures if the function is the same or equivalent.

1 zeigt eine vorgeschlagene Systemarchitektur 100, die dazu dient, einen Prozess zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung auszuführen. In der hier beschriebenen Weise bedeutet der Begriff „virtuelle Arbeitsplatzumgebung” ein System, das zur Bereitstellung von Arbeitsplatzdiensten mittels verteilter Ressourcen an Endbenutzer dient. 1 shows a proposed system architecture 100 , which serves to execute a process for optimizing memory allocation in a virtual workplace environment. As used herein, the term "virtual workplace environment" means a system for providing workstation services through distributed resources to end users.

Das System 100 stellt Thin Clients 123 bereit, die über eine Verwaltungseinheit 105 für eine virtuelle Speicherinfrastruktur (virtual storage infrastructure manager (VSIM)) und ein Rechnernetzwerk 103, wie zum Beispiel das Internet, zwecks Datenaustausch mit einer gemeinschaftlich genutzten Speicherkapazität 113 verbunden sind. Die Verwaltungseinheit 105 für eine virtuelle Speicherinfrastruktur hat über ein Speicherbereich-Optimierungsprogramm 109 Zugriff auf den gemeinschaftlich genutzten Datenspeicher 113. Das Speicherbereich-Optimierungsprogramm 109 kann ein Bestandteil der Verwaltungseinheit für eine virtuelle Speicherinfrastruktur, die auf einem fernen Server 120 läuft, sein oder zu Betriebszwecken mit dieser verbunden sein. Der Server 120 kann jede beliebige Serverfunktion ausführen und zum Beispiel Datenserver, Anwendungsserver oder Webserver aufweisen.The system 100 introduces thin clients 123 ready to go through an administrative unit 105 for a virtual storage infrastructure manager (VSIM) and a computer network 103 such as the Internet, for data sharing with a shared storage capacity 113 are connected. The administrative unit 105 for a virtual storage infrastructure has a storage space optimizer 109 Access to the shared data store 113 , The storage area optimizer 109 can be part of the virtual storage infrastructure management unit running on a remote server 120 be running, be or connected with it for operational purposes. The server 120 can perform any server function, such as data servers, application servers, or web servers.

Der Thin Client 123 kann zum Beispiel eine vernetzte Desktop-Datenverarbeitungseinheit ohne lokalen Speicher sein. Er kann über ein eingebettetes Betriebssystem oder Firmware mit eingeschränktem Funktionsumfang verfügen und ermöglicht die Identitätsprüfung von Benutzern, Netzwerk/Serverzugriff, Fernanzeige sowie Unterstützung bei der Eingabe/Ausgabe einschließlich Tastatur, Maus, lokalem USB und Druckfunktionen. Der Thin Client 123 führt über seine Verbindung mit dem Server 120 einen virtuellen Arbeitsplatz aus. Der virtuelle Arbeitsplatz kann eine oder mehrere Ansichten bereitstellen, die einem Benutzer über eine grafische Benutzeroberfläche (graphical user interface (GUI)) 101 des Thin Client 123 angezeigt werden. Der Thin Client 123 hat die Funktion einer Schnittstelle zwischen dem Benutzer und der gemeinschaftlich genutzten Speicherkapazität 113. Der Thin Client 123 ist benutzerspezifisch und zeigt dem Benutzer GUI-Elemente an, die Elemente eines lokalen Dateisystems darstellen. Das lokale Dateisystem des Benutzers kann vom Benutzer angepasst werden und ermöglicht dem Benutzer folglich, die Organisation der Dateien, die dem Benutzer gehören, festzulegen. Das lokale Dateisystem kann einen benutzerspezifischen Speicher 316, 317 (vgl. 3) enthalten, in dem Dateizeiger, die auf Dateien zeigen, auf die der Benutzer zugreifen kann, gespeichert werden können.The thin client 123 may be, for example, a networked desktop computing device without local memory. It has an embedded operating system or limited-functionality firmware, and allows users to verify their identity, network / server access, remote display, and input / output support including keyboard, mouse, local USB, and printing features. The thin client 123 performs over its connection with the server 120 a virtual workplace. The virtual workstation may provide one or more views that are available to a user via a graphical user interface (GUI). 101 of the thin client 123 are displayed. The thin client 123 has the function of an interface between the user and the shared storage capacity 113 , The thin client 123 is user-specific and displays GUI elements to the user that represent elements of a local file system. The user's local file system can be customized by the user and thus allows the user to specify the organization of the files owned by the user. The local file system may have a user-specific memory 316 . 317 (see. 3 ), where file pointers that point to files that the user can access are stored.

Eine Anwendungsprogrammierschnittstelle (API) (107) verarbeitet Anforderungen des Benutzers des virtuellen Arbeitsplatzes und sendet Antworten auf diese Anforderungen zurück. Die Anforderungen können zum Beispiel CRUD-Operationen (CRUD steht für ”create, read, update, delete” beziehungsweise „erzeugen, lesen, aktualisieren, löschen”) sein. Diese Anforderungen werden an das Speicherbereich-Optimierungsprogramm 109 weitergeleitet. Das Speicherbereich-Optimierungsprogramm 109 ermöglicht und verwaltet die Anforderungen, wie zum Beispiel die CRUD-Operationen, und setzt Benutzeranforderungen in Anforderungen an die gemeinschaftlich genutzte Speicherkapazität 113, Informationen abzurufen und zu speichern, um. Die API-Schnittstelle 107 wird von der VSIM gesteuert und hindert die virtuellen Arbeitsplätze 310, die in 3 gezeigt sind, daran, direkt mit der gemeinschaftlich genutzten Speicherkapazität 113 in Dialogverkehr zu treten.An application programming interface (API) ( 107 ) processes requests from the user of the virtual workstation and returns responses to these requests. The requirements may be, for example, CRUD operations (CRUD stands for "create, read, update, delete" or "generate, read, update, delete"). These requests are sent to the storage space optimizer 109 forwarded. The storage area optimizer 109 enables and manages the requirements, such as the CRUD operations, and places user requests in shared storage capacity requirements 113 To retrieve and save information to. The API interface 107 is controlled by the VSIM and prevents the virtual workstations 310 , in the 3 shown, directly with the shared storage capacity 113 to interact with each other.

Die gemeinschaftlich genutzte Speicherkapazität 113 ist mit dem Server 120 zu Betriebszwecken verbunden. Die gemeinschaftlich genutzte Speicherkapazität kann zum Beispiel Teil des Servers sein, oder der Server kann über ein Netzwerk auf die gemeinschaftlich genutzte Speicherkapazität zugreifen. Die gemeinschaftlich genutzte Speicherkapazität 113 kann aus einer oder mehreren untereinander verbundenen Speichereinheiten wie zum Beispiel einer redundanten Anordnung unabhängiger Festplatten (RAID) bestehen, um Datendateien zu speichern. Das System 100 stellt auf den gespeicherten Dateien 117 Informationen bereit. Die Informationen weisen zum Beispiel eine Zugriffssteuerungsliste, eine Dateikennung, eine Referenzanzahl, die die Anzahl der Benutzer angibt, die auf eine Datei zugreifen können, usw. auf. Diese Informationen werden in einer Metadaten-Ablage 111 gespeichert. Die Metadaten-Ablage 111 ist zu Betriebszwecken mit dem Speicherbereich-Optimierungsprogramm 109 verbunden, um diese Informationen auszutauschen.The shared storage capacity 113 is with the server 120 connected for business purposes. The shared storage capacity may be part of the server, for example, or the server may share the shared storage capacity over a network. The shared storage capacity 113 may consist of one or more interconnected storage devices such as a redundant array of independent hard drives (RAID) to store data files. The system 100 puts on the stored files 117 Information ready. The information includes, for example, an access control list, a file identifier, a reference number indicating the number of users who can access a file, and so on. This information is stored in a metadata store 111 saved. The metadata store 111 is for operational purposes with the Storage area optimization program 109 connected to exchange this information.

2 ist ein Ablaufplan eines Verfahrens zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung. Im Schritt 201 empfängt die API 107 der VSIM 105 Anforderungen, eine bestimmte Datei in die gemeinschaftlich genutzte Speicherkapazität 113 zu schreiben. Die Anforderung wird zum Beispiel von einem Benutzer ausgelöst, der eine bestimmte Datei, die an seine E-Mail angehängt ist, in einem benutzerspezifischen Speicher ablegt. Der benutzerspezifische Speicher weist ein lokales Dateisystem eines virtuellen Arbeitsplatzes auf. Der virtuelle Arbeitsplatz wird dem Thin Client 123 bereitgestellt. Die API leitet die Anforderung an das Speicherbereich-Optimierungsprogramm 109 weiter. Im Schritt 203 berechnet das Speicherbereich-Optimierungsprogramm 109 eine zweite Kennung für die angegebene Datei. Die zweite Kennung kann zum Beispiel, ohne darauf beschränkt zu sein, eine Nummer einer zyklischen Redundanzprüfung der Datei, eine Hash-Nummer, SHA-1 oder MD5, sein. Im Schritt 205 vergleicht das Speicherbereich-Optimierungsprogramm 109 die zweite Kennung der angegebenen Datei, die gerade angefordert wird, mit den ersten Kennungen der Dateien, die zuvor in der gemeinschaftlich genutzten Speicherkapazität 113 gespeichert wurden. Das Speicherbereich-Optimierungsprogramm 109 ruft die Kennungen der gespeicherten Dateien aus der Metadaten-Ablage 111 ab. 2 FIG. 10 is a flowchart of a method for optimizing memory allocation in a virtual workplace environment. In step 201 receives the API 107 the VSIM 105 Requirements, a specific file in the shared storage capacity 113 to write. The request is triggered, for example, by a user who stores a particular file attached to his e-mail in a user-specific memory. The user-specific memory has a local file system of a virtual workstation. The virtual workstation becomes the thin client 123 provided. The API directs the request to the storage space optimizer 109 further. In step 203 computes the storage space optimizer 109 a second identifier for the specified file. The second identifier may be, for example, but not limited to, a cyclic redundancy check number of the file, a hash number, SHA-1, or MD5. In step 205 compares the storage area optimizer 109 the second identifier of the specified file that is being requested, with the first identifiers of the files previously in the shared storage capacity 113 were saved. The storage area optimizer 109 retrieves the identifiers of the stored files from the metadata store 111 from.

Falls die zweite Kennung mit einer der ersten Dateikennungen identisch ist, fügt das Speicherbereich-Optimierungsprogramm zuerst die Benutzerkennung zu der Zugriffssteuerungsliste hinzu und/oder erhöht eine Referenzanzahl, die der gespeicherten Datei zugeordnet ist, bei der die erste Kennung mit der zweiten Kennung identisch ist. Die Zugriffssteuerungsliste und die Referenzanzahl werden dann in der Metadaten-Ablage 111 gespeichert. Als Nächstes erzeugt das Speicherbereich-Optimierungsprogramm 109 einen Zeiger auf die vorhandene gespeicherte Datei, die dieser ersten Kennung zugeordnet ist. Im Schritt 209 wird der Zeiger in dem benutzerspezifischen Speicher erzeugt, der das lokale Dateisystem des virtuellen Arbeitsplatzes aufweist, der von dem Benutzer angefordert wird. Der benutzerspezifische Speicher kann ein logischer Datenträger oder ein physischer Speicherdatenträger sein. Wenn die angegebene Datei ein zweites Mal von demselben Benutzer angefordert wird, um die Datei an einem zweiten Speicherort in demselben Verzeichnisbaum des Dateisystems des virtuellen Arbeitsplatzes zu schreiben, wird ein zweiter Zeiger erzeugt, der auf die vorhandene erste Datei in dem benutzerspezifischen Speicher des Benutzers zeigt. In diesem Fall bleibt die Referenzanzahl unverändert.If the second identifier is identical to one of the first file identifiers, the memory region optimizer first adds the user identifier to the access control list and / or increments a reference number associated with the stored file where the first identifier is identical to the second identifier. The access control list and the reference count will then be in the metadata store 111 saved. Next, the memory space optimizer generates 109 a pointer to the existing stored file associated with this first identifier. In step 209 the pointer is generated in the user-specific memory having the local file system of the virtual workstation requested by the user. The user-specified storage may be a logical volume or a physical storage volume. If the specified file is requested a second time by the same user to write the file to a second location in the same virtual machine file system directory tree, a second pointer is created that points to the existing first file in the user's user-defined memory , In this case, the reference number remains unchanged.

Falls die zweite Schreibanforderung von einem zweiten Benutzer empfangen wurde, wobei der andere Benutzer eine Schreibanforderung für eine Datei stellt, die bereits von dem ersten Benutzer gespeichert worden ist, wird ein Zeiger, der auf die vorhandene Datei in der gemeinschaftlich genutzten Speicherkapazität 113 zeigt, in dem lokalen Dateiverzeichnis eines benutzerspezifischen Speichers des zweiten Benutzers erzeugt. Der zweite Benutzer kann zum Beispiel einen zweiten Thin Client verwenden. Der zweite Thin Client betreibt einen zweiten virtuellen Arbeitsplatz, der grafische Verweise von Elementen eines lokalen Dateiverzeichnisbaums anzeigt, der von dem zweiten Benutzer angegeben wurde. In diesem Fall wird die Referenzanzahl aktualisiert.If the second write request has been received from a second user, with the other user making a write request for a file that has already been stored by the first user, a pointer will be added to the existing file in the shared memory 113 shows generated in the local directory of a user-specific memory of the second user. For example, the second user may use a second thin client. The second thin client operates a second virtual workstation that displays graphical references of elements of a local file tree indicated by the second user. In this case, the reference number is updated.

Falls die zweite Dateikennung nicht mit einer beliebigen der ersten Dateikennungen identisch ist, erzeugt das Speicherbereich-Optimierungsprogramm 109 zuerst eine Zugriffssteuerungsliste und/oder eine Referenzanzahl für die angegebene Datei und fügt die Benutzerkennung der Zugriffssteuerungsliste hinzu und/oder erhöht die Referenzanzahl. Die Zugriffssteuerungsliste und die Referenzanzahl werden dann in der Metadaten-Ablage 111 gespeichert. Als Nächstes speichert das Speicherbereich-Optimierungsprogramm 109 im Schritt 207 die angegebene Datei, die zu der zweiten Dateikennung gehört, in der gemeinschaftlich genutzten Speicherkapazität 113 und erzeugt einen neuen Zeiger auf die angegebene Datei in dem benutzerspezifischen Speicher, der das lokale Dateisystem des virtuellen Arbeitsplatzes aufweist, das von dem Benutzer gewählt wurde. Die zweite Kennung wird dann als eine weitere erste Kennung gespeichert.If the second file identifier is not identical to any of the first file identifiers, the memory space optimizer generates 109 First, an ACL and / or reference count for the specified file and add the user ID to the ACL and / or increase the reference count. The access control list and the reference count will then be in the metadata store 111 saved. Next, the memory space optimizer saves 109 in step 207 the specified file, which belongs to the second file identifier, in the shared memory capacity 113 and creates a new pointer to the specified file in the user-specified memory that has the local file system of the virtual workstation selected by the user. The second identifier is then stored as another first identifier.

Es gibt einen anderen Anwendungsfall, in dem der Benutzer eine Löschung einer der zuvor in der gemeinschaftlich genutzten Speicherkapazität gespeicherten Dateien anfordert. In diesem Fall wird die Benutzerkennung dieses Benutzers aus der Zugriffssteuerungsliste dieser Datei entfernt, und die Referenzanzahl dieser Datei wird verringert.There is another use case where the user requests deletion of one of the files previously stored in the shared storage capacity. In this case, this user's user ID is removed from the access control list of this file, and the reference count of this file is reduced.

3 zeigt eine virtuelle Arbeitsplatzumgebung, die eine Server-Verarbeitungseinheit 120 aufweist, welche mit einer Client-Verarbeitungseinheit, z. B. einem Thin Client 123.1, über ein Netzwerk 103, z. B. das Internet oder ein Intranet, verbunden ist. Der Thin Client weist einen Prozessor 304 und einen Arbeitsspeicher 303 auf. Der Arbeitsspeicher weist Benutzerdaten und Programmbefehle eines virtuellen Arbeitsplatzes 310 auf, der über das Netzwerk 103 von der Verwaltungseinheit 105 für eine virtuelle Speicherinfrastruktur, die von dem Server 120 betrieben wird, bereitgestellt wurde. Der virtuelle Arbeitsplatz 310 ist eine Instanz eines Abbilds 301 einer virtuellen Maschine und kann eine grafische Benutzeroberfläche 302 zur Verfügung stellen, die dem Benutzer 320 des Thin Client 123.1 auf einem Bildschirm des Thin Client angezeigt wird. 3 shows a virtual desktop environment that is a server processing unit 120 which communicates with a client processing unit, e.g. A thin client 123.1 , over a network 103 , z. As the Internet or an intranet connected. The thin client has a processor 304 and a memory 303 on. The main memory has user data and program instructions of a virtual workstation 310 on, over the network 103 from the administrative unit 105 for a virtual storage infrastructure used by the server 120 operated, was provided. The virtual workstation 310 is an instance of an image 301 a virtual machine and can be a graphical user interface 302 make available to the user 320 of the thin client 123.1 is displayed on a screen of the thin client.

Die grafische Benutzeroberfläche, die dem Benutzer 320 angezeigt wird, kann Elemente einer grafischen Benutzeroberfläche (GUI-Elemente) aufweisen, die Dateizeiger darstellen, welche im Speichermedium 311 gespeichert werden.The graphical user interface to the user 320 is displayed may have elements of a graphical user interface (GUI elements) that represent file pointers which are stored in the storage medium 311 get saved.

Das Speichermedium 311 ist zu Betriebszwecken mit dem Server 120 verbunden und kann eine gemeinschaftlich genutzte Speicherkapazität 113 und einen oder mehrere benutzerspezifische Speicher (user-private storages (UPS)) 316, 317 aufweisen.The storage medium 311 is for operational purposes with the server 120 connected and may have a shared storage capacity 113 and one or more user-private storages (UPS) 316 . 317 exhibit.

Die gemeinschaftlich genutzte Speicherkapazität 113 kann eine oder mehrere Dateien 313, 308, 321 aufweisen. Jeder der Dateien kann eine Kennung eines oder mehrerer Benutzer zugewiesen sein, die auf diese Datei zugreifen dürfen. Der Dateninhalt eines beliebigen der benutzerspezifischen Speicher weist Daten, insbesondere die Dateizeiger, auf, auf die nur von einem ganz bestimmten Benutzer zugegriffen werden kann, dem der benutzerspezifische Speicher zugeordnet ist. Der UPS 316 kann zum Beispiel dem Benutzer 320 zugeordnet sein.The shared storage capacity 113 can one or more files 313 . 308 . 321 exhibit. Each of the files may be assigned an identifier of one or more users allowed to access that file. The data content of any of the user-specific memories has data, in particular the file pointers, which can only be accessed by a specific user to whom the user-specific memory is allocated. The UPS 316 For example, the user can 320 be assigned.

Der Benutzer 320 kann einen Verzeichnisbaum erstellen und ändern, und er kann die Anforderung stellen, eine Datei an einen bestimmten Speicherort des Dateibaums zu schreiben, wobei der Pfad zu diesem Speicherort von dem Benutzer 320 über die GUI 302 angegeben worden ist.The user 320 can create and change a directory tree, and can make a request to write a file to a specific file tree location, with the path to that location being from the user 320 via the GUI 302 has been specified.

Die GUI 302 kann dem Benutzer eine grafische Darstellung der Elemente des Verzeichnisbaums und insbesondere der Dateizeiger 314 anzeigen, die auf Dateien zeigen und Dateien darstellen, welche in der gemeinschaftlich genutzten Speicherkapazität 113 gespeichert sind. Beispielsweise kann ein Symbol (icon), das dem Benutzer 320 über die GUIs 302 angezeigt wird, den Dateizeiger 314 darstellen. Das Symbol kann möglicherweise nicht von einem Symbol einer realen Datei unterschieden werden. Der Benutzer 320 hat folglich den Eindruck, dass er auf eine reale Datei 313 zugreift, die in seinem lokalen Dateiverzeichnisbaum gespeichert ist, obgleich der Benutzer 320 tatsächlich nur auf einen Dateizeiger 316 zugreift, der in seinem benutzerspezifischen Speicher 316 gespeichert ist, wobei der Zeiger auf die Datei 313 in der gemeinschaftlich genutzten Speicherkapazität 113 zeigt.The GUI 302 can give the user a graphical representation of the elements of the directory tree and in particular the file pointer 314 which point to files and represent files that are in shared storage 113 are stored. For example, a symbol (icon) that the user 320 about the GUIs 302 is displayed, the file pointer 314 represent. The symbol may not be distinguishable from a symbol of a real file. The user 320 thus has the impression that he is on a real file 313 although stored in its local file tree, although the user 320 actually only on a file pointer 316 accessing that in its user-specific memory 316 is stored, with the pointer to the file 313 in the shared storage capacity 113 shows.

Der benutzerspezifische Speicher 317 kann einem anderen Benutzer zugeordnet sein. Der UPS 317 kann auch einen Zeiger 315 aufweisen, der auf die Datei 313 zeigt. Der Datei 313 kann eine Zugriffsliste zugewiesen sein, welche die Benutzerkennungen der Benutzer aufweist, die dem UPS 316 und dem UPS 317 zugewiesen sind.The user-specific memory 317 can be assigned to another user. The UPS 317 can also be a pointer 315 that point to the file 313 shows. The file 313 may be assigned an access list containing the user IDs of the users associated with the UPS 316 and the UPS 317 are assigned.

BezugszeichenlisteLIST OF REFERENCE NUMBERS

100100
Systemsystem
101101
Grafische BenutzeroberflächeGraphical user interface
103103
Netzwerknetwork
105105
Verwaltungseinheit für eine virtuelle SpeicherinfrastrukturManagement unit for a virtual storage infrastructure
107107
APIAPI
109109
Speicherbereich-OptimierungsprogrammStorage area optimization program
111111
Metadaten-AblageMetadata storage
113113
gemeinschaftlich genutzte Speicherkapazitätshared storage capacity
117117
gespeicherte Dateisaved file
201–209201-209
Schrittesteps
123123
Thin ClientThin client
301301
Abbild der virtuellen MaschineImage of the virtual machine
302302
GUIGUI
303303
SpeicherStorage
304304
Prozessorprocessor
305305
Prozessorprocessor
308308
Dateifile
309309
SpeicherStorage
310310
virtueller Arbeitsplatzvirtual workplace
311311
Speichermediumstorage medium
313313
Dateifile
314314
Zeiger auf DateiPointer to file
315315
Zeiger auf DateiPointer to file
316316
benutzerspezifischer Speicheruser-specific memory
317317
benutzerspezifischer Speicheruser-specific memory
320320
Benutzeruser
321321
Dateifile
322322
virtuelle Arbeitsplatzumgebungvirtual workplace environment

Claims (15)

Verfahren zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung, wobei die virtuelle Arbeitsplatzumgebung (322) eine gemeinschaftlich genutzte Speicherkapazität (113) verwaltet, wobei die gemeinschaftlich genutzte Speicherkapazität (113) dazu dient, eine oder mehrere erste Dateien (117, 313, 314, 321) zu speichern, wobei jede gespeicherte erste Datei (117, 313, 314, 321) einer jeweiligen eindeutigen ersten Dateikennung zugeordnet wird, wobei die virtuelle Arbeitsplatzumgebung einer Verarbeitungseinheit (123) eines Benutzers (320) mindestens einen virtuellen Arbeitsplatz (310) bereitstellt, wobei das Verfahren aufweist: – Empfangen (201) einer ersten Schreibanforderung, eine in der Anforderung angegebene zweite Datei zu schreiben; – Festlegen (203) einer zweiten Dateikennung der angegebenen zweiten Datei; – Vergleichen (205) der zweiten Dateikennung mit der ersten Dateikennung einer beliebigen ersten Datei, die in der gemeinschaftlich genutzten Speicherkapazität gespeichert wird; – wenn die zweite Dateikennung mit einer der ersten Dateikennungen identisch ist, Erzeugen (209) eines Zeigers (314, 315) auf die gespeicherte erste Datei, die dieser ersten Dateikennung zugeordnet ist; und – wenn die zweite Dateikennung nicht mit einer beliebigen der ersten Dateikennungen identisch ist, Speichern (207) der angegebenen Datei, die der zweiten Dateikennung zugeordnet ist, in der gemeinschaftlich genutzten Speicherkapazität (113), wobei die zweite Dateikennung als eine weitere erste Dateikennung gespeichert wird und die zweite Datei als eine weitere erste Datei gespeichert wird, und Erzeugen des Zeigers (314, 315) auf die gespeicherte weitere erste Datei.Method for optimizing memory allocation in a virtual workplace environment, wherein the virtual desktop environment ( 322 ) a shared storage capacity ( 113 ), whereby the shared storage capacity ( 113 ) serves one or more first files ( 117 . 313 . 314 . 321 ), each saved first file ( 117 . 313 . 314 . 321 ) is associated with a respective unique first file identifier, wherein the virtual workstation environment of a processing unit ( 123 ) of a user ( 320 ) at least one virtual workstation ( 310 ), the method comprising: - receiving ( 201 ) a first write request to write a second file specified in the request; - Establish ( 203 ) a second file identifier of the specified second file; - To compare ( 205 ) the second file identifier with the first file identifier of any first file, which is stored in the shared storage capacity; If the second file identifier is identical to one of the first file IDs, generate ( 209 ) of a pointer ( 314 . 315 ) to the stored first file associated with that first file identifier; and if the second file identifier is not identical to any of the first file identifiers, then storing ( 207 ) of the specified file associated with the second file identifier in the shared memory capacity ( 113 ), wherein the second file identifier is stored as another first file identifier and the second file is stored as another first file, and generating the pointer ( 314 . 315 ) on the saved further first file. Verfahren nach Anspruch 1, wobei die erste Schreibanforderung von dem mindestens einen virtuellen Arbeitsplatz (310) empfangen wird und wobei der Zeiger in einem lokalen Dateisystem von dem mindestens einen virtuellen Arbeitsplatz (310) erzeugt wird.The method of claim 1, wherein the first write request from the at least one virtual workstation ( 310 ) and the pointer in a local file system from the at least one virtual workstation ( 310 ) is produced. Verfahren nach Anspruch 2, des Weiteren aufweisend: – Empfangen einer Angabe eines Pfades in dem lokalen Dateisystem von dem mindestens einen virtuellen Arbeitsplatz (310) des Benutzers des mindestens einen virtuellen Arbeitsplatzes, wobei der Zeiger an einem Speicherort in dem lokalen Dateisystem erzeugt wird, der von dem angegebenen Pfad angegeben wird.The method of claim 2, further comprising: receiving an indication of a path in the local file system from the at least one virtual workstation; 310 ) of the user of the at least one virtual workstation, the pointer being generated at a location in the local file system specified by the specified path. Verfahren nach einem der Ansprüche 1 bis 3, wobei die erste und/oder die zweite Dateikennung eine Nummer einer zyklischen Redundanzprüfung der Datei, eine Hash-Nummer, SHA-1 oder MD5, der jeweiligen, zu der Kennung gehörenden Datei ist.Method according to one of claims 1 to 3, wherein the first and / or the second file identifier is a number of a cyclic redundancy check of the file, a hash number, SHA-1 or MD5, the respective file belonging to the identifier. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 4, des Weiteren aufweisend: – nach der Speicherung von beliebigen der ersten Dateien und nach der Speicherung der zweiten Datei in der gemeinschaftlich genutzten Speicherkapazität (113) Zuordnen der ersten und/oder der zweiten Datei zu einer Zugriffssteuerungsliste, die Benutzerkennungen von allen Benutzern aufweist, die Zugriff auf die gespeicherte erste oder zweite Datei haben und/oder – nach der Speicherung von beliebigen der ersten Dateien und nach der Speicherung der zweiten Datei in der gemeinschaftlich genutzten Speicherkapazität (113) Zuordnen der ersten oder der zweiten Datei zu einer Referenzanzahl, welche die Anzahl der Benutzer darstellt, die Zugriff auf die gespeicherte erste oder zweite Datei haben.The method of any preceding claim 1 to 4, further comprising: after storing any of the first files and after storing the second file in the shared memory capacity ( 113 Associating the first and / or the second file with an access control list having user IDs of all users having access to the stored first or second file and / or after storing any of the first files and storing the second file in the shared storage capacity ( 113 Assigning the first or second file to a reference number representing the number of users having access to the stored first or second file. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 5, des Weiteren aufweisend: – Empfangen einer Löschanforderung von dem Benutzer, wobei die Löschanforderung eine der ersten Dateien angibt; – Entfernen der Benutzerkennung dieses Benutzers aus der Zugriffssteuerungsliste von derjenigen Datei, die in der Löschanforderung angegeben ist.The method of any one of claims 1 to 5, further comprising: Receiving a deletion request from the user, the deletion request indicating one of the first files; - Remove the user ID of this user from the access control list of the file specified in the delete request. Verfahren nach einem der Ansprüche 5 bis 6, wobei der Schritt des Erzeugens des Zeigers des Weiteren den Schritt des Hinzufügens der Benutzerkennung zu der Zugriffssteuerungsliste und/oder das Erhöhen der Referenzanzahl aufweist.The method of any one of claims 5 to 6, wherein the step of generating the pointer further comprises the step of adding the user identifier to the access control list and / or increasing the reference number. Verfahren nach einem der Ansprüche 5 bis 6, wobei der Schritt des Speicherns der angegebenen zweiten Datei die Schritte aufweist: – Erzeugen der Zugriffssteuerungsliste und/oder der Referenzanzahl für die angegebene zweite Datei; und – Hinzufügen der Benutzerkennung zu der Zugriffssteuerungsliste und/oder Erhöhen der Referenzanzahl.The method of any of claims 5 to 6, wherein the step of storing the specified second file comprises the steps of: Generating the access control list and / or the reference number for the specified second file; and Add the user ID to the access control list and / or increase the reference count. Verfahren nach einem der Ansprüche 1 bis 8, des Weiteren aufweisend: – Empfangen einer zweiten Schreibanforderung, die zweite Datei zu schreiben; – Erzeugen eines zweiten Zeigers auf die vorhandene erste Datei, die als Reaktion auf eine erste Schreibanforderung gespeichert worden ist, wobei der zweite Zeiger in dem lokalen Dateisystem des virtuellen Arbeitsplatzes (310) erzeugt wird.The method of one of claims 1 to 8, further comprising: receiving a second write request to write the second file; Generating a second pointer to the existing first file which has been stored in response to a first write request, the second pointer in the local file system of the virtual workstation ( 310 ) is produced. Verfahren nach Anspruch 9, wobei in dem Fall, in dem die erste Schreibanforderung und die zweite Schreibanforderung von demselben Benutzer empfangen werden, die Referenzanzahl unverändert bleibt.The method of claim 9, wherein in the case where the first write request and the second write request are received from the same user, the reference number remains unchanged. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 9, wobei der virtuelle Arbeitsplatz (310) von der virtuellen Arbeitsplatzumgebung als eine Instanz eines Abbilds (301) einer virtuellen Maschine bereitgestellt wird, wobei der virtuelle Arbeitsplatz eine grafische Oberfläche aufweist, die dem Benutzer über einen Bildschirm der Verarbeitungseinheit des Benutzers angezeigt wird.Method according to one of the preceding claims 1 to 9, wherein the virtual workstation ( 310 ) of the virtual workplace environment as an instance of an image ( 301 ) is provided to a virtual machine, the virtual workstation having a graphical user interface displayed to the user via a screen of the user's processing unit. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Benutzer ein Benutzer aus einer Vielzahl von Benutzern ist, denen jeweils eine benutzerspezifische Verarbeitungseinheit (213.1, 123.2, 123.3) zugewiesen ist, wobei der virtuelle Arbeitsplatz ein virtueller Arbeitsplatz aus einer Vielzahl von virtuellen Arbeitsplätzen ist, wobei jeder der Vielzahl der virtuellen Arbeitsplätze von der virtuellen Arbeitsplatzumgebung einer der Verarbeitungseinheiten bereitgestellt wird, wobei ein Server (120), der die virtuelle Arbeitsplatzumgebung (322) beherbergt, über ein Netzwerk mit jeder der benutzerspezifischen Verarbeitungseinheiten verbunden ist und wobei die Schritte des Verfahrens nach Anspruch 1 von einer Speicherinfrastruktur-Verwaltungseinheit (105) ausgeführt werden, die auf dem Server (120) läuft.Method according to one of the preceding claims, wherein the user is a user of a plurality of users, each of whom has a user-specific processing unit ( 213.1 . 123.2 . 123.3 ), wherein the virtual workstation is a virtual workstation from a plurality of virtual workstations, wherein each of the plurality of virtual workstations is provided by the virtual workspace environment of one of the processing units, wherein a server ( 120 ), which is the virtual workplace environment ( 322 ), via a network with each of the user-specific ones Processing units is connected and wherein the steps of the method according to claim 1 of a storage infrastructure management unit ( 105 ) running on the server ( 120 ) running. Rechnerprogrammprodukt, das Befehle eines Programmiercodes aufweist, um die Schritte des Verfahrens nach einem der Ansprüche 1 bis 12 durchzuführen, wenn das Programm auf einem Prozessor (305) ausgeführt wird.A computer program product having instructions of a programming code to perform the steps of the method of any of claims 1 to 12 when the program is run on a processor ( 305 ) is performed. Rechnersystem zur Optimierung der Speicherzuordnung in einer virtuellen Arbeitsplatzumgebung, wobei die virtuelle Arbeitsplatzumgebung (322) eine gemeinschaftlich genutzte Speicherkapazität (113) verwaltet, wobei die gemeinschaftlich genutzte Speicherkapazität (113) dazu dient, eine oder mehrere erste Dateien (117, 313, 308, 321) zu speichern, wobei jede gespeicherte erste Datei (117) einer jeweiligen eindeutigen ersten Dateikennung zugeordnet wird, wobei die virtuelle Arbeitsplatzumgebung einer Verarbeitungseinheit (123) eines Benutzers (320) mindestens einen virtuellen Arbeitsplatz (310) bereitstellt, wobei das Rechnersystem aufweist: – die gemeinschaftlich genutzte Speicherkapazität (113); und – eine Server-Verarbeitungseinheit (120), die eine Verwaltungseinheit (105) für eine virtuelle Speicherinfrastruktur beherbergt, wobei die Verwaltungseinheit (105) für die virtuelle Speicherinfrastruktur so ausgelegt ist, dass sie: – eine erste Schreibanforderung, eine in der Anforderung angegebene zweite Datei zu schreiben, empfängt (201); – eine zweite Dateikennung der angegebenen Datei festlegt (203); – die zweite Dateikennung mit der ersten Dateikennung einer beliebigen der ersten Dateien vergleicht (205), die in der gemeinschaftlich genutzten Speicherkapazität gespeichert werden; – wenn die zweite Dateikennung mit einer der ersten Dateikennungen identisch ist, einen Zeiger auf die gespeicherte erste Datei erzeugt (209), die dieser ersten Dateikennung zugeordnet ist; und – wenn die zweite Dateikennung nicht mit einer beliebigen der ersten Dateikennungen identisch ist, die angegebene zweite Datei, die der zweiten Dateikennung zugeordnet ist, in der gemeinschaftlich genutzten Speicherkapazität speichert (207), wobei die zweite Dateikennung als eine weitere erste Dateikennung gespeichert wird und die zweite Datei als eine weitere erste Datei gespeichert wird, und einen Zeiger auf die gespeicherte weitere erste Datei erzeugt.Computer system for optimizing memory allocation in a virtual workplace environment, whereby the virtual desktop environment ( 322 ) a shared storage capacity ( 113 ), whereby the shared storage capacity ( 113 ) serves one or more first files ( 117 . 313 . 308 . 321 ), each saved first file ( 117 ) is associated with a respective unique first file identifier, wherein the virtual workstation environment of a processing unit ( 123 ) of a user ( 320 ) at least one virtual workstation ( 310 ), the computer system comprising: - the shared memory capacity ( 113 ); and a server processing unit ( 120 ), which is an administrative unit ( 105 ) for a virtual storage infrastructure, the administrative unit ( 105 ) for the virtual storage infrastructure is arranged to: receive a first write request to write a second file specified in the request ( 201 ); - specifies a second file identifier of the specified file ( 203 ); - compares the second file identifier with the first file identifier of any of the first files ( 205 ) stored in the shared storage capacity; If the second file identifier is identical to one of the first file identifiers, generates a pointer to the stored first file ( 209 ) associated with this first file identifier; and if the second file identifier is not identical to any of the first file identifiers, stores the specified second file associated with the second file identifier in the shared memory capacity ( 207 ), wherein the second file identifier is stored as a further first file identifier and the second file is stored as another first file, and generates a pointer to the stored further first file. Rechnersystem nach Anspruch 14, wobei die Client-Verarbeitungseinheit dazu dient, den virtuellen Arbeitsplatz (310) anzufordern, der dem Benutzer von der virtuellen Arbeitsplatzumgebung (322) zugeordnet wird, wobei die Client-Verarbeitungseinheit über ein Netzwerk mit der Server-Verarbeitungseinheit verbunden ist.A computer system as claimed in claim 14, wherein the client processing unit is for servicing the virtual workstation ( 310 ) requesting the user from the virtual workspace environment ( 322 ), wherein the client processing unit is connected to the server processing unit via a network.
DE102012221813A 2011-12-13 2012-11-29 METHOD FOR OPTIMIZING THE MEMORY ASSIGNMENT IN A VIRTUAL WORKPLACE ENVIRONMENT Pending DE102012221813A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP11193141.6 2011-12-13
EP11193141 2011-12-13

Publications (1)

Publication Number Publication Date
DE102012221813A1 true DE102012221813A1 (en) 2013-06-13

Family

ID=48464944

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012221813A Pending DE102012221813A1 (en) 2011-12-13 2012-11-29 METHOD FOR OPTIMIZING THE MEMORY ASSIGNMENT IN A VIRTUAL WORKPLACE ENVIRONMENT

Country Status (4)

Country Link
US (1) US9235589B2 (en)
CN (1) CN103198090B (en)
DE (1) DE102012221813A1 (en)
GB (1) GB2498626B (en)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2014122733A1 (en) * 2013-02-06 2017-01-26 株式会社日立製作所 Computer, data access management method and recording medium
EP3140734B1 (en) 2014-05-09 2020-04-08 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US9823842B2 (en) 2014-05-12 2017-11-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US20160048529A1 (en) * 2014-08-13 2016-02-18 Netapp Inc. Coalescing storage operations
CN105279258B (en) * 2015-10-21 2020-01-14 Tcl集团股份有限公司 File storage method and system with balanced distribution
JP6609471B2 (en) * 2015-12-25 2019-11-20 Dynabook株式会社 Electronic device, method and program
US10831465B2 (en) 2016-02-12 2020-11-10 Nutanix, Inc. Virtualized file server distribution across clusters
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
KR102569734B1 (en) * 2016-10-05 2023-08-25 삼성전자주식회사 Electronic apparatus and the control method thereof
CN106502927B (en) * 2016-10-26 2019-08-13 北京德普信科技有限公司 Trusted end-user calculating and data inactivity security system and method
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US11568073B2 (en) * 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US20180293392A1 (en) * 2017-04-05 2018-10-11 Iswind Digital Engineering Inc. Method and system for selecting a communication interface
US10866963B2 (en) * 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
CN109582642A (en) * 2018-11-08 2019-04-05 网宿科技股份有限公司 File memory method, delet method, server and storage medium
CN116010035B (en) * 2019-06-28 2024-06-25 亚马逊技术股份有限公司 Virtualized block storage server in cloud provider underlying extensions
CN111290817B (en) * 2020-01-21 2024-05-14 李岗 Data loading method and system of desktop system
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US12131192B2 (en) 2021-03-18 2024-10-29 Nutanix, Inc. Scope-based distributed lock infrastructure for virtualized file server
US20230066137A1 (en) 2021-08-19 2023-03-02 Nutanix, Inc. User interfaces for disaster recovery of distributed file servers
US12117972B2 (en) 2021-08-19 2024-10-15 Nutanix, Inc. File server managers and systems for managing virtualized file servers

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5813008A (en) 1996-07-12 1998-09-22 Microsoft Corporation Single instance storage of information
US6810398B2 (en) 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US7584228B1 (en) 2001-07-18 2009-09-01 Swsoft Holdings, Ltd. System and method for duplication of virtual private server files
US7024427B2 (en) 2001-12-19 2006-04-04 Emc Corporation Virtual file system
US7783665B1 (en) * 2002-03-27 2010-08-24 Parallels Holdings, Ltd. Effective file-sharing among virtual environments
US7293154B1 (en) 2004-11-18 2007-11-06 Symantec Operating Corporation System and method for optimizing storage operations by operating only on mapped blocks
JP2009506399A (en) * 2005-06-24 2009-02-12 シンクソート インコーポレイテッド System and method for virtualizing backup images
US8209506B2 (en) 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
CN102880626B (en) * 2007-09-05 2016-02-10 伊姆西公司 Deduplication in virtualized server and virtualized storage environments
US20090204650A1 (en) 2007-11-15 2009-08-13 Attune Systems, Inc. File Deduplication using Copy-on-Write Storage Tiers
WO2010045262A1 (en) 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US8191065B2 (en) * 2009-04-06 2012-05-29 Red Hat Israel, Ltd. Managing virtual machine images
US9087066B2 (en) 2009-04-24 2015-07-21 Swish Data Corporation Virtual disk from network shares and file servers
EP2433217B1 (en) 2009-05-19 2019-10-16 VMware, Inc. Shortcut input/output in virtual machine systems
US8516597B1 (en) * 2010-12-02 2013-08-20 Symantec Corporation Method to calculate a risk score of a folder that has been scanned for confidential information
US8732401B2 (en) * 2011-07-07 2014-05-20 Atlantis Computing, Inc. Method and apparatus for cache replacement using a catalog

Also Published As

Publication number Publication date
GB2498626B (en) 2015-02-18
US20130152085A1 (en) 2013-06-13
CN103198090B (en) 2016-12-21
CN103198090A (en) 2013-07-10
GB2498626A (en) 2013-07-24
US9235589B2 (en) 2016-01-12

Similar Documents

Publication Publication Date Title
DE102012221813A1 (en) METHOD FOR OPTIMIZING THE MEMORY ASSIGNMENT IN A VIRTUAL WORKPLACE ENVIRONMENT
DE112011102076B4 (en) Reorder access to reduce total seek time on tape media
DE112012005037B4 (en) Manage redundant immutable files using deduplications in storage clouds
DE102013215535B4 (en) BACKUP OR RECOVERY OF DATA USING MAIN MEMORY AND NON-VOLATILE STORAGE MEDIA
DE112010004969B4 (en) Hybrid storage subsystem and method of managing one
DE112012005032B4 (en) Removing data remanence in deduplicated storage clouds
DE69803924T2 (en) MAPPEDVIRTUELSYSTEM (MVS) DEVICE BACKUP FOR A DATA PROCESSOR USING A DATA STORAGE SUBSYSTEM SNAPSHOT POSSIBILITY
DE102012220201B4 (en) Process and system for image implementation in a cloud environment
DE102013208930B4 (en) Grouping of entries in a deduplication index
DE202019005484U1 (en) Incremental feature development and workload recording in database systems
DE102012218329B4 (en) Managing failover operations on a cluster of computers
DE102013204186B4 (en) Determining priorities for cached objects to order the broadcast of changes to cached objects based on measured network bandwidth
DE102013215009A1 (en) Method and system for optimizing data transmission
DE202009019139U1 (en) Asynchronous distributed deduplication for replicated content-addressed storage clusters
DE112020000694T5 (en) PRODUCTION AND EXECUTION OF SECURE CONTAINERS
DE202012013432U1 (en) Storing data on storage nodes
DE112012004318T5 (en) Use a virtual disk as a hot spare for a RAID group
DE112018003524T5 (en) DYNAMIC DATA MOVEMENT USING LIBRARIES ON A CLOUD BASE
DE102010001339A1 (en) Manage requirements of operating systems that run in virtual machines
DE102013222384A1 (en) Context-based security screening for accessing data
DE112013006646B4 (en) Computer, system and computer-readable storage medium for identifying workload and sizing buffers for volume replication purposes
DE112012001162T5 (en) Defragmentation of datastore pools
DE102018204427A1 (en) Simulate multiple storage devices with a single storage device coupled to a computing device
DE112018005404T5 (en) SIMPLIFY ACCESSING A STORAGE'S LOCALITY DOMAIN INFORMATION
DE112018002955T5 (en) COGNITIVE FILE AND OBJECT MANAGEMENT FOR DISTRIBUTED STORAGE ENVIRONMENTS

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0012000000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0012060000

R016 Response to examination communication
R016 Response to examination communication
R084 Declaration of willingness to licence