Embedded system environment with improved overlay filesystem storage management

By bypassing the file copying mechanism of the package management system in the embedded system, the package file is compared with the underlying file, and only the difference file is copied to the overwrite file system, which solves the problem of wasted storage resources and improves storage management efficiency.

CN118819402BActive Publication Date: 2026-01-16HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202410455830.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2023-09-12
Filing Date
2024-04-16
Publication Date
2026-01-16
Estimated Expiration
2044-04-16

AI Technical Summary

Technical Problem

Existing overlay file systems suffer from storage resource waste in embedded systems, especially during software updates, where unmodified files are copied to volatile memory, leading to insufficient storage space and limiting the number and size of updated files.

Method used

By bypassing the file copying mechanism of the package management system, the package file is stored in temporary storage and compared with the file in the underlying file system. Only the differences are copied to the overriding file system, avoiding the duplicate storage of unmodified files.

Benefits of technology

It effectively saves volatile memory space, improves storage management efficiency, ensures that only modified files are stored in volatile memory, and reduces resource waste.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN118819402B_ABST
    Figure CN118819402B_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to an embedded system environment with improved overlay file system storage management. As part of the embedded system environment, an overlay file system package manager obtains a package file for a file system operation. The package file is stored in a temporary memory location. A composite layer presenting an upper file system and a lower file system in the overlay file system is accessed to compare the package file to an associated file in the composite layer. When a difference is detected between the package file and the associated file, the package file is copied or moved to the upper file system. If the package file is not different from the associated file in the composite layer, it is not copied and deleted from the temporary memory location.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND

[0001] When working in an embedded system environment with limited volatile and non-volatile memory, it is a common practice to couple a read-only underlying file system with a read / write overlay file system. Files in the overlay file system shadow files in the underlying file system, presenting the user with a composite file system where unmodified files come from the underlying file system and modified files come from the overlay file system. This configuration allows the read-only underlying file system to reside in non-volatile (e.g., read-only) memory, while changes (typically small amounts) made to files on the file system during a release cycle or run session are stored in the read / write overlay file system in volatile (e.g., random access) memory. BRIEF DESCRIPTION OF DRAWINGS

[0002] The various objects, features, aspects and advantages of the present subject matter will become more apparent from the following description, along with the drawings, in which like numbers represent similar components throughout.

[0003] Figure 1 An embedded system environment is illustrated in accordance with some examples.

[0004] Figure 2A An overlay file system environment block diagram is illustrated in accordance with some examples.

[0005] Figure 2B An overlay file system package management operation block diagram is illustrated in accordance with some examples.

[0006] Figure 3 An overlay file system package management flow diagram is illustrated in accordance with some examples.

[0007] Figure 4 FIG. 1 is an illustration of an example of a computing device that can implement examples described herein.

[0008] While examples are described with reference to the above drawings, the drawings are intended to be illustrative, and various other examples are consistent with the spirit of the present disclosure and are within the scope of the present disclosure. DETAILED DESCRIPTION

[0009] Package management systems are used to assemble various related software files into specially formatted package files. For example, a package file can include one or more programs that can be related to each other for the purpose of performing a particular task, such as executing an application or implementing an aspect of an operating system. The one or more programs can also include system initialization scripts, command shells, web servers, and / or data center support software, etc. The package file can also include associated data, documentation, and / or configuration information for the program(s). The package file keeps the related software objects together until the file is opened and the contents are used to implement a software installation, e.g., a software patch update, a new version release, etc.

[0010] An operating system package manager, such as Red Hat Package Manager (also referred to as "RPM Package Manager" or "RPM"), is one example of a package management system. RPM is a LINUX TM based application used to install, upgrade, or uninstall applications, for example, within a cloud-based computer network. In RPM, a package file can be referred to as a "package" or a ".rpm file." The term "RPM" can also be used interchangeably to refer to either the package management system or the package file.

[0011] A file system is a directory hierarchy used to organize files in an embedded system. A file system includes a collection of files and their management protocols. File system middleware and / or application software is mounted (attached or installed) at a mount point (directory location) in a currently accessible storage device, and the kernel typically provides file system management mechanisms, e.g., for file operations (create, delete, read, write, open, close, etc.) as well as directory access, creation, and deletion.

