Host computing device, remote server device, storage system and methods thereof
By introducing a file system scanner and cache processor into a host or remote server device, classification tags are generated to distinguish file system metadata, solving the problem of ineffective metadata caching in existing technologies and improving the I/O performance and efficiency of the storage system.
Patent Information
- Application Number
- CN201811130023.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2017-09-28
- Filing Date
- 2018-09-27
- Publication Date
- 2025-11-21
- Estimated Expiration
- 2038-09-27
AI Technical Summary
Existing technologies struggle to effectively differentiate and prioritize file system metadata in remote storage systems, leading to increased I/O wait times and response times, and failing to fully leverage the performance improvements of differentiated storage service technologies.
By introducing a file system scanner into a host or remote server device, generating classification tags, and applying differentiated storage service logic in the cache processor, file system metadata is distinguished and cached preferentially, avoiding modifications to existing storage software and delivery layers.
It improves I/O performance, reduces latency and response time, and increases the throughput and bandwidth of the storage system without changing the existing storage software and transport layer.
Smart Images

Figure CN109582221B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] Various aspects generally relate to arrangements of host computing devices, remote server devices, storage systems, and methods for operating storage systems. BACKGROUND
[0002] As data volume and data traffic increase in storage architectures, efficient data management techniques can become increasingly important. In some applications, data can be stored remotely at a storage system that is spaced apart from an actual user of the data. Data transfer between the remote storage system and a client system can be based on a communication protocol. In other applications, a virtual machine monitor can be used to host various guest operating systems within a host system. The guest operating systems can access one or more storage devices provided by or communicatively coupled to the host system. BRIEF DESCRIPTION OF DRAWINGS
[0003] Throughout the drawings, it should be noted that like reference numbers are used to depict the same or similar elements, features, and structures. The drawings are not necessarily to scale, with emphasis instead being placed upon illustrating various aspects of the disclosure. In the following description, various aspects of the disclosure will be described with reference to the following drawings, in which:
[0004] Figure 1A and 1B Exemplary file system benchmarks for differentiated storage service techniques are shown;
[0005] Figure 2 A storage system architecture in accordance with some aspects of the disclosure is shown;
[0006] Figure 3 A cache handler in accordance with some aspects of the disclosure is shown;
[0007] Figure 4 An internal configuration of a mirror structure configured to mirror a file system in accordance with some aspects of the disclosure is shown;
[0008] Figure 5 A storage system architecture in accordance with some aspects of the disclosure is shown;
[0009] Figure 6 A method for operating a computing system in accordance with some aspects of the disclosure is shown;
[0010] Figure 7 An exemplary method for operating a host computing device in accordance with various aspects is shown; and
[0011] Figure 8Methods for operating a remote server device are shown in accordance with various aspects of the present disclosure. DETAILED DESCRIPTION
[0012] The following detailed description references the drawings, wherein:
[0013] The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any implementation described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other implementations.
[0014] Throughout the drawings, it should be noted that like reference numbers are used to depict the same or similar elements, features, and structures.
[0015] One or more aspects are described in sufficient detail to enable those skilled in the art to practice the disclosure. Other aspects can be utilized and structural, logical, and / or electrical changes can be made without departing from the scope of the present disclosure.
[0016] The various aspects of the disclosure are not necessarily mutually exclusive, as some aspects can be combined with one or more other aspects to form new aspects.
[0017] The various aspects are described in connection with a method and the various aspects are described in connection with an apparatus. However, it can be understood that aspects described in connection with a method can be similarly applicable to an apparatus and vice versa.
[0018] The terms "at least one" and "one or more" can be understood to include a numerical quantity greater than or equal to one (e.g., one, two, three, four, [...], etc.). The term "plurality" can be understood to include a numerical quantity greater than or equal to two (e.g., two, three, four, five, [...], etc.).
[0019] The phrase "at least one of" a group of elements can be used herein to mean a selection from the group consisting of one, more than one, one of the listed elements, more than one of the listed elements, or a combination of two or more of the listed elements.
[0020] The words “plurality” and “a plurality” as used throughout this specification and in claims, mean “more than one” or “two or more.” Hence, any phrases expressing combinations of the aforementioned words, e.g., “plurality of [objects]”, “a plurality of [objects]”, are to be construed to unambiguously refer to more than one of the stated object. The terms “group of”, “set of”, “collection of”, “series of”, “sequence of”, “pack of”, and the like, if any, in the specification and in the claims refer to a number equal to or greater than one, i.e., one or more.
[0021] The term “data” as used herein can be understood to comprise information in any suitable analog or digital form, which is for example provided as a file, a part of a file, a collection of files, a signal or stream, a part of a signal or stream, a collection of signals or streams, etc. Further, the term “data” can also be used to mean a reference to information, e.g. in the form of a pointer. However, the term data is not limited to the previously mentioned examples and can take various forms and represent any information as understood in the art.
[0022] The term “processor” or “controller” as used herein, e.g., can be understood as any kind of entity allowing to process data. The data can be processed in accordance with one or more particular functions performed by the processor or controller. Further, the processor or controller as used herein can be understood as any kind of circuit, e.g., any kind of analogue or digital circuit. The term “processing” or “process” as used herein, e.g., with respect to data processing, file processing, or request processing, can be understood as any kind of operation, e.g., an I / O operation, or any kind of logic operation. The I / O operation may, e.g., be a storing (also referred to as writing) and a reading.
[0023] The processor or controller can thus be or include an analogue circuit, a digital circuit, a mixed signal circuit, a logic circuit, a processor, a microprocessor, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a field programmable gate array (FPGA), an integrated circuit, an application-specific integrated circuit (ASIC), etc., or any combination thereof. Any other kind of implementation of the respective functionality, which will be described in further detail below, can also be understood as a processor, a controller, or a logic circuit. It is understood that any two (or more) of the processors, controllers, or logic circuits detailed herein can be implemented as a single entity with equal functionality, etc., and vice versa, any single processor, controller, or logic circuit detailed herein can be implemented as two or (more) separate entities with equal functionality, etc.
[0024] The differences between software and hardware-implemented data handling can become blurred. The processors, controllers, and / or circuitry detailed herein can be implemented in software, hardware, and / or as a hybrid implementation including software and hardware.
[0025] The term "system" (e.g., storage system, server system, client system, guest system, etc.) detailed herein can be understood to be a collection of elements that interact, where the elements can be, by way of example and without limitation, one or more mechanical components, one or more electrical components, one or more instructions (e.g., encoded in a storage medium), and / or one or more processors, etc.
[0026] The term "storage" (e.g., storage device, primary storage, etc.) detailed herein can be understood to include any suitable type of memory or memory device, such as a hard disk drive (HDD), etc.
[0027] The term "cache storage" (e.g., cache storage device) or "cache memory" detailed herein can be understood to include any suitable type of fast-access memory or memory device, a solid state drive (SSD), etc. According to various embodiments, a cache storage device or cache memory can be a special type of storage device or memory having high I / O performance (e.g., large read / write speeds, low latency, etc.). Generally, a cache device can have higher I / O performance than a primary storage, which can generally be more cost-efficient in terms of storage space. According to some aspects, a storage device can include both a cache memory and a primary memory. According to some aspects, a storage device can include a controller for distributing data to a cache memory and a primary memory. According to various embodiments, a storage capacity of a primary memory can be greater than a storage capacity of a cache memory. According to various embodiments, a storage capacity of a primary storage can be greater than a storage capacity of a cache storage device.
[0028] As used herein, the term "memory," "memory device," etc. can be understood to be a non-transitory computer-readable medium in which data or information can be stored for retrieval. References to "memory" included herein can thus be understood to refer to volatile or non-volatile memory, including random access memory (RAM), read only memory (ROM), flash memory, solid state storage, magnetic tape, a hard disk drive, an optical drive, 3D XPoint memory, etc. TM), etc., or any combination thereof. Moreover, it is appreciated that registers, shift registers, processor registers, data buffers, etc., are also encompassed by the term memory herein. It is appreciated that a single component referred to as a "memory" or "a memory" can be comprised of more than one different type of memory, and thus can involve a collective component that includes one or more types of memory. It is readily appreciated that any single memory component can be separated into a plurality of commonly equivalent memory components, and vice versa. Moreover, while a memory can be depicted as separate from one or more other components (such as in the figures), it is appreciated that a memory can be integrated within another component, such as on a common integrated chip.
[0029] A volatile memory can be a storage medium that requires power to maintain the state of data stored by the medium. Non-limiting examples of volatile memory can include various types of RAM, such as dynamic random access memory (DRAM) or static random access memory (SRAM). One particular type of DRAM that can be used in memory modules is synchronous dynamic random access memory (SDRAM). In some aspects, the DRAM of a memory component can conform to standards published by the Joint Electron Device Engineering Council (JEDEC), such as JESD79F for double data rate (DDR) SDRAM, JESD79-2F for DDR2 SDRAM, JESD79-3F for DDR3 SDRAM, JESD79-4A for DDR4 SDRAM, JESD209 for low power DDR (LPDDR), JESD209-2 for LPDDR2, JESD209-3 for LPDDR3, and JESD209-4 for LPDDR4 (these standards are available at www.jedec.org). Such standards (and similar standards) can be referred to as DDR-based standards, and a communication interface of a memory device that implements such a standard can be referred to as a DDR-based interface.
[0030] Various aspects can be applied to any memory device including non-volatile memory. In one aspect, the memory device is a block-addressable memory device, such as those based on "and not" (NAND) logic or "or not" (NOR) logic technology. The memory can also include future generations of non-volatile devices, such as 3D XPoint TM The memory device, or other byte-addressable, write-in-place non-volatile memory device. 3D XPoint TM The memory can include a transistor-less, stackable cross-point architecture, where memory cells are located at intersections of word lines and bit lines, and are individually addressable, and where bit storage is based on changes in bulk resistance.
[0031] In some aspects, the memory device can be or can include a memory device using a chalcogenide glass, a multi-threshold level NAND flash memory, a NOR flash memory, a single level or multi-level phase change memory (PCM), a resistive memory, a nanowire memory, a ferroelectric transistor random access memory (FeTRAM), an anti-ferroelectric memory, a magnetoresistive random access memory (MRAM), a memory incorporating memristor technology, a resistive memory including a metal-oxide base, an oxygen-vacancy base, and a conductive-bridge random access memory (CB-RAM), or a spin transfer torque (STT)-MRAM, a spintronic magnetic junction memory based device, a magnetic tunnel junction (MTJ) based device, a DW (domain wall) and SOT (spin orbit transfer) based device, a thyristor based memory device, or a combination of any of the above, or other memory. The term memory or memory device can refer to the die itself and / or to a packaged memory product.
[0032] According to some aspects, a computing system (e.g., a host computing system or host computing device; a remote server system or remote server device) can implement one or more caching policies to efficiently cache the most important data and avoid evictions of these data by less important data (e.g., file system metadata can have a higher priority, e.g., defined as more important than file system data).
[0033] According to some aspects, a differentiated storage service (DSS) technique can be implemented in a computing system. The technique can improve storage performance by reducing I / O latency and / or response time and increasing throughput and / or bandwidth. Differentiated storage service can involve classification, where I / O operations are assigned to one or more classes. Based on the classification, policies can be associated with the classes (e.g., file system data of a file system can require high performance I / O). The storage system can be configured to handle data according to the one or more policies (e.g., a cache storage device can be used to provide low latency for file system data I / O). The technique for obtaining performance values can be implemented, for example, in software, e.g., Intel Cache Acceleration Software - CAS, executed on a host computing device or on a remote storage device.
[0034] A cache can be applicable to one or more block devices. A block device can include raw data and a file system that provides a user with a logical tree view of, for example, the raw data. A user can only deal with user data, such as names and contents of files. The file system implementation can use additional raw data associated therewith; the additional raw data can be stored on the block device, only for implementing the file system. Thus, a user workload can be a mix of file system data (user data) and file system metadata (e.g., data for the file system). According to various embodiments, file system metadata can have the highest cache priority. File system data can have a lower priority, for example, depending on its file size, for example, files with smaller file sizes (e.g., 4kb) can have a higher cache priority than files with larger file sizes (e.g., 1Mb). However, according to various embodiments, the priority of a particular type of data can be predefined, for example, as user-defined, as desired.
[0035] According to various aspects, file system data can be referred to as user data stored in files. File system metadata can be owned by the file system to track layout, file and directory placement, attributes, and the like.
[0036] According to some aspects, classification of data, for example, file system data, file system metadata, and the like, can be provided to increase I / O performance. This is applicable, for example, in CAS, which can use I / O classification in order to provide efficient caching for storage devices in software-defined storage systems (SDS, a storage platform that implements object storage on a single distributed computer cluster and provides interfaces for object-, block-, and file-level storage), such as Ceph or OpenStack SWIFT.
[0037] Figure 1A A file system benchmark 101 for various cache strategies is illustrated according to various embodiments. The file system benchmark 101 can be applied with Postmark running on a Lustre file system with SPECsfs benchmark distribution. The file system benchmark 101 can be performed for CAS implementation versus HDD and SSD performance, and versus CAS implementation combined with DSS up to a particular file size, for example, only metadata, metadata with files from 4kB to 1GB, and metadata and all files (as depicted on the horizontal axis). As illustrated, TPS (transactions per second) performance 101y (depicted on the vertical axis) is increased for the case of implementing both CAS and DSS, with TPS performance 101y having a maximum value 101m for caching metadata and files up to 4MB.
[0038] Figure 1B Figures illustrate relative speedup 102 (depicted on the vertical axis) normalized to HDD speed for two different Ceph configurations with various cache policies (depicted on the horizontal axis). Figure 1B A first Ceph configuration 102a illustrated in FIG. 1 includes one virtual machine (VM), one object storage daemon (OSD), and one replica. Figure 1B A second Ceph configuration 102b illustrated in FIG. 1 includes one virtual machine (VM), three object storage daemons (OSDs), and three replicas. For each of the Ceph configurations 102a, 102b, relative speedup 102 is shown for various cache policies. Illustrative cache policies can include, for example, LRU (Least Recently Used) Write-Through 102-1, DSS (Differential Storage Service), Write-Through 102-2, LRU Write-Back 102-3, and DSS Write-Back 102-4.
[0039] As Figure 1A and Figure 1B As illustrated in FIGS. 1 and 2, DSS cache policies can allow for an efficient data cache that can be used in computing systems according to some aspects. However, storage stacks and / or transport APIs can not have the possibility to embed I / O hints into I / O requests. In other words, I / O requests can be transported (e.g., sent and / or received) without classification criteria (e.g., classification tags) that allow for handling I / O requests according to various classes assigned with the classification criteria. In such cases, I / O classification based on embedded I / O hints can not be performed. Thus, backend storage systems can not be able to employ DSS techniques, nor realize the previously mentioned improvements associated therewith.
[0040] According to some aspects, a cache engine (also referred to as a cache processor, e.g., a CAS with implemented DSS logic) can be implemented in a computing system (e.g., a storage system) that provides raw I / O (e.g., unclassified I / O, also referred to as I / O without embedded hints) to the cache engine, such that the cache engine, for example, cannot distinguish between file system metadata and other data from each other. In some aspects, storage virtualization can be implemented as a Quick Emulator (QEMU) based hypervisor. The term hypervisor can be referred to as a virtual machine monitor (VMM). A guest system operating via the hypervisor can not be able to provide hinted I / O to the cache engine of the hypervisor. As another example, a remotely attached storage device communicating via iSCSI can not be able to provide hinted I / O from a file system logic provided on a compute node to a remote storage node running the cache engine, as in this case the cache engine on the remote storage node only receives raw I / O (i.e., I / O without embedded hints for caching).
[0041] In general, it can be possible to modify the entire storage stack and adjust the software used in order to deliver I / O hints from the point where I / O is generated to the back-end storage device. This possible DSS evolution can be delayed, as the transition to new versions of software and specifications (e.g., SCSI) has a long time to market. In the case of virtualization, likewise, the guest operating system (guest OS) needs to be updated. However, if a user wants to use older guest OS versions, I / O hints can not be generated and / or transmitted. In these cases, DSS and CAS techniques cannot be applied on the transmitted I / O, nor can the previously mentioned improvements associated therewith be implemented.
[0042] Furthermore, the analysis of the I / O meaning and the hinting of the I / O can be implemented on the fly. However, this can be a complex task and would require an understanding of the layout of various file systems. Thus, in the case of such on-the-fly implementations, a huge amount of software, complexity, sustainability issues, etc. can arise, which, for example, can be avoided as described herein.
[0043] According to some aspects, a computing system and a method for operating the computing system can be provided to distinguish between file system data and file system metadata on the host side or on the remote storage device without any modifications to existing storage software and delivery layers.
[0044] According to some aspects, a file system implementation can be used for hinting I / O, where the file system implementation can be used in a kernel on the host side or on the remote storage device side. According to some aspects, file system metadata detection is performed in a background thread outside of the application stream. In other words, the file system metadata detection can for example not affect the guest OS of the host computing system or the compute nodes of the remote storage system.
[0045] According to some aspects, a thread can be executed by a respective processor of a computing system, where the thread is related to file system metadata detection. This thread is also referred to herein as a file system (FS) scanner. The file system scanner can be implemented in hardware, software, or as a hybrid implementation including both hardware and software.
[0046] Some aspects are related to an implementation of a file system scanner in a host computing system including a hypervisor such as QEMU or any other suitable virtualization or emulation environment. However, the file system scanner can be implemented in any other storage system for generating I / O hints, which are in case these hints can not be embedded on the I / O requests themselves.
[0047] As described in more detail below, a mirror block device can be created in the kernel of the host operating system, which can for example reflect to the primary storage device. The mirror block device can be configured to mirror the storage device, e.g. the primary storage device. According to some aspects, the file system scanner and the host operating system can be configured to mount the mirror of the storage device in read-only mode. The kernel of the host operating system can be configured to detect the file system type on the mirror block device by reading for example the superblock of the file system. This can cause one or more I / O requests, which can be forwarded to the file system scanner and for example subsequently to the primary storage device. The I / O requests containing metadata can be returned from the primary storage device to the kernel. Once the file system is mounted, the file system scanner can recursively read the file system tree and / or file status (or any other desired data of the file system to be classified). Reading the file system tree can generate metadata I / O, where each I / O request from the file system scanner to the primary storage device can be classified as file system metadata I / O. This allows for example classifying (also referred to as hinting) I / O requests by using the file system scanner, for example based on the reading of the file system of the mirror block device by the file system scanner. This scan can be repeated after a predefined time, e.g. at a predefined time interval, in order to detect and classify new file system metadata, or in other words to refresh the classification of file system metadata.
[0048] Figure 2A storage system 200 is illustrated in an exemplary view according to some aspects. The storage system 200 can include a storage device 202, a cache storage device 204, and a cache processor 208. The storage device 202 can include, for example, one or more hard disk drives (HDDs). The cache storage device 204 can include, for example, one or more solid state drives (SSDs). The cache processor 208 can be configured to distribute data to the storage device 202 and to the cache storage device 204. According to some aspects, the storage system 200 can additionally include a processor 206. According to some aspects, the cache processor 208 can be implemented in, for example, software executed by the processor 206.
[0049] According to some aspects, the processor 206 can be configured to provide a file system scanner 226 and a mirror of the storage device 202 (see reference 216). The mirror of the storage device 202 can be configured to provide data from the storage device 202 to the file system scanner 226. In some aspects, the mirror of the storage device 202 can be configured to mirror data from the storage device 202 and not from the cache storage device 204.
[0050] According to some aspects, the processor 206 of the storage system 200 can be configured to detect a file system type of a file system 202f provided on the storage device and mount a mirror of the file system to allow the file system scanner 226 to read data from the file system 202f, for example, a file system 202f or file system metadata 202f of the storage device 202.
[0051] According to some aspects, the file system scanner 226 can be configured to scan (e.g., read) 226s the mounted mirror of the file system 202f and generate one or more classification tags 226c corresponding to the mirrored data from the file system 202f.
[0052] According to some aspects, the cache processor 208 can be configured to receive data 230 to be stored. The received data 230 to be stored is also referred to herein as a request 230 (e.g., as an I / O request 230) or as a file 230 to be stored. As noted above, the received data 230 to be stored can be raw data without embedded hints for caching. Accordingly, according to some aspects, the cache processor 208 can be configured to determine the presence (and, correspondingly, the absence, if none is detected) of a corresponding generated classification tag 226c for the received data 230. In a similar manner, the cache processor 208 can be configured to determine presence information for a corresponding generated classification tag 226c for the received data 230. In some aspects, the presence information can include the presence of a corresponding generated classification tag. In some aspects, the presence information can include the absence of a corresponding generated classification tag. In some aspects, the cache processor 208 can be configured to distribute 218t the received data 230 to the storage device 202, or to the cache storage device 204, such that received data 230 without a corresponding classification tag (i.e., in cases where the cache processor 208 determines that there is no corresponding generated classification tag 226c for the received data 230) is stored in the storage device 202. In other cases (i.e., in cases where the cache processor 208 determines that there is a corresponding generated classification tag 226c for the received data 230), the received data with the corresponding classification tag 226c is stored in the storage device 202 and / or the cache storage device 204 according to the corresponding classification tag 226c.
[0053] Illustratively, cache processor 208 provides one or more cache policies that define rules to determine whether a request 230 (e.g., an I / O request) can be satisfied by using a cached copy of the requested data or file (e.g., by using cache storage device 204). If not, the request 230 is satisfied by using storage device 202. Since the request 230 is received without a classification label (also referred to as a hint) associated with the corresponding one or more cache policies, file system scanner 226 can be used to provide one or more classification labels 226c, for example, as a lookup table, which allows the classification of the request 230. Upon receiving a particular request 230, cache processor 208 can be configured to check whether a classification label 226c (also referred to as a corresponding generated classification label) corresponding to the particular request 230 is provided by file system scanner 226, and if so, the request 230 can be disposed of according to the one or more cache policies based on the corresponding classification label.
[0054] In other words, such as Figure 2 As illustrated, processor 206 can be configured to provide the file system 202f of storage device 202 to file system scanner 226 via mirror structure 216 that mirrors storage device 202. File system scanner 226 can be configured to generate data classifications 226c for file system 202f, the data of which is provided to file system scanner 226 via mirror structure 216. Cache processor 208 can be configured to receive request 230, which has associated data, and cache processor 208 can be configured to determine, based on the classifications 226c generated by file system scanner 226 for the data of file system 202f, whether a corresponding classification exists for the data associated with the received request 230. Cache processor 208 can further be configured to distribute the data associated with the received request 230 to storage device 202 and / or to cache storage device 204. In this configuration, cache processor 208 can be configured to distribute data associated with the received request 230, such that data associated with the received request 230 that does not have a corresponding category 226c is distributed 218t to storage device 202. Furthermore, cache processor 208 can be configured to distribute data associated with the received request 230, such that data associated with the received request 230 that has a corresponding category 226c is distributed 218t to storage device 202 or to cache storage device 204 according to the corresponding category 226c.
[0055] According to some aspects, a host computing device can include a host processor 206 and a cache processor 208 (also referred to as a cache engine), as illustrated, for example, in Figure 2 FIG. 1. The host computing device can be part of a host computing system that includes the host computing device and a storage device 202 and a cache storage device 204 communicatively coupled to the host computing device. The host processor 206 of the host computing device can execute a host operating system and a host kernel associated therewith, and the host processor 206 can be configured to host a guest operating system to cause a file system of the guest operating system to be mirrored via the host kernel (see reference 216), and to generate cache criteria (see reference 226c) by scanning (see reference 226s) the mirrored file system. The cache processor 208 can be configured to process I / O requests (see reference 230) from the guest operating system based on the cache criteria generated by the host processor 206.
[0056] According to some aspects, a remote server device can include a remote server processor 206 and a cache processor 208 (also referred to as a cache engine), as illustrated, for example, in Figure 2 FIG. 1. The remote server device can be part of a remote server system that includes the remote server device and a storage device 202 and a cache storage device 204 communicatively coupled to the remote server device. The remote server processor 206 of the remote server device can execute a remote server operating system and a remote server kernel associated therewith, and the remote server processor 206 can be configured to communicate with a client operating system (e.g., via a network connection) for causing a file system of the client operating system to be mirrored via the remote server kernel (see reference 216). Cache criteria (see reference 226c) can be generated by scanning (see reference 226s) the mirrored file system. The cache processor 208 can be configured to process I / O requests (see reference 230) from the client operating system based on the cache criteria generated by the remote server processor 206. For the remote server device, the mirroring can be implemented on the remote side. The mirroring can take data from the primary storage. The primary storage can be on the same machine, where the data can be taken directly (i.e., with an additional network) from the primary storage. In case the primary storage is disaggregated (e.g., the primary storage can be on various machines), the mirroring takes data through network communication. According to various embodiments, the mirroring can not receive data from the client side.
[0057] Figure 3A schematic view of cache processor 208 is illustrated, in accordance with some aspects. As described above, cache processor 208 can be part of storage system 200, e.g., part of a host computing system or a remote server system. Cache processor 208 can be configured to distribute data to various storage devices, e.g., to storage device 202 as well as to cache storage devices. According to some aspects, file system scanner 226 can be used to generate a classification 226c (e.g., in the form of a lookup table, or in any other suitable form) by analyzing storage device 202 (e.g., the file system of the storage device), as described herein. Classification 226c can include a plurality of requests associated with hints related to cache policies for the plurality of requests. Cache processor 208 is configured to check 318d, for each of received requests 230, whether received request 230 is classified 226c (e.g., whether the lookup table has an entry for received request 230), and if so, to handle 318t received request 230 according to the cache policy defined for that request 230. In cases where received request 230 is not classified, e.g., if no entry for received request 230 is available in lookup table 326, received request 230 is handled 318p according to a predefined handling scheme, e.g., in this case, received request 230 can be passed to storage device 202 (e.g., stored therein) without change.
[0058] Figure 4 A schematic view of, e.g., mirror structure 216 of processor 206, which mirrors file system 202f of storage device 202, is illustrated, in accordance with some aspects. As described herein, a mirror of storage device 202 or of file system 202f of storage device 202 can be provided by mirror structure 216 to file system scanner 226 for analyzing 226s (e.g., scanning) the mirrored file system 402f and generating hints related to I / Os related to file system 202f. As described above, mirror structure 216 can be part of storage system 200, e.g., part of a host computing system or a remote server system.
[0059] According to some aspects, mirror structure 216 can include a block device driver 416d configured to mirror storage device 202. Block device driver can be a virtual block device driver. According to some aspects, mirror structure 216 can include a file system switch 416s for mounting file system 202f of storage device 202. File system switch 416s can be a virtual file system switch.
[0060] According to some aspects, the mirror structure 216 can be further configured to detect a file system type 402f (e.g., XFS, EXT3, etc.) of the file system 202f of the storage device 202 and mount the file system 202f of the storage device 202, e.g., in read-only mode.
[0061] According to some aspects, the mirror structure 216 and the file system scanner 226 can be configured to access metadata of the file system 202f of the storage device 202. In addition, one or more specified types of files can be accessed. In some aspects, the mirror structure 216 and the file system scanner 226 can be configured to access only metadata of the file system 202f of the storage device 202.
[0062] The processor 206 as described herein can be configured to run an operating system (e.g., a host operating system or a remote server operating system) having an operating system kernel associated therewith. According to some aspects, the mirror structure 216 can be provided by the operating system kernel or, in other words, the operating system kernel can be configured to provide a mirror of the storage device 202 or the file system 202f of the storage device 202 to the file system scanner 226.
[0063] According to some aspects, the cache processor 208 can include differentiated storage service logic for providing a handling policy for a received request 230 based on a classification 226c, wherein the classification 226c is not embedded into the received request 230 but is provided by the file system scanner 226, which scans the file system 202f of the storage device 202, e.g., as a background thread.
[0064] According to some aspects, since the classification of the received I / O 230 is provided by the file system scanner 226, this implementation does not require any modification to the existing storage software stack to benefit from the DSS logic, e.g. The file system scanner 226, as a background thread, can pin into cache file system metadata or files of a certain size.
[0065] From a performance point of view, a baseline is provided by caching without classification - typically LRU policy; see, e.g., Figure 1B The classification provided by the file system scanner 226 allows to distinguish I / O meaning by corresponding I / O classes. A user (or a cache analyst with automatic tuning) can configure the cache engine as desired by setting the cache policy and the I / O classes as desired.
[0066] According to some aspects, the file system scanner 226 as described herein can be part of a host computing device, as described in greater detail below. In a similar manner, the file system scanner 226 can be part of a remote storage device.
[0067] The host computing device can include a host processor (e.g., similar to the processor 206 described above) having a host operating system and a host kernel associated therewith. According to some aspects, the host processor can be configured to host one or more guest operating systems. The host processor can further be configured to mirror 216 a file system 202f of a guest operating system in the host kernel. The host processor can further be configured to generate cache criteria 226c by scanning 226s the mirrored file system 202f (see FIG. A, IB to Figure 1A , 1B to Figure 4 ) of the file system 202f. As described above, the host computing device can further include a cache engine (also referred to as a cache processor) 208 configured to process I / O requests 206 from the guest operating system based on the cache criteria 226c generated by the host processor 206.
[0068] The remote server device can include a remote server processor 206 (e.g., similar to the processor 206 described above) having a remote server operating system and a remote server kernel associated therewith. According to some aspects, the remote server processor 206 can be configured to communicate with a client operating system (e.g., via iSCSI or another storage area network (SAN) protocol). The remote server processor 206 can further be configured to mirror 216 a file system 202f of the client operating system in the remote server kernel. The remote server processor 206 can further be configured to generate cache criteria 226c by scanning 226s the mirrored file system 202f (see FIG. A, IB to Figure 4 ) of the file system 202f. As described above, the remote server device can further include a cache engine (also referred to as a cache processor) 208 configured to process I / O requests 206 from the client operating system based on the cache criteria 226c generated by the remote server processor 206.
[0069] According to some aspects, the file system 202f can be stored on a primary storage 202 (also referred to as a storage device 202). To cache I / O requests 230, a cache storage 204 can be implemented, as described herein.
[0070] According to some aspects, the host computing device or remote server device can include the storage device 202 and the cache storage device 204. Alternatively, the host computing device or remote server device can be coupled to the storage device 202 and the cache storage device 204 (e.g., by using a storage area network).
[0071] Figure 5 According to some aspects, a host computing system 500 is illustrated in a schematic view. The host computing system 500 can be configured in a similar manner as described above with reference to the storage system 200, with the file system scanner 226 and the cache handler 208 being implemented in a hypervisor 526 environment. The host computing system 500 can include a host processor 506 (similar to the processor 206 described above with reference to the storage system 200), which operates a host operating system (host OS) having a host kernel 506k associated therewith.
[0072] The hypervisor 526 (e.g., QEMU or any other suitable hypervisor) is provided by the host computing system 500. The hypervisor 526 can be executed by the host processor 506. The hypervisor 526 can be configured to host a guest system 536, such as a guest operating system (guest OS), which runs (or in other words executes) at least one guest application 536a. The guest application 536a operates on a guest file system 536f. The guest system 536 can generally be capable of classifying I / O, such as via at least one block device driver 536d. However, the guest system 536 can not inform the hypervisor 526 (e.g., QEMU) about the possibility of I / O classes, such as the possibility of the guest system 536 not storing an I / O class id in the I / O request 230 (see reference A1). Thus, without any other classification being provided, the hypervisor 526 will treat all I / O requests 230 with the same priority. The cache engine 508 (e.g., similar to or equivalent to the cache handler 208 as described above with reference to the storage system 200) can be implemented in the hypervisor 526. Without additional classification being provided for data 230 communicated with the guest system 536, all data 230 communicated with the guest system will be treated equally, and the cache logic of the cache engine 508 cannot perform a priority eviction and allocation mechanism. As an example, without additional classification being provided for data 230 communicated with the guest system 536, all data 230 communicated with the guest system will be stored on the main storage 502.
[0073] As described above, the mirror 516 of the main storage 502 (also referred to as the storage device 202) can be generated in the host OS kernel 506k. To detect the file system structure, the existing kernel implementation of the file system can be used. According to some aspects, a virtual block device can be provided in the kernel 506k that reflects to the main storage 502. Illustratively, the host OS kernel 506k sees exactly the same data as the guest OS kernel. According to some aspects, data is provided from the main storage 502 to the host OS kernel 506k via the front-end cache API. According to some aspects, the file system scanner 226 as described herein can be implemented in the hypervisor 526.
[0074] Once the mirror 516 is created, the block device is available under the device tree on the host computing system 500. It allows the partition plan and file system type to be detected by the host OS kernel 506k.
[0075] After the virtual block device is mounted, the file system scanner 226 can be able to read the file system tree and / or all other files of a given size in a background thread. I / O from the kernel mirror 516 can be forwarded to the file system scanner 226 and the file system scanner 226 can be responsible for hinting the I / O 230 as described herein (see reference numerals Bl to B3). The hinted I / O can be passed to the cache engine 508 (see reference numeral B4) where, for example, DSS logic or any other desired cache policy can be executed. Finally, data can be returned from the main storage 502, the cache engine 508, the file system scanner 226, the kernel mirror 516, the block device driver 416d, the mirrored file system 416f, and the virtual file system switch (VFS) 416s.
[0076] According to some aspects, the file system scanner 226 can be configured to implement periodic rescans to refresh the cache content and detect, for example, file system changes of new guests.
[0077] According to some aspects, the above-described performed operations allow, for example, the most needed and hot data (e.g., file system metadata) to be stored in the cache, for example, in the cache device 204 (also referred to as the cache storage device 204). I / O 230 from the guest application 536a can be handled without changing the classification of data already cached and can be passed to the main storage 502 in case no classification is available from the file system scanner 226.
[0078] According to some aspects, a virtual file system switch (VFS) 416s can include a set of standard interfaces for performing I / O requests for various file systems. Thus, various file systems 402f can be detected and mounted via the host OS kernel 506k; and, after mounting, analyzed via the file system scanner 226. The respective file systems 402f can be mounted in read-only mode for preventing interference with guest OS 536 accessing (e.g., changing) the file system 536f while or in between two subsequent file system scans.
[0079] According to some aspects, the file system scanner 226 can be used, for example, in a similar manner, on the iSCSI remote side of a remote storage device in which caching is provided. In other words, this manner of providing hints for caching I / O requests that are transferred without hints is used on both the compute node side (e.g., using QEMU) and the remote storage node (e.g., using iSCSI). In this case, an image of the file system is created via the processor and operating system of the remote storage node.
[0080] According to some aspects, the cache engine 508 and the file system scanner 226 can be implemented in the hypervisor 526, e.g., QEMU. Further, the cache block device driver 526d and the core block device driver 526c can be implemented in the hypervisor 526 for communicating with the cache device 204 and the main storage 502.
[0081] According to some aspects, only file system metadata 540 can be stored in the cache device 204, based on a classification provided by the file system scanner 226 (e.g., a tag or hint allowing classification). The classification can associate respective data, I / O, files, etc. to a particular class, and thus, the respective data, I / O, files, etc. can be handled according to their respective class. Since unclassified requests 230 can be stored in the main storage 502, both data 550 and metadata 540 can be stored in the main storage 504.
[0082] According to some aspects, a scan of a file system on the host side can require additional memory for the host system (e.g., for storing open files and directories, file system entries, such as inodes, file system internal memory cache). According to some aspects, a file system 402f that is being scanned (e.g., that is being imaged) can be mounted with a memory occupancy limit, if desired. This can prevent excessive memory consumption. In addition, additional IO from the file system scanner 226 can consume host storage bandwidth and reduce host storage bandwidth for the guest, particularly during the first scan or in case of cache misses. Thus, according to some aspects, the file system scanner 226 can be configured to automatically throttle I / O (e.g., for scanning) so as not to disturb the host workload.
[0083] Figure 6 A schematic flow chart illustrating a method 600 for operating a computing system (e.g., a storage system, e.g., a host system, e.g., a remote storage system) is shown, according to some aspects. The method 600 can include providing, in 610, an image of a file system of a storage device, generating, in 620, a classification of data for the file system by reading the file system via the image, receiving, in 630, a request having data associated therewith, and distributing, in 640, 650, 660, the received request to the storage device or to a cache storage device. According to some aspects, distributing the received request can include determining, in 640, based on the classification of data for the file system, a presence or an absence of a corresponding classification for the data associated with the received request, and distributing, in 650, data associated with the received request that is free of a corresponding classification to the storage device, and distributing, in 660, data associated with the received request that has a corresponding classification to the storage device or to a cache storage device according to the corresponding classification.
[0084] According to some aspects, distributing data can include selectively reading, writing, and / or updating data, metafiles, files, and the like from respective storage.
[0085] Figure 7 A schematic flow chart illustrating a method 700 for operating a host computing device or a host computing system is shown, according to some aspects. According to some aspects, the method 700 can include hosting, in 710, a guest operating system, causing, in 720, a file system of the guest operating system to be imaged via a host operating system having a host kernel associated therewith, generating, in 730, cache criteria by scanning the imaged file system, and processing, in 740, I / O requests from the guest operating system based on the cache criteria generated by scanning the imaged file system.
[0086] Figure 8 FIGURE 1 illustrates a schematic block diagram of a remote server system 100, according to some aspects. The remote server system 100 can include a remote server device 110, a remote server operating system 120, a remote server kernel 130, a file system scanner 140, a cache processor 150, a cache storage device 160, and a storage device 170. The remote server device 110 can be configured to communicate with a client, e.g., a client operating system. The remote server operating system 120 can be configured to mirror a file system of the client operating system. The remote server kernel 130 can be associated with the remote server operating system 120. The file system scanner 140 can be configured to scan the mirrored file system of the client operating system. The cache processor 150 can be configured to receive data to be stored, determine a presence of a corresponding generated classification tag for the received data, and distribute the received data to the storage device 170 or to the cache storage device 160, such that: the received data without a corresponding classification tag is stored in the storage device 170; and the received data with a corresponding classification tag is stored in the storage device 170 or in the cache storage device 160 according to the corresponding classification tag. The cache storage device 160 can be configured to store data received from the cache processor 150. The storage device 170 can be configured to store data received from the cache processor 150.
[0087] According to some aspects, in a remote server device or in a remote server system, at least one remote server processor can be configured to communicate with a client, e.g., with a client operating system.
[0088] According to some aspects, a storage system can include, for example: a storage device; a cache storage device; a processor configured to provide a mirror storage device for a file system scanner, wherein the mirror storage device mirrors data at least partially from the storage device, and mounts the mirror storage device. The file system scanner can be configured to read the mounted mirror storage device; and generate classification tags corresponding to mirrored data from the mounted mirror storage device. The cache processor can be configured to receive data to be stored, determine a presence of a corresponding generated classification tag for the received data, and distribute the received data to the storage device or to the cache storage device, such that: the received data without a corresponding classification tag is stored in the storage device; and the received data with a corresponding classification tag is stored in the storage device or in the cache storage device according to the corresponding classification tag.
[0089] According to some aspects, a method for operating a storage system can include generating a mirror storage device, the mirror storage device at least partially mirroring a storage device; mounting the mirror storage device; reading the mounted mirror storage device and generating classification tags corresponding to mirrored data from the mounted mirror storage device; receiving data for storage, and distributing the received data to the storage device or to a cache storage device, wherein distributing the received data includes determining a presence of a corresponding generated classification tag (from the plurality of classification tags) for the received data, and storing the received data without a corresponding generated classification tag (i.e., not generated by a file system scanner) into the storage device, and storing the received data with a corresponding generated classification tag into the storage device or into a cache storage device according to the corresponding generated classification tag.
[0090] According to some aspects, a host computing system can include a host processor configured to host a virtual machine; the host processor further configured to provide a mirror storage device that at least partially mirrors data from a storage device, the host processor further configured to detect a file system of the mirror storage device and mount the file system (e.g., in read-only mode); a file system scanner configured to generate at least one classification tag corresponding to at least one file from the mounted file system; a cache engine configured to receive a file to be stored from the virtual machine, and evaluate whether a corresponding classification tag is provided for the file received from the file system scanner, and distribute the received file to the storage device or to a cache storage device, wherein the received file without a corresponding classification tag (i.e., not classified by the file system scanner) is stored in the storage device, and wherein the received file with a corresponding classification tag (i.e., classified by the file system scanner) is stored in the storage device or in the cache storage device according to the corresponding classification tag.
[0091] According to some aspects, a remote storage system can include: a processor configured to provide a mirror storage device that mirrors data at least in part from a storage device, the processor further configured to detect a file system of the mirror storage device and mount the file system (e.g., in read-only mode); a file system scanner configured to generate at least one classification tag corresponding to at least one file from the mounted file system; a cache engine configured to receive a file to be stored from a client computer system and evaluate whether a corresponding classification tag is provided for the file received from the file system scanner and distribute the received file to the storage device or to a cache storage device, wherein a received file that does not have a corresponding classification tag (i.e., a file that is not classified / tagged by the file system scanner) is stored in the storage device, and wherein a received file that has a corresponding classification tag (i.e., a file that is classified / tagged by the file system scanner) is stored in the storage device or the cache storage device according to the corresponding classification tag.
[0092] According to some aspects, a method for operating a computing system (e.g., a host computing system for hosting a virtual machine or a remote storage system) can include: operating a cache engine and a file system scanner; creating a mirror storage device that mirrors at least in part a storage device that is in communication with the cache engine; detecting a file system of the mirror storage device, mounting the mirror storage device, and accordingly generating classification tags corresponding to files from the mirror storage device. In this case, operating the cache engine can include: receiving a file to be stored (e.g., from a virtual machine or from a remote client), and evaluating whether a corresponding classification tag is provided for the data received from the file system scanner, and distributing the received file to the storage device or to a cache storage device, wherein a received file that does not have a corresponding classification tag provided by the file system scanner (i.e., that is not generated by the file system scanner) is stored in the storage device, and wherein a received file that has a corresponding classification tag provided by the file system scanner (i.e., that is generated by the file system scanner) is stored in the storage device or the cache storage device according to the corresponding classification tag.
[0093] According to some aspects, a storage system can include a storage device; a cache storage device, a processor and a cache engine. The processor can be configured to provide a mirror storage device to a file system scanner, the mirror storage device mirroring data at least partially from the storage device, and mount the mirror storage device. The file system scanner can be configured to read the mounted mirror storage device; and generate classification tags corresponding to the mirrored data from the mounted mirror storage device. The cache processor can include being configured to receive data to be stored, determine existence of a corresponding generated classification tag for the received data, and distribute the received data to the storage device or to the cache storage device, such that: received data without a corresponding classification tag is stored in the storage device; and received data with a corresponding classification tag is stored in the storage device or the cache storage device according to the corresponding classification tag. In this case, the processor can be further configured to mount the mirror storage device in read-only mode, detect a file system of the mirror storage device, run an operating system with a kernel to mount the detected file system by using the kernel, the kernel including a virtual file system switch, and / or provide the mirror storage device as a virtual mirror storage device. The processor can be further configured to provide a virtual machine monitor for hosting a virtual machine, the virtual machine sending data to be stored, and alternatively, provide a remote storage server for communicating with a client, the client sending data to be stored.
[0094] According to some aspects, a storage system can include: a storage device; a cache storage device; a processor configured to provide a mirror storage device to a file system scanner, wherein the mirror storage device mirrors files at least partially from the storage device, and mount the mirror storage device; wherein the file system scanner is configured to generate file classifications for mirrored files from the mounted mirror storage device; a cache processor configured to receive files to be stored, determine existence of a corresponding generated file classification for the received files, and distribute the received files to the storage device or to the cache storage device, such that: received files without a corresponding generated file classification are stored in the storage device; and received files with a corresponding generated file classification are stored in the storage device or the cache storage device according to the corresponding file classification.
[0095] According to some aspects, a method for operating a storage system can include generating a mirror storage device, the mirror storage device at least partially mirroring a storage device; mounting the mirror storage device; reading the mounted mirror storage device and generating classification tags corresponding to mirrored data from the mounted mirror storage device; receiving data for storage, and distributing the received data to the storage device or to a cache storage device. Distributing the received data can include determining a presence of a corresponding generated classification tag (from the plurality of classification tags) for the received data, and storing the received data without a corresponding generated classification tag (i.e. not generated by the file system scanner) into the storage device, and storing the received data with a corresponding generated classification tag into the storage device or the cache storage device according to the corresponding generated classification tag.
[0096] According to some aspects, the cache handler 208 (or cache engine) described herein can be additionally configured to distribute the received data to the storage device 202 or to the cache storage device 204 by using a differentiated storage service logic (DSS). The differentiated storage service logic can include assigning data requests to various classes indicated by classification tags (also referred to as hints), and applying handling policies for data according to the respective classes.
[0097] According to various aspects, the cache handler can handle I / O from a client or from a guest operating system as unclassified data with a predefined (e.g. lowest) priority. In this case, the unclassified data can be cached as long as space is available in the cache storage device or as long as the cache storage device is not completely occupied by data with higher priority. The file system scanner can send hinted I / O to the cache engine, which is handled accordingly. In case of no space at the cache storage device, the unclassified data is passed on to the storage device. The cache engine can evict data based on hinted I / O from the file system scanner.
[0098] In some aspects, based on hints generated by the file system scanner (e.g. by using a lookup table or the like), unclassified data can be reclassified and the cache engine can handle the reclassified data accordingly.
[0099] According to various aspects, file system scanner I / O requests can be prompted I / O requests. I / O from the guest (or client) can not be prompted. Upon an I / O request from the guest, the cache engine can determine whether to access the cache storage device or the storage device to fulfill the request, which is also referred to as a hit or a miss. In the case of a hit, the I / O request can be read from the cache storage device. In the case of a miss, the I / O request can be read from the storage device. According to some aspects, the file system scanner can be configured to read data from the primary storage and prompt the cache engine so that the cache engine can classify the data.
[0100] According to various aspects, unprompted I / O requests can be classified with a predefined class (e.g., same as "unclassified" can be a class with a low priority), and the cache engine can perform a hit lookup to check whether the I / O request can be fetched from the cache storage device. In the case of a miss, these unclassified I / O requests can be taken from the storage device if there is no unused space available in the cache or if the cache is full of higher priority data. Thus, unclassified data can also be cached by reading these data from the primary device and caching them with the lowest priority. The file system scanner can be used to insert data with higher priority into the cache and / or remove data with lower priority from the cache and write these data with lower priority to the primary storage (also referred to as evictions).
[0101] According to various aspects, the file system scanner can generate I / O with a prompt based on a scan of the file system. According to various aspects, the type of files to be scanned by the file system scanner can be configurable, e.g., specific file types can be scanned, files with a predefined file size can be scanned, metadata can be scanned, etc. According to various aspects, the file system scanner can scan only file system metadata, or the file system scanner can scan both file system data and file system metadata. According to various aspects, the file system scanner can scan the file system tree (e.g., read the names of the files and go deeper into the file structure), and, e.g., optionally, scan the attributes of the files. The attributes of the files can be the date of last modification, file size, file type (e.g., extension of the file), etc. As an example, a user can instruct the file system scanner to read files with a predefined file size and smaller.
[0102] According to various aspects, the corresponding cache criteria can include cache mapping, lookup, cache configuration, tag (class) configuration, and so on. According to various aspects, the cache engine can include a first cache policy for unclassified data, and a second cache policy that takes into account the cache criteria provided by the file system scanner.
[0103] According to various aspects, after scanning the file system, I / Os that carry embedded I / O classes (e.g., class tags) can be used by the cache engine. Alternatively or additionally, when servicing I / Os from guests or clients that do not have I / O hints, a class structure (e.g., a lookup table) can be used by the cache engine. The cache engine can reclassify the I / O from unclassified to a certain I / O class based on the information of the class structure in this case.
[0104] According to various aspects, in the case where no I / O class is provided, the cache engine can additionally classify the I / O by itself. The cache engine can check whether the requested data is in the cache, and if the requested data is available in the cache, return the requested data to the requester. If the requested data is not available in the cache, the cache engine can fetch the requested data from the main storage, and can try to find a place for the requested data in the cache. In this case, the cache engine can perform eviction operations (e.g., remove data with lower priority). However, in this case, only I / O classes with lower or equal priority can be evicted. If no storage space can be found in the cache, the requested I / O can be simply forwarded to the main storage. According to various aspects, based on the classification provided by the file system scanner, data with higher priority can be written to the cache that can not be evicted by the cache engine alone.
[0105] According to various aspects, if no classification can be available in the I / O, the cache engine can try to fetch data from the cache storage if they are available. Further, unclassified data can be handled with a low priority (e.g., the lowest priority), and the cache engine can apply a pass-through policy (e.g., simply fetch data from the main storage). Another possibility can be to allocate space in the cache for this I / O. However, the allocation can not remove more important I / O classes (e.g., IO classes from the file system scanner).
[0106] In the following, various examples are provided with reference to the above aspects.
[0107] Example 1 is a host computing device. The host computing device can include a host processor having a host operating system and a host kernel associated therewith, the host processor configured to host a guest operating system, to mirror a file system of the guest operating system via the host kernel, and to generate cache criteria by scanning the mirrored file system. The host computing device can further include a cache engine configured to process I / O requests based on the cache criteria generated by the host processor.
[0108] In Example 2, the subject matter of Example 1 can optionally include that the host processor is further configured to provide a virtual machine monitor, the virtual machine monitor hosting the guest operating system.
[0109] In Example 3, the subject matter of Example 2 can optionally include that the virtual machine monitor includes a file system scanner configured to scan the mirrored file system.
[0110] In Example 4, the subject matter of any one of Examples 2 or 3 can optionally include that the virtual machine monitor is configured to provide the cache engine.
[0111] In Example 5, the subject matter of any one of Examples 1 to 4 can optionally include that the host processor is configured to mirror the file system via a block device driver.
[0112] In Example 6, the subject matter of any one of Examples 1 to 5 can optionally include that the host processor is configured to mirror the file system via a file system switch that mounts the file system.
[0113] In Example 7, the subject matter of any one of Examples 1 to 6 can optionally include that the host processor is configured to mirror the file system by detecting a file system type of the file system and mounting the file system.
[0114] In Example 8, the subject matter of Example 7 can optionally include that the host processor is configured to mount the file system in read-only mode.
[0115] In Example 9, the subject matter of any one of Examples 1 to 8 can optionally include that the host computing device further includes a storage device and a cache storage device. The cache engine is configured to determine existence of a corresponding cache criteria for an I / O request from the guest operating system and to distribute the I / O request from the guest operating system to the storage device or to the cache storage device.
[0116] In Example 10, the subject matter of Example 9 can optionally include that the cache engine is configured to distribute the I / O requests from the guest operating system such that I / O requests without a corresponding cache criterion are distributed to the storage device.
[0117] In Example 11, the subject matter of any one of Examples 9 or 10 can optionally include that the cache engine is configured to distribute the I / O requests from the guest operating system such that I / O requests with a corresponding cache criterion are distributed to the storage device or to the cache storage device according to the corresponding cache criterion.
[0118] In Example 12, the subject matter of any one of Examples 1 to 8 can optionally include that the host computing device further includes a storage device and a cache storage device. The host processor is configured to provide I / O requests with corresponding cache criteria generated by the host processor to the cache engine.
[0119] In Example 13, the subject matter of Example 12 can optionally include that the cache engine is configured to at least one of allocate data into the cache storage device or evict data from the cache storage device based on cache criteria associated with the I / O requests from the host processor.
[0120] Example 14 is a method for operating a host computing device. The method can include hosting a guest operating system; mirroring a file system of the guest operating system via a host operating system having a host kernel associated therewith; generating cache criteria by scanning the mirrored file system; and processing I / O requests based on the cache criteria generated by scanning the mirrored file system.
[0121] In Example 15, the subject matter of Example 14 can optionally include that the method further includes providing a virtual machine monitor, the virtual machine monitor hosting the guest operating system.
[0122] In Example 16, the subject matter of Example 15 can optionally include that the method further includes scanning the mirrored file system via a file system scanner of the virtual machine monitor.
[0123] In Example 17, the subject matter of any one of Examples 15 or 16 can optionally include that the method further includes providing a cache engine via the virtual machine monitor.
[0124] In Example 18, the subject matter of any one of Examples 15 to 17 can optionally include that the method further includes mirroring the file system via a block device driver.
[0125] In Example 19, the subject matter of any one of Examples 15-18 can optionally include that the method further includes causing the file system to be mirrored via a file system switch that mounts the file system.
[0126] In Example 20, the subject matter of any one of Examples 15-19 can optionally include that the method further includes detecting a file system type of the file system and mounting the file system to cause the file system to be mirrored.
[0127] In Example 21, the subject matter of Example 20 can optionally include that the file system is mounted in read-only mode.
[0128] In Example 22, the subject matter of any one of Examples 15-21 can optionally include that the method further includes determining a presence of a corresponding cache criterion for an I / O request from the guest operating system and distributing the I / O request from the guest operating system to the storage device or to the cache storage device.
[0129] In Example 23, the subject matter of Example 22 can optionally include that the I / O request without the corresponding cache criterion is distributed to the storage device.
[0130] In Example 24, the subject matter of any one of Examples 22 or 23 can optionally include that the I / O request with the corresponding cache criterion is distributed to the storage device or to the cache storage device in accordance with the corresponding cache criterion.
[0131] In Example 25, the subject matter of any one of Examples 15-21 can optionally include that the method further includes generating, via the host operating system, the I / O request with the corresponding cache criterion and caching data based on the corresponding cache criterion.
[0132] Example 26 is a remote server device. The remote server device can include a remote server processor having a remote server operating system and a remote server kernel associated therewith, the remote server processor configured to cause a file system of a client operating system to be mirrored in the remote server kernel and to generate cache criteria by scanning the mirrored file system. The remote server device can further include a cache engine configured to process I / O requests based on the cache criteria generated by the remote server processor.
[0133] In Example 27, the subject matter of Example 26 can optionally include that the remote server processor is further configured to provide transmission control protocol (TCP) based communications with the client operating system.
[0134] In Example 28, the subject matter of any one of Examples 26 or 27 can optionally include that the remote server processor is further configured to provide Internet Small Computer System Interface (iSCSI) or Non-Volatile Memory Express (NVMe) over fiber-based communications with the client operating system.
[0135] In Example 29, the subject matter of any one of Examples 26-28 can optionally include that the remote server processor is configured to provide a file system scanner configured to scan the mirrored file system.
[0136] In Example 30, the subject matter of any one of Examples 26-29 can optionally include that the remote server processor is configured to provide a cache engine.
[0137] In Example 31, the subject matter of any one of Examples 26-30 can optionally include that the remote server processor is configured to cause the file system mirroring via a block device driver.
[0138] In Example 32, the subject matter of any one of Examples 26-31 can optionally include that the remote server processor is configured to cause the file system mirroring via a file system switch for mounting the file system.
[0139] In Example 33, the subject matter of any one of Examples 26-32 can optionally include that the remote server processor is configured to cause the file system mirroring by detecting a file system type of the file system and mounting the file system.
[0140] In Example 34, the subject matter of Example 33 can optionally include that the remote server processor is configured to mount the file system in read-only mode.
[0141] In Example 35, the subject matter of any one of Examples 26-34 can optionally include that the remote server device further includes a storage device and a cache storage device. The cache engine is configured to determine a presence of a corresponding cache criteria for an I / O request from the client operating system and distribute the I / O request from the client operating system to the storage device or to the cache storage device.
[0142] In Example 36, the subject matter of Example 35 can optionally include that the cache engine is configured to distribute the I / O request from the client operating system such that an I / O request without a corresponding cache criteria is distributed to the storage device.
[0143] In Example 37, the subject matter of Example 35 or 36 can optionally include that the cache engine is configured to distribute the I / O requests from the client operating system such that I / O requests having corresponding cache criteria are distributed to storage devices or to cache storage devices in accordance with the corresponding cache criteria.
[0144] In Example 38, the subject matter of any one of Examples 26-34 can optionally include that the remote server device further includes storage devices and cache storage devices. The remote server processor is configured to provide I / O requests having corresponding cache criteria generated by the host processor to the cache engine.
[0145] In Example 39, the subject matter of Example 38 can optionally include that the cache engine is configured to at least one of allocate data into cache storage devices or evict data from cache storage devices based on cache criteria associated with I / O requests from the remote server processor.
[0146] Example 40 is a method for operating a remote server device. The method can include mirroring a file system of a client operating system via a remote server operating system having a remote server kernel associated therewith; generating cache criteria by scanning the mirrored file system; and processing I / O requests based on the cache criteria generated by scanning the mirrored file system.
[0147] In Example 41, the subject matter of Example 40 can optionally include that the method further includes scanning the mirrored file system via a file system scanner of a virtual machine monitor.
[0148] In Example 42, the subject matter of any one of Examples 40 or 41 can optionally include that the method further includes mirroring the file system via a block device driver.
[0149] In Example 43, the subject matter of any one of Examples 40-42 can optionally include that the method further includes mirroring the file system via a file system switch that mounts the file system.
[0150] In Example 44, the subject matter of any one of Examples 40-43 can optionally include that the method further includes detecting a file system type of the file system and mounting the file system to mirror the file system.
[0151] In Example 45, the subject matter of Example 44 can optionally include that the file system is mounted in read-only mode.
[0152] In Example 46, the subject matter of any one of Examples 40-45 can optionally include that the method further includes determining a presence of a corresponding cache criteria for an I / O request from the client operating system, and distributing the I / O request from the client operating system to the storage device or to the cache storage device.
[0153] In Example 47, the subject matter of Example 46 can optionally include that the I / O request without a corresponding cache criteria is distributed to the storage device.
[0154] In Example 48, the subject matter of any one of Examples 46 or 47 can optionally include that the I / O request with a corresponding cache criteria is distributed to the storage device or to the cache storage device in accordance with the corresponding cache criteria.
[0155] Example 49 is a storage system. The storage system can include a storage device, a cache storage device, and a processor configured to provide a file system of the storage device to a file system scanner via a mirroring structure that mirrors the storage device, the file system scanner configured to generate a classification of data for the file system, the data of the file system provided to the file system scanner via the mirroring structure that mirrors the storage device. The storage system can further include a cache processor configured to receive a request having data associated therewith, determine a presence or an absence of a corresponding classification for the data associated with the received request based on the classification of data for the file system generated by the file system scanner, and distribute the data associated with the received request to the storage device or to the cache storage device such that data associated with the received request that is without a corresponding classification is distributed to the storage device and such that data associated with the received request that has a corresponding classification is distributed to the storage device or to the cache storage device in accordance with the corresponding classification.
[0156] In Example 50, the subject matter of Example 49 can optionally include that the mirroring structure includes a block device driver configured to mirror the storage device.
[0157] In Example 51, the subject matter of Example 50 can optionally include that the block device driver is a virtual block device driver.
[0158] In Example 52, the subject matter of any one of Examples 49-51 can optionally include that the mirroring structure includes a file system switch that mounts a file system of the storage device.
[0159] In Example 53, the subject matter of Example 52 can optionally include that the file system switch is configured as a virtual file system switch.
[0160] In Example 54, the subject matter of any one of Examples 49-53 can optionally include that the mirror structure is further configured to detect a file system type of a file system of the storage device.
[0161] In Example 55, the subject matter of any one of Examples 49-54 can optionally include that the mirror structure is further configured to mount the file system of the storage device.
[0162] In Example 56, the subject matter of Example 55 can optionally include that the mirror structure is configured to mount the file system of the storage device in read-only mode.
[0163] In Example 57, the subject matter of any one of Examples 55 or 56 can optionally include that the mirror structure is configured to mount the file system with a memory footprint limit.
[0164] In Example 58, the subject matter of any one of Examples 49-57 can optionally include that the processor is further configured to run an operating system based on an operating system kernel, and to provide the mirror structure via the operating system kernel.
[0165] In Example 59, the subject matter of any one of Examples 49-58 can optionally include that the processor is a host processor configured to operate a host operating system. The host operating system is configured to provide a virtual machine monitor that hosts a virtual machine. The virtual machine is configured to send requests to the cache processor.
[0166] In Example 60, the subject matter of Example 59 can optionally include that the virtual machine monitor includes a file system scanner.
[0167] In Example 61, the subject matter of any one of Examples 59 or 60 can optionally include that the cache processor is implemented in the virtual machine monitor.
[0168] In Example 62, the subject matter of any one of Examples 59-61 can optionally include that the mirror structure is implemented in a host kernel of the host operating system.
[0169] In Example 63, the subject matter of any one of Examples 59-62 can optionally include that the virtual machine includes a guest operating system that is based on a guest kernel that communicates with the storage device.
[0170] In Example 64, the subject matter of any one of Examples 59-63 can optionally include that the file system scanner is implemented in the virtual machine monitor.
[0171] In Example 65, the subject matter of Example 64 can optionally include that the file system scanner is configured as a background thread.
[0172] In Example 66, the subject matter of any one of Examples 49-65 can optionally include that the processor is a remote storage processor in communication with a client system external to the storage system, and the client system is configured to send requests to the cache processor.
[0173] In Example 67, the subject matter of any one of Examples 49-66 can optionally include receiving a request without classification data corresponding to distribution of data associated with the received request to storage devices or to cache storage devices, the request having data associated therewith.
[0174] In Example 68, the subject matter of any one of Examples 49-67 can optionally include that the cache processor includes a differentiated storage device (DSS) logic configured to provide a handling policy for the received request based on a classification of data for the file system.
[0175] In Example 69, the subject matter of any one of Examples 49-68 can optionally include that the classification of data for the file system includes generating one or more classification tags corresponding to data of the file system. Each classification tag defines a particular class of a plurality of classes assigned to a particular handling policy.
[0176] In Example 70, the subject matter of any one of Examples 49-69 can optionally include that the front-end application programming interface is configured to provide data of the file system to a mirror structure.
[0177] In Example 71, the subject matter of any one of Examples 49-70 can optionally include that the file system scanner is configured to generate a classification of data for the file system by reading data of the file system.
[0178] In Example 72, the subject matter of any one of Examples 49-71 can optionally include that the file system scanner is configured to update the classification of data for the file system at predefined time intervals.
[0179] Example 73 is a method for operating a storage system. The method can include providing a mirror of a file system of a storage device; generating a classification of data for the file system by reading the file system via the mirror; and receiving a request having data associated therewith; and distributing the received request to the storage device or to a cache storage device. Distributing the received request includes determining, based on the classification of data for the file system, a presence or an absence of a corresponding classification for the data associated with the received request, distributing data associated with the received request that is absent the corresponding classification to the storage device, and distributing data associated with the received request that has the corresponding classification to the storage device or to the cache storage device according to the corresponding classification.
[0180] In Example 74, the subject matter of Example 73 can optionally include that providing the mirror of the file system of the storage device includes providing a block device driver configured to cause the storage device to mirror.
[0181] In Example 75, the subject matter of any one of Examples 73 or 74 can optionally include that providing the mirror of the file system of the storage device includes providing a file system switch to mount the file system of the storage device.
[0182] In Example 76, the subject matter of any one of Examples 73-75 can optionally include that providing the mirror of the file system of the storage device further includes detecting a file system type of the file system of the storage device.
[0183] In Example 77, the subject matter of any one of Examples 73-76 can optionally include that providing the mirror of the file system of the storage device further includes mounting the file system of the storage device.
[0184] In Example 78, the subject matter of Example 77 can optionally include that mounting the file system of the storage device includes mounting the file system with a memory footprint limit.
[0185] In Example 79, the subject matter of any one of Examples 73-78 can optionally include that the method further includes operating an operating system based on an operating system kernel, and providing the mirror of the file system of the storage device via the operating system kernel.
[0186] In Example 80, the subject matter of any one of Examples 73-79 can optionally include that the method further includes operating a host operating system, providing a virtual machine monitor, and hosting a virtual machine via the virtual machine monitor, and sending the request to the cache processor via the virtual machine.
[0187] In Example 81, the subject matter of Example 80 can optionally include that hosting the virtual machine includes hosting a guest operating system based on a guest kernel, the guest kernel in communication with the storage device.
[0188] In Example 82, the subject matter of Example 81 can optionally include that generating the classification of the data for the file system is a background thread.
[0189] In Example 83, the subject matter of any one of Examples 73-82 can optionally include that the method further includes operating a remote storage server operating system in communication with the client system, and sending the request to the cache processor via the client system.
[0190] In Example 84, the subject matter of any one of Examples 73-83 can optionally include that receiving the request having data associated therewith includes receiving the request without classification data corresponding to distributing the data associated with the received request to the storage device or to the cache storage device.
[0191] In Example 85, the subject matter of any one of Examples 73-84 can optionally include that the method further includes handling the received request based on the classification of the data for the file system and a handling policy according to the classification.
[0192] In Example 86, the subject matter of any one of Examples 73-85 can optionally include that generating the classification of the data for the file system includes generating one or more classification tags corresponding to the data of the file system, and defining for each of the one or more classification tags a particular class of a plurality of classes assigned to a particular handling policy.
[0193] In Example 87, the subject matter of any one of Examples 73-86 can optionally include that the method further includes mirroring the data of the file system via a front-end application programming interface.
[0194] In Example 88, the subject matter of any one of Examples 73-87 can optionally include that the file further includes updating the classification of the data for the file system at predefined time intervals.
[0195] Example 89 is a non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform the method of any one of Examples 14-25, 40-58, and 73-88.
[0196] Example 90 is a computing system. The computing system can include a processor operating a first operating system and a kernel associated therewith, the processor configured to communicate with a second operating system, the second operating system including a file system associated therewith, a cache engine configured to receive I / O requests from the second operating system, a lookup table including cache information corresponding to the I / O requests received from the second operating system, the cache information defining cache rules for the I / O requests. The cache engine is configured to handle the I / O requests received from the second operating system in accordance with the cache rules defined by the cache information of the lookup table. The processor is configured to generate the lookup table by mounting an image of the file system of the second operating system in the kernel and scanning the mounted file system image.
[0197] In Example 91, the subject matter of Example 90 can optionally include that the cache engine is configured to distribute the I / O requests from the second operating system such that I / O requests without corresponding cache information are distributed to the storage device.
[0198] In Example 92, the subject matter of either of Examples 90 or 91 can optionally include that the cache engine is configured to distribute the I / O requests from the second operating system such that I / O requests with corresponding cache information are distributed to the storage device or to a cache storage device in accordance with the corresponding cache information.
[0199] Example 93 is a computing system. The computing system can include a processor operating a first operating system and a kernel associated therewith, the processor configured to communicate with a second operating system, the second operating system including: a file system associated therewith; a file system scanner, the file system scanner configured to generate categorized I / O requests by mounting an image of the file system of the second operating system in the kernel and scanning the mounted file system image; a cache engine, the cache engine configured to receive the categorized I / O requests from the file system scanner and perform at least one of an allocation or an eviction operation based on the categorized I / O requests received from the file system scanner.
[0200] In Example 94, the subject matter of Example 93 can optionally include that the cache engine is further configured to distribute I / O requests from the second operating system such that I / O requests with corresponding cache information are distributed to the storage device or to a cache storage device in accordance with the corresponding cache information.
[0201] While the disclosure has been particularly shown and described with reference to particular aspects, it will be understood by those skilled in the art that various changes in form and details can be made therein without departing from the spirit and scope of the disclosure as defined by the appended claims. The scope of the disclosure is thus indicated by the appended claims and all changes which come within the meaning and range of equivalents are intended to be embraced.
Claims
1. A mainframe computing device, comprising: A host processor having a host operating system and an associated host kernel, the host processor being configured to: Provides a virtual machine monitor that is configured to host a guest operating system. The host kernel is used to mirror the file system of the guest operating system. The virtual machine monitor includes a file system scanner, which is configured as follows: Perform a scan of the mirrored file system; Based on the scan of the mirrored file system, classification information is generated, which includes multiple classification labels corresponding to the data of the mirrored file system. Offers multiple category tags; as well as The cache engine is configured to: Receive I / O requests from the guest operating system; as well as The received I / O request is processed based on the presence or absence of at least one classification label corresponding to the received I / O request from a plurality of classification labels provided by the file system scanner; wherein the received I / O request is received without any of the plurality of classification labels including at least one classification label provided by the file system scanner.
2. The host computing device according to claim 1, further comprising: Storage devices and cache storage devices; The presence of at least one classification label corresponding to the received I / O request is determined; and The cache engine is configured to distribute received I / O requests to a storage device or a cache storage device based on the at least one classification label.
3. The host computing device according to claim 1, further comprising: Storage devices and cache storage devices, wherein the host processor is configured to provide received I / O requests to the cache engine when the at least one category tag is present.
4. A storage system, comprising: Storage devices; Cache storage devices; Processor, the processor being configured to: The file system of the storage device is provided to the file system scanner via a mirror structure. The mirror structure is configured as follows: Mirrored storage devices; and Provide the data from the file system to the file system scanner; The file system scanner is configured as follows: Generate classification information including multiple classification labels corresponding to the data in the file system; Provides multiple category tags; and A cache processor, wherein the cache processor is configured to: Receive requests with associated data. Determine the presence or absence of at least one classification label corresponding to the data associated with the received request from multiple classification labels provided by the file system scanner, and Distribute the data associated with the received request to storage devices or cache storage devices, so that In response to determining that no classification label corresponds to the data associated with the received request, the data associated with the received request is distributed to a storage device, and In response to determining the presence of at least one classification label corresponding to data associated with a received request, the data associated with the received request is distributed to a storage device or a cache storage device based on the at least one classification label; The received request with associated data was received without any of the multiple category labels, including at least one category label, provided by the file system scanner.
5. The storage system according to claim 4, The mirroring structure includes a block device driver configured to mirror storage devices.
6. The storage system according to claim 4, The mirror structure includes a file system switch, which mounts the file system of the storage device.
7. The storage system according to claim 4, The image structure is further configured to detect the file system type of the storage device's file system.
8. The storage system according to claim 4, The image structure is further configured to mount the file system of the storage device.
9. The storage system according to claim 4, The processor is further configured to run an operating system based on an operating system kernel, and The image structure is provided via the operating system kernel.
10. The storage system according to claim 4, The processor mentioned above is a host processor configured to operate the host operating system. The host operating system is configured to provide a virtual machine monitor, which hosts virtual machines, and The virtual machine is configured to send requests to the cache processor.
11. The storage system according to claim 4, The processor mentioned above is a remote storage processor that communicates with client systems outside the storage system. The client system is configured to send requests to the cache processor.
12. The storage system according to claim 4, The classification of data for the file system includes generating one or more classification labels corresponding to the data in the file system, where each classification label defines a specific class among multiple classes assigned to a specific disposal strategy.
13. The storage system according to claim 4, The file system scanner is configured to update the classification of data for the file system at predefined time intervals.
14. A method for operating a storage system, the method comprising: Provides a mirror of the file system of the storage device; Based on reading the file system via mirroring, classification information is generated, including multiple classification labels corresponding to the data in the file system; Offers multiple category tags; Receive requests with associated data, and Distribute the received requests to storage devices or cache storage devices, wherein distributing the received requests includes: Determine the presence or absence of at least one category label corresponding to the data associated with the received request from a plurality of category labels provided by the file system scanner. In response to determining that no classification label corresponds to the data associated with the received request, the data associated with the received request is distributed to a storage device, and In response to determining the presence of at least one classification label corresponding to data associated with a received request, the data associated with the received request is distributed to a storage device or a cache storage device based on the at least one classification label; The received requests containing associated data include: In the absence of any of the multiple category labels, including at least one category label, provided by the file system, a request with associated data is received.
15. The method of claim 14, further comprising: Operating the host operating system; Provide a virtual machine monitor and host virtual machines through the virtual machine monitor; as well as The request is sent to the cache processor via the virtual machine.
16. The method of claim 14, further comprising: The operating system of a remote storage server that communicates with client systems; as well as The client system sends a request to the cache processor.
17. An apparatus for operating a storage system, the apparatus comprising: A device for providing a mirror of the file system of a storage device; A device for generating classification information, including multiple classification labels corresponding to data in the file system, based on reading the file system via a mirror; A device for providing multiple classification labels; A means for receiving a request with associated data, and A means for distributing a received request to a storage device or a cache storage device, wherein the means for distributing the received request includes: A means for determining the presence or absence of at least one classification label corresponding to data associated with a received request from a plurality of classification labels provided by a file system scanner. Means for distributing data associated with a received request to a storage device in response to determining that at least one classification label corresponding to data associated with the received request does not exist, and A means for distributing data associated with a received request to a storage device or a cache storage device based on at least one classification label in response to determining the presence of at least one classification label corresponding to data associated with a received request. The received requests containing associated data include: In the absence of any of the multiple category labels, including at least one category label, provided by the file system, a request with associated data is received.
18. The device according to claim 17, further comprising: Devices used to operate the host operating system; A means for providing a virtual machine monitor and hosting virtual machines via the virtual machine monitor; as well as A means for sending a request to the cache processor via the virtual machine.
19. The apparatus of claim 17, further comprising: Device for operating a remote storage server operating system that communicates with client systems; as well as A means for sending a request to the cache processor via the client system.
20. A computer-readable medium storing instructions thereon, which, when executed, cause a computing device to perform the method according to any one of claims 14-16.
Citation Information
Patent Citations
Apparatus and method for maintaining a file system index
US8135763B1