Environment for embedded systems with improved overlay file system storage management

By comparing new files with existing files in the overlay system, the method optimizes memory usage in embedded systems by only copying changed files, addressing inefficiencies in current overlay file systems and enhancing software update capabilities.

DE102024106853B4Active Publication Date: 2026-06-11HEWLETT PACKARD ENTERPRISE DEV LP

Patent Information

Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
HEWLETT PACKARD ENTERPRISE DEV LP
Filing Date
2024-03-11
Publication Date
2026-06-11

AI Technical Summary

Technical Problem

Current overlay file systems in embedded systems inefficiently manage memory by copying all files, including identical ones, during software updates, leading to rapid consumption of volatile memory and limiting the number of updates that can be made.

Method used

A system and method that bypasses the file copying mechanism of package management systems, comparing new files with existing files in the underlay or overlay system to only copy changed files to the overlay, thereby optimizing volatile memory usage.

Benefits of technology

This approach ensures that only changed files are stored in volatile memory, conserving space and allowing for more efficient software updates without exhausting limited volatile memory resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A system that includes the following: at least one storage device configured for storage: an overlay file system that includes the following: a lower file system (230) containing one or more read-only underlay files (260) or subdirectories; and an upper file system (240) that is placed above the lower file system (230) and contains writable overlay files or subdirectories (270); and a composite layer (250) configured to a union of the upper and lower file systems (230, 240), where the union includes overlay files or Subdirectories (270) and underlay files or includes subdirectories (260) that are not covered by an overlay file or subdirectory will be replaced; and at least one processor (102) coupled to the at least one memory, wherein the at least one processor (102), when executing one or more file management software instructions, acts as an overlay file system package manager (202) to: to obtain one or more package files (210A, 210B, 210C) based on a request for a file system operation; to store one or more package files (210A, 210B, 210C) in a temporary storage location (220) of at least one storage device; for each package file (210A; 210B; 210C) of the one or more package files (210A, 210B, 210C) stored in the temporary storage location (220), compare the package file (210A; 210B; 210C) with an associated file or subdirectory (280) in the composite layer (250); to detect whether there is a difference between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250); and to copy the package file (210A; 210B; 210C) of one or more package files (210A, 210B, 210C) to the upper file system (240) if a difference is detected between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250).
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 common practice to combine a read-only underlay file system with a read / write overlay file system. The files in the overlay file system overlay the files in the underlay file system, so the user sees a composite file system where unchanged files come from the underlay file system and modified files come from the overlay file system. This configuration allows the read-only underlay file system to reside in non-volatile (e.g., read-only) memory, while the (usually few) changes to files in the file system made during a release cycle or run session are stored in the read / write overlay file system in volatile (e.g., random-access) memory. US 2022 / 0179959 A1 describes a method for verifying the integrity of a software container.US 2020 / 0 356 358 A1 describes a system and method for dynamically and incrementally updating firmware in embedded devices, particularly those with read-only file systems. US 2020 / 0 050 685 A1 describes a system and method for ensuring the completion of file commit and commit-delete operations using an overlay optimizer comprising an upper and a lower filter. An object of the invention is to propose a system, a method, and a non-transitory, computer-readable medium for improving memory management in embedded systems using overlay file systems. This object is achieved by a system according to claim 1, a method according to claim 19, and a non-transitory, computer-readable medium according to claim 22. BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Various objects, features, aspects and advantages of the subject matter according to the invention will become clearer from the following description together with the accompanying drawings, in which the same numbers represent the same components. Fig. Figure 1 shows an embedded system environment in accordance with some examples. Fig. Figure 2A shows a block diagram of an overlay file system environment in accordance with some examples. Fig. Figure 2B shows a block diagram for overlay file system package management operations in accordance with some examples. Fig. Figure 3 shows a flowchart for managing overlay file systems in accordance with some examples. Fig. Figure 4 is an illustration showing an example of a computer device that can implement the examples described here.

[0003] While the examples are described with reference to the drawings above, the drawings are for illustration purposes, and various other examples are consistent with the spirit and within the scope of this revelation. DETAILED DESCRIPTION

[0004] Package management systems are used to group various related software files into a specially formatted package file. A package file might contain one or more programs that can interact to perform a specific task, such as running an application or implementing an aspect of an operating system. The one or more programs might also include system initialization scripts, a command shell, web server and / or data center support software, or similar components. A package file might also contain related data, documentation, and / or configuration information for the program(s). The package file keeps the associated software objects together until the file is opened and its contents are used to implement a software installation, such as a software patch update, a new version release, or similar action.

