Patent Description:
It is the object of the present invention to provide a system and method for updating system software of edge device nodes.

This object is solved, by the subject matter of the independent claims.

Examples are disclosed that relate to updating system software of a computing device configured to be located at a network edge between a local network and a cloud service. One disclosed example provides a method comprising booting into a system disk image at a boot location, and receiving and storing an updated system disk image from a server computing device. The method further comprises changing the boot location from a location of the system disk image to a location of the updated system disk image and booting into the updated system disk image.

A networked computing environment may comprise distributed server systems that enable data to be stored and processed in a computing "cloud" system accessible by client devices over a wide area network. Such environments also may include "edge" computing devices that are located at an interface of a local area network (LAN) and a wide area network (WAN), such as the internet. An edge computing device may help manage uploads/downloads to/from cloud services in an efficient manner, and may cache uploaded files locally for faster client access to the files. Further, an edge computing device also may include some processing functionality of a cloud service (e.g. classification/machine learning functions), and thus may help to provide for lower latency processing of data and more efficient network bandwidth usage compared to sending the data to the cloud service for processing.

Various components of a LAN may be configured to receive updates to software and firmware from a remote server system automatically via computer network. For example, a personal computer (PC) within a LAN may receive updates via an auto-update application that communicates with a remote update service in the cloud. As updates are made available through the cloud-based update service, the auto-update application on the PC communicates with the cloud service to download the updates, and also may manage installation of the updates. The updates may be provided as individual binary files configured to replace specific older binaries on the PC.

Under such an update system, various software and/or firmware components of the PC may be updated at different times and at different rates. In the case of an edge computing device, such an update process may pose various issues. For example, due the different times and frequencies at which different software and/or firmware components may be updated, compatibility issues may arise. Further, a computing device may not work properly if any updates are only partially installed. Additionally, when problems with an update arise, it may be difficult to identify and roll back individual updates to correct the issues. Also, a computing device may operate more slowly or be unavailable while the updates are installed. In addition, a software binary update mechanism may not handle entire operating system updates well. For example, updating the edge computing device from a first version of a server operating system to a second version of the server operating system may be difficult. As an edge computing device is configured to act as a seamless extension of cloud functionality at a location physically closer to the user than a cloud data center, any such performance issues may negatively impact a user experience.

Accordingly, examples are disclosed that relate to updating computing devices, such as edge computing devices, in a manner that may help to avoid such issues. Briefly, instead of individual updated binaries, an updated system disk image may be obtained from a server computing device and stored on the computing device, wherein the updated system disk image has been tested to help ensure compatibility of components on the image and expected performance. A boot location then may be changed to a location of the updated system disk image, and the computing device may then boot into the updated system disk image. In contrast with piecemeal update methods, the download of an entire disk image allows the computing device to conveniently be updated with a full stack of well-tested, updated software.

<FIG> shows an example computing environment including an edge computing device <NUM> located at a network edge between a local area network (LAN) <NUM> and a cloud service <NUM>. The edge computing device <NUM> may reside at any suitable location between the LAN <NUM> and the cloud service <NUM>, such as in a server rack of the LAN <NUM> or other suitable location on the customer's physical premises, at a cell tower, a WiFi hotspot, and/or an intermediate data center between the local network and the cloud service, as examples.

In some examples, the edge computing device <NUM> may be configured to complement the cloud service <NUM> by providing one or more services at the network edge. For example, the edge computing device <NUM> may provide storage or data processing services to one or more client-side devices <NUM>, which may include as workstations (e.g. PCs), internet of things (IoT) devices (e.g. camera systems and/or other sensors), and/or or mobile computing devices. As described above, the edge computing device <NUM> may be configured as a local cache for managing the uploading and downloading of data to/from the cloud, and may be configured to perform some data processing tasks locally. The edge computing device <NUM> also may be configured to provide storage tiering, data backup, and/or any other suitable services. By providing such services at the network edge, the edge computing device <NUM> may reduce latency between the cloud service <NUM> and the client-side devices <NUM> and provide continuity-of-service during lapses in connectivity with the cloud, among other advantages.

Updates to edge device software and/or firmware may be provided to the edge computing device <NUM> via a server computing device, such as cloud service <NUM> or another update server <NUM>. <FIG> shows a block diagram of an edge computing device <NUM> (which may represent edge computing device <NUM>) that has obtained a software and/or firmware update. The edge computing device <NUM> comprises a processor <NUM> and one or more physical storage devices, such as first storage device <NUM> and second storage device <NUM>, among other possible components.