[0012] An overlay file system (sometimes referred to as a union file system or union mount file system) combines multiple different underlying mount points into one or more composite underlying directory structures that contain underlying files and subdirectories from one or more sources; and overlays an upper directory file system over the underlying directories such that files in the upper directory replace files in the composite underlying directories. For example, LINUX TM OverlayFS in LINUX TMAn overlay file system is provided that covers file system functionality. While the underlying directory structure of the overlay file system is typically stored in read-only non-volatile memory, the upper directory structure is typically stored in read / write volatile memory that can be modified. For example, a modified file in the overlay upper directory structure (e.g., a software patch update or new version release delivered via a package file) replaces an original file in the underlying lower directory structure. Thus, when a particular file object exists in both file systems, the object in the 'upper' file system is visible to a user and / or at least one processor coupled to the memory, while the object in the 'lower' file system is hidden or merged with the 'upper' object in the case of a directory.

[0013] Data storage resources are often scarce within embedded system environments. Embedded systems can include, for example, real-time embedded systems; standalone embedded systems; networked information appliances; or mobile devices. Storage devices can be volatile memory that requires power to maintain stored information, or non-volatile memory that can retain stored information even after power is removed. Typically, volatile memory can be more expensive than non-volatile memory and often has a smaller memory capacity. Therefore, resource management should preserve volatile memory. Regardless of whether the memory type is volatile or non-volatile, space within either of these memory types should only be used when advantageous or beneficial. For an overlay file system within an embedded system environment, the read-only underlying resides in non-volatile memory, while the read / write overlayed modified files reside in volatile memory. Therefore, changes to files within the file system during a running session are stored in the read / write overlay in volatile memory.

[0014] Overlay file systems, such as OverlayFS, are not efficient at managing storage resources in many typical software upgrade scenarios. Current overlay techniques store a copy of every file copied to the file system in the overlay, even if the file is identical to a copy of the file found in the underlying. In this environment, changes to many files or very large files can quickly deplete the limited amount of volatile storage. Systems that support live software updates or "hot patching" exacerbate this problem further as new binaries are deployed. Typically, the packages used to deploy these software updates contain a mix of files and binaries that have changed as well as a mix of those that have not changed, but all files included in the update are copied to the file system and thus to the overlay, so they deplete storage in the volatile memory overlay regardless of whether they are actually different from the version already present in the underlying. That is, current overlay techniques store files in the read / write overlay in volatile memory even if the copy of the file on the lower directory is identical to the copy of the file on the upper directory. This redundancy is not beneficial as it reduces the optimal performance of the system as space in volatile memory should be saved for beneficial tasks without redundancy.

[0015] There is further storage inefficiency with updates to a large number of files as these files are stored in the read / write overlay in volatile memory. As a result, the limited memory capacity of the volatile memory is quickly filled. The same is true for large size files.

[0016] As yet another drawback, when performing live (real-time) software updates or "hot patching," many files and new binaries are also stored in the read / write overlay in volatile memory. Current overlay file systems copy all files in the package to the read / write overlay in volatile memory regardless of whether the latest version of the file is different from the previous version of the file stored in the read-only underlying. This condition limits the size and number of changes that can be made to OverlayFS, effectively limiting how many files can be efficiently updated during a particular hot patch.

[0017] The following examples describe systems, methods, and articles of manufacture for implementing improved overlay file system storage management. Systems and methods of storage management include a storage management controller or overlay file system manager that operates to bypass a file copy mechanism of a package management system. This "bypass" approach can be implemented in a kernel file system management mechanism. For example, a package file for an application upgrade or new release can be stored in temporary storage and retrieved from temporary storage. Each new file of the package file can then be compared to an associated prior version file stored in an underlying or overlay file system. If a match is found, the new file is not stored in the overlay file system. If a match is not found (i.e., there is a difference between the new file and the associated prior file), the new file is copied or moved from temporary storage to the overlay file system. This solution saves volatile memory by ensuring that only modified files are copied to the overlay file system.

[0018] In one example, at least one memory is configured to store an overlay file system that includes an underlying file system that contains one or more read-only underlying files or subdirectories and an upper file system that is mounted over the underlying file system and contains writable overlay files or subdirectories. A "composite" layer is configured to present a union of the upper file system and the underlying file system that includes the overlay files or subdirectories and the underlying files or subdirectories that are not replaced by the overlay files or subdirectories.