[0005] An operating system package manager like the Red Hat Package Manager (also called "RPM Package Manager" or "RPM") is an example of a package management system. RPM is a Linux package manager. TM A package management system (RPM) is a resource-based application used to install, update, or uninstall applications, for example, in 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 a package management system or a package file.

[0006] A file system is a hierarchy of directories for organizing files within an embedded system. File systems comprise a collection of files along with their management protocols. File system middleware and / or application software is mounted (attached or installed) at a mount point (directory location) on a currently accessible storage device, and a kernel typically provides file system management mechanisms, such as those for file operations (create, delete, read, write, open, close, etc.) and directory access, creation, and deletion.

[0007] An overlay file system (sometimes called a union file system or union mount file system) combines several different underlying mount points into one or more composite lower directory structures containing underlying files and subdirectories from one or more sources, and overlays upper directory file systems on top of the lower directory, so that the files in the upper directory replace the files in the composite lower directory. For example, Linux provides TMThe Overlay File System (OverlayFS) provides the functionality of an overlay file system in Linux™. While the lower directory structure of an overlay file system is typically stored in read-only, non-volatile memory, the upper directory structure is typically stored in read / writable, volatile memory that can be modified. For example, the modified files in the upper directory structure (such as a software patch update or a new version delivered via a package file) replace the original files in the lower directory structure of the overlay system.Therefore, if 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 connected to the memory, while the object in the "lower" file system is either hidden or, in the case of directories, merged with the "upper" object.

[0008] In embedded systems environments, data storage resources are often scarce. Embedded systems can include, for example, embedded real-time systems, standalone embedded systems, networked information devices, or mobile devices. Storage can be either volatile memory, which requires power to maintain the stored information, or non-volatile memory, which retains the stored information even after the power supply is turned off. Generally, volatile memory can be more expensive than non-volatile memory and often has a lower storage capacity. Therefore, resource management should prioritize preserving volatile memory. Regardless of whether the storage is volatile or non-volatile, storage space in either type should only be used when it is expedient or advantageous.In an overlay file system within an embedded system environment, the read-only underlay resides in non-volatile memory, while modified files of the read / write overlay reside in volatile memory. Therefore, changes to files within the file system during an active session are stored in the volatile memory of the read / write overlay.

[0009] Overlay file systems, such as OverlayFS, do not manage storage resources efficiently in many typical software upgrade scenarios. Current overlay technology stores a copy of every file copied to the file system in the overlay, even if the file is identical to the copy of the file in the underlay. In such an environment, changes to many files or very large files can quickly consume the limited volatile storage space. This problem is exacerbated by systems that support live software updates or "hot-patching," as new binaries are deployed.Typically, the packages used to deliver these software updates contain a mix of modified and unchanged files and binaries. However, all files included in the update are copied into the file system and thus into the overlay, consuming space in the volatile memory overlay regardless of whether they actually differ from the version already in the underlay. This means that even if the file copy in the lower directory is identical to the file copy in the upper directory, current overlay technology stores the file in the read / write overlay in volatile memory. This redundancy is detrimental because it negatively impacts optimal system performance, as volatile memory space should be reserved for meaningful, non-redundant tasks.

[0010] Further inefficiencies arise when updating a large number of files, as these files are stored in the read / write overlay in volatile memory. Consequently, the limited storage capacity of volatile memory is quickly exhausted. The same applies to large files.

[0011] Another disadvantage is that during a real-time software update or hot patching, numerous files and new binaries are also stored in the volatile memory of the read / write overlay. Regardless of whether the files of a new version differ from the files of a previous version stored in the read-only underlay, current overlay file systems copy all files of a package to the read / write overlay in volatile memory. This limitation restricts the size and number of changes that can be made to the overlay file system and effectively limits the number of files that can be efficiently updated during a given hot patch.

[0012] The following examples describe a system, method, and manufacturing item for implementing improved overlay file system memory management. The memory management system and method include a memory management controller or overlay file system manager that bypasses the file copying mechanism of a package management system. This "bypass" method can be implemented within a kernel file system management mechanism. For example, a package file for an application update or new version can be stored in and retrieved from temporary memory. Each new version of a package file can then be compared to a related file from a previous version stored in an underlay or overlay file system. If a match is found, the new file is not stored in the overlay file system. If no match is found (i.e., the file is not copied to the overlay file system), the new file is not stored in the overlay file system.If there is a difference between the new file and its corresponding previous file, the new file is copied or moved from temporary storage to the overlay file system. This solution saves volatile memory because it ensures that only changed files are copied to the overlay file system.