The first storage device <NUM> comprises an image partition <NUM> storing one or more bootable system images, such as system disk image <NUM> and updated system disk image <NUM>. Prior to obtaining the updated system disk image <NUM>, the edge computing device <NUM> may boot into the system disk image <NUM>. During an update, the updated system disk image <NUM> is obtained, and the boot location is changed to the location of the updated system disk image <NUM>. The system then reboots into the updated system disk image <NUM>.

In some examples, the edge computing device <NUM> may include multiple physical hardware storage devices, an example of which is depicted in <FIG> as second storage device <NUM>. The second storage device <NUM> may be used to store user files <NUM> and/or client settings <NUM>. In this manner, any errors encountered on the first storage device <NUM> may be isolated so as not to affect the user files <NUM> or the client settings <NUM>.

In the example of <FIG>, image partition <NUM> is a partition of a physical disk and is configured to boot a physical device. In other examples, the image partition may reside on a virtual hard disk and may be configured to boot a virtual machine installed on a suitable computing device. <FIG> depicts a block diagram of a virtual machine host device <NUM>, such as a hypervisor host. The virtual machine host <NUM> is configured to boot a virtual edge device <NUM> into a basic OS <NUM> located on a first virtual storage device <NUM>. The host <NUM> is also configured to mount an image partition <NUM> of the first virtual storage device <NUM> as a virtual hard disk (VHD) for the virtual edge device <NUM>. After being set up on the host, the virtual edge device <NUM> may operate in a manner analogous to the edge computing device <NUM> of <FIG> to enable any suitable physical computing device to operate as the edge computing device <NUM>.

The image partition <NUM> may be analogous to the image partition <NUM> in the example of <FIG>. The image partition <NUM> may host one or more bootable disk images, such as a system disk image <NUM> and an updated system disk image <NUM> (downloaded as an update, for example), analogous to the system disk image <NUM> and the updated system disk image <NUM> in the example of <FIG>.

As described above, the virtual edge device <NUM> may be configured to boot into the basic OS <NUM>. The basic OS <NUM> may be configured to change a boot location of the virtual edge device <NUM> to boot into the system disk image <NUM> a first time the virtual edge device <NUM> is set up. Then, for updates, an OS running inside the system disk image <NUM> downloads the updated system disk image <NUM> and swaps the boot location of the virtual edge device <NUM> to the updated image <NUM>.

The virtual edge device <NUM> may include multiple virtual storage devices. One example is depicted in <FIG> as second storage device <NUM>. The second storage device <NUM> may be used to store user files <NUM> and/or client settings <NUM> for the virtual edge device <NUM>. In addition to the virtual storage devices, the virtual edge device <NUM> also comprises a processor <NUM>.

With reference now to <FIG>, an example computing environment is illustrated in which a cluster <NUM> of computing devices <NUM> may operate as an edge computing device, wherein each of the computing devices <NUM> may be referred to as an edge device node. The cluster <NUM> is located at a network edge between a LAN <NUM> and a cloud service <NUM>, analogous to the edge computing device <NUM> of <FIG>. However, each individual computing device <NUM> may be structurally analogous to the computing devices <NUM> and/or <NUM> in the examples of <FIG> and <FIG>, respectively. The use of such a cluster may allow computer resource usage to be dynamically scaled according to client need, and provide redundancy in data storage, among other possible advantages.

Like the edge computing device <NUM> example of <FIG>, the cluster <NUM> may be configured to complement the cloud service <NUM> by providing one or more services at the network edge to one or more client-side devices <NUM>, such as workstations in the customer's office, internet of things (loT) devices (e.g. cameras and/or other sensors), and/or mobile computing devices. In an embodiment, one node of the cluster <NUM> is configured as an orchestrator <NUM> to manage one or more other nodes <NUM>. The orchestrator <NUM> may be similar or identical to each of the nodes <NUM> from a hardware standpoint, but may include software executable to exercise control over various aspects of the other nodes of the cluster <NUM>. for example, the orchestrator <NUM> may coordinate an updating process between the cluster <NUM> and an update server <NUM>.