[0019] When the one or more file management software instructions are executed in, for example, an embedded system environment, the overlay file system package manager or storage management controller operates to obtain one or more package files based on a request for a file system operation. The request for the file system operation can specify the one or more package files. The overlay file system package manager further operates to store the one or more package files in a temporary memory location. The overlay file system package manager further operates to access a composite layer that is stored in memory and configured to present a union of an upper file system and a lower file system in the overlay file system, the union including read-only underlying files or subdirectories within the overlay file system that are not replaced by overlay files or subdirectories and writable underlying files or subdirectories. The overlay file system package manager further operates to compare each of the one or more package files stored in the temporary memory location to an associated file or subdirectory in the composite layer. The overlay file system package manager further operates to detect whether there is a difference between the package file and the associated file or subdirectory in the composite layer, and if there is a difference between the package file and the associated file or subdirectory in the composite layer, copy or move / write the package file of the one or more package files to the upper file system. In some examples, the overlay file system package manager further operates to not copy the package file of the one or more package files to the upper file system if the package file is not different from the associated file or subdirectory in the composite layer, and delete the package file of the one or more package files from the temporary memory location.

[0020] In some examples, the lower file system can include non-volatile memory and different underlying mount points can be combined into one or more composite lower directory structures.

[0021] In some examples, the upper file system includes volatile memory.

[0022] In some examples, the request for the file system operation can include at least one of a pre-install script, a file update script, a new application release or version script, a file patch script, or a file replacement script.

[0023] In some examples, the one or more package files can include at least one of an application, an update file including a new application release or version, a patch file, or a replacement file.

[0024] In some examples, the writable overlay file or subdirectory can include at least one of an update file including a new software release or version, a patch file, or a replacement file.

[0025] In some examples, the instructions to obtain the one or more package files can further include instructions to abort direct file copying of the one or more package files into the overlay file system.

[0026] In some examples, comparing the package file of the one or more package files can further include instructions to: detect whether an earlier version of the package file is stored in the overlay layer and determine whether the package file is different from the retrieved earlier version of the file.

[0027] In some examples, the comparison of each package file of the one or more package files stored in the temporary memory location to the associated file or subdirectory in the overlay layer can be performed without unmounting the overlay file system.

[0028] In some examples, the overlay file manager can include an overlay file system kernel. The overlay file system kernel can include an operating system kernel (e.g., LINUX TM kernel), the overlay file system can be an operating system overlay file system (e.g., LINUX TM Red Hat OverlayFS), and the overlay file system package manager can be an operating system overlay file system package manager (e.g., LINUX TM Red Hat Package Manager (RPM)).

[0029] Accordingly, advantageously, the improved storage management solution described herein saves volatile memory by ensuring that only changed files are copied to the overlay and consuming volatile memory. This approach is achieved by bypassing the file copy mechanism of the package management system to write each new file from a package file to a temporary memory location, performing a comparison of the new file to the associated file (e.g., a previous version of the file) stored in the underlying or overlay file system, and copying or moving / writing the file from the temporary memory location to the overlay file system if the file is different from the associated file.

[0030] Figure 1 An embedded system environment suitable for implementing an overlay file bypass system or overlay file system management system is illustrated in accordance with some examples. As Figure 1 shown, system 100 includes a central processing unit / at least one processor 102 coupled to read only memory 104 or random access memory 106 and operative to run software stored in read only memory 104 or random access memory 106 to control the actions of various other circuits such as application specific circuitry (ASIC) 108, input device(s) 110, output device(s) 112, and communication interface 114.

[0031] Embedded systems such as system 100 typically have limited processing, memory, and other resources. They typically do not have auxiliary storage devices. In many applications, embedded systems must be highly reliable and cannot be taken offline or reset. They can have to perform functions for a specific period of time or work for a specific amount of time. Further, some embedded systems can have to work in extreme environmental conditions, such as very high temperature and humidity conditions.

[0032] Various types of embedded systems employ a variety of different types of processors and / or operating systems 102 based on the tasks they are designed to perform.

[0033] Embedded systems can include, for example, real-time embedded systems; standalone embedded systems; networked information appliances; or mobile devices. Real-time embedded systems operate to complete specific tasks within a specific time period. Standalone embedded systems work in standalone mode. The system takes input from input devices 110, processes it, and generates a desired output, for example, to output devices 112. The input can be from a human (e.g., a person pressing a button), or in the form of an electrical signal from a transducer. The output can be in the form of an electrical signal to drive another system or output device 112, such as an LCD or LED display used to display information to a user.