[0013] In one example, at least one storage device is configured to store an overlay file system comprising a lower file system containing one or more read-only underlay files or subdirectories, and an upper file system placed above the lower file system containing writable overlay files or subdirectories. A "composite" layer is configured to represent a union of the upper and lower file systems, with the union including overlay files or subdirectories and underlay files or subdirectories that are not replaced by an overlay file or subdirectory.

[0014] When executing one or more file management software instructions, for example in an embedded system environment, an overlay file system package manager or a memory management controller is able 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 is further able to store the one or more package files in a temporary location.The overlay file system package manager is further able to access a composite layer stored in memory and configured to represent a union of upper and lower file systems of an overlay file system. This union includes read-only underlay files or subdirectories and writable underlay files or subdirectories that are not replaced by an overlay file or subdirectory within the overlay file system. The overlay file system package manager is also able to compare each of the one or more package files stored in the temporary location with a corresponding file or subdirectory in the composite layer.The overlay file system package manager is also able to detect whether there is a difference between the package file and its associated file or subdirectory in the composite layer, and to copy or move / write the package file of one or more package files to the upper file system if such a difference exists. In some examples, the overlay file system package manager is also able to refrain from copying the package file of one or more package files to the upper file system if the package file is identical to its associated file or subdirectory in the composite layer, and to delete the package file of one or more package files from temporary storage.

[0015] In some examples, the lower file system may consist of non-volatile storage and combine various underlying mount points into one or more composite lower directory structures.

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

[0017] In some examples, the requirement for the file system operation may include at least one of the following: a pre-installation script, a file update script, a new application version script, a file patch script, or a file replacement script.

[0018] In some examples, the one or more package files may contain at least one of the following: an application, an update file with a new application version, a patch file, or a replacement file.

[0019] In some examples, the writable overlay files or subdirectories may contain at least one of the following: an update file with a new software version, a patch file, or a replacement file.

[0020] In some examples, the instructions for preserving one or more package files may also include instructions for making a direct file copy of one or more package files into the overlay file system.

[0021] In some examples, comparing the package file of one or more package files may further include instructions to detect whether an earlier version of the package file is stored in the composite layer and to determine whether the package file differs from the earlier version of the retrieved file.

[0022] In some examples, the comparison of each package file of the one or more package files stored in the temporary location with a related file or subdirectory in the composite layer can be performed without unmounting the overlay file system.

[0023] In some examples, the overlay file manager may include an overlay file system kernel. The overlay file system kernel may consist of an operating system kernel (e.g., Linux). TM kernel), the overlay file system can be an overlay file system of the operating 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)).

[0024] The improved memory management solution described here saves volatile memory by ensuring that only changed files are copied to the overlay and consume volatile memory. This is achieved by bypassing the file copy mechanism of a package management system and instead writing each new file from the package file to a temporary location. A comparison is then performed with a related file (e.g., a previous version of the file) stored in the underlay or overlay file system. If the file differs from the related file, it is copied or moved / written from the temporary location to the overlay file system.

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

[0026] Embedded systems like System 100 typically have limited processing, memory, and other resources. They generally lack secondary storage devices. In many applications, embedded systems must be extremely reliable and cannot be taken offline or reset. They may need to perform functions or complete tasks within specific timeframes. Furthermore, some embedded systems must operate in extreme environmental conditions, such as very high temperatures and humidity.

[0027] Different types of embedded systems use several different types of processors and / or operating systems depending on the tasks they are intended to perform.

[0028] Embedded systems can be, for example, embedded real-time systems, standalone embedded systems, networked information devices, or mobile devices. An embedded real-time system is capable of performing a specific task within a defined timeframe. A standalone embedded system operates in standalone mode. This system receives input from input devices 110, processes it, and generates a desired output, for example, to an output device 112. Input can be from a human, for example, by pressing a button, or in the form of electrical signals from transducers. Output can be in the form of electrical signals to control another system or output device 112; for example, an LCD or LED display is used to show information to the user.

[0029] A Network Information Appliance (NISA) is an embedded system connected to a network via a communication interface (114) and accessible over one or more networks, such as a local area network (LAN) or the internet (not shown). NISA embedded systems typically run a TCP / IP protocol stack and are then connected to a network via Point-to-Point Protocol (PPP) or Ethernet, communicating with other nodes on the network. These network nodes can include, for example, notebook computers, desktop computers, microprocessor-based or programmable consumer electronics, network devices, mobile phones, smartphones, pagers, radio frequency (RF) devices, infrared (IR) devices, personal digital assistants (PDAs), set-top boxes, cameras, integrated devices combining at least two of the aforementioned devices, and similar devices.In some examples, the embedded system environment 100 can be coupled with a data center (not shown) and participate in cloud computing resources. In one example, an overlay file system management system, as described below, can be available to the embedded system environment 100 through a cloud computing resource subscription, for example, to install, update, or uninstall applications available in a cloud-based system. In another example, an external entity, such as a web service, that needs to perform file system operations can submit a request to the embedded system environment 100, where the file system operation request might include, for example, a pre-installation script, a file update script, a script for a new application release or version, a file patch script, or a file replacement script.