Updating the cluster <NUM> may present various challenges compared to updating a single edge device. For example, if updating of the cluster is not commonly controlled, two or more nodes <NUM> may end up booting into different versions of the system disk image, thereby giving rise to compatibility issues between the different nodes of the cluster. Accordingly, the orchestrator <NUM> may be configured to orchestrate the updating of the nodes <NUM> in the cluster <NUM> to help ensure that each node is configured to boot into the same version of the system disk image.

<FIG> show a flow diagram depicting an example method <NUM> for updating system software of a computing device. The following description of method <NUM> is provided with reference to the software and hardware components described above and shown in <FIG>, but it will be appreciated that method <NUM> also may be performed in other contexts using other suitable hardware and software components.

First referring to <FIG>, at <NUM>, method <NUM> includes booting into a system disk image at a boot location. In some examples, as illustrated in <FIG>, booting the edge computing device <NUM> comprises booting a physical edge computing device <NUM> into the system disk image <NUM> located within an image partition <NUM>. In other examples, at <NUM>, method <NUM> may include booting a virtual edge computing device into a system disk image stored on a virtual hard disk hosted by a physical machine. In yet other examples, an edge computing device may be implemented via any suitable arrangement of physical and virtual machines.

Method <NUM> further includes, at <NUM>, receiving an updated system disk image from a server computing device and storing the updated system disk image. The updated system disk image may comprise a full updated stack with consistent and well-tested dependencies, which may help ensure software and firmware compatibility.

In the physical machine update example of <FIG>, the edge computing device <NUM> may receive the updated system disk image <NUM> from a server computing device, such as the update server <NUM> of <FIG>, and store the updated system disk image <NUM> in a new directory within the image partition <NUM> on the first storage device <NUM>. In such examples, as indicated at <NUM>, user files may be stored on a different physical storage device than a physical storage device storing the system disk image and the updated system disk image. Likewise, client settings also may be stored on a different physical storage device than that used to store the system disk image and updated system disk image, as indicated at <NUM>.

Where the edge computing device is one of a cluster of computing devices (virtual or physical), the edge computing device may act as an orchestrator and instruct one or more other computing devices of the cluster to obtain a specified system disk image version, as indicated at <NUM>. It will be appreciated that this may be the most recently updated system disk image or may be an older version of the system disk image. For example, some updates may run successfully on some nodes, but not on others. As it may be desirable for all the nodes of the cluster to be consistent, the orchestrator may instruct all other nodes of the cluster to use a prior system disk image to help ensure that each node of the cluster is operating using the same prior system disk image.

Continuing with the cluster example, where the edge computing device is not an orchestrator device, method <NUM> may include, at <NUM>, receiving, from another computing device of the cluster of computing devices (e.g. an orchestrator device), an instruction to obtain a specific version of the updated system disk image. The edge computing device may then obtain and store the specific version of the updated system disk image as described above with reference to process <NUM>.

Referring next to <FIG>, having received the updated system disk image, at <NUM>, method <NUM> includes changing the boot location from a location of the system disk image to a location of the updated system disk image. As described above with reference to <FIG>, the boot location of the physical edge computing device <NUM> itself may be changed. In another example, as described above regarding <FIG>, changing the boot location may comprise changing the boot location of the virtual machine <NUM>.

Next, at <NUM>, method <NUM> includes booting into the updated system disk image. For example, the edge computing device <NUM> may boot directly into the updated system disk image <NUM>, or the virtual edge device <NUM> may boot into the updated system disk image <NUM>. In this manner, the edge computing device may access a uniform, updated stack provided by the updated system disk image, avoiding potential disruptions associated with installing individual updates.

In some circumstances, it is desirable to roll back or revert updates installed on the edge computing device to a previous version. Accordingly, at <NUM>, method <NUM> includes receiving an instruction to roll back updates contained within the updated system disk image. For example, if an error arising from the updated system disk occurs during or after booting into the updated system disk image, it may be less disruptive for the edge computing device to resume booting into an older version of the system disk image. Accordingly, in an embodiment, a server computing device operated by the service provider, a LAN administrator, or other entity instructs the edge computing device to roll back an embodiment is the updates. In , at <NUM>, the instruction automatically generated via a program on the edge computing device itself when the computing device encounters an error during or after booting into the updated system disk image. For example, the system disk image, the updated system disk image, and/or the basic OS may include an executable that may detect potential errors and instruct the edge device to roll back the updates if an error is detected.