[0034] Networked information appliances are embedded systems that are connected to a network via a communications interface 114 and can be accessed via one or more networks, such as a local area network (LAN) or the Internet (not shown). For example, networked information appliance embedded systems typically run a TCP / IP stack, then connect to a network via a point-to-point protocol (PPP) or Ethernet, and communicate with other nodes in the network. The network nodes can be, for example, notebook computers, desktop computers, microprocessor-based or programmable consumer electronics, network appliances, mobile phones, smart phones, pagers, radio frequency (RF) devices, infrared (IR) devices, personal digital assistants (PDAs), set-top boxes, cameras, integrated devices combining two or more of the foregoing devices, etc. In some examples, embedded system environment 100 can be coupled to a data center (not shown) and be a subscriber to cloud computing resources. In one example, the overlay file system management system described below can be available to embedded system environment 100 via a subscription to cloud computing resources to, for example, install, upgrade, or uninstall applications available within a cloud-based system. In one example, an external entity such as a web service that needs to perform a file system operation can pass a request to embedded system environment 100, where the request for the file system operation can include, for example, a pre-install script, a file update script, a new application release or version script, a file patch script, or a file replacement script.

[0035] It is to be appreciated that the components of the operating environment of system 100 are examples; there can be more or fewer components in various configurations. It is to be appreciated that the operating environment can be part of a distributed computing environment, a cloud computing environment, a client server environment, etc.

[0036] As will be apparent to those of ordinary skill in the art having the benefit of the present description, the various features and functionality described herein as being part of an overlay file system environment can be implemented using any arrangement of components necessary to perform the overlay file system manager features and functionality described below; and can be implemented in various combinations and permutations in one or more separate or shared units.

[0037] Figure 2A An overlay file system environment block diagram is illustrated in accordance with some examples. In Figure 2A The overlay file system environment 200 includes at least one memory, such as a non-volatile / read-only memory 204 and a volatile / random access memory 206, configured to store an overlay file system including an underlying file system 230 containing one or more read-only underlying files or subdirectories and an upper file system 240 mounted on the underlying file system and containing writable overlay files or subdirectories. A composite layer 250 is configured to present a union of the upper file system 240 and the underlying file system 230, which includes overlay files or subdirectories 270 and underlying files or subdirectories 260 that are not replaced by an overlay file or subdirectory. As a feature of the various examples herein, the overlay file system environment 200 also includes a temporary memory location 220, which can be a location within the random access memory 206 or a remote storage device at another location (as shown). The improved storage management solution described herein saves volatile memory 206 by ensuring that only changed files are copied to the overlay file system to consume volatile memory. In some examples, this approach is implemented by bypassing the file copy mechanism of the package management system to write each new file from a package file to the temporary memory location 220, performing a comparison of the new file (e.g., new files 210A-210C) to an associated file (e.g., a previous version of the file) stored in the underlying or overlay file system (e.g., associated file 280), and if the new file is different from the associated file, copying or moving / writing the new file from the temporary memory location 220 to the overlay file system.

[0038] Figure 2BA block diagram of an overlay file system package management operation is illustrated in accordance with some examples. In some examples, the overlay file system manager 202 can be implemented within a central processing unit 203 and / or dedicated circuitry (not shown) of an embedded system (e.g., embedded system 100). In some examples, the overlay file system manager 202 can reside on a client node of a network and perform one or more methods of encircling description. For example, the client node including the overlay file system manager 202 can be one of a plurality of client and server nodes residing on the same LAN or residing on different LANs that can be coupled together through the Internet, but separated by firewalls, routers, and / or other network devices. In some examples, the client node including the overlay file system manager 202 can reside in a cloud network. In various examples, the client node including the overlay file system manager 202 can be a network information appliance that is incorporated in or in communication with one or more of a notebook computer, a desktop computer, a microprocessor-based or programmable consumer electronic device, a network appliance, a mobile phone, a smart phone, a pager, a radio frequency (RF) device, an infrared (IR) device, a personal digital assistant (PDA), a set-top box, a camera, or an integrated device combining at least two of the foregoing devices, etc.

[0039] In operation, when one or more file management software instructions are executed, the overlay file system package manager or storage management controller 202 (e.g., implemented within a central processing unit 203 and / or dedicated circuitry (not shown) of an embedded system) operates to obtain one or more package files (e.g., package files 210A-210C) based on a received file system operation request (e.g., via communication interface 214). For example, the request for a file system operation can specify one or more package files, such as package files 210A-210C, which can include hundreds or even thousands of package files that can be relatively large (e.g., > 1 MB) or relatively small (e.g., up to 1 MB).