[0030] It is clear that the components of the system's operating environment are 100 examples, with varying numbers of components present in different configurations. It is understood that the operating environment can be part of a distributed computing environment, a cloud computing environment, a client-server environment, and the like.

[0031] As will be evident to a person skilled in the art after reading this description, the various features and functions described herein can be implemented as an embedded system environment using any array components required to perform the features and functions of the overlay file system manager (as described below), and can be implemented in one or more separate or shared units in various combinations and permutations.

[0032] Fig. Figure 2A shows a block diagram of an overlay file system environment in accordance with some examples. Fig. 2A contains the overlay file system environment 200 and at least one memory, for example, a non-volatile read-only memory 204 and a random-accessible volatile memory 206, configured to store an overlay file system comprising a lower file system 230 containing one or more read-only underlay files or subdirectories, and an upper file system 240 placed above the lower file system containing writable overlay files or subdirectories. A composite layer 250 is configured to represent a union of the upper and lower file systems 240 and 230, the union comprising overlay files or subdirectories 270 and underlay 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 storage location 220, which may be a memory location within the random-access memory 206 or a remote memory location elsewhere (as shown). The improved memory management solution described here saves volatile memory 206 by ensuring that only files that have changed are copied to the overlay file system to consume volatile memory. In some examples, this procedure is achieved by bypassing the file copy mechanism of a package management system and instead writing each new file from the package file to the temporary storage location 220, comparing the new file, e.g., the new files 210A-C, with a related file (e.g., an earlier version of the file) stored in the underlay or overlay file system, e.g.,the associated file 280, and the new file is copied or moved / written from the temporary location 220 into the overlay file system if it differs from the associated file.

[0033] Fig. Figure 2B shows a block diagram for managing overlay file system packages in accordance with some examples. In some examples, the overlay file system manager 202 may be implemented in a central processing unit 203 and / or application-specific circuitry (not shown) of an embedded system, such as the embedded system 100. In other examples, the overlay file system manager 202 may reside on a client node of a network and perform one or more of the methods described herein. For example, a client node containing the overlay file system manager 202 may be one of several client nodes and server nodes located on the same LAN or on different LANs connected to each other via the Internet but separated by firewalls, routers, and / or other network devices.In some examples, the client node containing the Overlay File System Manager 202 may reside in a cloud network. In other examples, the client node containing the Overlay File System Manager 202 may be a network information device integrated into and / or communicating with a notebook, desktop computer, microprocessor-based or programmable consumer electronics device, network device, mobile phone, smartphone, pager, radio frequency (RF) device, infrared (IR) device, personal digital assistant (PDA), set-top box, camera, or an integrated device that combines at least two of the aforementioned devices, and so on.

[0034] During operation, when one or more file management software instructions are executed, an overlay file system package manager or memory management controller 202, implemented, for example, in a central processing unit 203 and / or application-specific circuitry (not shown) of an embedded system, is able to obtain one or more package files, such as package files 210A-C, based on a received file system operation request, for example, via the communication interface 214. For example, the file system operation request can specify the one or more package files, such as package files 210A-C, which may comprise 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).

[0035] The overlay file system package manager 202 is also able to store the one or more package files 210A-C in temporary storage or location 220. The temporary location 220 can be, for example, a memory location within the random access memory 206 or a remote memory location elsewhere. In some examples, the overlay file system package manager 202 is also able to stop a direct copy of the one or more package files to the overlay file system and redirect the package files to temporary storage or location 220.

[0036] The overlay file system package manager 202 is further able to access a composite layer 250 stored in a memory (e.g., in random access memory 206) and configured to represent a union of the upper file system 240 and the lower file system 230 of an overlay file system, the union comprising read-only underlay files or subdirectories 260 that are not replaced by an overlay file or subdirectory within the overlay file system, and writable overlay files or subdirectories 270 (e.g., the latest updates of previous underlay or overlay files).

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

[0038] It is clear that the components of the Overlay File System Manager 202 are examples; more or fewer components may be present in different configurations. It is understood that the operating environment can be part of a distributed computing environment, a cloud computing environment, a client-server environment, etc.

