English:
[0001] In some cases, It is desirable for an electronic device to run multiple operating systems. For example, some software programs may be limited to operating on a particular operating system and other software programs may be limited to operating on a different operating system. Separate operating environments may be desirable to separate functions, such as running two of the same type of operating systems where each is used for a different purpose. For example, one operating system may be used for work use and another may be used for personal use. A software implementation of an electronic device, such as a virtual machine, may be used to run an operating system. To allow multiple operating systems to run on an electronic device, muitipie virtual machines may execute on the electronic device where each virtual machine is associated with a different operating system.
[0002] in the accompanying drawings, like numerals refer to like components or blocks. The drawings describe example embodiments. Steps shown in the drawings may be performed in any order. The following detailed description references the drawings, wherein:
[0003] Figure 1 is a block diagram illustrating one example of a computing system.
[0004] Figure 2 is a block diagram illustrating one example of a virtual machine configuration.
[0005] Figure 3 is a flow chart illustrating one example of a method for managing shared data using a virtual machine.
[0006] Figure 4 is a block diagram illustrating one example of a computing system.
[0007] Figure 5 is a block diagram illustrating one example of a computing system.
[0009] Virtual machines may be used to allow an electronic device to run multiple operating systems. For example, a processor may run a first virtual machine to run a first operating system environment and a second virtual machine to run a second operating system environment, such as a different operating system or a separate implementation of the first operating system. In some implementations, each virtual machine may have its own storage device or portion of a storage device allocated to it for storing data related to the particular virtual machine. In some cases, it may be desirable for data to be shared across multiple virtual machines. For example, a user may have music downloading software on a virtual machine for personal use on an electronic device, and the user may have a second virtual machine on the electronic device for work use. The user may want to download music from the virtual machine for personal use, but may want the downloaded music to be available on both the virtual machine dedicated to personal use and the virtual machine dedicated to work use.
[0010] Some virtual machine implementations allow data to be shared between isolated virtual machines on an electronic device. For example, a data storage associated with a first virtual machine may be mapped to a separate data storage or portion of a data storage associated with a second virtual machine. Such a system may involve complicated procedures to synchronize the data between the separate storages, in addition, because multiple virtual machines are accessing the data, any data processing, such as encryption or backup functions, may involve further synchronization. For example, if one of the virtual machines encrypts stored data, the decryption key maybe sent to the other virtual machine for use when accessing the encrypted data. In some cases, data is shared between virtual machines by storing data in a shared data repository, such as in a remote repository accessible via a network or on a shared storage associated with the electronic device, such as a shared Universal Serial Bus (USB) drive. Again, because neither virtual machine may be in charge of the data, the configuration may involve complex synchronization for determining when and how data processing functions should be conducted as well as which virtual machine should perform each process.
[0011] in one embodiment, a management virtual machine stores and manages shared data for other virtual machines running on an electronic device. For example, the management virtual machine may store data received from a second virtual machine and may retrieve the data, such as to send to the second virtual machine or to a third virtual machine executing on the electronic device. The management virtual machine may manage stored data such that it is managed independent of virtual machines storing or accessing the data. For example, the management virtual machine may perform data processing services, such as synchronization, encryption, and data backup, such that other virtual machines do not request these processes and are not aware of these processes being performed.
[0012] Using a management virtual machine to manage data allows data management functions to be separated from the individual virtual machines communicating with the management virtual machine to store and access data. By separating both the stored data and the data processing associated with the stored data from other virtual machines, such a system allows for more efficient data management. For example, stored data may be backed up by the management virtual machine rather than backed up by multiple virtual machines. Such a system may allow data to be managed without communication between the virtual machines to synchronize the processes, such as communication related to which virtual machine should perform a process and whether it was performed. Managing the data separately from each of the individual virtual machine makes the stored data more transportable to different platforms because the data may in some case be stored in a single location. The management virtual machine itself may be moved to a different electronic device allowing the data management functions to be moved with the data. In addition, consolidating data management functions to a management virtual machine may make it easier to update data management policies. For example, to update where data is backed up, the management virtual machine may be updated without also updating the way other virtual machines handle the data.
[0013] Figure 1 is a block diagram illustrating one example of a computing system 100. The computing system 100 may include, for example, a storage 104, a processor 108, and a machine-readable storage medium 108. The storage 104 may be any suitable storage, such as a volatile or non-volatile memory. The storage 104 may be, for exampie, a hard disk drive, random access memory, or a flash drive. The storage 104 may be used to store data received from a virtual machine, and data may be retrieved from the storage 104 to be sent to a virtual machine.
[0014] The machine-readable storage medium 108 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions or other data {e.g., a hard disk drive, random access memory, flash memory, etc.). in one implementation, the machine-readable storage medium 108 and the storage 104 are combined into the same storage. The machine-readable storage medium 108 may include instructions executable by the processor 106, such as instructions associated with virtual machines. The machine-readable storage medium 108 may include instructions for any number of virtual machines. For example, the machine-readable storage medium 108 may include instructions associated with a management virtual machine 1 10 and a second virtual machine 1 12. In one implementation, the machine- readable storage medium 108 includes instructions for additional virtual machines. For example, the electronic device 102 may run a first operating system by executing instructions associated with the second virtual machine 1 12 and a second operating system by executing instructions associated with a different virtual machine.
[0015] The management virtual machine 1 10 and the second virtual machine 1 12 may be any suitable virtual appliances. In one implementation, instructions for the second virtual machine 1 12 and the management virtual machine 1 10 may both be executed. For example, a user may interact with the second virtual machine 1 12, and the management virtual machine 1 10 may execute in the background to manage data for the second virtual machine 1 12. in one implementation, the management virtual machine 1 10 performs other functions in addition to storing, accessing, and managing data stored in the storage 104.
[0016] The machine-readable storage medium 108 may include instructions associated with the management virtual machine 1 10 to manage data. For example, the machine-readable storage medium 108 may include instructions associated with the management virtual machine 1 10 to receive data from another virtual machine executing on the processor 106, store the data, and control the stored data independent of other virtual machines executing on the processor 106, where controlling the stored data comprises conducting data processing activities on the data without awareness of the other virtual machines executing on the processor 106. The management virtual machine 1 10 may further include instructions access the stored data and transmit the accessed data to another virtual machine executing on the processor 106.
[0017] The processor 106 may be any suitable processor. For example, the processor 106 may be one or more central processing units (CPUs), semiconductor- based microprocessors, and/or other devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 108. The processor 106 may fetch, decode, and execute instructions stored in the machine-readable storage medium 108 to implement the functionality described in detail below. As an alternative or in addition to fetching, decoding, and executing instructions, the processor 106 may include one or more integrated circuits (ICs) or other electronic circuits that comprise a plurality of electronic components for performing the functionality described below. In one implementation, the processor 106 is capable of running multiple virtual machines. For example, the processor 106 may boot first operating system using the second virtual machine 1 12. The processor 106 may terminate the first operating system and boot a second operating system using another virtual machine. In one implementation, the processor 106 executes the management virtual machine 1 10 to manage data while another virtual machine, such as the second virtual machine 112, is executing.
[0018] Figure 2 is a block diagram illustrating one example of a virtuai machine configuration 200. The virtuai machine configuration 200 may include the management virtual machine 1 10 communicating with the storage 104. The management virtuai machine 1 10 may also communicate with other virtuai machines, such as the second virtual machine 1 12 and a third virtual machine 202, to store data for and send data to the other virtual machines executing on the processor 106. The management virtuai machine 1 10 may communicate with any number of virtuai machines running on the processor 106. In some cases, the management virtuai machine 1 10 manages data for a subset of virtual machines capable of executing on the processor 106. The processor 106 may run multiple management virtual machines where each management virtual machine manages data for a subset of other virtuai machines. In one implementation, the second virtual machine 1 12 and the third virtuai machine 202 may store shared information using the management virtual machine 1 10 or may share information to be available to the particular virtuai machine. For example, a user may be presented an option to store information in a shared storage or in a storage or portion of a storage dedicated to a particular virtual machine operating system.
[0019] Figure 3 is flowchart illustrating one example of a method 300 for managing shared data using a virtuai machine. The management virtuai machine 1 10 may store and retrieve data and manage stored data. For example, the management virtual machine 1 10 may receive data from the third virtual machine 202 for storage in the storage 104. The second virtual machine 1 12 or the third virtual machine 202 may then communicate with the management virtual machine 1 10 to retrieve the stored data from the storage 104.
[0020] in some cases, the management virtual machine 1 10 may manage the data in the storage 104. For example, the management virtual machine 1 10 may perform data processing services, such as encrypting, synchronizing, or backing up data stored in the storage 104. The management virtual machine 1 10 may manage the data without the knowledge of the second virtual machine 1 12 and the third virtuai machine
[0021] Beginning at block 302 and moving to block 304, the management virtual machine 1 10 receives data from another virtual machine executing on the processor 108. The management virtual machine 1 10 may receive the data from any suitable virtual machine, such as the second virtual machine 1 12 or the third virtual machine 202. The management virtual machine 1 10 may receive some data from the second virtual machine 1 12 for storage and some data from the third virtual machine 202 for storage in the storage 104. The received data may be any suitable data. For example, the data may be music, video, word processing, or image files. The management virtual machine 1 10 may receive the data in any suitable manner, such as via a network or a direct communication interface.
[0022] Moving to block 306, the management virtual machine 1 10 stores the data, such as in the storage 104. The management virtual machine 1 10 may store the data in any suitable manner, in one implementation, the management virtual machine 1 10 manages the data such that other virtual machines are not aware of the location in the storage 104 where the data is stored. For example, the management virtual machine 1 10 may store a mapping to map a location where data is actually stored compared to a location where it may appear to be stored to other virtual machines. The mapping may allow the management virtual machine 1 10 to move data in the storage 104, such as to defragment data, without the knowledge of other virtual machines accessing the data.
[0023] Continuing to block 308, the management virtual machine 1 10 manages the stored data independent of other virtual machines executing on the processor 106. For example, the processor 106 may execute instructions associated with the management virtual machine 1 10 to manage stored data. Controlling the stored data may include, for example, determining where to store data and retrieve data in the storage 104. In one implementation, managing the stored data includes performing data processing services on the data without knowledge of the other virtual machines executing on the processor 106. For example, the management virtual machine 1 10 may initiate data processing services without a request from another virtual machine, and another virtual machine may be unaware of the data processing services. The data processing services may be performed at any point, such as prior to storing data in the storage 104, after retrieving data from the storage 104 to send to a virtual machine, or while other activities unrelated to data storage are being performed by another virtual machine. The management virtual machine 1 10 may conduct any suitable data processing services, such as data processing activities related to synchronizing, backing up, defragmenting, or securing data.
[0024] The management virtual machine 1 10 may perform data processing services related to securing data stored in the storage 104. For example, the management virtual machine 1 10 may manage encryption for data, such as encrypting data before storing it in the storage 104 and decrypting data after retrieving data from the storage 104 prior to sending it to another virtual machine. The management virtual machine 1 10 may maintain information about encryption and decryption keys and about which items to encrypt, in one implementation, the management virtual machine 1 10 secure erases data from the storage 104 when data is deleted to provide for greater security. For example, the second virtual machine 1 12 may send information to the management virtual machine 1 10 to delete a particular piece of data stored in the storage 104, and the management virtual machine 1 10 may determine that the data should be securely erased. The management virtual machine 1 10 may perform security scans, such as virus scans on the stored data. The management virtual machine 1 10 may perform, for example, indexing services and performance optimizations, such as read-ahead and write-back caching for data stored in and retrieved from the storage 104.
[0025] in one implementation, the management virtual machine 1 10 performs data processing services related to backing up data stored in the storage 104. For example, the management virtual machine 1 10 may determine when to backup data or a data backup location. The management virtual machine 1 10 may determine which data in the storage 104 should be backed up. The management virtual machine 1 10 may periodically back up data, for example, by sending the data via a network to a remote storage location, or may backup data after storing it in the storage 104.
[0026] in one implementation, the management virtual machine 1 10 performs data processing services related to synchronizing the data stored in the storage 104. For example, the management virtual machine 1 10 may synchronize data with a remote storage location to determine which information should be backed up. The management virtual machine 110 may synchronize data between virtual machines. For example, the management virtual machine 1 10 may receive data from a virtual machine that should not be accessible to other virtual machines or a subset of other virtual machines. The management virtual machine 1 10 may receive information indicating that data is to be deleted such that it is no longer accessible to a particular virtual machine, but remains available to other virtual machines.
[0027] in one implementation, the virtual machine 1 10 performs data processing based on a virtual machine associated with the data, such as the virtual machine that stores or retrieves the data. For example, the management virtual machine 110 may encrypt data received from a particular virtual machine, such as the second virtual machine 1 12, where data received from other virtual machines is not encrypted, or the management virtual machine may use a stronger encryption method or a proprietary encryption method on data received from a particular virtual. As another example, the management virtual machine 1 10 may use real-time indexing for data received from the second virtual machine 1 12 and no indexing for data received from the third virtual machine 202. The management virtual machine 1 10 may determine which data in the storage 104 is associated with a particular virtual machine based on, for example, which virtual machine sent the data to the management virtual machine 110 for storage.
[0028] Figure 4 is a block diagram illustrating one example of a computing system 400. The computing system 400 includes the electronic device 102 with the processor 106 and the machine-readable storage medium 108 including instructions associated with the management virtual machine 1 10, the second virtual machine 1 12, and the third virtual machine 202. The storage 104 includes data 402 associated with the second virtual machine and data 404 associated with the third virtual machine 202. The data 402 is encrypted using method A, and the data 404 is encrypted using method B.in one implementation, the management virtual machine 1 10 receives setting information related to performing data processing services and performs data processing services based on the setting. Figure 5 is a block diagram illustrating one example of a computing system 500. The computing system 500 shows the electronic device 102 with the storage 104, the processor 106, and the machine-readable storage medium 108. The storage 104 includes data processing settings 502. In one implementation, the data processing settings 502 are stored in the machine-readable storage medium 108, another storage within the electronic device 102, or a remote database that the management virtual machine 1 10 communicates with via a network. The data processing settings 502 may be received in any suitable manner. For example, the settings may be received via user input and stored, such as in the storage 104, for later retrieval by the management virtual machine 1 10. in one implementation, an administrator inputs the settings such that the settings apply to multiple users' virtual machines. In one implementation, the settings are received via remote access to the electronic device 102. For example, an information technology administrator may send information to multiple user electronic devices so that a management virtual machine associaied with each electronic device receives updated settings information.
[0029] The data processing settings 502 may be any suitable configuration information. The data processing settings 502 may include information, for example, about which data processing services to perform, how to perform them, or when to perform them. For example, the management virtual machine 1 10 may receive a setting indicating that data in the storage 104 should be backed up on a weekly basis. The data processing settings 502 may include, for example, information about whether to encrypt data or secure delete data, in one implementation, the data processing settings 502 include settings related to the type of data processing to perform on data associated with a particular virtual machine, such as settings related to data processing for data received from the second virtual machine 1 12 and settings related to data processing for data received from the third virtual machine 202.
[0030] The management virtual machine 1 10 may access the data processing settings 502 to determine how to perform data processing services on data stored in the storage 104. Allowing the settings to be input for the management virtual machine 1 10 may allow data in the storage 104 to be treated uniformly regardless of the virtual machine that stores or accesses data.
[0031] Referring back to Figure 3 and proceeding to block 310, the management virtual machine 1 10 retrieves the stored data, such as from the storage 104. The management virtual machine 1 10 may access the stored data in any suitable manner. For example, the management virtual machine 1 10 may retrieve data from the storage 104 in response to a request from another virtual machine. The management virtual machine 1 10 may receive a request for data in a particular location of the storage 104 or form a location mapped to the storage 104. The management virtual machine 110 may, for example, receive a request for data from the second virtual machine 1 12 or the third virtual machine 202.
[0032] Continuing to block 312, the management virtual machine 1 10 sends the retrieved data to another virtual machine executing on the processor 106, such as the second virtual machine 1 12 or the third virtual machine 202. For example, the management virtual machine 1 10 may send retrieved data to a virtual machine reguesting stored data. The management virtual machine 1 10 may transmit the retrieved data in any suitable manner, such as using a communication interface. The method then proceeds to block 314 and ends.
[0033] Figure 6 is a block diagram illustrating one example 800 of managing shared data using a virtual machine. Example 500 shows the activities of the second virtual machine 1 12, the management virtual machine 1 10, and the third virtual machine 202. The electronic device 102 may first execute the second virtual machine 112 to boot a first operating system. Beginning at block 602, a user may use a word processing software program executing on the second virtual machine 1 12 to type document A. Moving to block 804, the user may complete typing document A and select to save document A in a shared storage. The management virtual machine 1 10 may be executing on the processor 106 while the second virtual machine 1 12 instructions are executing. The management virtual machine 1 10 may receive document A from the second virtual machine 1 12. The management virtual machine 1 10 may secure data for storage without the knowledge of the second virtual machine 1 12 and the third virtual machine 202. For example, continuing to block 606, the management virtual machine 110 may encrypt document A and proceeding to block 608, the management virtual machine 1 10 may store the encrypted document A.
[0034] The user may exit the second virtual machine 1 12 and initiate the third virtual machine 202 operating system environment. The user may run a word processing software program on the third virtual machine 202. Moving to block 610, the user may decide to open a stored document in a shared storage. The user may select document A, and a request may be sent to the management virtual machine 1 10 for document A. The management virtual machine 1 10 may receive a request for document A stored in a location in a shared storage. The management virtual machine 1 10 may- retrieve document A. Proceeding to block 612, the management virtual machine 1 10 may decrypt document A so that it is in a readable format. Moving to block 614, the management virtual machine 1 10 may send decrypted document A to the third virtual machine 202. The third virtual machine 202 may display document A to a user. The management virtual machine 1 10 may perform data management functions while software on the third virtual machine 202 is in use. For example, while a user is updating document A, the management virtual machine 1 10 may send document A to a remote storage for backup as shown in block 616.
[0035] Using a management virtual machine to manage stored data allows multiple virtual machines to share data while maintaining data management functions separate from the virtual machines sharing the data. For example, a management virtual machine may store and access data for another virtual machine and perform data processing services on the stored data. As a result, data may be managed in a more consolidated and efficient manner.