[0040] The overlay file system package manager 202 also operates to store the one or more package files 210A-210C in a temporary storage or memory location 220. For example, the temporary storage location 220 can be a location within random access memory 206, or it can be a remote storage device at another location. In some examples, the overlay file system package manager 202 also operates to abort direct file copying of the one or more package files into the overlay file system and transfer the package files to the temporary storage device or memory location 220.

[0041] The overlay file system package manager 202 also operates to access a composite layer 250 that is stored in memory (e.g., within random access memory 206) and configured to present a union of the upper file system 240 and the lower file system 230 in the overlay file system, including read-only underlying files or subdirectories 260 that are not replaced by overlay files or subdirectories within the overlay file system (e.g., the most recent updates to previous underlying or overlay files) and writable overlay files or subdirectories 270.

[0042] The overlay file system package manager 202 also operates to compare each of the one or more package files 210A-C stored in the temporary memory location 220 to the associated file or subdirectory 280 represented in the composite layer 230. For example, the overlay file system package manager 202 also operates to detect whether there is a difference between a package file (e.g., package file 210A) and the associated file or subdirectory 280 represented in the composite layer 230, and if there is a difference between the package file and the associated file or subdirectory in the composite layer, copy or move / write the package file of the one or more package files 210A-C to the upper file system 240. For example, the package file 210A can be copied or moved to the upper file system 240 as represented by new package file 290. In some examples, the overlay file system package manager 202 also operates to not copy the package file of the one or more package files 210A-C to the upper file system 240 if the package file is not different from the associated file or subdirectory in the composite layer (e.g., when there are no changes to the previous version of the package file), and delete the package file of the one or more package files 210A-C from the temporary memory location 220. Thus, at the end of the file system operation, only the new package file remains in memory as part of the overlay file system, and the temporary memory location 220 is cleared for the next file system operation.

[0043] It is to be appreciated that the components of the overlay file system manager 202 are examples; there can be more or fewer components in various configurations. It is to be appreciated that the operating environment can be part of a distributed computing environment, a cloud computing environment, a client server environment, etc.

[0044] As will be apparent to those of ordinary skill in the art having the benefit of the present description, the various features and functionality described herein can be implemented using any arrangement of components necessary to perform the overlay file system manager 202 features (and functionality); and can be implemented in various combinations and permutations in one or more separate or shared units.

[0045] Figure 3 FIGURE 1 illustrates an example of an overlay file system package management system 100, according to some examples. The overlay file system package management system 100 includes an overlay file system 102 that is configured to present a union of an upper file system 104 and a lower file system 106, including read-only underlying files or subdirectories 108 that are not replaced by overlay files or subdirectories within the overlay file system (e.g., the most recent updates to previous underlying or overlay files) and writable overlay files or subdirectories 110.Figure 3 FIG. 11 shows an example of a flowchart of a method to implement overlay file system package management, according to some examples. In act 310, the overlay file system package manager 202 operates to obtain one or more package files based on a request for a file system operation when executing one or more file management software instructions. The request for the file system operation can specify one or more package files. In act 320, the overlay file system package manager 202 further operates to store the one or more package files in a temporary memory location (e.g., temporary memory location 220). In act 330, the overlay file system package manager 202 further operates to access a composite layer that is stored in memory and configured to present a union of an upper file system and a lower file system in an overlay file system, such as the overlay file system environment 200, where the union 250 includes a read-only underlying file or subdirectory (e.g., read-only underlying file or subdirectory 260 that is not replaced by an overlay file or subdirectory in the overlay file system) and a writable overlay file or subdirectory 270. In act 340, the overlay file system package manager 202 further operates to compare each of the one or more package files stored in the temporary memory location to an associated file or subdirectory in the composite layer. In act 350, the overlay file system package manager 202 further operates to detect whether there is a difference between the package file and the associated file or subdirectory in the composite layer. For example, the overlay file system package manager 202 further operates to perform a comparison of the new file to a previous version of the file stored in the underlying or overlay file system and determine whether the package file is different from the earlier version of the retrieved file. In decision block 360, if there is a difference between the package file and the associated file or subdirectory in the composite layer, the overlay file system package manager 202 operates to transfer, write, and / or copy the package file of the one or more package files to the upper file system in act 370. However, if the package file is not different from the associated file or subdirectory in the composite layer in decision block 360, the overlay file system package manager 202 further operates to not copy the package file of the one or more package files to the upper file system in act 380 and delete the package file of the one or more package files from the temporary memory location in act 390. In various examples, the file system package manager 202 operates to perform the comparison of each of the one or more package files stored in the temporary memory location to the associated file or subdirectory in the composite layer without unmounting the overlay file system.