In a cluster of computing devices, the instruction is includes be provided by an orchestrator device. Accordingly, at <NUM>, method <NUM> , at one node of a cluster of computing devices, instructing one or more computing devices of the cluster of computing devices to roll back updates contained within the updated system disk image. For example, the updated system may run correctly on some of the computing devices <NUM> in the example of <FIG>, but not on others. In this example, the orchestrator is <NUM> configured to instruct one or more of the computing devices <NUM> booting into the updated system disk image to roll back the updates to an older version of the system disk ensures image. In this manner, the orchestrator <NUM> that each node of the cluster may boot into the same version of the system disk image.

Likewise, where the computing device is within a cluster but not an orchestrator, method <NUM> may comprise, at one node of a cluster of computing devices, receiving, from another computing device of the cluster of computing devices, an instruction to roll back updates contained within the updated system disk image, as indicated at <NUM>. For example, one of the computing devices <NUM> may receive this instruction from the orchestrator <NUM>.

At <NUM>, method <NUM> further comprises, based on receiving the instruction to roll back the updates, changing the boot location from the location of the updated system disk image to the location of the system disk image. It will be appreciated that the boot location may be changed in a similar manner as described above regarding process <NUM>. In this manner, the edge computing device may quickly access the stack contained within the system disk image.

As updating the edge computing device is performed by swapping the boot location, in some examples, the edge computing device may either retain or delete one or more previous versions of the system disk image after successfully booting into the updated system disk image. Retaining a previous version allows updates to be rolled back to a previous version of the system disk image without downloading or otherwise obtaining the previous version of the system disk image from another storage location, but does utilize storage space for each prior system disk image. As such, in some examples, a single prior version (e.g. an immediately prior version) of the image may be retained.

Continuing, at <NUM>, after the boot location is changed to the system image, method <NUM> includes booting into the system disk image. The edge computing device then utilizes a previous version of the stack installed on the system disk image. In this manner, the updates may be quickly and uniformly rolled back, which may ensure consistency between different edge computing devices and reduce disruptions experienced by the customer.

As described above, in examples where an edge computing device is implemented as a virtual machine, the system disk image may be installed as a virtual hard disk on a host physical computing device. <FIG> shows an example method <NUM> for initially setting up a virtual edge computing device as a virtual machine. Method <NUM> includes, at <NUM>, receiving an initialization disk image, e.g. by downloading the initialization disk image from a cloud service. As indicated at <NUM>, the method <NUM> may include mounting the initialization disk image as a virtual disk. For example, the initialization disk image <NUM> may be mounted as a VHD in the example of <FIG>.

The initialization disk image comprises an operating system partition and an image partition, the image partition comprising the system disk image. Method <NUM> further comprises, at <NUM>, booting into the operating system partition, and then at <NUM> changing the boot location from a location of the operating system partition to the location of the system disk image.

In some examples, the methods and processes described herein may be tied to a computing system of one or more computing devices.

For example, the computing devices <NUM>, <NUM>, <NUM>, and <NUM>, the orchestrator <NUM>, and/or the client-side devices <NUM> and <NUM> may comprise aspects of the computing system <NUM>.

The term "program" may be used to describe an aspect of computing system <NUM> implemented to perform a particular function. In some cases, a program may be instantiated via logic machine <NUM> executing instructions held by storage machine <NUM>. It will be understood that different programs may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Likewise, the same program may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The term "program" may encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc..

Another example provides, on a computing device configured to be located at a network edge between a local network and a cloud service, a method for updating system software of the computing device, the method comprising: booting into a system disk image at a boot location, receiving, from a server computing device, an updated system disk image and storing the updated system disk image, changing the boot location from a location of the system disk image to a location of the updated system disk image, and booting into the updated system disk image. The method may additionally or alternatively include storing user files on a different physical storage device than a physical storage device storing the system disk image and the updated system disk image. The method may additionally or alternatively include storing client settings on a different physical storage device than a physical storage device storing the system disk image and the updated system disk image. Booting into the system disk image at the boot location may additionally or alternatively include booting a virtual machine into the system disk image. The method may additionally or alternatively include, before booting into the system disk image at the boot location, installing the system disk image by receiving an initialization disk image, the initialization disk image comprising an operating system partition and an image partition, the image partition comprising the system disk image, booting into the operating system partition, and changing the boot location from a location of the operating system partition to the location of the system disk image. The method may additionally or alternatively include mounting the initialization disk image as a virtual disk. The method may additionally or alternatively include receiving an instruction to roll back updates contained within the updated system disk image, based on receiving the instruction to roll back the updates, changing the boot location from the location of the updated system disk image to the location of the system disk image, and booting into the system disk image. Receiving the instruction to roll back the updates may additionally or alternatively include receiving an instruction to automatically to roll back the updates if the computing device encounters an error during or after booting into the updated system disk image. The computing device may additionally or alternatively include one node of a cluster of computing devices. The method may additionally or alternatively include instructing one or more computing devices of the cluster of computing devices to boot into a specified system disk version. The method may additionally or alternatively include receiving, from another computing device of the cluster of computing devices, an instruction to boot into a specified system disk version.