[0039] As is obvious to a person skilled in the art after reading this description, the various features and functions described herein can be implemented using any array components required to perform the features (and functions) of the Overlay File System Manager 202, and can be implemented in one or more separate or shared units in various combinations and permutations.

[0040] Fig. Figure 3 shows a flowchart for managing overlay file system packages in accordance with some examples. Fig. Figure 3 shows an example flowchart for the procedure to implement overlay file system package management according to some examples. In action 310, when one or more file management software instructions are executed, the overlay file system package manager 202 is able 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. In action 320, the overlay file system package manager 202 is further able to store the one or more package files in a temporary location, such as temporary location 220. In action 330, the overlay file system package manager 202 is further able to access a composite layer stored in memory and configured to represent a union of upper and lower file systems of an overlay file system, such as...The overlay file system environment 200 represents the union 250, which includes only readable underlay files or subdirectories (e.g., only readable underlay files or subdirectories 260 that are not replaced by an overlay file or subdirectory within the overlay file system) and writable overlay files or subdirectories 270. In action 340, the overlay file system package manager 202 is further able to compare each package file of the one or more package files stored in the temporary location with a corresponding file or subdirectory in the composite layer. In action 350, the overlay file system package manager 202 is further able to detect whether there is a difference between the package file and the corresponding file or subdirectory in the composite layer.For example, the overlay file system package manager 202 can still be used to compare the new file with a previous version of the file stored in the underlay or overlay file system and to determine whether the package file differs from the previous version of the retrieved file. If a difference exists between the package file and the associated file or subdirectory in the composite layer in decision block 360, the overlay file system package manager 202 is able to transfer, write, and / or copy the package file of one or more package files to the upper file system in action 370.However, if the package file is not distinct from the associated file or subdirectory in the composite layer in decision block 360, the overlay file system package manager 202 is furthermore able not to copy the package file of one or more package files to the upper file system in action 380 and to delete the package file of one or more package files from the temporary location in action 390. In various examples, the file system package manager 202 is able to perform the comparison of each package file of one or more package files stored in the temporary location with an associated file or subdirectory in the composite layer without unmounting the overlay file system.

[0041] The procedures described here can be carried out using a digital processing system, such as a conventional general-purpose computer system. Alternatively, specialized computers designed or programmed to perform only one function can be used. Fig. Figure 4 is an illustration showing an example of a computing device that can be used to implement the examples described here. The computing device of Fig. Section 4 can be used to perform examples of the functionality for implementing overlay file system package management according to some examples, including the operations of the overlay file system package manager 202. The computing device comprises a central processing unit (CPU) 402 coupled to a memory 404 via a bus 406, and a mass storage device 408. The mass storage device 408 is a persistent data storage device such as a floppy disk drive or a hard disk drive, which in some examples may be local or remote. The mass storage device 408 could be a backup storage device in some examples. The memory 404 can be read-only storage, random access storage, etc. Applications that are resident on the computing device can, in some examples, be stored on or accessed from a computer-readable medium such as the memory 404 or the mass storage device 408.Applications can also take the form of modulated electronic signals accessed via a network modem or other network interface of the computer. It should be noted that the CPU 402 can, in some examples, be embodied in a general-purpose processor, a specialized processor, or a specially programmed logic unit.

[0042] Display 412 is connected to CPU 402, memory 404, and mass storage 408 via bus 406. Display 412 is configured to show any visualization tools or reports connected to the system described herein. Input / output device 410 is connected to bus 406 to transmit information to CPU 402 in the form of command selections. It should be understood that data to and from external devices can be transmitted via input / output device 410. CPU 402 can be configured to perform the functionality described herein to execute the commands referred to in the Fig.To enable the functionality described in sections 1-3. The code embodying this functionality can be stored in memory (404) or mass storage (408) for execution by at least one processor, such as the CPU (402) in some examples. The operating system on the computer device can be iOS. TM , MS-WINDOWS TM , OS / 2 TM , UNIX TM , LINUX TM or other well-known operating systems. It should be noted that the examples described here can also be integrated into a virtualized computer system.

[0043] Numerous details are listed in the following description. However, it will be clear to those skilled in the art that the present invention can also be carried out without these specific details. In some cases, known structures and devices are shown in block diagram form rather than in detail, so as not to obscure the present invention.

[0044] Some parts of the following detailed descriptions are presented in the form of algorithms and symbolic representations of operations on data bits in computer memory. These algorithmic descriptions and representations are the means used by data processing professionals to most effectively communicate the content of their work to other professionals. An algorithm is understood here, and generally, as a consistent sequence of steps that leads to a desired result. The steps are those that require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and otherwise manipulated.Sometimes it has proven useful to refer to these signals as bits, values, elements, symbols, characters, concepts, numbers or similar, mainly for reasons of common usage.