[0046] It should be appreciated that the methods described herein can be performed by a digital processing system, such as a conventional general purpose computer system. In the alternative, a special purpose computer designed or programmed to perform only the function can be used. Figure 4 FIG. 1 is a diagram showing an example of a computing device that can implement examples described herein.Figure 4 A computing device of FIG. 1 can be used to perform examples of functionality for implementing overlay file system package management in accordance with some examples, including the operation of overlay file system package manager 202. The computing device includes a central processing unit (CPU) 402, a memory 404, and a mass storage device 408 coupled over a bus 406. The mass storage device 408 represents a persistent data storage device such as a floppy disk drive or a fixed disk drive, which in some examples can be local or remote. In some examples, the mass storage device 408 can be a backup storage device. The memory 404 can include read-only memory, random access memory, etc. In some examples, an application resident on the computing device can be stored on or accessed through a computer readable medium such as the memory 404 or the mass storage device 408. The application can also be in the form of modulated signals that are accessed through a network modem or other network interface of the computing device. It will be appreciated that the CPU 402 can be embodied in a general purpose processor, a special purpose processor, or a specially programmed logic device in some examples.

[0047] A display 412 is in communication with the CPU 402, the memory 404, and the mass storage device 408 over the bus 406. The display 412 is configured to display any visualization tools or reports associated with the systems described herein. An input / output device 410 is coupled to the bus 406 to communicate information between the CPU 402 and external devices. It will be appreciated that data from the external devices can be communicated to and from the CPU 402 through the input / output device 410. The CPU 402 can be defined to perform the functionality described herein to implement the functionality described with reference to Figures 1 to 3 In some examples, code implementing the functionality can be stored in the memory 404 or the mass storage device 408 for execution by at least one processor such as the CPU 402. The operating system on the computing device can be iOS TM , MS-WINDOWS TM , OS / 2 TM , UNIX TM , LINUX TM or other known operating systems. It will be appreciated that the examples described herein can also be integrated with virtualized computing systems.

[0048] In the following description, numerous specific details are set forth. However, it is understood that embodiments of the application can be practiced without the specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the application.

[0049] Some portions of the detailed description that follows are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. Herein, and generally, an algorithm is conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, items, numbers, and the like.

[0050] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the prior discussion, it is appreciated that throughout the description, discussions utilizing terms such as "receiving", "decomposing", "implementing", "monitoring", "identifying", "modifying", "generating", "transforming", or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers, or other such information storage, transmission or display devices.

[0051] Various examples also relate to an apparatus for performing the operations herein. This apparatus can be specially constructed for the required purposes, or it can comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program can be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.

[0052] Reference throughout this description to "one example" or "an example" means that a particular feature, structure, or characteristic described in connection with the example is included in at least one example of the present invention. The appearances of the phrase "in one example" in various places in the description are not necessarily referring to the same example. Like reference numerals in the description and in the drawings represent and refer to similar elements throughout.

[0053] In the description above various details are set forth in order to provide a thorough understanding of the application. However, it will be apparent to one skilled in the art that the application can be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the application. It will be appreciated that the above description is intended to be illustrative, not restrictive. Many other examples will be apparent to those of skill in the art upon reading and understanding the above description. Although the application has been described with reference to specific examples, it will be apparent to those skilled in the art that various modifications and changes can be made thereto without departing from the spirit and scope of the application. Accordingly, the specification and drawings are to be regarded in an illustrative, rather than a restrictive, sense. The scope of the application is to be determined by the claims that follow, along with the full scope of equivalents to which such claims are entitled. The claims, by themselves, present one or more features of the application, and the application is not limited to the specific examples described.

[0054] It is to be understood that the terms first, second, etc. can be used herein to describe various steps or calculations unless otherwise specified, these steps or calculations should not be construed as a limitation of the present disclosure. The terms are only used to distinguish one step or calculation from another. For example, a first calculation could be termed a second calculation, and, similarly, a second step could be termed a first step, without departing from the scope of the present disclosure. As used herein, the terms "and / or" and "I" symbol include any and all combinations of one or more of the associated listed items. As used herein, the singular forms "a", "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises", "comprising", "includes" and / or "including", when used herein, specify the presence of stated features, integers, steps, operations, elements, and / or components but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Therefore, the terminology used herein is for the purpose of describing particular examples only and is not intended to be limiting.