中文:
[0001]在一些情况下,期望电子设备运行多个操作系统。例如,一些软件程序可能局限于在特定操作系统上操作,并且其他软件程序可能局限于在不同的操作系统上操作。单独操作环境可能是期望的,以将功能分离,诸如运行相同类型的操作系统中的两个,其中,每个被用于不同的目的。例如,一个操作系统可以用于工作用途且另一个可以用于私人用途。电子设备的软件实施方式、诸如虚拟机可以用来运行操作系统。为了允许多个操作系统在电子设备上运行,多个虚拟机可以在电子设备上执行,其中,每个虚拟机与不同的操作系统相关联。
[0002]在附图中,相同的附图标记指示相同的部件或块。附图描述示例实施例。图中所示的步骤可以按照任何顺序执行。以下详细描述参考附图,在附图中:
[0003]图1是图示出计算系统的一个示例的方框图。
[0004]图2是图示出虚拟机配置的一个示例的方框图。
[0005]图3是图示出用于使用虚拟机来管理共享数据的方法的一个示例的流程图。
[0006]图4是图示出计算系统的一个示例的方框图。
[0007]图5是图示出计算系统的一个示例的方框图。
[0009]虚拟机可以用来允许电子设备运行多个操作系统。例如,处理器可以运行第一虚拟机以运行第一操作系统环境并运行第二虚拟机以运行第二操作系统环境,诸如不同的操作系统或第一操作系统的单独实施方式。在一些实施方式中,每个虚拟机可以具有其自己的存储设备或为其分配的存储设备的一部分以便存储与特定虚拟机有关的数据。在一些情况下,可能期望跨多个虚拟机共享数据。例如,用户可以具有虚拟机上的音乐下载软件以用于电子设备上的私人用途,并且用户可以具有电子设备上的第二虚拟机以供工作用途。用户可能想要从虚拟机下载音乐以供私人用途,但是可能想要下载的音乐在专用于私人用途的虚拟机和专用于工作用途的虚拟机两者上都可用。
[0010]一些虚拟机实施方式允许数据在电子设备上的隔离虚拟机之间被共享。例如,可以将与第一虚拟机相关联的数据存储映射到单独的数据存储或与第二虚拟机相关联的数据存储的一部分。此类系统可能涉及复杂的程序以使单独存储器之间的数据同步。另外,由于多个虚拟机正在访问数据,所以诸如加密或备份功能的任何数据处理可以涉及进一步的同步。例如,如果虚拟机中的一个将存储数据加密,则可以将解密密钥发送到另一虚拟机以便在访问加密数据时使用。在一些情况下,通过将数据存储在共享数据储存库中来在虚拟机之间共享数据,诸如在经由网络可访问的远程储存库中或在与电子设备相关联的共享储存器上,诸如共享通用串行总线(USB)驱动器。再次地,由于两个虚拟机都不对该数据负责,所以该配置可以涉及用于应执行数据处理功能的时间和方式以及哪个虚拟机应执行每个过程的复杂的同步。
[0011]在一个实施例中,管理虚拟机存储并管理用于在电子设备上运行的其他虚拟机的共享数据。例如,管理虚拟机可以存储从第二虚拟机接收到的数据,并且可以检索该数据,从而发送到在电子设备上执行的第二虚拟机或第三虚拟机。管理虚拟机可以管理存储数据,使得其被独立于存储或访问该数据的虚拟机进行管理。例如,管理虚拟机可以执行数据处理服务,诸如同步、加密以及数据备份,使得其他虚拟机不会请求这些过程,并且不知道这些过程正在被执行。
[0012]使用管理虚拟机来管理数据允许将数据管理功能从与管理虚拟机通信的单独虚拟机分离以存储和访问数据。通过将存储数据和与存储数据相关联的数据处理两者从其他虚拟机分离,此类系统允许更高效的数据管理。例如,存储数据可以被管理虚拟机备份而不是被多个虚拟机备份。此类系统可以允许在没有虚拟机之间的通信的情况下管理数据以使过程同步,诸如与哪个虚拟机应执行过程和其是否被执行有关的通信。管理分开地来自每个单独虚拟机的数据使得存储数据更加可传送到不同的平台,因为数据在一些情况下可能被存储在单个位置中。管理虚拟机本身可以移动至不同的电子设备,允许数据管理功能与数据一起移动。另外,将数据管理功能合并到管理虚拟机可以使得更容易更新数据管理策略。例如,为了更新其中备份的数据,可以在并不同样更新其他虚拟机处理数据的方式的情况下更新管理虚拟机。
[0013]图1是图示出计算系统100的一个示例的方框图。计算系统100可以包括例如储存器104、处理器106以及机器可读存储介质108。储存器104可以是任何适当的储存器,诸如易失性或非易失性存储器。储存器104可以是例如硬盘驱动器、随机存取存储器或闪速驱动器。储存器104可以用来存储从虚拟机接收到的数据,并且可以从储存器104检索数据以发送到虚拟机。
[0014]机器可读存储介质108可以是存储可执行指令或其他数据的任何电子、磁、光学或其他物理存储设备(例如,硬盘驱动器、随机存取存储器、闪速存储器等)。在一个实施方式中,将机器可读存储介质108和储存器104组合成同一储存器。机器可读存储介质108可以包括可由处理器106执行的指令,诸如与虚拟机相关联的指令。机器可读存储介质108可以包括用于任何数目的虚拟机的指令。例如,机器可读存储介质108可以包括与管理虚拟机110和第二虚拟机112相关联的指令。在一个实施方式中,机器可读存储介质108包括用于附加虚拟机的指令。例如,电子设备102可以通过执行与第二虚拟机112相关联的指令来运行第一操作系统并通过执行与不同虚拟机相关联的指令来运行第二操作系统。
[0015]管理虚拟机110和第二虚拟机112可以是任何适当的虚拟装置。在一个实施方式中,可以执行用于第二虚拟机112和管理虚拟机110两者的指令。例如,用户与第二虚拟机112相交互,并且管理虚拟机110可以被后台执行以管理用于第二虚拟机112的数据。在一个实施方式中,管理虚拟机110除存储访问以及管理存储在储存器104中的数据之外还执行其他功能。
[0016]机器可读存储介质108可以包括与管理虚拟机110相关联的指令以管理数据。例如,机器可读存储介质108可以包括与管理虚拟机110相关联的指令以从在处理器106上执行的另一虚拟机接收数据,存储数据并独立于在处理器106上执行的其他虚拟机而控制存储数据,其中,控制存储数据包括在未意识到在处理器106上执行的其他虚拟机的情况下对数据执行数据处理活动。管理虚拟机110还可以包括访问存储数据并将被访问数据传输到在处理器106上执行的另一虚拟机的指令。
[0017]处理器106可以是任何适当的处理器。例如,处理器106可以是一个或多个中央处理单元(CPU)、基于半导体的微处理器和/或适合于存储在机器可读存储介质108中的指令的检索和执行的其他设备。处理器106可以获取存储在机器可读存储介质108中的指令、将其解码并执行以实现下面详细地描述的功能。作为获取、解码以及执行指令的替换或除此之外,处理器106可以包括一个或多个集成电路(IC)或包括用于执行下述功能的多个电子部件的其他电子电路。在一个实施方式中,处理器106能够运行多个虚拟机。例如,处理器106可以使用第二虚拟机112来引导第一操作系统。处理器106可以终止第一操作系统并使用另一虚拟机来引导第二操作系统。在一个实施方式中,处理器106执行管理虚拟机110以在诸如第二虚拟机112的另一虚拟机正在执行的同时管理数据。
[0018]图2是图示出虚拟机配置200的一个示例的方框图。虚拟机配置200可以包括与储存器104通信的管理虚拟机110。管理虚拟机110还可以与其他虚拟机、诸如第二虚拟机112和第三虚拟机202通信,以存储数据并将数据发送到在处理器106上执行的其他虚拟机。管理虚拟机110可以与在处理器106上运行的任何数目的虚拟机通信。在一些情况下,管理虚拟机110管理用于能够在处理器106上执行的虚拟机的子集的数据。处理器106可以运行多个管理虚拟机,其中,每个管理虚拟机管理用于其他虚拟机的子集的数据。在一个实施方式中,第二虚拟机112和第三虚拟机202可以使用管理虚拟机110来存储共享信息,或者可以共享信息以可用于特定虚拟机。例如,可以为用户呈现将信息存储在共享储存器中或专用于特定虚拟机操作系统的储存器或储存器部分中的选项。
[0019]图3是图示出用于使用虚拟机来管理共享数据的方法300的一个示例的流程图。管理虚拟机110可以存储和检索数据并管理存储数据。例如,管理虚拟机110可以从第三虚拟机202接收数据以便存储在储存器104中。第二虚拟机112或第三虚拟机202然后可以与管理虚拟机110通信以从储存器104检索存储数据。
[0020]在一些情况下,管理虚拟机110可以管理储存器104中的数据。例如,管理虚拟机110可以执行数据处理服务,诸如对存储在储存器104中的数据进行加密、同步或备份。管理虚拟机110可以在没有第二虚拟机112和第三虚拟机202的知识的情况下管理数据。例如,其他虚拟机可以不请求数据处理服务,或者可以不知道细节。
[0021]在方框302处开始并移动至方框304,管理虚拟机110从在处理器106上执行的另一虚拟机接收数据。管理虚拟机110可以从任何适当的虚拟机接收数据,诸如第二虚拟机112或第三虚拟机202。管理虚拟机110可以从第二虚拟机112接收一些数据以用于存储并从第三虚拟机202接收一些数据以便存储在储存器104中。接收的数据可以是任何适当数据。例如,数据可以是音乐、视频、文字处理或图像文件。管理虚拟机110可以以任何适当的方式接收数据,诸如经由网络或直接通信接口。
[0022]移动至方框306,管理虚拟机110将数据诸如存储在储存器104中。管理虚拟机110可以以任何适当方式来存储数据。在一个实施方式中,管理虚拟机110管理数据,使得其他虚拟机不知道其中存储有数据的储存器104中的位置。例如,管理虚拟机110可以存储映射以与其中在其他虚拟机看起来存储了数据的位置相比映射其中实际上存储数据的位置。该映射可以允许管理虚拟机110移动储存器104中的数据,从而在没有访问数据的其他虚拟机的知识的情况下对数据整理碎片。
[0023]继续至方框308,管理虚拟机110独立于在处理器106上执行的其他虚拟机的存储数据。例如,处理器106可以执行与管理虚拟机110相关联的指令以管理存储数据。控制存储数据可以包括例如确定哪里将存储数据并在储存器104中检索数据。在一个实施方式中,管理存储数据包括在没有在处理器106上执行的其他虚拟机的知识的情况下对数据执行数据处理服务。例如,管理虚拟机110可以在没有来自另一虚拟机的请求的情况下发起数据处理服务,并且另一虚拟机可以不知道该数据处理服务。可以在任何点处执行该数据处理服务,诸如在将数据存储在储存器104中之前、从储存器104检索数据以发送到虚拟机之后或者在正在由另一虚拟机执行与数据存储无关的其他活动的同时。管理虚拟机110可以执行任何适当的数据处理服务,诸如与对数据进行同步、备份、碎片整理或保证安全有关的数据处理活动。
[0024]管理虚拟机110可以执行与保证存储在储存器104中的数据的安全有关的数据处理服务。例如,管理虚拟机110可以管理用于数据的加密,诸如在将数据存储在储存器104中之前将数据加密并在从数据发送到另一虚拟机之前在从储存器104检索数据之后将数据解密。管理虚拟机110可以保持关于加密和解密密钥及关于哪些项目将加密的信息。在一个实施方式中,管理虚拟机110在数据被删除时将数据从储存器104安全擦除以提供更高的安全性。例如,第二虚拟机112可以向管理虚拟机110发送信息以删除存储在储存器104中的特定数据片,并且管理虚拟机110可以确定该数据应被安全地擦除。管理虚拟机110可以执行安全扫描,诸如对存储数据的病毒扫描。管理虚拟机110可以执行例如索引服务和性能最优化,诸如用于存储在储存器104中和从储存器104检索的数据的预读和回写高速缓存。
[0025]在一个实施方式中,管理虚拟机110执行与对存储在储存器104中的数据进行备份有关的数据处理服务。例如,管理虚拟机110可以确定何时对数据进行备份或数据备份位置。管理虚拟机110可以确定应对储存器104中的哪些数据进行备份。管理虚拟机110可以周期性地对数据进行备份,例如通过经由网络将数据发送到远程存储位置,或者可以在将数据存储在储存器104中之后对其进行备份。
[0026]在一个实施方式中,管理虚拟机110执行与对存储在储存器104中的数据进行同步有关的数据处理服务。例如,管理虚拟机110可以使数据与远程存储位置同步以确定应对哪些信息进行备份。管理虚拟机110可以使虚拟机之间的数据同步。例如,管理虚拟机110可以从虚拟机接收对于其他虚拟机或其他虚拟机的子集而言不应可访问的数据。管理虚拟机110可以接收指示数据将被删除的信息,使得其不再是特定虚拟机可访问的,但是仍是其他虚拟机可访问的。
[0027]在一个实施方式中,虚拟机110基于与数据相关联的虚拟机来执行数据处理,诸如存储或检索数据的虚拟机。例如,管理虚拟机110可以对从特定虚拟机接收到的数据进行加密,诸如第二虚拟机112,其中,从其他虚拟机接收到的数据未被加密,或者管理虚拟机可以对从特定虚拟机接收到的数据使用更强的加密方法或专有加密方法。作为另一示例,管理虚拟机110可以将实时编索引用于从第二虚拟机112接收到的数据且不将编索引用于从第三虚拟机202接收到的数据。管理虚拟机110可以基于例如哪个虚拟机将数据发送到管理虚拟机110以用于存储来确定储存器104中的哪些数据与特定虚拟机相关联。
[0028]图4是图示出计算系统400的一个示例的方框图。计算系统400包括电子设备102,其具有处理器106和包括与管理虚拟机110、第二虚拟机112以及第三虚拟机202相关联的指令的机器可读存储介质108。储存器104包括与第二虚拟机相关联的数据402和与第三虚拟机202相关联的数据404。数据402被使用方法A加密,并且数据404被使用方法B加密。在一个实施方式中,管理虚拟机110接收与执行数据处理服务有关的设置信息并基于该设置来执行数据处理服务。图5是图示出计算系统500的一个示例的方框图。计算系统500示出了具有储存器104、处理器106以及机器可读存储介质108的电子设备102。储存器104包括数据处理设置502。在一个实施方式中,数据处理设置502被存储在机器可读存储介质108、电子设备102内的另一储存器或管理虚拟机110经由网络与之通信的远程数据库中。可以以任何适当的方式来接收数据处理设置502。例如,可以经由用户输入来接收该设置,并且存储在诸如储存器104中以用于管理虚拟机110的稍后检索。在一个实施方式中,管理员输入设置,使得该设置适用于多个用户的虚拟机。在一个实施方式中,经由对电子设备102的远程访问来接收该设置。例如,信息技术管理员可以将信息发送到多个用户电子设备,使得与每个电子设备相关联的管理虚拟机接收更新设置信息。
[0029]数据处理设置502可以是任何适当的配置信息。数据处理设置502可以包括例如关于哪些数据处理服务将执行、如何执行它们或者何时执行它们的信息。例如,管理虚拟机110可以接收指示应在每周的基础上备份储存器104中的数据的设置。数据处理设置502可以包括例如关于是将数据加密还是将数据安全删除的信息。在一个实施方式中,数据处理设置502包括与将对与特定虚拟机相关联的数据执行的数据处理的类型有关的设置,诸如与用于从第二虚拟机112接收到的数据的数据处理有关的设置和与用于从第三虚拟机202接收到的数据的数据处理有关的设置。
[0030]管理虚拟机110可以访问数据处理设置502以确定如何对存储在储存器104中的数据执行数据处理服务。对于管理虚拟机110而言允许输入设置可以允许统一地处理储存器104中的数据,无论存储或访问数据的虚拟机如何。
[0031]返回参考图3并前进至方框310,管理虚拟机110检索存储数据,诸如从储存器104。管理虚拟机110可以以任何适当方式来访问存储数据。例如,管理虚拟机110可以响应于来自另一虚拟机的请求从储存器104检索数据。管理虚拟机110可以接收用于储存器104的特定位置上的数据的请求或形成被映射到储存器104的位置。管理虚拟机110可以例如从第二虚拟机112或第三虚拟机202接收用于数据的请求。
[0032]继续至方框312,管理虚拟机110将所检索数据发送到在处理器106上执行的另一虚拟机,诸如第二虚拟机112或第三虚拟机202。例如,管理虚拟机110可以将所检索数据发送到请求存储数据的虚拟机。管理虚拟机110可以以任何适当方式传输所检索数据,诸如使用通信接口。该方法然后前进至方框314并结束。
[0033]图6是图示出使用虚拟机来管理共享数据的一个示例600的方框图。示例500示出了第二虚拟机112、管理虚拟机110以及第三虚拟机202的活动。电子设备102可以首先执行第二虚拟机112以引导第一操作系统。在方框602处开始,用户可以使用在第二虚拟机112上执行的文字处理软件程序来键入文档A。移动至方框604,用户可以完成键入文档A并选择将文档A保存在共享储存器中。管理虚拟机110可以在第二虚拟机112指令正在执行的同时在处理器106上执行。虚拟管理机110可以从第二虚拟机112接收文档A。管理虚拟机110可以在没有第二虚拟机112和第三虚拟机202的知识的情况下保证数据安全以用于存储。例如,继续至方框606,管理虚拟机110可以将文档A加密并前进至方框608,管理虚拟机110可以存储加密文档A。
[0034]用户可以离开第二虚拟机112并发起第三虚拟机202操作系统环境。用户可以在第三虚拟机202上运行文字处理软件程序。移动至方框610,用户可以判定打开共享储存器中的存储文档。用户可以选择文档A,并且可以向管理虚拟机110发送用于文档A的请求。管理虚拟机110可以接收用于存储在共享储存器中的位置上的文档A的请求。管理虚拟机110可以检索文档A。前进至方框612,管理虚拟机110可以将文档A解密,使得其处于可读格式。移动至方框614,管理虚拟机110可以将已解密文档A发送至第三虚拟机202。第三虚拟机202可以向用户显示文档A。管理虚拟机110可以在第三虚拟机202上的软件在使用中的同时执行数据管理功能。例如,虽然用户正在更新文档A,但管理虚拟机110可以将文档A发送到远程储存器以用于备份,如方框616中所示。
[0035]使用管理虚拟机来管理存储数据允许多个虚拟机在保持数据管理功能与共享数据的虚拟机分开的同时共享数据。例如,管理虚拟机可以存储并访问用于另一虚拟机的数据并对存储数据执行数据处理服务。结果,可以以更统一且高效的方式来管理数据。