Another aspect provides a computing device comprising a processor, and a storage device storing instructions executable by the processor to receive an initialization disk image, the initialization disk image comprising an operating system partition and an image partition, the image partition comprising a system disk image, boot into the operating system partition, change a boot location from a location of the operating system partition to a location of the system disk image, boot into the system disk image, receive an updated system disk image, change the boot location from the location of the system disk image to a location of the updated system disk image, and boot into the updated system disk image. Booting into the operating system partition may additionally or alternatively include booting a virtual machine into the operating system partition, and changing the boot location may additionally or alternatively include changing the boot location of the virtual machine. The instructions may additionally or alternatively be executable to mount the initialization disk image as a virtual disk. The instructions may additionally or alternatively be executable to receive an instruction to roll back updates contained within the updated system disk image, based on receiving the instruction to roll back the updates, change the boot location from the location of the updated system disk image to the location of the system disk image, and boot into the system disk image. The instructions may additionally or alternatively be executable to automatically roll back the updates if the computing device encounters an error during or after booting into the updated system disk image. The instructions may additionally or alternatively be executable to instruct one or more other computing devices of a cluster of computing devices to boot into a specified system disk image version. The instructions may additionally or alternatively be executable to receive, from another computing device of a cluster of computing devices, an instruction to boot into a specified system disk image version.

Another aspect provides a computing device configured to orchestrate updating system software on a plurality of computing devices of a cluster of computing devices, the computing device comprising a processor, and a storage device storing instructions executable by the processor to configure a boot location for each computing device of the plurality of computing devices to boot into a location of a system disk image, receive an updated system disk image, and change the boot location from the location of the system disk image to a location of the updated system disk image such that each computing device of the plurality of computing devices boots into the updated system disk image. The instructions may additionally or alternatively be executable to receive an initialization disk image, the initialization disk image comprising an operating system partition and an image partition, the image partition comprising the system disk image, configure the boot location for each computing device of the plurality of computing devices to boot into a location of the operating system partition, and change the boot location from the location of the operating system partition to the location of the system disk image such that each computing device of the plurality of computing devices boots into the system disk image. The instructions may additionally or alternatively be executable to instruct each computing device of the plurality of computing devices to boot into a specified system disk image version.

Claim 1:
A method on a computing device (<NUM>, <NUM>, <NUM>) configured as an edge device node in a cluster (<NUM>) of edge device nodes (<NUM>) located at a network edge between a local network (<NUM>, <NUM>) and a server computing device (<NUM>, <NUM>, <NUM>), the computing device being further configured as an orchestrator for orchestrating a process of updating system software of the edge device nodes of the cluster to help ensure that each edge device node of the cluster is configured to boot into a same version of a system disk image, the method comprising:
booting (<NUM>) from a system disk image (<NUM>) at a boot location within a storage device (<NUM>) of the computing device;
receiving (<NUM>), from the server computing device, an updated system disk image (<NUM>) and storing the updated system disk image within the storage device of the computing device;
changing (<NUM>) the boot location from a location of the system disk image to a location of the updated system disk image;
booting (<NUM>) from the updated system disk image;
receiving (<NUM>) an instruction to roll back to a prior version of the system disk image, the instruction being an instruction automatically generated at the computing device when an error is detected at the computing device or automatically generated at an other edge device node of the cluster when an error is detected at the other edge device node of the cluster;
instructing (<NUM>) the edge device nodes of the cluster to boot from the prior version of the system disk image, thereby ensuring that each edge device node of the cluster boots into the same version of the system disk image;
based on receiving the instruction to roll back, changing (<NUM>) the boot location from the location of the updated system disk image to a location of the prior version of the system disk image; and
booting (<NUM>) from the prior version of the system disk image.