[0055] It should also be noted that, in some alternative implementations, the functions / acts described can occur out of the order described. For example, two sequentially depicted actions / acts can in fact be executed substantially concurrently or in the reverse order, depending upon the functionality / acts involved. These examples are presented to provide some assistance in understanding the examples, and it is contemplated that the examples can be implemented in various ways without departing from the scope thereof. It should be understood that any of the examples described herein can include files stored in a computer readable medium. These files can be employed to program a computer system to implement the examples as taught by the technical disclosure. Based on these teachings, one skilled in the art will appreciate that, within the scope of the present examples, functional equivalent methods and / or devices can be employed in conjunction with these examples.

[0056] Units, applications, layers, agents or other methodically operable entities can be implemented as hardware, firmware, or a processor executing software, or a combination thereof. It will be appreciated that where software-based examples are disclosed herein, the software can be embodied in a physical machine such as a controller. For example, a controller can include a first unit and a second unit. The controller can be configured to perform various acts of, for example, a method, application, layer, or agent.

[0057] The examples can also be embodied as computer readable code on a non- transitory computer readable medium. The computer readable medium is any data storage device that can store data which can thereafter be read by a computer system. Examples of the computer readable medium include hard drives, network attached storage devices (NAS), read-only memory, random-access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, flash drives, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion. Examples described herein can be practiced in a variety of system configurations, including hand-held devices, tablets, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The examples can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a wired or wireless network.

[0058] Although the method operations are described in a particular, sequential order, it should be understood that other operations can be performed, described operations can be performed in an order other than that described, many of the described operations can be adjusted, omitted or combined, and some of the described operations can be performed concurrently with, or prior to, each other, or with other operations not described.

[0059] In various examples, one or more portions of the methods and mechanisms described herein can form part of a cloud computing environment. In such examples, resources can be provided over the Internet as a service according to one or more different models. Such models can include Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). In IaaS, computer infrastructure is delivered as a service. In that case, the computing equipment is usually owned and operated by the service provider. In the PaaS model, software tools and underlying equipment used by developers for developing software solutions can be provided as a service and hosted by the service provider. SaaS typically includes a service provider licensing software as a service on demand to the customers. The service provider can host the software, or can deploy the software to customers for a given period of time. Many combinations of the above models are possible and are contemplated.

[0060] Various units, circuits, or other components can be described or claimed as "configured to" perform one or more tasks. In this context, the phrase "configured to" is used to connote structure by indicating that a unit / circuit / component includes structure (e.g., circuitry) that performs the task during operation. As such, the unit / circuit / component can be said to be configured to perform the task even when the specified unit / circuit / component is not currently operational (e.g., is not on). The unit / circuit / component used in association with the "configured to" language includes hardware-only implementations, such as circuitry, general purpose

[0061] The foregoing description, for purposes of explanation, has been described with reference to specific illustrative embodiments. The illustrative discussions, however, are not intended to be exhaustive or to limit the application to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The examples were chosen and described in order to best explain the principles of the application and its practical application, and to thereby enable others skilled in the art to best utilize the application and various embodiments with various modifications as are suited to the particular use contemplated. Thus, the present examples are to be considered as illustrative and not restrictive, and the application is not to be limited to the details given herein, as the same can be modified in various ways within the scope and spirit of the application.

Claims

1. A system comprising: at least one memory configured to store: an overlay file system comprising: an underlying file system containing one or more read-only underlying files or subdirectories; and an upper file system mounted over the underlying file system and containing writable overlay files or subdirectories; and a composite layer configured to present a union of the upper file system and the underlying file system, the union comprising overlay files or subdirectories and underlying files or subdirectories not replaced by overlay files or subdirectories; and at least one processor coupled to the at least one memory that, when executing one or more file management software instructions, operates to perform as an overlay file system package manager to: obtain one or more package files based on a request for a file system operation; store the one or more package files in a temporary memory location of the at least one memory; for each package file of the one or more package files stored in the temporary memory location, compare the package file to an associated file or subdirectory in the composite layer; detect whether there is a difference between the package file and the associated file or subdirectory in the composite layer; and if a difference is detected between the package file and the associated file or subdirectory in the composite layer, copy the package file of the one or more package files to the upper file system.

