Proxy Object System
Through the proxy object system, seamless modification and upgrading of VHD drivers is achieved in the cloud computing environment, and the business interruption caused by VHD driver upgrades in cloud computing is solved, and the uptime and business continuity of the system are improved.
Patent Information
- Application Number
- CN202111315624.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2016-02-01
- Filing Date
- 2017-01-25
- Publication Date
- 2025-01-10
- Estimated Expiration
- 2037-01-25
AI Technical Summary
In a cloud computing environment, upgrading of virtual hard disk (VHD) drivers usually requires shutting down the virtual machine (VM), resulting in business interruptions and reduced uptime, and it is impossible to replace the VHD driver without shutting down the VM.
Adopt the proxy object system, using a mechanism based on the proxy principal, receive and process task requests through the proxy object components, generate proxy objects to track I/O tasks and session tasks, start standby mode to turn off task processing, and restore state in recovery mode Information to achieve seamless modification and upgrade of VHD drivers.
Allows modification and upgrade of VHD drivers without shutting down the VM, improving business continuity and uptime and reducing the risk of system downtime.
Smart Images

Figure CN113835867B_ABST
Abstract
Description
[0001] This invention patent application is a divisional application of the invention patent application with international application number PCT / US2017 / 014793, international application date January 25, 2017, application number 201780009262.6 entering the Chinese national phase, and name “Proxy Object System”. background
[0002] Computing devices, components and systems operate based on drivers. A driver is a computer program that facilitates the operation or control of a type of device, component or system. For example, a driver can provide a software interface for a hardware device to enable an operating system and other computer programs to access hardware functions without knowing the precise details of the hardware used. A driver can also be associated with a virtual hard disk (VHD). A virtual hard disk can be associated with a physical hard disk drive (HDD). VHD allows multiple operating systems to reside on a single host (e.g., a node). Typically, when VHD and VHD drivers are used on a node, it is not possible to perform a replacement VHD driver without shutting down a virtual machine (VM). The VM that supports tenant applications and services on a node actively uses VHD and VHD drivers. In this regard, the active resources of the VHD (e.g., open file handles) must be closed, and then the VM is shut down before unloading and loading a new VHD driver. In this way, a system for avoiding shutting down a VM to upgrade a driver can improve the uptime and business continuity of the VM and facilitate changing the driver.
[0003] Overview
[0004] The embodiments described herein provide methods and systems for seamlessly modifying software components in a distributed computing system based on a proxy object system. At a higher level, the proxy object system utilizes a mechanism based on a proxy subject to allow limited operational interruption when modifying a software component. The proxy object operates as a proxy (subject) of a software component to prevent shutdown when modifying the software component. The proxy object system can be implemented based on a proxy object component, which supports an interface for communication, a storage for saving state information, and a proxy object (proxy count object, proxy reference object) as a part of the proxy object system framework. As an example, a virtual machine (VM) operating system can use a software component (e.g., a virtual hard disk (VHD) driver component) to support access to system resources (e.g., a file system on a VHD). The software component is configured with a proxy object component, which uses a mechanism based on a proxy subject to operate the software component so that modifications to the software component can be performed with limited interruption of the VM (e.g., without shutting down the VM for upgrading the software component).
[0005] In operation, the proxy object component receives or intercepts a pending task request using a software component. The proxy object component generates a proxy object for the task to account for the task within the proxy object component. The task can be an input / output (I / O) task for communication or a session task for continuous processing (e.g., an open handle for a file). Thus, the proxy object component is also configured to determine whether the task request is for an I / O task or a session task, and to process the task request based on the determined task type. For example, for an I / O task, the generated proxy object is a proxy counting object that tracks any I / O tasks active on the software component, while for a session task, the generated proxy object is a proxy reference object.
[0006] Upon receiving an indication to modify the software component, the proxy object component initiates a standby mode to process based on the proxy object component and the standby operation at the software component. The standby operation may include finalizing the I / O task being processed based on counting the proxy count object tracked at the proxy object component to confirm that all I / O tasks have been processed. For example, before continuing to modify the software component, it is determined that the counter associated with the proxy count object is zero (i.e., there is no active proxy count object at the software component). Moreover, the standby operation includes prompting the closing of the session task (e.g., the open handle for the file) at the software component; however, the corresponding proxy reference object in the proxy object component is in a suspended state. In addition, the new task request received at the proxy object component is in a suspended state and will not be processed immediately. The proxy object component may also prompt the retention and recovery of the state information of the software component.
[0007] After accounting for the proxy count object, the proxy reference object, and the new incoming task request, the software component can be deleted, modified, and restored without shutting down the VM associated with the software component. The proxy object component can then initiate a recovery mode to process based on the proxy object component and the recovery operation at the software component. The recovery operation can include regenerating reference objects for proxy reference objects that are in a suspended state in the proxy object component and processing new task requests that were also in a suspended state when received during standby mode. The modified software component can also retrieve the retained state information and continue normal software component operation.
[0008] This Summary is provided to introduce some concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used alone as an aid in determining the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The present invention is described in detail below with reference to the accompanying drawings, in which:
[0010] Figure 1is a block diagram of an exemplary proxy object system environment in which the various embodiments described herein may be employed;
[0011] Figure 2 is a block diagram of an exemplary proxy object system in which the various embodiments described herein may be employed;
[0012] Figure 3 is a block diagram of an exemplary implementation of a proxy object system according to various embodiments described herein;
[0013] Figure 4 is a flowchart illustrating an exemplary method for implementing a proxy object system according to various embodiments described herein;
[0014] Figure 5 is a flowchart illustrating an exemplary method for implementing a proxy object system according to various embodiments described herein;
[0015] Figure 6 is a block diagram of an exemplary computing environment suitable for implementing the various embodiments described herein; and
[0016] Figure 7 is a block diagram of an exemplary distributed computing system suitable for implementing the various embodiments described herein. Detailed Description
[0017] Computing devices, components, and systems operate based on software components called drivers. A driver is a computer program that facilitates the operation or control of a type of device, component, or system. For example, a driver can provide a software interface to a hardware device to enable an operating system and other computer programs to access hardware functions without knowing the precise details of the hardware being used. Drivers can also be associated with a virtual hard disk (VHD). A virtual hard disk can be associated with a physical hard disk drive (HDD). A VHD allows multiple operating systems to reside on a single host (e.g., a node).
[0018] VHD can be implemented in a scalable infrastructure known as a cloud computing infrastructure. Cloud computing infrastructure (i.e., a distributed computing system) supports operations on a shared pool of configurable computing, storage, and networking resources. For example, a cloud computing infrastructure can implement a computing node configured to run multiple virtual machines (VMs) supported by an operating system (OS). The computing node supplies resources allocated to the VM. The VM supports the operation of one or more hosted applications and / or services (e.g., tenants) in the cloud computing infrastructure. As an example, the virtualized storage stack or computing stack functionality is supported using a virtual hard drive microport driver (VHDMP), which exposes a block device (i.e., a device that supports reading and writing an entire block of data (e.g., a sector on a hard disk) at a time). Block devices installed using VHDMP support access to a blob interface associated with a blob storage within the cloud computing storage infrastructure, so that the blob storage can be accessed by the VM as a virtual hard drive (VHD). Systems and processes for managing virtual hard drives as blobs as used in the present disclosure are further described in U.S. Application No. 13 / 944,627, entitled “Managing Virtual Hard Drives as Blobs,” filed on July 17, 2013. Additionally, systems and processes for managing and controlling modular data operations as used in the present disclosure are further described in U.S. Application No. (not yet assigned) entitled “MODULAR DATA OPERATIONS SYSTEMS,” Attorney Docket No. MFCP.241696.
[0019] When a computing system must remain operational, it is valuable to keep the computing system operational while modifying the software components supporting the computing system. For example, in a cloud computing infrastructure, upgrading a VHD driver without downtime may be important to customers because it provides business continuity and predictability for implementing applications and services supported via the VM. Typically, replacing a virtual machine (VM) cannot be performed without shutting down the VHD and VHD driver on the node. The VM supporting tenant applications and services on the node is actively using the VHD and VHD driver; in this regard, the active resources of the VHD must be shut down and the VM shut down before unloading and loading a new VHD driver. As such, a system for avoiding shutting down the VM to upgrade a driver can improve business continuity and uptime of the VM and facilitate driver changes.
[0020] Embodiments of the present disclosure provide simple and effective methods and systems for implementing a proxy object system in a distributed computing system. At a higher level, the proxy object system utilizes a mechanism based on a proxy subject to allow limited operational interruption when modifying a software component. The proxy object operates as a proxy (subject) of a software component to prevent downtime when the software component is modified. The proxy object system can be implemented based on a proxy object component, which supports an interface for communication, a storage for saving state information, and a proxy object (proxy reference object, proxy count object) as part of the proxy object system framework. As an example, a virtual machine (VM) operating system can use a software component (e.g., a virtual hard disk (VHD) driver component) to support access to system resources (e.g., a file system on a VHD). The software component is configured with a proxy object component, which uses a mechanism based on a proxy subject to operate the software component so that modifications to the software component can be performed with limited interruption to the VM (e.g., without shutting down the VM for upgrading the software component).
[0021] In operation, the proxy object component receives or intercepts a pending task request using a software component. The proxy object component generates a proxy object for the task to account for the task within the proxy object component. The task can be an input / output (I / O) task for communication or a session task for continuous processing (e.g., an open handle for a file). Thus, the proxy object component is also configured to determine whether the task request is for an I / O task or a session task, and to process the task request based on the determined task type. For example, for an I / O task, the generated proxy object is a proxy counting object that tracks any I / O tasks active on the software component, while for a session task, the generated proxy object is a proxy reference object.
[0022] Upon receiving an indication to modify the software component, the proxy object component initiates a standby mode to process based on the proxy object component and the standby operation at the software component. The standby operation may include finalizing the I / O task being processed based on counting the proxy count object tracked at the proxy object component to confirm that all I / O tasks have been processed. For example, before continuing to modify the software component, it is determined that the counter associated with the proxy count object is zero (i.e., there is no active proxy count object at the software component). Moreover, the standby operation includes prompting the closing of the session task (e.g., the open handle for the file) at the software component; however, the corresponding proxy reference object in the proxy object component is in a suspended state. In addition, the new task request received at the proxy object component is in a suspended state and will not be processed immediately. The proxy object component may also prompt the retention and recovery of the state information of the software component.
[0023] After accounting for the proxy count object, the proxy reference object, and the new incoming task request, the software component can be deleted, modified, and restored without shutting down the VM associated with the software component. The proxy object component can then initiate a recovery mode to process based on the proxy object component and the recovery operation at the software component. The recovery operation can include regenerating reference objects for proxy reference objects that are in a suspended state in the proxy object component and processing new task requests that were also in a suspended state when received during standby mode. The modified software component can also retrieve and restore the retained state information and continue normal software component operation.
[0024] First reference Figure 1 , Figure 1 An exemplary proxy object system 100 is illustrated in which implementations of the present disclosure may be employed. Specifically, Figure 1 1 shows a high-level architecture of a proxy object system 100 having a node 110 implemented according to the present disclosure, the node 110 having a proxy object component 120, a cache storage 130, a data store (VHD blob storage) 140, and a driver component 150. Among other components not shown, the proxy object system 100 includes a node 110 running a VM 112, a computing device, a user client 160, and an administrator client 170, wherein reference is made to Figure 6 and 7 Describes nodes, VMs, and computing devices in more detail.
[0025] As used herein, a system refers to any device, process, or service, or a combination thereof. A system may be implemented using components that are hardware, software, firmware, a dedicated device, or any combination thereof. A system may be integrated into a single device or it may be distributed across multiple devices. The various components of a system may be co-located or distributed. The system may be formed by other systems and their components. It should be understood that this and other arrangements described herein are illustrated only as examples.
[0026] While various components of the proxy object system 100 have been identified, it should be noted that any number of components may be employed to implement the desired functionality within the scope of the present invention. Figure 1 , but in reality the delineation of the components is not so clear and the lines would more accurately be grey or fuzzy, metaphorically speaking. Figure 1 Some components of the proxy object system 100 are described as separate components, but this description is exemplary in nature and quantity and should not be interpreted as limiting all implementations of the present invention. The functions of the proxy object system 100 can be further described based on the functions and features of the components listed above.
[0027] As a supplement or replacement for the arrangement and elements shown, other arrangements and elements (such as machines, interfaces, functions, orders, and functional aggregation, etc.) can be used, and some elements can be completely omitted. In addition, many elements described herein are functional entities that can be implemented as discrete or distributed components, or combined with other components and implemented in any suitable combination and position. The various functions described herein as being performed by one or more entities can be performed by hardware, firmware and / or software. For example, the various functions can be performed by a processor that executes instructions stored in a memory.
[0028] Embodiments of the present disclosure are described in detail below with reference to examples of file system operations supported by driver component 150, cache storage 130, and data storage (VHD blob storage) 160. Additionally, exemplary tasks (e.g., I / O tasks and session tasks) are discussed. Nevertheless, the specific examples indicated are not meant to be limiting. In an exemplary embodiment, Figure 2 As shown, the proxy object system 200 includes a proxy component 204 having an interface 260 for communication, a storage for saving state information 270, and proxy objects (proxy count object 280, proxy reference object 290) as part of the proxy object system framework. At a high level, the proxy object system utilizes a proxy subject-based mechanism to allow limited operational interruption when modifying software components. The proxy object operates as a proxy (subject) for the software component to prevent downtime when the software component is modified.
[0029] Continue to refer Figure 2 , Figure 2An exemplary proxy object system 200 is illustrated, which has an operating system 202, a proxy object component 204, a driver component 206, and a file system storage 208 (e.g., backup storage (VHD blob storage) and cache storage). The operating system 202 is responsible for processing operations in virtual machines and / or nodes. The operating system 202 manages computer hardware and software resources and provides common services for programs. Specifically, the operating system 202 supports operations for providing proxy object system functions. The operating system 202 processes task requests to perform operations on virtual machines. The operating system 202 receives a request to access resources associated with the virtual machine. For example, the operating system 202 may receive a task request to access a file in the file system. The task request may be an input / output (I / O) task communication or a session task to open a file handle to access a file. In this regard, when accessing a file or retrieving information to satisfy an I / O task, the I / O task may be completed relatively quickly, while during a session task, the file handle may be open for a period of time because the file is opened for processing at this time. For example, a file handle is associated with a file until the process terminates or the handle is closed. Embodiments of the present disclosure contemplate other types of variations and combinations of task requests.
[0030] The driver component 206 is responsible for processing task requests received via the operating system to access system resources. The driver component 206 may generally refer to a program that supports the functions of a hardware or software component. The driver component 206 may be included as part of the operating system, or may be initialized and deployed separately. The driver component 206 may support communication with system resources that utilize the driver. As an example, a driver may be used to support access to a virtual hard disk (VHD). The driver component 206 may also have specific functions supported by components of the driver component (e.g., a redirector driver for a file system or a data access component driver for managing and controlling data operations). As an example, the driver component 206 may specifically support a file agent in a file agent format, which is used to redirect data access requests to file system storage (e.g., cache storage or backup storage). The requesting entity (e.g., via the user client 160 of the VM) directs the data access request to the VHD mounted as a block device, but based on the redirector driver component operation to provide access to the backup storage, the data request is converted from the file agent format to the blob storage format. In addition, the driver component 206 can also be a data access component using the backup storage, and the cache storage also implements the cache storage data structure, cache block delayed write and data access restrictions as part of the modular data operating system. The driver component 206 works with the operating system to process task requests to access the file system storage 208. As described above, the driver component 206 processes I / O tasks and session tasks.
[0031] The proxy object component 204 operates to facilitate seamless modification of the driver component associated with the proxy object component 204. The proxy object component 204 can be initialized or integrated as part of the driver component 206 to specifically support the functions of the driver component 206 by means of a proxy principal mechanism. The proxy object component 204 operates as a proxy (principal) of the driver component 206 to prevent downtime when the driver component 206 is modified. The proxy object component 206 can be implemented based on the proxy object component 206, which supports an interface 260 for communication, a storage for saving state information 270, and a proxy object (agent count object 280, proxy reference object 290). The proxy object component 204 receives or intercepts a task request passed to the operating system 202, which is directed to the driver component to perform an I / O task or a session task. The proxy object component 204 can intercept the task request and determine in one implementation whether the task is an I / O task or a session task in order to perform additional processing.
[0032] The proxy object component 204 is responsible for generating a proxy object for a task request and passing the task request to the driver component 206. The proxy object component 204 generates a proxy object for the task request before the modification of the driver component 206 so as to avoid closing the driver component before modifying the driver component 206. The generated proxy object corresponds to the driver component 206 object generated based on the task request when processing the task request at the driver component 206. The proxy object component 204 generates the proxy object based on the type of the intercepted task request. In this way, when the proxy object component 204 determines that the task request is an I / O task, the proxy object component 204 generates a proxy count object, and when the proxy object component 206 determines that the task request is a session task request, the proxy object component 206 generates a proxy reference object.
[0033] The proxy counting object 280 can be implemented as a counter for tracking I / O tasks. The counter increases when the I / O task is processed as input, and decreases when the task is processed as output. The I / O task that is transmitted to the driver component 206 via the proxy object component 204 and the I / O task that is processed from the driver component 206 indicates that it has been completed no longer needs to be tracked at the proxy object component 204. The counter continues to track any active I / O tasks at the driver component 206. The proxy reference object 290 can be implemented as a pointer to the corresponding reference object at the driver component. The pointer is used as a reference to the reference object at the driver component 206 in the proxy object component 204. When the driver component 206 has completed processing the session task associated with the reference object, the proxy reference object can be deleted. The proxy object component 204 passes the task request to the driver component 206 so that the task request is processed at the driver component 206. The driver component 206 may operate without knowing the interception and processing performed at the proxy object component 204.
[0034] The proxy object component 204 is responsible for determining that a modification indication to the driver component 206 has been requested, and implementing a standby mode before modifying the driver component, and implementing a subsequent recovery mode after the modification has been performed. The modification indication may be transmitted from a computing device (e.g., an administrator client 170) based on the administrator of the driver component 206 selecting to perform software maintenance of the running driver component 206. The proxy object component 204 may determine or receive the modification indication in several different ways. For example, the operating system 202 may send a communication to the driver component 206 to close in order to modify the driver component 206, and then the driver component 206 may forward this communication to the proxy object component 204. The proxy object component 204 may also implement the interface 260 as a proxy for communicating with the driver component 206, so that the proxy object component 204 intercepts the communication with the driver component 206. In this way, the proxy object component 204 is able to receive the communication that will modify the driver component 206. The modification indication or communication may be used to perform software maintenance on the driver component 206. Modifications may generally involve adaptive, complete, corrective, and preventative changes to the driver component 206. The modified version of the driver component 206 replaces the previous version of the driver component 206. For example, a new version of the driver component may be installed and the old version uninstalled. Embodiments of the present disclosure contemplate other variations and communication methods of conveying an indication of a modification operation to be performed on the driver component and the type of modification operation to be performed.
[0035] The proxy object component 204 is responsible for starting a standby mode for performing standby operations. The standby mode is associated with the proxy object component 204 and the driver component 206 to perform standby operations associated with each component. The standby operation refers to the following actions: placing an incoming task request in a suspended state at the proxy object component, closing the processing of I / O tasks and session tasks at the driver component, and placing the corresponding proxy reference object of the reference object in the driver component 206 in a suspended state. For example, the proxy component 204 can determine that the proxy count object has been processed and the counter for each fully processed I / O task has been reduced. The proxy object component 204 can also determine that the reference object corresponding to the proxy reference object is closed at the driver component 206. Then, the proxy object component 206 places the proxy reference object and one or more new task requests received at the proxy object component 206 in a suspended state. Then, the proxy object component 204 can communicate with the operating system to start the modification of the driver component 206. Then, the proxy object component 204 can determine or receive an indication that the driver component has been modified to a modified version of the driver component 206.
[0036] The proxy object component 204 is also responsible for initiating a recovery mode that performs recovery operations. The recovery mode is associated with the proxy object component 204 and the driver component 206 to perform recovery operations associated with each component. The recovery operation refers to the following actions: regenerating a reference object for a proxy reference object at the proxy object component 204 before modifying the driver component 206 in a suspended state; processing a new task request in a suspended state at the proxy object component; and passing the new task request to be processed at the now modified driver component 206. For example, a request is passed to regenerate a reference object for a proxy reference object in a suspended state, and one or more new task requests received during the modification of the driver component 206 are processed as a proxy count object or a proxy reference object and passed to the now modified driver component 206.
[0037] The proxy object component 204 may also include standby operations and recovery operations for retaining and restoring the state information of the driver component. The state information may refer to the value of the data variable of the driver component, for example, the content of the memory location at any given time when the driver component 206 is executed. The state information may be a snapshot of the data variable or memory content obtained before modifying the driver component 206. The standby operation may include the action of passing a message for saving the driver component state information. The state information is saved so that when the driver component 206 is modified for the modified driver component, the state information can be retrieved and restored at the modified driver component. The recovery operation includes the following actions: passing a message for retrieving and restoring the state information to the modified driver component. The state information may be stored in association with the proxy object component 204. As an example, in the standby mode, the standby operation may include the proxy object component passing a request to save the state information to the driver component 206 and passing the state information to the proxy object component 204, and the proxy object component 204 stores the state information. Then, in the recovery mode, the recovery operation may include passing the state information to the modified driver component so that the modified driver component recovers the state information and begins processing the task request based at least in part on the recovered state information. Embodiments of the present disclosure contemplate other variations and combinations of methods for protecting and recovering state information from the driver component 206.
[0038] refer to Figure 3 , a schematic diagram of a system and method for implementing a proxy object component is provided. Figure 3The system includes an operating system 202, a proxy object component 204, a driver component 206, and a file system storage 208. In step 210, the operating system 202 passes the task request to the driver component 206. In step 212, the proxy object component 204 intercepts the task request directed to the driver component 206 and processes the task request. Processing the task request includes the proxy object component 204 determining whether the task request is an I / O task or a session task based on whether the task request is for an I / O task or a session task to generate a proxy object. Specifically, a proxy counting object is generated when the task request is an I / O task, and a proxy reference object is generated when the task is a session task. The proxy counting object is implemented as a counter that tracks the I / O task, so that the counter increases when the I / O task communicates as an input, and decreases when the I / O task communicates as an output. The proxy reference object is implemented as a pointer to a corresponding reference object in the driver component 206.
[0039] In step 214, the proxy object component 204 passes the task request to cause the task request to be processed at the driver component 206. The driver component 206 processes an I / O task or a session task. In step 216, the driver component 206 communicates with the file system storage 208 to process the task request. Specifically, processing an I / O task includes receiving input and passing output from the file system storage 208, while processing a session task includes opening a file handle for accessing a file in the file system storage 208. In step 218, the task request status may be passed from the driver component to the proxy object component. For example, the I / O task may be processed and the passed I / O task may be completed, so that the I / O proxy count object is reduced at the counter at the proxy object component 204, or the session task proxy reference object is closed when the handle associated with the reference object at the driver component is closed. In step 220, the operating system may also receive task request status information, such as a message indicating that the I / O task is completed or an open file handle is passed to indicate that there is an application for a file and begins accessing the file from the file system storage 208.
[0040] At step 222, operating system 202 may communicate a modification indication to proxy object component 204. The modification indication may communicate software maintenance (e.g., driver upgrade or downgrade) to be performed on driver component 206 that will require shutting down driver component 206. At block 224, proxy object component 204 receives the modification indication to modify driver component 206, and then proxy object component 204 initiates a standby mode to perform a standby operation. The standby operation is performed at proxy object component 204 and driver component 206 to allow operating system 202 to modify driver component 206 to a modified driver component. Specifically, the standby operation may include delivering messages, at step 226, the driver component performs the standby operation; at step 228, processing the message at the driver component 206 based on starting the standby mode; at step 230, delivering the message to the file system storage 208; and at step 232, receiving the message at the proxy object component 204; steps 226-232 help determine that the proxy count object has been processed; determine that the reference object in the driver component 206 corresponding to the proxy reference object is closed at the driver component 206; put the proxy reference object and one or more new task requests received in the standby mode into a suspended state; and retain the state information of the driver component 206, wherein the state information is retrieved and restored on the modified driver component.
[0041] At step 234, proxy object component 234 communicates to operating system 202 an indication that operating system 202 may begin making modifications to driver component 206. At step 236, operating system 202 implements the modifications to perform software maintenance. At step 238, operating system 202 communicates to proxy object component 204 that the modifications have been completed.
[0042] In block 240, proxy object component 204 receives communication that the modification has been completed, and then proxy object component 204 initiates a recovery mode that performs a recovery operation. Recovery operations are performed at proxy object component 204 and driver component 206 (modified driver component) to allow objects at the proxy object component and new task requests in a suspended state to be processed using the modified driver component. Specifically, the recovery operation may include passing messages, at step 242, driver component 206 performs a recovery operation; at step 244, messages at driver component 206 are processed based on the start recovery mode; at step 246, messages are passed with file system storage 208; and at step 248, messages are received at proxy object component 204; steps 242-248 facilitate retrieving and restoring state information retained from the driver component before the driver component 206 is modified at the modified driver component; regenerating reference objects for proxy reference objects in a suspended state in the modified driver component; and passing one or more new task requests in a suspended state for processing at the modified driver component.
[0043] Now turn to Figure 4 , a flowchart illustrating a method 400 for implementing a proxy object system is provided. Initially, at box 410, a task request directed to a driver component is intercepted. At box 420, a determination is made whether the task request is an input / output (I / O task) or a session task. At box 430, a proxy count object is generated when the task request is an I / O task, and a proxy reference object is generated when the task is a session task. At box 440, the task request is passed so that the task request is processed at the driver component. At box 450, a modification indication to modify the driver component is received. At box 460, a standby mode for performing a standby operation is initiated; the standby mode includes processing task requests and proxy objects based on the standby operation. At 470, a determination is made that the driver component has been modified to a modified version of the driver component. At 480, a recovery mode for performing a recovery operation is initiated; the recovery mode includes processing task requests and proxy objects based on the recovery operation.
[0044] Now turn to Figure 5, a flowchart illustrating a method 500 for implementing a proxy object system is provided. Initially, at box 510, a task request is received from a proxy object component at a driver component. At box 520, the task request is processed at the driver component. The task request is processed based on whether the task request is an I / O task request or a session task request. At box 530, an indication to start a standby mode is received based in part on the proxy object component receiving a modification indication. The modification indication conveys the driver component to be modified. At box 540, the standby mode is initiated at the driver component. The standby mode includes processing task requests and proxy objects based on standby operations. The standby operation at the driver component includes: processing active I / O tasks on the driver component without accepting new I / O tasks; closing reference objects with corresponding proxy reference objects at the driver component; retaining state information of the driver component; and initiating the shutdown of the driver component.
[0045] At block 550, the modified version of the driver component is initialized. At block 560, upon initializing the modified driver component, a recovery mode is initiated. The recovery mode includes processing task requests and proxy objects based on recovery operations. The recovery operations at the driver component include: retrieving and restoring state information retained from the driver component before the driver component was modified; regenerating reference objects for proxy reference objects on the proxy object component that are in a suspended state; and processing one or more task requests, where the new task request will be removed from the suspended state at the proxy object component and passed to the driver component for processing.
[0046] With reference to the proxy object system, the embodiments described herein utilize a proxy subject-based mechanism to allow limited interruptions in operation when modifying software components. The proxy object system service platform component refers to an integrated component for managing access to data. The integrated component refers to the hardware architecture and software framework that use the proxy object system service platform to support data access functions. The hardware architecture refers to the physical components and their relationships to each other, while the software framework refers to the software that provides functions that can be implemented with hardware that can be operated on a device. The end-to-end software-based proxy object system service platform can operate within the proxy object system service platform component to operate computer hardware to provide proxy object system service platform functions. In this way, the proxy object system service platform component can manage resources and provide services for proxy object system functions. The embodiments of the present invention contemplate any other variations and combinations thereof.
[0047] As an example, the proxy object system service platform may include an API library including specifications for routines, data structures, object classes, and variables that support the interaction of the hardware architecture of the device with the software framework of the proxy object system service platform system. These APIs include configuration specifications for the proxy object system service platform system so that the driver components and components therein can communicate with each other in the proxy object system service platform, as described herein.
[0048] After briefly describing an overview of various embodiments of the present invention, the following describes an exemplary operating environment in which various embodiments of the present invention can be implemented in order to provide a general context for various aspects of the present invention. Figure 6 , an exemplary operating environment for implementing various embodiments of the present invention is shown and generally designated as computing device 600. Computing device 600 is only one example of a suitable computing environment and is not intended to suggest any limitation on the scope of use or functionality of the present invention. Computing device 600 should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated.
[0049] The present invention may be described in the general context of computer code or machine-usable instructions (including computer-executable instructions such as program modules) executed by a computer or other machine such as a personal data assistant or other handheld device. In general, program modules including routines, programs, objects, components, data structures, etc. refer to code that performs specific tasks or implements specific abstract data types. The present invention may be implemented in a variety of system configurations, including handheld devices, consumer electronics, general-purpose computers, special-purpose computing devices, and the like. The present invention may also be implemented in a distributed computing environment in which tasks are performed by remote processing devices linked through a communications network.
[0050] refer to Figure 6 , computing device 600 includes bus 610 that directly or indirectly couples the following devices: memory 612, one or more processors 614, one or more presentation components 616, input / output ports 618, input / output components 620, and an illustrative power supply 622. Bus 610 represents what may be one or more buses (such as an address bus, a data bus, or a combination thereof). Although shown with lines for clarity, Figure 6 , but in reality, the outlines of the components are not that clear, and metaphorically, the lines would more accurately be gray and fuzzy. For example, presentation components such as display devices may be considered I / O components. Moreover, processors also have memory. It is recognized that this is a feature of the art, and to reiterate, Figure 6The illustrations are merely illustrative of exemplary computing devices that may be used in conjunction with one or more embodiments of the present invention. No distinction is made between categories such as "workstation," "server," "laptop," "handheld device," etc., all of which are considered to be within the meaning of the present invention. Figure 6 within the scope of and are referred to as "computing devices".
[0051] The computing device 600 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computing device 600, and includes volatile and non-volatile media, removable and non-removable media. By way of example and not limitation, computer-readable media can include computer storage media and communication media.
[0052] Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and can be accessed by the computing device 600. Computer storage media excludes the signal itself.
[0053] Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism, and includes any information transmission media. The term "modulated data signal" means a signal that has one or more characteristics set or changed in a manner that encodes information in the signal. By way of example and not limitation, communication media include wired media such as a wired network or a direct wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Any combination of the above should also be included in the scope of computer readable media.
[0054] Memory 612 includes computer storage media in the form of volatile and / or non-volatile memory. Memory can be removable, non-removable, or a combination of both. Exemplary hardware devices include solid-state memory, hard drives, optical drives, etc. Computing device 600 includes one or more processors that read data from various entities such as memory 612 or I / O components 620. Presentation component 616 presents data indications to a user or other device. Exemplary presentation components include display devices, speakers, printing components, vibration components, etc.
[0055] I / O ports 618 allow computing device 600 to be logically coupled to other devices including I / O components 620, some of which may be internal. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless devices, and the like.
[0056] Reference now Figure 7 , Figure 7 An exemplary distributed computing environment 700 is illustrated in which implementations of the present disclosure may be employed. Specifically, Figure 7 A high-level architecture of a proxy object system ("system") in a cloud computing platform 710 is shown, wherein the system supports seamless modification of software components. It should be understood that this and other arrangements described herein are illustrated only as examples. As a supplement or replacement for the arrangements and elements shown, other arrangements and elements (such as machines, interfaces, functions, orders, and functional aggregations, etc.) can be used, and some elements can be omitted completely. In addition, many of the elements described herein are functional entities that can be implemented as discrete or distributed components, or in combination with other components and in any suitable combination and position. The various functions described herein as being performed by one or more entities can be performed by hardware, firmware, and / or software. For example, various functions can be performed by a processor that executes instructions stored in a memory.
[0057] The data center may support a distributed computing environment 700, which includes a cloud computing platform 710, a rack 720, and nodes 730 (e.g., computing devices, processing units, or blades) in the rack 720. The system may be implemented with a cloud computing platform 710 that runs cloud services across different data centers and geographic regions. The cloud computing platform 710 may implement a fabric controller 740 component that supplies and manages resource allocation, deployment, upgrades, and management of cloud services. Typically, the cloud computing platform 710 is used to store data or run service applications in a distributed manner. The cloud computing infrastructure 710 in the data center may be configured to host and support the operation of endpoints in a specific service application. The cloud computing infrastructure 710 may also be a public cloud, a private cloud, or a dedicated cloud.
[0058] A host 750 (e.g., an operating system or runtime environment) running a defined software stack on the node 130 may be provided for the node 730. The node 730 may also be configured to perform a dedicated function within the cloud computing platform 710 (e.g., a computing node or a storage node). The node 730 is allocated to run one or more parts of a tenant's service application. A tenant may refer to a customer who utilizes the resources of the cloud computing platform 710. The service application components of the cloud computing platform 710 that support a specific tenant may be referred to as a tenant infrastructure or a tenant. The terms service application, application, or service are used interchangeably herein and broadly refer to any software or software portion that runs on top of a data center or accesses storage and computing device locations within a data center.
[0059] When more than one separate service application is supported by node 730, the node can be divided into virtual machines (e.g., virtual machine 752 and virtual machine 754). The physical machine can also run each separate service application concurrently. The virtual machine or physical machine can be configured into a personalized computing environment supported by resources 760 (e.g., hardware resources and software resources) in the cloud computing platform 710. It is contemplated that resources can be configured for specific service applications. In addition, each service application can be divided into functional parts so that each functional part can run on a separate virtual machine. In the cloud computing platform 710, multiple servers can be used to run service applications and perform data storage operations in a cluster. Specifically, the server can perform data operations independently, but is presented as a single device called a cluster. Each server in the cluster can be implemented as a node.
[0060] The client device 180 can be linked to the service application in the cloud computing platform 710. The client device 780 can be any type of computing device, which can correspond to, for example, the reference Figure 7 The computing device 700 described above. The client device 780 may be configured to issue commands to the cloud computing platform 710. In various embodiments, the client device 780 may communicate with various service applications via a virtual Internet Protocol (IP) and with a load balancer or other device that directs communication requests to designated endpoints in the cloud computing platform 710. The components of the cloud computing platform 710 may communicate with each other via a network (not shown), which may include, but is not limited to, one or more local area networks (LANs) and / or wide area networks (WANs).
[0061] Having described various aspects of the distributed computing environment 700 and the cloud computing platform 710, it should be noted that any number of components may be employed to implement the desired functionality within the scope of the present invention. Figure 7 , but in reality the delineation of the components is not so clear and the lines would more accurately be grey or fuzzy, metaphorically speaking. Figure 7Certain components of the present invention are described as separate components, but this depiction is exemplary in nature and quantity and should not be interpreted as limiting all implementations of the present invention.
[0062] The various embodiments described in the following paragraphs may be combined with one or more of the alternative embodiments specifically described. Specifically, the claimed embodiments may include references to more than one other embodiment in the alternative. The claimed embodiments may specify further limitations to the claimed subject matter.
[0063] [Pending final claim set used to literally support PCT claims]
[0064] The subject matter of various embodiments of the present invention is described herein in detail to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. On the contrary, the inventors have contemplated that the claimed subject matter may also be implemented in other ways in conjunction with other existing or future technologies to include different steps or combinations of steps similar to the steps described herein. In addition, although the terms "step" and / or "box" may be used herein to indicate different elements of the method employed, the terms should not be interpreted as implying any specific order among or between the various steps disclosed herein unless and only when the order of the various steps is explicitly described.
[0065] For purposes of this disclosure, the word "including" has the same broad meaning as the word "comprising," and the word "accessing" includes "receiving," "referencing," or "retrieving." Additionally, words such as "a," and "an" include the plural as well as the singular unless otherwise indicated to the contrary. Thus, for example, a qualification of "a feature" satisfies the case where there is one or more of the feature. Furthermore, the term "or" includes conjunctive, disjunctive, and both (a or b includes either a or b, as well as a and b).
[0066] For the purpose of the following detailed discussion, embodiments of the present invention are described with reference to a head mounted display unit; however, the head mounted display unit depicted herein is merely exemplary. Components may be configured to perform new aspects of the embodiments, including being programmed to perform specific tasks or implementing specific abstract data types using code. Furthermore, although embodiments of the present invention may generally refer to the head mounted display unit and schematics described herein, it is contemplated that the described techniques may be extended to other implementation environments.
[0067] Embodiments of the present invention have been described with reference to specific embodiments, which are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those skilled in the art to which the present invention pertains without departing from the scope of the present invention.
[0068] From the foregoing description it will be seen that this invention is well adapted to attain all the ends and objects hereinbefore set forth, together with other advantages which are obvious and inherent to the structure.
[0069] It will be understood that certain features and subcombinations are of utility and may be employed without reference to other features or subcombinations. This is contemplated by and falls within the scope of the claims.
Claims
1. One or more computer storage media having computer executable instructions contained thereon, wherein when the computer executable instructions are executed by one or more processors, the one or more processors perform a method for implementing a proxy object system, wherein a proxy object component that generates a proxy object for a task uses a driver component to receive or intercept a task request to be processed, if the task request is an I / O task, the generated proxy object is a proxy counting object that tracks any I / O tasks active on the driver component, if the task request is a session task, the generated proxy object is a proxy reference object, the method comprising: receiving a modification instruction to modify the driver component; Initiating a standby mode for performing a standby operation, wherein the standby operation includes one or more of the following: finalizing the I / O tasks being processed based on counting a proxy count object tracked at the proxy object component to confirm that all I / O tasks have been processed; causing a closing session task at the driver component but a corresponding proxy reference object in the proxy object component to be in a suspended state; causing a new task request received at the proxy object component to be in a suspended state and not be processed immediately; determining that the driver component has been modified to a modified version of the driver component; Initiating a recovery mode that implements a recovery operation, wherein the recovery operation includes one or more of the following: regenerating a reference object for a proxy reference object in a suspended state in the proxy object component; Processes new task requests that are also pending when received during standby mode.
2. The medium according to claim 1, wherein The proxy counting object is implemented to track a counter of an I / O task such that the counter is incremented when the I / O task communicates as input and is decremented when the I / O task communicates as output.
3. The medium according to claim 1, wherein The proxy reference component is implemented as a pointer to the corresponding reference object in the driver component.
4. The medium according to claim 1, wherein The standby operation further includes retaining state information of the driver component, the state information being retrieved and stored for the modified version of the driver component.
5. The medium according to claim 1, wherein The restore operation further includes restoring state information retained from the driver component at the modified version of the driver component.
6. The medium according to claim 1, wherein At the driver component, the standby operation further includes: Processing active I / O tasks on the driver component without accepting new I / O tasks; closing a reference object at the driver component, the reference object having a corresponding proxy reference object; and initiating shutdown of the driver component; and Wherein, at the modified version of the driver component, the recovery operation comprises: regenerating a reference object for the reference object on the proxy object component; and One or more new task requests are processed, wherein the one or more new task requests are removed from a pending state at the proxy object component and passed to the driver component.
7. A computer-implemented method for implementing a proxy object system, wherein a proxy object component that generates a proxy object for a task receives or intercepts a pending task request using a driver component, if the task request is an I / O task then the generated proxy object is a proxy count object that tracks any I / O tasks active on the driver component, if the task request is a session task then the generated proxy object is a proxy reference object, the method comprising: receiving a modification indication at the proxy object component to modify the driver component; Initiating a standby mode at the proxy object component, wherein the standby mode includes one or more of the following: finalizing the I / O tasks being processed based on counting a proxy count object tracked at the proxy object component to confirm that all I / O tasks have been processed; causing a closing session task at the driver component but a corresponding proxy reference object in the proxy object component to be in a suspended state; causing a new task request received at the proxy object component to be in a suspended state and not be processed immediately; determining that the driver component has been modified to a modified version of the driver component; A recovery mode is initiated at the proxy object component and the driver component, the recovery mode comprising one or more of the following: regenerating a reference object for a proxy reference object in a suspended state in the proxy object component; Processes new task requests that are also pending when received during standby mode.
8. The method according to claim 7, characterized in that Further including: Determine whether the task request is an input / output (I / O task) or a session task; as well as When the task request is an I / O task, a proxy count object is generated, and when the task is a session task, a proxy reference object is generated.
9. The method according to claim 8, characterized in that The proxy counting object is implemented to track a counter of an I / O task such that the counter is incremented when the I / O task communicates as input and is decremented when the I / O task communicates as output.
10. The method according to claim 8, characterized in that The proxy reference component is implemented as a pointer to a corresponding reference object in the driver component.
11. The method according to claim 7, characterized in that The standby operation includes performing one or more of the following at the proxy object component: Make sure the proxy count object has been processed; determining that a reference object corresponding to a proxy reference object is closed at the driver component; and placing the received proxy reference object and one or more new task requests in a suspended state; and wherein the recovery operation comprises performing one or more of the following in a modified version of the driver component at the proxy component: passing a request to cause a reference object to be regenerated for the proxy reference object in a suspended state; and The one or more new task requests are passed in a pending state for processing at the modified version of the driver component.
12. The method according to claim 7, characterized in that The standby operation further includes: transmitting a request to save the state information of the driver component so that the driver component transmits the state information; and Wherein the restore operation further comprises communicating a request to restore state information to the modified version of the driver component so that the modified version of the driver component retrieves and restores the state information retained from the driver component.
13. The method according to claim 7, characterized in that At the driver component, the standby operation further includes: Processing active I / O tasks on the driver component without accepting new I / O tasks; closing a reference object at the driver component, the reference object having a corresponding proxy reference object; and initiating shutdown of the driver component; and Wherein, at the modified version of the driver component, the recovery operation comprises: regenerating a reference object for the proxy reference object on the proxy object component; and One or more new task requests are processed, wherein the one or more new task requests are removed from a pending state at the proxy object component and passed to the modified version of the driver component.
14. A system for implementing modular data operations, the system comprising: one or more hardware processors; One or more computer-readable media having executable instructions embodied thereon, which when executed by one or more processors cause the one or more hardware processors to: A proxy object component that generates a proxy object for a task, wherein the proxy object component uses a driver component to receive or intercept a pending task request, if the task request is an I / O task then the generated proxy object is a proxy counting object that tracks any I / O tasks active on the driver component, if the task request is a session task then the generated proxy object is a proxy reference object, the proxy object component is configured to: receiving a modification indication to modify a driver component; Initiating a standby mode, wherein the standby mode includes one or more of the following: finalizing the I / O tasks being processed based on counting a proxy count object tracked at the proxy object component to confirm that all I / O tasks have been processed; causing a closing session task at the driver component but a corresponding proxy reference object in the proxy object component to be in a suspended state; causing a new task request received at the proxy object component to be in a suspended state and not be processed immediately; determining that the driver component has been modified to a modified version of the driver component; and Initiating a recovery mode, wherein the recovery mode includes one or more of the following: regenerating a reference object for a proxy reference object in a suspended state in the proxy object component; Processes new task requests that are also pending when received during standby mode.
15. The system of claim 14, wherein: Further comprising a driver component, the driver component being configured to: receiving a task request directed to the proxy object component; Processing the proxy request; receiving, based on the proxy component receiving the modification indication, an indication to initiate the standby mode; Initiating the standby mode, wherein the standby mode includes processing task requests based on a standby operation; Initializing the modified version of the driver component; as well as The recovery mode is initiated, wherein the recovery mode includes processing a task request based on a recovery operation.
16. The system of claim 14, wherein: The standby operation at the proxy object component includes: Make sure the proxy count object has been processed; determining that a reference object corresponding to a proxy reference object is closed at the driver component; and The received proxy reference object and one or more new task requests are placed in a suspended state.
17. The system of claim 14, wherein: The standby operation at the driver component includes: Processing active I / O tasks on the driver component without accepting new I / O tasks; closing a reference object at the driver component, the reference object having a corresponding proxy reference object; and Initiates shutdown of the driver component.
18. The system of claim 14, wherein: The recovery operation at the proxy object component includes: transmitting a reopen object request corresponding to the proxy reference object so that a reference object is regenerated for the proxy reference object; and The one or more new task requests in a pending state are passed for processing at the driver component.
19. The system of claim 14, wherein: The recovery operation at the driver component includes: regenerating a reference object for the reference object on the proxy object component; and One or more task requests are processed, wherein the new task request is removed from a pending state at the proxy object component and passed to the driver component.
20. The system of claim 14, wherein: The proxy object component is further configured to: transmitting a reserve state request to the driver component so that the driver component transmits state information to be retained; as well as A restore state request is passed to the modified driver component to cause the driver component to retrieve state information preserved from the driver component.
Citation Information
Patent Citations
Managing cirtual hard drives as blobs
US20130305005A1
Non-disruptive multipath device driver update system and method
CN101000592A
System and method to update device driver or firmware using a hypervisor environment without system shutdown
CN101488092A