[0045] However, it should be borne in mind that all these and similar terms are related to the corresponding physical quantities and merely represent practical names for these quantities.Unless explicitly stated otherwise, as can be seen from the following discussion, discussions using terms such as "receiving", "disassembling", "implementing", "monitoring", "identifying", "modifying", "generating", "translating" or similar are understood to refer to the actions and processes of a computer system, or similar electronic computing device, that manipulate and convert data represented as physical (electronic) quantities in the registers and memories of the computer system into other data represented in a similar manner as physical quantities in the memories or registers of the computer system or other such devices for storing, transmitting or displaying information.

[0046] The various examples also refer to a device for carrying out the operations described herein. This device may be specially designed for the required purposes, or it may comprise a general-purpose computer that is selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored on a computer-readable storage medium, such as, but not limited to, any type of floppy disk, including floppy disks, optical disks, CD-ROMs and magnetic-optical disks, read-only memory (ROMs), random-access memory (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each connected to a computer system bus.

[0047] When the description refers to "an example," this means that a specific feature, structure, or property described in connection with the example is included in at least one embodiment of the invention. The phrase "in an example," appearing at various points in this description, does not necessarily refer to the same example. Identical reference numbers denote identical elements in the description of the figures.

[0048] Numerous details are given in the description above. However, it will be clear to a person skilled in the art that the present invention can also be carried out without these specific details. In some cases, known structures and devices are shown in block diagram form rather than in detail, so as not to obscure the examples presented. It is understood that the description above serves only for illustration and is not limiting. Many further examples will become apparent to a person skilled in the art upon reading and understanding the description above. Although the present invention has been described with reference to specific examples, it is acknowledged that the invention is not limited to the examples described, but can be carried out with modifications and changes within the spirit and scope of the appended claims.Accordingly, the description and drawings are to be understood in an illustrative rather than a limiting sense. The scope of the invention should therefore be determined with reference to the attached claims, together with the full scope of the equivalents to which these claims entitle.

[0049] Although the terms “first,” “second,” etc., may be used here to describe different steps or calculations, these steps or calculations should not be limited by these terms. These terms are used only to distinguish one step or calculation from another. For example, a first calculation could be called a second calculation, and likewise a second step could be called a first step, without this exceeding the scope of this disclosure. The term “and / or” and the symbol “I” used here include all combinations of one or more of the elements listed. The singular forms “a,” “the,” and “the” used here also include the plural forms, unless the context clearly indicates otherwise.It is further understood that the terms "comprises," "includes," "contains," and / or "including," when used herein, indicate the presence of certain features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Therefore, the terminology used here serves only to describe specific examples and is not to be understood as restrictive.

[0050] It should also be noted that in some alternative implementations, the specified functions / acts may not occur in the order shown in the figures. For example, two figures shown consecutively may in reality be executed essentially simultaneously or sometimes even in reverse order, depending on the functions / acts involved. With regard to the examples above, it is important to understand that the examples may employ various computer-implemented operations on data stored in computer systems. These operations are those that require the physical manipulation of physical quantities. Usually, but not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and otherwise manipulated.Furthermore, the manipulations performed are often described using terms such as generating, identifying, determining, or comparing. All the operations described here, which are part of the examples, are useful machine operations. The examples also refer to a device or apparatus for performing these operations. The device may be specially constructed for the desired purpose, or it may be a general-purpose computer that is selectively activated or configured by a computer program stored within it. In particular, various general-purpose machines can be used with computer programs written in accordance with the teachings presented here, or it may be more expedient to construct a more specialized device to perform the required operations.

[0051] A unit, application, layer, agent, or other procedural entity could be implemented as hardware, firmware, a processor running software, or a combination thereof. Where a software-based example is disclosed here, the software may be embodied in a physical machine such as a control unit. A control unit might, for example, comprise a first unit and a second unit. A control unit could be configured to perform various actions, such as a procedure, an application, a layer, or an agent.

[0052] The examples can also be embodied as computer-readable code on a non-transitory computer-readable medium. Computer-readable medium is any data storage device capable of storing data that can subsequently be read by a computer system. Examples of computer-readable medium include hard disks, network-attached storage (NAS), read-only storage, random-access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, flash memory devices, and other optical and non-optical data storage devices. The computer-readable medium can also be distributed across a networked computer system, allowing the computer-readable code to be stored and executed in a distributed manner.The examples described here can be performed with various computer system configurations, including handheld devices, tablets, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframes, and the like. The examples can also be applied in distributed computing environments where tasks are performed by remote processing devices connected via a wired or wireless network.

[0053] Although the process steps have been described in a specific order, other operations can be carried out between the described operations, the described operations can be adapted to take place at slightly different times, or the described operations can be distributed in a system that allows the processing operations to occur at different intervals associated with the processing.

[0054] In various examples, one or more components of the methods and mechanisms described here may be part of a cloud computing environment. In such examples, resources may be provided over the internet as services according to one or more different models. These models may include Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). With IaaS, the computing infrastructure is provided as a service. In this case, the computing equipment is generally owned and operated by the service provider. In the PaaS model, the software tools and underlying equipment used by developers to create software solutions may be provided as a service and hosted by the service provider. SaaS typically involves a service provider that licenses software as a service on demand.The service provider can host the software or make it available to a customer for a specific period. Numerous combinations of the above-mentioned models are possible and are being considered.