2. The system of claim 1, further comprising instructions to not copy the package file of the one or more package files to the upper file system if the package file is not different from the associated file or subdirectory in the composite layer.

3. The system of claim 2, further comprising instructions to delete the package file of the one or more package files from the temporary memory location.

4. The system of claim 1, wherein the underlying file system comprises non-volatile memory.

5. The system of claim 1, wherein the underlying file system combines different underlying mount points into one or more composite underlying directory structures.

6. The system of claim 1, wherein the upper file system comprises volatile memory.

7. The system of claim 1, wherein the request for the file system operation specifies the one or more package files.

8. The system of claim 7, wherein the request for the file system operation comprises at least one of a pre-install script, a file update script, a new application release or version script, a file patch script, or a file replacement script.

9. The system of claim 1, wherein the one or more package files comprise at least one of an application, an update file comprising a new application release or version, a patch file, or a replacement file.

10. The system of claim 1, wherein the writable overlay files or subdirectories comprise at least one of an update file comprising a new software release or version, a patch file, or a replacement file.

11. The system of claim 1, wherein the instructions to obtain the one or more package files further comprise instructions to: abort direct file copying of the one or more package files into the overlay file system.

12. The system of claim 1, wherein comparing the package files of the one or more package files further comprises instructions to: detect whether an earlier version of the package file is stored in the composite layer; and determine whether the package file is different from the earlier version of the package file.

13. The system of claim 1, wherein the comparison of each package file of the one or more package files stored in the temporary memory location to the associated file or subdirectory in the composite layer is performed without unmounting the overlay file system.

14. The system of claim 1, wherein the overlay file system package manager comprises an overlay file system kernel.

15. The system of claim 1, wherein the overlay file system kernel comprises an operating system kernel.

16. The system of claim 15, wherein the overlay file system is an operating system overlay file system.

17. The system of claim 15, wherein the overlay file system package manager is an operating system package manager.

18. The system of claim 1, wherein the overlay file system comprises an embedded system environment.

19. A method comprising: obtaining, by a storage management controller, one or more package files based on a request for a file system operation; storing, by the storage management controller, the one or more package files in a temporary memory location; accessing, by the storage management controller, a composite layer, the composite layer being stored in memory and configured to present a union of an upper file system and a lower file system in an overlay file system, the union comprising read-only underlying files or subdirectories that are not replaced by overlay files or subdirectories in the overlay file system and writable underlying files or subdirectories; comparing, by the storage management controller, each package file of the one or more package files stored in the temporary memory location to an associated file or subdirectory in the composite layer; detecting, by the storage management controller, whether there is a difference between the package file and the associated file or subdirectory in the composite layer; and 20. The method of claim 19, further comprising: copying the package file of the one or more package files to the upper file system if there is a difference between the package file and the associated file or subdirectory in the composite layer.

21. The method of claim 20, further comprising: not copying the package file of the one or more package files to the upper file system if the package file is not different from the associated file or subdirectory in the composite layer. deleting the package file of the one or more package files from the temporary memory location.

22. A non-transitory computer-readable medium having software instructions stored thereon that, when executed by one or more processors, cause the one or more processors to: obtain, by a storage management controller, one or more package files based on a request for a file system operation; store, by the storage management controller, the one or more package files in a temporary memory location; access, by the storage management controller, a composite layer, the composite layer stored in memory and configured to present a union of an upper file system and a lower file system in an overlay file system, the union including read-only underlying files or subdirectories within the overlay file system that are not replaced by overlay files or subdirectories and writable underlying files or subdirectories; compare, by the storage management controller, each package file of the one or more package files stored in the temporary memory location to an associated file or subdirectory in the composite layer; detect, by the storage management controller, whether a difference exists between the package file and the associated file or subdirectory in the composite layer; and if a difference is detected between the package file and the associated file or subdirectory in the composite layer, write the package file of the one or more package files to the upper file system.

23. The non-transitory computer-readable medium of claim 22, further comprising instructions to, if the package file is not different from the associated file or subdirectory in the composite layer, not write the package file of the one or more package files to the upper file system.

24. The non-transitory computer-readable medium of claim 23, further comprising instructions to delete the package file of the one or more package files from the temporary memory location. ​

Citation Information

Patent Citations

  • Multi-layer merge in a storage virtualization system

    CN109906446A

  • Software upgrading method, computing equipment and readable storage medium

    CN114003258A