[0055] Various units, circuits, or other components can be described or claimed to be "configured to" perform one or more tasks. In such contexts, the phrase "configured for" is used to denote the structure by indicating that the units / circuits / components contain a structure (e.g., a circuit) that performs the task(s) during operation. Thus, one can say that the unit / circuit / component is configured to perform the task even when the specified unit / circuit / component is not currently operating (e.g., is not powered on). The units / circuits / components used with the phrase "configured for" include hardware, such as circuits, memory containing program instructions that can be executed to perform the operation, and so on.The statement that a unit / circuit / component is "configured to" or "operable to" perform one or more tasks is expressly not intended to invoke 35 USC 112, sixth paragraph, for that unit / circuit / component. Furthermore, "configured to" may include a generic structure (e.g., a generic circuit) that is manipulated by software and / or firmware (e.g., an FPGA or a general-purpose processor running software) to perform the task(s) in question. "Configured to" may also include the adaptation of a manufacturing process (e.g., a semiconductor fabrication facility) to produce components (e.g., integrated circuits) capable of implementing or performing one or more tasks.

[0056] The foregoing description has been provided for illustrative purposes with reference to specific examples. However, the above explanations do not claim to be exhaustive and do not limit the invention to the exact forms given. Many modifications and variations are possible in light of the teachings above. The examples have been selected and described to best illustrate the principles of the examples and their practical applications, thereby enabling other skilled persons to make the best possible use of the examples and the various modifications suitable for their respective applications. Accordingly, the examples presented here are to be considered illustrative and not limiting, and the invention is not limited to the details given herein but may be modified within the scope and equivalents of the appended claims.

Claims

[1] A system that includes the following: at least one storage device configured for storage: an overlay file system that includes the following: a lower file system (230) containing one or more read-only underlay files (260) or subdirectories; and an upper file system (240) that is placed above the lower file system (230) and contains writable overlay files or subdirectories (270); and a composite layer (250) configured to a union of the upper and lower file systems (230, 240), where the union includes overlay files or Subdirectories (270) and underlay files or includes subdirectories (260) that are not covered by an overlay file or subdirectory will be replaced; and at least one processor (102) coupled to the at least one memory, wherein the at least one processor (102), when executing one or more file management software instructions, acts as an overlay file system package manager (202) to: to obtain one or more package files (210A, 210B, 210C) based on a request for a file system operation; to store one or more package files (210A, 210B, 210C) in a temporary storage location (220) of at least one storage device; for each package file (210A; 210B; 210C) of the one or more package files (210A, 210B, 210C) stored in the temporary storage location (220), compare the package file (210A; 210B; 210C) with an associated file or subdirectory (280) in the composite layer (250); to detect whether there is a difference between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250); and to copy the package file (210A; 210B; 210C) of one or more package files (210A, 210B, 210C) to the upper file system (240) if a difference is detected between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250). [2] System according to claim 1, further comprising instructions not to copy the package file (210A; 210B; 210C) of one or more package files (210A, 210B, 210C) into the upper file system (240) if the package file (210A; 210B; 210C) is not different from the associated file or subdirectory (280) in the composite layer (250). [3] System according to claim 2, further comprising instructions for deleting the packet file (210A; 210B; 210C) of one or more packet files (210A, 210B, 210C) from the temporary storage location (220). [4] System according to claim 1, wherein the lower file system (230) comprises a non-volatile memory (206). [5] System according to claim 1, wherein the lower file system (230) combines various underlying mount points to form one or more composite lower directory structures. [6] System according to claim 1, wherein the upper file system (240) comprises a volatile memory (206). [7] System according to claim 1, wherein the requirement for the file system operation specifies one or more package files (210A, 210B, 210C). [8] System according to claim 7, wherein the requirement for the file system operation comprises at least one of the following: a pre-installation script, a file update script, a script for a new application release or version, a file patch script or a file replacement script. [9] System according to claim 1, wherein the one or more package files (210A, 210B, 210C) comprise at least one of the following elements: an application, an update file containing a new application version or release, a patch file or a replacement file. [10] System according to claim 1, wherein the writable overlay files or subdirectories (270) comprise at least one of the following: an update file comprising a new software release or version, a patch file or a replacement file. [11] System according to claim 1, wherein the instructions for obtaining the one or more package files (210A, 210B, 210C) further include instructions for stopping a direct file copy of the one or more package files (210A, 210B, 210C) in the overlay file system. [12] System according to claim 1, wherein the comparison of the packet file (210A; 210B; 210C) of one or more packet files (210A, 210B, 210C) further comprises instructions to: to detect whether an earlier version of the package file (210A; 210B; 210C) is stored in the composite layer (250); and to determine whether the package file (210A; 210B; 210C) differs from the previous version of the retrieved file. [13] System according to claim 1, wherein the comparison of each package file (210A; 210B; 210C) of the one or more package files (210A, 210B, 210C) stored in the temporary storage location (220) is performed with an associated file or subdirectory (280) in the composite layer (250) without unmounting the overlay file system. [14] System according to claim 1, wherein the overlay file system package manager (202) comprises an overlay file system kernel. [15] System according to claim 14, wherein the overlay file system kernel comprises an operating system kernel. [16] System according to claim 15, wherein the overlay file system is an overlay file system of the operating system. [17] System according to claim 15, wherein the overlay file system package manager (202) is an operating system package manager. [18] System according to claim 1, wherein the overlay file system comprises an embedded system environment (100). [19] A procedure that includes the following: Procurement of one or more package files (210A, 210B, 210C) by a memory management controller based on a request for a file system operation; Storing one or more package files (210A, 210B, 210C) in a temporary storage location (220) by the memory management controller; Access, by the memory management controller, to a composite layer (250) stored in memory and configured to represent a union of upper and lower file systems (230, 240) of an overlay file system, wherein the union includes read-only underlay files or subdirectories (260) and writable underlay files or subdirectories (270) that are not replaced by an overlay file or subdirectory within the overlay file system; The memory management controller compares each package file (210A; 210B; 210C) of the one or more package files (210A, 210B, 210C) stored in the temporary storage location (220) with a related file or subdirectory (280) in the composite layer (250); Detect, by the memory management controller, whether there is a difference between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250); and Copying the package file (210A; 210B; 210C) of one or more package files (210A, 210B, 210C) to the upper file system (240) if there is a difference between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250). [20] The method of claim 19, further comprising that the package file (210A; 210B; 210C) of one or more package files (210A, 210B, 210C) is not copied into the upper file system (240) if the package file (210A; 210B; 210C) is not different from the associated file or subdirectory (280) in the composite layer (250). [21] Method according to claim 20, further comprising deleting the packet file (210A; 210B; 210C) of one or more packet files (210A, 210B, 210C) from the temporary storage location (220). [22] A non-transitory, computer-readable medium containing software instructions which, when executed by one or more processors (102), cause the one or more processors (102) to: to obtain one or more package files (210A, 210B, 210C) from a memory management controller based on a request for a file system operation; to store one or more package files (210A, 210B, 210C) by the memory management controller at a temporary storage location (220); by the memory management controller to access a composite layer (250) stored in memory and configured to represent a union of upper and lower file systems (230, 240) of an overlay file system, wherein the union includes read-only underlay files or subdirectories (260) and writable underlay files or subdirectories (270) that are not replaced by an overlay file or subdirectory within the overlay file system; by the memory management controller to compare each package file (210A; 210B; 210C) of the one or more package files (210A, 210B, 210C) stored in the temporary memory location (220) with a related file or subdirectory (280) in the composite layer (250); to detect by the memory management controller whether there is a difference between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250); and to write the package file (210A; 210B; 210C) of one or more package files (210A, 210B, 210C) to the upper file system (240) when a difference is detected between the package file (210A; 210B; 210C) and the associated file or subdirectory (280) in the composite layer (250). [23] Non-transitory computer-readable medium according to claim 22, further comprising instructions not to write the packet file (210A; 210B; 210C) of one or more packet files (210A, 210B, 210C) to the upper file system (240) if the packet file (210A; 210B; 210C) is not different from the associated file or subdirectory (280) in the composite layer (250). [24] Non-transitory computer-readable medium according to claim 23, further comprising instructions for deleting the packet file (210A; 210B; 210C) of one or more packet files (210A, 210B, 210C) from the temporary storage location (220).