Storage Tiering in a Unified Storage Environment

The method addresses the challenge of inefficient file allocation and movement in unified storage environments by using protocol-based heat count values and tiering policies to dynamically move files between storage tiers, resulting in improved storage performance and reduced resource usage.

JP7658689B2Active Publication Date: 2025-04-08INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023515578
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-09-22
Filing Date
2021-09-14
Publication Date
2025-04-08
Estimated Expiration
2041-09-14

AI Technical Summary

Technical Problem

Existing unified storage environments face challenges in efficiently allocating and moving files between storage tiers based on protocol usage and application priorities, leading to suboptimal storage tiering decisions.

Method used

The method involves determining files accessed by multiple applications using various protocols, identifying tiering policies, calculating protocol-based heat count values, and dynamically moving files between storage tiers based on these values and policies.

Benefits of technology

This approach enhances storage tiering decisions by optimizing file allocation and movement, reducing unnecessary power usage and network traffic, and improving storage performance by aligning files with appropriate storage tiers based on access protocols and application priorities.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007658689000001
    Figure 0007658689000001
  • Figure 0007658689000002
    Figure 0007658689000002
  • Figure 0007658689000003
    Figure 0007658689000003
Patent Text Reader

Abstract

A method for allocating and moving files between tiers in a unified storage environment. The method includes one or more computer processors determining a plurality of files stored in the tiered storage environment and accessed by a set of running applications. The method further includes determining that one or more files of the plurality of files are accessed using two or more protocols. The method further includes identifying a group of two or more tiering policies to be used in the tiered storage environment. The method further includes determining protocol-based heat count values ​​corresponding to the plurality of files. The method further includes storing the plurality of files between tiers of the tiered storage environment based on the identified group of two or more tiering policies and the protocol-based heat count values ​​corresponding to the plurality of files.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to the field of data storage, and more specifically to allocating and moving files between storage tiers in a unified storage environment. [Background technology]

[0002] A unified storage environment, also called a network unified storage environment, or a multi-protocol storage architecture, is a storage environment that allows files and applications to be accessed and managed from a single device. A unified storage environment allows for the simultaneous storage of file data and processing of block-based input / output (I / O) for several types of applications. A multi-protocol storage architecture (i.e., a unified storage environment) consolidates file-based and block-based access within a single storage platform, in contrast to traditional storage systems that are based on either file access or block access.

[0003] A unified storage environment can also reduce hardware requirements. Instead of separate storage platforms, such as network-attached storage (NAS) for file-based storage and RAID disk arrays for block-based storage, a unified storage environment combines both modes within a single architecture. Users of a unified storage environment can also take advantage of features such as storage snapshots, replication, tiering, encryption, compression, and data deduplication. Summary of the Invention

[0004] According to one aspect of the invention, there is a method, computer program product, or system, or combination thereof, for allocating and moving files between tiers in a unified storage environment. The method includes at least one computer processor determining a plurality of files stored in the tiered storage environment and accessed by a set of running applications. The method further includes at least one computer processor determining that one or more files of the plurality of files are accessed utilizing two or more protocols. The method further includes at least one computer processor identifying a group of two or more tiering policies utilized in the tiered storage environment. The method further includes at least one computer processor determining a protocol-based heat count value corresponding to the plurality of files. The method further includes at least one computer processor storing the plurality of files between tiers of the tiered storage environment based on the identified group of two or more tiering policies and the protocol-based heat count value corresponding to the plurality of files. [Brief description of the drawings]

[0005] [Figure 1] 1 illustrates a networked computing environment according to one embodiment of the present invention. [Figure 2A] 1 illustrates an illustrative example of allocating / moving files between storage tiers based on tiering policies and protocol-based heat count values ​​in accordance with an embodiment of the present invention. [Figure 2B] 1 illustrates an illustrative example of allocating / moving files between storage tiers based on a tiering policy and a heat count value associated with a priority or protocol or both, in accordance with an embodiment of the present invention. [Diagram 3] 4 shows a flow chart of steps of an enhanced layering program according to one embodiment of the present invention. [Figure 4] FIG. 2 is a block diagram of components of a computer according to one embodiment of the present invention. [Diagram 5] 1 illustrates a cloud computing environment, according to one embodiment of the present invention. [Figure 6] 1 illustrates abstraction model layers according to one embodiment of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0006] Embodiments of the present invention recognize that some storage environments are designed to support a particular file system protocol or data storage structure or both. Other storage environments are designed to allow a user or software application to access a pool or cluster of files via multiple protocols and data storage structures. A unified storage environment is one example of a multi-protocol storage environment or architecture. Embodiments of the present invention recognize that a unified storage environment can support both file-based access protocols, such as Server Message Block (SMB) and Network File System (NFS), and block-based access protocols, such as Fibre Channel (FC) and Internet Small Computer System Interface (iSCSI). A unified storage environment can further support object, portable operating system interface (POSIX), Hadoop Distributed File System (HDFS), and the like.

[0007] Embodiments of the present invention recognize that an index node (i.e., I-node) associated with a file or data object may store attributes and disk block locations of the file or object within the file system. File system attributes associated with a file may include metadata such as ownership information, authorization data, time-based data such as last modification time, access counts, access protocols, process IDs utilizing the file, etc.

[0008] Embodiments of the present invention recognize that storage systems and storage environments may include an information lifecycle management (ILM) system that includes policies that provide for periodic monitoring of stored files to determine the number of accesses of a file, determine an access temperature or "heat" value associated with the file, and then determine if and when the file is to be moved within the tiered storage system from one tier of the storage system to another. A file heat value may be an attribute or metadata element that provides a means for optimizing file allocation or file movement within a tiered storage system based on policies of an ILM system associated with the tiered storage environment. A heat count value is a relative attribute that indicates whether a file is "hotter" or "colder" than the access rates associated with other files within a pool of files, such as a namespace. In various scenarios, heat count-based ILM policies are utilized to determine when to move hotter files to a higher (e.g., faster) storage tier and when to move other cooler files to a lower (e.g., slower or archival) storage tier.

[0009] Embodiments of the present invention further recognize that in a clustered file system environment or namespace containing multiple files, file heat is maintained as an attribute of the file, and file heat is incremented or decremented based on the number of times the file is accessed relative to other files in the cluster or namespace with respect to a configured monitoring interval. File heat count values ​​are not protocol specific. In some cases, the heat count value corresponding to a file may be affected by accessing the file via any protocol.

[0010] An embodiment of the present invention recognizes that one protocol may impact the performance associated with accessing a file, while another protocol accessing the file may impact the overall storage performance of the system storing the file (e.g., frequent movement of blocks between storage tiers resulting in unnecessary power usage, network traffic, memory waste, etc.). Additionally, an embodiment of the present invention also recognizes that applications utilizing files may suffer from performance inconsistencies associated with moving files between storage tiers. Additionally, an embodiment of the present invention recognizes that storage tiering based on file heat is intended to optimize non-volatile storage, not memory usage. Thus, cache hits or in-memory accesses associated with a file are not included when calculating the file heat count value.

[0011] Embodiments of the present invention further recognize that the computing resources utilized by different protocols to access a file utilized by multiple applications are not a factor utilized by a unified storage environment to determine whether a file is moved between storage tiers. Additionally, embodiments of the present invention also recognize that tiering policies within a unified storage environment do not include other factors, such as whether a file is designated as mission critical or whether the file is accessed by an application (app) that is designated as a high priority when determining whether to move the file to another storage tier.

[0012] An embodiment of the present invention improves storage tiering decisions associated with files in a unified storage environment by enhancing in-memory I-node table fields, on-disk I-node tables, or metadata associated with files, or a combination thereof. The I-node table is utilized to capture processes accessing each erasure code fragment I-node, map file metadata with a protocol server process ID, and track at least a file heat count value associated with the file by protocol, which is further used to optimize the allocation or movement of files between storage tiers. In cases where the I-node metadata corresponding to a file cannot be modified to track file heat count values ​​by protocol and / or priority, another embodiment of the present invention utilizes extended file attributes associated with the file to store metadata related to protocol-based and / or priority-based heat metadata information, such as the respective heat count values.

[0013] One embodiment of the invention is utilized in connection with a unified storage environment that stores data via erasure coding. Erasure coding is a method of data protection in which data is broken into fragments, augmented with redundant data fragments, coded, and stored across a set of different locations or storage media. However, embodiments of the invention are not limited to file storage that utilizes erasure coding. Other embodiments of the invention are utilized in connection with other file storage systems, methods of replication and / or data protection, or combinations thereof.

[0014] The descriptions of various scenarios, cases, and examples related to the present invention are presented for illustrative purposes, but are not intended to be exhaustive or limited to the disclosed embodiments.

[0015] The present invention will now be described in detail with reference to the drawings. FIG. 1 is a functional block diagram illustrating a networked computing environment 100 according to an embodiment of the present invention. In one embodiment, the networked computing environment 100 includes a client 110-1, and a client 110-2 through a client 110-N, and a data processing environment 120, all of which are interconnected over a network 160. In one embodiment, the networked computing environment 100 represents a portion of a data center in a single physical location. In some embodiments, one or more elements of the networked computing environment 100 are distributed among different physical and / or geographic locations, such as a unified storage system distributed in a cloud computing environment.

[0016] Client 110-1, and clients 110-2 through 110-N, and data processing environment 120 can be personal computers, desktop computers, mainframe computers, etc. In certain embodiments, data processing environment 120 (e.g., managed environment 130 and unified storage environment 140) represent computer systems (e.g., database server computers, application server computers, etc.) that utilize clustered computers and components that function as a single pool of seamless resources when accessed through network 160, as is common in data centers with cloud computing architectures. In general, client 110-1, and clients 110-2 through 110-N, data processing environment 120, managed environment 130, and unified storage environment 140 represent any programmable electronic device, or combination of programmable electronic devices, capable of executing machine-readable program instructions and communicating over network 160. Client 110-1 and clients 110-2 through 110-N, as well as data processing environment 120, may include components as illustrated and described in further detail in conjunction with FIG. 4, in accordance with embodiments of the invention.

[0017] In some embodiments, client 110-1 and one or more of clients 110-2 through 110-N represent a computing system, a personal computing device, a mobile device such as a smart phone, an interface for hosted applications, etc. that allows a user to remotely execute one or more applications of client application 134 within data processing environment 120. In one embodiment, client 110-1 and clients 110-2 through 110-N include programs and data (not shown), such as an operating system, a web interface, communications software, client interfaces, etc., associated with each app included in client application 134.

[0018] In other embodiments, one or more of client 110-1 and client 110-2 through client 110-N may represent a hosted computing entity, such as a virtual machine (VM), container, application program interface (API), etc., within networked computing environment 100 that executes one or more of client apps 134 within data processing environment 120 without human intervention. In one example, client 110-2 may be a financial transaction processing app that interfaces with a fraud detection app (e.g., app 134-5 (not shown)) or an API that performs another function in response to an event, such as app 134-2 (not shown). For example, an Internet of Things device may activate and send an image in response to a proximity trigger.

[0019] In one embodiment, data processing environment 120 represents an enterprise data processing environment. In another embodiment, data processing environment 120 represents a cloud-based data processing environment, such as a Platform as a Service (PaaS) environment or a cloud computing system (described in further detail in connection with FIGS. 5 and 6 ), in accordance with various embodiments of the present invention. In one embodiment, data processing environment 120 includes one or more instances of managed environment 130, or one or more instances of unified storage environment 140, or a combination thereof. In various embodiments, data processing environment 120 includes compute capabilities (not shown) separate from managed environment 130 and unified storage environment 140. Managed environment 130 and unified storage environment 140 may communicate via aspects of network 160, utilizing a network (not shown) internal to data processing environment 120, or a combination thereof. In yet another embodiment, the management environment 130 or the unified storage environment 140, or both, may operate as one or more computing nodes in a cloud computing environment (described in further detail in connection with Figures 5 and 6) in accordance with various embodiments of the present invention.

[0020] In one embodiment, the management environment 130 can be a computer or set of computers utilized to manage and control various aspects of the data processing environment 120. The management environment 130 includes management control 131, service level agreements (SLAs) 132, client applications (apps) 134, application information 135, and a number of other programs and data (not shown). The other programs and data can include a system management facility (SMF), a hypervisor, virtualization software, an application orchestration system, communication software, and the like. In various embodiments, some of the programs and data in the management environment 130 are utilized to interface and / or control aspects of the unified storage environment 140, to access, update, or control files stored in the unified storage environment 140, or combinations thereof, to communicate information regarding clients (e.g., users) and applications associated with the clients, to receive data from clients for inclusion in the unified storage environment 140, and the like.

[0021] Additionally, the managed environment 130 processes remote procedure calls between entities associated with the data processing environment 120, such as RPCs initiated by client devices or entities, RPCs executed by apps in the managed environment 130 to access files or data in the unified storage environment 140. Information included in the RPC handshake can be assigned and / or collected for an app based on an ID corresponding to the app, and can be associated with one or more files called by the app. In one embodiment, the RPC handshakes associated with apps executing within the managed environment 130 and the unified storage environment 140 can also include an access protocol associated with a file, a priority value, importance information, a weighting factor associated with the protocol or priority or both, an ID of the app, and the like. In another embodiment, the RPC handshake from a client or user can further include a "nice" value associated with the executing app or a preferred storage tier required for the app, or both. In some cases, the priority associated with an app may be determined by a user, but may be constrained by a service level agreement (SLA) associated with the app, or the user of the app, or both.

[0022] The management control 131 may include metering and billing programs, management console programs, authentication and security programs, schedulers, load balancers, etc. (not shown). In one embodiment, the management control 131 controls the priority or range of priorities assigned to a running app of the APP 134 based on a service level agreement (SLA) associated with that app, as well as various other factors related to the data processing environment 120, such as the availability of computing resources or storage capacity or both in the unified storage environment 140, the set of running apps in the data processing environment 120, and the SLAs of the SLAs 132 corresponding to the set of apps of the running apps 134 in the data processing environment 120. In various embodiments, the management control 131 interfaces with various aspects of the unified storage environment 140, such as an enhanced tiering program 300.

[0023] In another embodiment, administrative control 131 utilizes information in application information 135 to determine a set or range of resources to provision or allocate to an app. In some scenarios, administrative control 131 also controls the allocation of computing and storage resources in data processing environment 120 among multiple running apps during a given time. In other scenarios, administrative control 131 allocates computing and storage resources in data processing environment 120 to client environments (not shown), such as logical partitions (LPARs), VMs, or virtual servers, or combinations thereof, as opposed to allocating resources to individual apps. In another embodiment, administrative control 131 is utilized to control aspects of unified storage environment 140, such as to create or update storage tiering policies (i.e., tiering policies) in tiering policies 145. Additionally, administrative control 131 shares information with unified storage environment 140, such as information related to app RPCs and other information related to the app included in application information 135.

[0024] In some embodiments, the management control 131 responds to dynamic changes, such as user-initiated changes to the “nice” values ​​corresponding to running apps. In various scenarios, the management control 131 assigns kernel-level or root-level priority values ​​corresponding to an app for execution based on an associated SLA, in response to which a user or client utilizes the “nice” values ​​to modify the priority assigned to the running app. In one embodiment, the “nice” values ​​refer to user-level input that affects one or more aspects of a running application. One type of “nice” value modifies the priority assigned to an app with respect to allocation of processing power or processor cores. Another type of “nice” value affects the priority of I / O activity. Based on the configuration or operating system or both of the data processing environment 120, the range of priority values ​​and user-modifiable “nice” values ​​may vary. In some cases, the “nice” values ​​may be limited to increase or decrease the priority value of an app by 15%-20%. Thus, a low priority app with a large "nice" value cannot utilize more processing power or time slices of the data processing environment 120 than another app that runs at a high priority or is associated with a high level SLA with a zero "nice" value.

[0025] Service Level Agreements (SLAs) 132 include a list of various service package offerings and associated quality of service information (QoS), metrics (e.g., details) corresponding to each SLA, or end user agreement (EUA) information, or a combination thereof. SLAs can include a list of services offered, performance levels (e.g., reliability and responsiveness), monitoring processes, problem / issue reporting provisions, response time provisions, decomposition timeframe metrics, range of execution priorities that can be assigned, quality or availability of computing resources, constraints on storage tiering, and the like. In one embodiment, a low-level SLA can specify that the priority assigned to an app / client may be lowered to improve the performance of another app / client with a high-level SLA. In another embodiment, SLA 132 can include provisions associated with "nice" values ​​that limit the range of "nice" values ​​that a user or client can apply to a running app or the impact of the "nice" value on the priority value assigned to the running app. In another embodiment, a low-level SLA may limit tier-based file allocation or file movement to tiers 2 through 5 in a five-tier storage system, while a high-level SLA may bias the set of tiering policy values ​​toward one or more higher performing tiers.

[0026] In one embodiment, SLA 132 may include an SLA specific to a given client, such as client 110-1, or a group of general SLAs each associated with a client, such as gold, silver, and bronze level SLAs, or both. In some embodiments, apps for each client or group of clients may be associated with different SLAs, e.g., internal business apps may be governed by a first SLA, consumer facing web apps may be governed by a second SLA, and apps designated as mission critical may be governed by a third SLA. Alternatively, a client may have various apps or services covered by different levels of a multi-level SLA. Additionally, an SLA may define an importance value or range of importance values ​​that a user may assign to an importance designation.

[0027] Client app 134 includes multiple software and applications represented by app 134-1 through app 134-N of a user, a business, an enterprise, etc. In various embodiments, one or more apps in client app 134 are initiated by an entity external to client device or data processing environment 120, such as client 110-1 and client 110-N.

[0028] Application information 135 may include a database or other data storage structure (not shown) containing data and information regarding apps hosted by data processing environment 120 and associated with each of the clients utilizing data processing environment 120, such as client 110-2 and client 110-N. In one embodiment, application information 135 includes a list of files called or utilized by each of client apps 134, configuration information corresponding to the client or app or both, such as computing resources allocated to the app or provisioned to the environment associated with running the app, SLAs associated with each app, etc. Some information in application information 135 related to the app is passed via an RPC handshake between elements within networked computing environment 100, such as a priority value, an ID of the app, file access protocol, etc. Application information 135 may also include a historical priority, a "nice" value from a previous run of the app, some RPC information, etc.

[0029] In another embodiment, application information 135 also includes information about the app, such as a preferred initial location for files accessed by the app, an importance value assigned to the app, importance rules in addition to SLA considerations. For example, one client may designate an app as highly important (importance value=75), while a second client may designate the same app as mission critical (importance value=90) and run it with high priority. In some embodiments, application information 135 includes dynamic information or data assigned by administrative control 131, such as the execution priority or priority range assigned to the app, administrative information about the running app, dynamic information entered by a client / user, a process ID corresponding to the app, changes by a user or client to a "nice" value assigned to a running app, etc.

[0030] In one embodiment, unified storage environment 140 includes file system 141, information lifecycle management (ILM) system 142, and tiered storage system 150. Unified storage environment 140 may also include a number of other programs or data (not shown), such as one or more operating systems, virtualization software, communication programs, resource management systems, etc. In one embodiment, certain aspects of unified storage environment 140 are controlled by management environment 130, such as the computing and storage resources allocated to running apps, tiering policy constraints associated with client or app SLAs, etc.

[0031] In some embodiments, data processing environment 120 defines rules, criteria, and various orders, such as analytical orders between access protocols, app priority values, SLAs, or app importance values, and defines algorithms and / or values ​​for ILM system 142 and associated tiering policies. In some scenarios, an administrator of data processing environment 120 defines some of the rules, criteria, and various orders, algorithms, and values, etc., used in elements associated with ILM system 142. In other scenarios, a user or an SLA corresponding to a user's app allows a user to modify some of the rules, criteria, orders, algorithms, and values, etc., used in unified storage environment 140. For example, a user with an SLA associated with an app designated as mission critical can modify analytical orders between access protocols by identifying one or more access protocols used by the mission critical app in application information 135, and / or modify values, such as weighting factors, in algorithms associated with priority-based tiering policies of ILM system 142.

[0032] In one embodiment, the file system 141 supports a set of protocols that are used to access (e.g., create, read, write, delete, etc.) files stored in the tiered storage system 150 based on information and / or instructions received from the management environment 130. For example, the file system 141 supports SMB, NFA, object, POSIX, and HDFS protocols. In another embodiment, the file system 141 further supports an inode structure, extended data attributes, metadata tracking and modification, block and file structures, and the like. The file system 141 may further include file clustering and namespace management capabilities. The file system 141 utilizes information obtained from the management environment 130 to determine an initial or preferred tier assignment for files in the tiered storage system 150. In various embodiments, file system 141 further includes software and algorithms utilized to store files in various formats or data structures, such as the Reed-Solomon algorithm for erasure coding of data, as well as other fault-tolerant storage methods and mechanisms, such as Redundant Array of Independent Disks (RAID) storage.

[0033] In some embodiments, file system 141 further includes a file monitor program and daemon (not shown) that tracks access counts of files between persistent and volatile storage elements, such as persistent storage included in tiered storage system 150 and in-memory storage and / or caches included in data processing environment 120 (not shown). File system 141 further includes a heat mapping program (not shown) that is utilized to determine access counts of files over a configurable monitoring time (e.g., a window of time) and based on various file clusters and / or namespaces. In some scenarios, file system 141 updates metadata (i.e., information) in metadata 144 that corresponds to files stored in tiered storage system 150, such as the access protocol utilized, the heat count values ​​associated with the access protocols, and information included in the RPC handshake and / or RPC. In further embodiments, the determined heat count values ​​corresponding to the files may be modified by one or more factors to generate an effective heat count value. One example of a valid heat count value is a priority-based heat count, which is described in further detail with respect to FIG. 2b.

[0034] In one embodiment, ILM system 142 includes file list 143, file metadata 144, tiering policy 145, enhanced tiering program 300, and other programs and data (not shown). In various embodiments, ILM system 142 retrieves information and data from various aspects of unified storage environment 140, file system 141, to determine access count and / or file heat count values ​​associated with each of a number of files stored in tiered storage system 150 and identified in file list 143, and further associated with a protocol utilized to access the file or a priority of an app accessing the file, or both. ILM system 142 updates instances of file metadata 144 corresponding to the files with the retrieved information and data associated with the files.

[0035] In some embodiments, ILM system 142 further includes a set of algorithms (not shown) that revise or determine (e.g., calculate) a set of heat count values ​​corresponding to a group of storage tiers associated with a tiering policy in tiering policy 145 based on the number of storage tiers in tiered storage system 150, the number of protocols utilized to access the shares, and one or more other factors. In one embodiment, the algorithms in ILM system 142 may determine a set of cumulative (e.g., summed, aggregate) heat count values ​​and / or a set of effective heat count values ​​associated with the tiers of the tiering policy based on one or more factors such as the number of concurrently running apps accessing a common file, a value associated with the protocol, a range of priorities of the running apps, etc. In another embodiment, other algorithms in ILM system 142 utilize the priority information and other factors to determine effective heat count values ​​corresponding to files, such as priority-based heat counts (PBHC). In another embodiment, the ILM system 142 may upgrade (e.g., improve) the storage tier allocation of a shared file by analyzing the heat count values ​​corresponding to the file at the next tiering policy in a tiering policy ordering group, but may not allow (e.g., not allow, prevent) the allocation of a shared (e.g., common) file to be downgraded based on a lower tier policy.

[0036] In one embodiment, file list 143 represents a list of files used or accessed by multiple apps, such as app 134-1 through app 134-N, executing within data processing environment 120. In one embodiment, file list 143 further includes file metadata 144. In some embodiments, file list 143 tracks a tier location corresponding to a file prior to access, a tier location determined based on one or more factors including a file heat count value, and a storage tier assigned in response to cessation of access (e.g., an app utilizing a file termination).

[0037] File metadata 144 includes multiple instances of metadata corresponding to files (not shown) in file list 143. In one embodiment, an instance of metadata 144 corresponding to a file includes information identifying one or more process IDs using the file, a file access count, a file access protocol (e.g., SMB, NSF, object, POSIX, HDFS, etc.), and the like. In some embodiments, an instance of file metadata 144 corresponding to a file is included in an I-node map corresponding to the file. In other embodiments, an instance of file metadata 144 corresponding to a file is included in extended attributes corresponding to the file or in extended attributes of an I-node map corresponding to the file. In various embodiments, file system 141 updates the metadata associated with each file, such as adding a new access protocol in the extended attributes and / or modifying the heat count value based on a different configuration for a given protocol.

[0038] In one embodiment, tiering policy 145 includes multiple policies that define (e.g., determine) a storage tier within the tiered storage system to which a file is assigned or moved based on one or more criteria, such as a set of protocol-based heat count values, a set of priority-based heat count values, an analytical hierarchy among a group of tiering policies (described in further detail in connection with FIGS. 2A and 2B ), etc. In various embodiments, the number of tiers within a set of policies of tiering policy 145 utilized by enhanced tiering program 300 is based on the configuration of tiered storage system 150.

[0039] Tiered storage system 150 is an architecture based on groups of two or more types of storage media. Tiered storage system 150 is divided into groups of tiers based on heat designations assigned to the tiers. For example, an instance of tiered storage system 150 may include three groups of tiers, each associated with a file access temperature designation, such as a "hot" tier of solid state disk drives (SSDs), a "warm" tier of hard disk drives, and a "cool" tier of archival storage media such as magnetic tape. In some embodiments, tiered storage system 150 includes more than three groups of tiers or sub-tiers, or both. In one embodiment, tiered storage system 150 may further include sub-tiers within the HDD tier based on HDD capacity or speed, or both, such as 5.4K rpm HDDs, 7.2K rpm HDDs, and 15K rpm HDDs. Similarly, a "hot" SSD tier may include one sub-tier of SSDs designated for storing files associated with high write speeds and another sub-tier of SSDs designated for storing files associated with a high percentage of read accesses. In another embodiment, above the SSD tier, tiered storage system 150 may include one or more tiers based on other types of storage media, such as an in-memory tier utilizing volatile memory (e.g., dynamic random access memory (DRAM)), or a tier based on storage class memory (SCM), or both.

[0040] In some embodiments, each tier of tiered storage system 150 is further organized or subdivided based on file clustering, or namespaces, where groups of files can be logically separated but stored among the same storage media (e.g., storage devices of the tier), or both.

[0041] The enhanced tiering program 300 is a program that determines a storage tier for a file within the unified storage environment 140 based on heat count values ​​associated with various criteria, such as protocol-based heat count values, priority-based heat count values, and an analysis hierarchy among the tiering policies. In one embodiment, the enhanced tiering program 300 utilizes information in a set of metadata (e.g., an instance of file metadata 144) associated with each file and one or more of the tiering policies 145 to determine whether to move a file between tiers of the tiered storage system 150. Additionally, the enhanced tiering program 300 can respond to changes between tiering policies as the number of running apps that utilize the file changes. In some embodiments, the enhanced tiering program 300 utilizes an analysis hierarchy among the tiering policies to determine whether a file is moved between tiers of the tiered storage system 150 in response to determining that one or more conditions are met, such as a difference between heat count values ​​corresponding to files with different access protocols.

[0042] In various embodiments, the enhanced tiering program 300 determines whether file movement between tiers of the tiered storage system 150 is protocol-based or priority-based by analyzing information associated with a set of two or more concurrently executing apps that access a common (e.g., the same) file. In some scenarios, in response to determining that file movement between tiers is priority-based, the enhanced tiering program 300 determines a respective priority-based weighting factor for each concurrently executing app. The respective weighting factor is applied to a heat count value corresponding to the file accessed by the app. In other scenarios, the enhanced tiering program 300 determines file movement between tiers of the tiered storage system 150 based on a combination of factors associated with the concurrently executing apps that access the set of files based on another weighting factor that is applied to a heat count value corresponding to each utilized access protocol, and a tiering policy that is protocol-based in addition to priority.

[0043] In one embodiment, client 110-1 and clients 110-2 through 110-N communicate to data processing environment 120 through network 160. Network 160 may be, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, a telecommunications network (e.g., a portion of a cellular network), a wireless local area network (WLAN) such as an intranet, or any combination of the above, and may include wired, wireless, or fiber optic connections. In general, network 160 may be any combination of connections and protocols that support communication between client 100-1 and clients 110-2 through 110-N and data processing environment 120, in accordance with embodiments of the present invention. In some embodiments, network 160 further provides communication between portions of data processing environment 120, such as managed environment 130 and unified storage environment 140. In various embodiments, network 160 operates locally over wired, wireless, or optical connections and can be any combination of connections and protocols (e.g., personal area network, near field communications (NFC), laser, infrared, ultrasonic, etc.).

[0044] 2A is an illustrative example of moving and / or allocating files between storage tiers based on protocol, file heat count, and tiering policy, according to an embodiment of the present invention. In one embodiment, FIG. 2A shows that unified storage environment 140 includes three protocol-based heat count tiering policies, policy 145A, policy 145B, and policy 145C, in tiering policy 145, and a three-tiered (e.g., tier 1, tier 2, and tier 3) instance of tiered storage system 150.

[0045] In the exemplary embodiment of FIG. 2A, unified storage environment 140 illustrates an analysis hierarchy among three tiering policies. In the exemplary embodiment, policy 145A is a tiering policy based on protocol #2 and is executed first to analyze the heat count values ​​corresponding to the file. Policy 145B is a multi-protocol tiering policy and is executed second to analyze the heat count values ​​corresponding to the file. Policy 145C is a tiering policy based on protocol #1 and is executed last to analyze the heat count values ​​corresponding to the file. In some embodiments, the analysis hierarchy among the tiering policies is based on information contained in application information 135, SLA 132, or ILM system 142, or a combination thereof. Additionally, various aspects of ILM system 142 are utilized to calculate a set of heat count values ​​for one or more policies that define a storage tier to which a file is assigned or to which a file is to receive a moved file.

[0046] The exemplary embodiment of FIG. 2A further illustrates unified storage environment 140 storing file 201 (no fill), file 202 (cross hatch fill), file 203 (speckle fill), and file 204 (diagonal hash fill) among tiers of tiered storage system 150. Additionally, file 201, file 202, and file 204 are accessed by one or more apps, such as app 134-1 utilizing protocol #1. File 201, file 202, and file 203 are accessed by another one or more apps, such as app 134-4 (not shown) utilizing protocol #2. Continuing with this example, during the monitoring period, file system 141 determines heat count values ​​that correspond to the indicated files and are respectively associated with the protocols utilized to access the files. For example, file 201 is shown having a heat count value=50 for protocol #1 and a heat count value=35 for protocol #2.

[0047] As described above with respect to ILM system 142, one or more algorithms included in ILM system 142 and information associated with at least one of the two running apps that access file 201, file 202, file 203, or file 204, or both, are utilized to determine (e.g., calculate) a set of heats (i.e., heat count values) associated with at least policy 145B.

[0048] In an exemplary embodiment, policy 145A specifies that file 201 is assigned (e.g., stored or moved) to tier 2 based on protocol #2 heat = 35, file 202 is assigned to tier 2 based on protocol #2 heat = 17, and file 203 is assigned to tier 3 based on protocol #2 heat = 9. File 204 is not assigned to a tier based on policy 145A because file 204 is not accessed using protocol #2.

[0049] Policy 145B then specifies that file 201 is upgraded to Tier 1 based on the sum of the respective heats for Protocol #1 and Protocol #2 (cumulative heat=85), and that file 202 (cumulative heat=22) remains assigned to Tier 2. Neither file 203 nor file 204 is affected by policy 145B, and each file is accessed using a single protocol.

[0050] Policy 145C then indicates that file 201 should be assigned to tier 2, protocol #1 heat=50. Policy 145C further indicates that file 202 should be assigned to tier 3, protocol #1 heat=5. However, in one embodiment, ILM system 142 prevents downgrading of tier assignments for files during the same monitor time, so file 201 remains assigned to tier 1 and file 202 remains assigned to tier 2. Policy 145C indicates that file 204 is assigned to tier 2, protocol #1 heat=20. File 203 is not affected by policy 145C and remains assigned to tier 3, and file 203 is not accessed using protocol #1.

[0051] FIG. 2B is an exemplary example of moving and / or allocating files between storage tiers based at least on application priority, file heat, and tiering policy, and an exemplary priority-based heat algorithm, in accordance with an embodiment of the present invention.

[0052] In another exemplary embodiment, FIG. 2B illustrates unified storage environment 140 including two priority-based heat count tiering policies in tiering policy 145 and three tier (e.g., tier 1, tier 2, and tier 3) instances of tiered storage system 150. In one embodiment, policy 145D is based on a set of priority-modified heat count values ​​associated with a single protocol (e.g., unspecified protocol), and policy 145E is based on heat values ​​associated with two protocols. In the current example, policies 145D and 145E are not shown based on an analytical hierarchy. The example example of FIG. 2B further illustrates unified storage environment 140 as storing file 201 (no fill), file 202 (cross hatch fill), file 203 (speckle fill), and file 204 (diagonal hash fill) among the tiers of tiered storage system 150. Additionally, the current example example includes algorithm 142A.

[0053] In the illustrated embodiment of FIG. 2B, algorithm 142A represents a generalized algorithm utilized to determine a priority-based effective heat count value, such as a PBHC, corresponding to a depicted file. For example, file 201 has a file heat=50 associated with respective APP 134-1 and a corresponding PBHC-1=20. In an exemplary embodiment, algorithm 142A determines the PBHC by modifying the heat value corresponding to the file and associated with each app by utilizing another value determined by a function utilizing multiple inputs, such as a priority (Pr) corresponding to the app, a "nice" value (NV) associated with the app, and a weighting factor (WF). The WF associated with algorithm 142A is based on another function utilizing an importance value of the app and a value related to a protocol utilized by the app to access the file. A given instance of algorithm 142A may have been created by an administrator, a client, or a user, or both, of data processing environment 120. Each instance of algorithm 142A or another algorithm in ILM system 142 may be tuned for a particular instance of unified storage environment 140, a namespace within an instance of unified storage environment 140, a set of users, etc.

[0054] In the exemplary embodiment of FIG. 2B, APP 134-1 and APP 134-N access file 201 and file 202. File 203 is accessed only by APP 134-N, and file 204 is accessed only by APP 134-1. Additionally, in the exemplary embodiment, APP 134-1 and APP 134-N access files in unified storage environment 140 based on different protocols (not shown). Each indicated file includes a heat value corresponding to at least one app. Additionally, each indicated file is associated with one or more respective priority-based heat counts (PBHC), such as PBHC-1 and PBHC-N, each associated with the app, that are calculated utilizing an instance of algorithm 142A and various factors / inputs (not shown). In one embodiment, a PBHC value=0 indicates that the app did not access the file via a given protocol.

[0055] In the illustrated example, if the priority associated with the app were not a factor, policy 145E would assign file 201 to tier 2 (total file heat = 80). However, based on utilizing algorithm 142A, file 201 is assigned to tier 1 (cumulative PBHC = 83). Similarly, without a factor in priority, policy 145E would assign file 202 to tier 3 (total file heat = 15). However, based on utilizing algorithm 142A, file 202 is assigned to tier 2 (cumulative PBHC = 23).

[0056] With respect to files 203 and 204, policy 145D is implemented. Without a factor in priority, policy 145D would assign file 203 to tier 3 based on heat=8. However, utilizing algorithm 142A determines that the respective PBHC-N=17 for file 203 dictates that file 203 be assigned to tier 2. Similarly, without a factor in priority, policy 145D would assign file 203 to tier 3 based on heat=20. However, utilizing algorithm 142A, policy 145D determines that the respective PBHC-N=8 for file 203 dictates that file 203 be assigned to tier 3.

[0057] 3 is a flowchart illustrating operational steps of an enhanced tiering program 300 according to an embodiment of the present invention, which is a program that determines a storage tier in which to store an assigned file or receive a moved file based at least in part on a heat count value associated with a file access protocol or priority or both corresponding to a running client application (app), respectively. In various embodiments, the enhanced tiering program 300 re-executes one or more steps in response to the management environment 130 communicating information related to a change associated with a set of concurrently running apps, such as another app starting execution, a current app terminating, or a user initiating a change to a "nice" value associated with a running app. In some scenarios, the enhanced tiering program 300 executes continuously as a function of the ILM system. In other scenarios, the enhanced tiering program 300 executes periodically in response to the file system 141 determining that the access rate of one or more files changes beyond a threshold amount.

[0058] In step 302, the enhanced tiering program 300 identifies metrics associated with each app among the set of running applications. In one embodiment, the enhanced tiering program 300 identifies metrics associated with each app among the set of apps running simultaneously in the data processing environment 120 based on information included in the application information 135 and the SLAs in the SLAs 132 associated with the apps. The metrics associated with the apps may include priority information, importance values, rules identifying an analytical hierarchy among access protocols associated with files accessed by two or more apps, weighting factors for the protocols or importance values, or both, and the like. The enhanced tiering program 300 may further determine changes associated with the set of metrics for a running app based on input received from a user or client utilizing the running app, such as modifying the “nice” value of the running app. In various embodiments, the enhanced tiering program 300 defines a set of concurrently executing apps as two or more apps that are active within the data processing environment 120 and that intermittently access one or more files within the unified storage environment 140, or as the apps that execute during one or more monitor periods utilized to determine respective heat values ​​for files within the unified storage environment 140.

[0059] In step 304, the enhanced tiering program 300 determines a number of files accessed by the set of running applications. In one embodiment, the enhanced tiering program 300 determines a number of files accessed by the set of running applications based on information included in the file list 143. In another embodiment, the enhanced tiering program 300 determines a number of files accessed by the set of running apps based on information included in the application information 135 and the RPCs associated with the managed environment 130 and the apps. In some embodiments, the enhanced tiering program 300 further determines a respective protocol that each app in the set of running apps utilizes to access files from among the determined number of files.

[0060] In step 306, the enhanced tiering program 300 identifies policies associated with moving files within the tiered storage system. In one embodiment, the enhanced tiering program 300 identifies information associated with policies related to allocating and moving files within the tiered storage system based on information obtained from one or more sources, such as RPC metadata, application information 135, or SLA 132, or a combination thereof. In one example, if the enhanced tiering program 300 determines that a single app accesses the file, the enhanced tiering program 300 may determine a policy in tiering policies 145 to be utilized to allocate or move the file within the tiered storage system 150 based on information associated with that app in application information 135. In some embodiments, the enhanced tiering program 300 determines that two or more apps use the file. In response, the enhanced tiering program 300 accesses application information 135, SLA 132, or ILM system 142, or a combination thereof, to determine whether an app or group of apps dictates the type or analysis hierarchy, or both, among the tiering policies utilized by the set of running apps.

[0061] In some scenarios, the enhanced tiering program 300 determines that an app with a highest SLA is to be prioritized with respect to selecting among the tiering policies of the tiering policies 145 with respect to allocating or moving files within the tiered storage system 150. For example, the enhanced tiering program 300 determines that the highest SLA dictates a number of aspects between the tiering policies, such as a protocol-based heat count tiering policy, an analysis ranking between a group of protocol-based heat count tiering policies, and determining that a set of heat count values ​​for a multi-protocol tiering policy is based at least on a number of concurrent apps accessing the same file. In other scenarios, the enhanced tiering program 300 determines that an app with a highest importance value is to be prioritized with respect to selecting among the priority-based tiering policies of the tiering policies 145 and determining whether an analysis ranking is established in response to determining that two or more tiering policies are to be selected. In further embodiments, the enhanced tiering program 300 modifies (e.g., biases) the set of heat count values ​​associated with one or more tiering policies based on various factors, such as the SLA associated with the app, the priority assigned to the app, the importance value of the app, the number of apps running simultaneously, etc.

[0062] In step 308, the enhanced tiering program 300 determines an access count corresponding to the file. In one embodiment, the enhanced tiering program 300 determines an access count corresponding to the file for each protocol based on information received from the file system 141. The enhanced tiering program 300 then utilizes information associated with the tiered storage system 150 and a heat mapping program of the file system 141 to determine a heat count value corresponding to the file for each protocol and stores the determined heat count value corresponding to the file in the file metadata 144. In some embodiments, the enhanced tiering program 300 stores the determined heat count value in another location (not shown) within the unified storage environment 140. In one embodiment, the enhanced tiering program 300 utilizes information associated with the ILM system 142 to determine a monitoring time (e.g., a window of time) that the file system 141 sets to determine a heat count value corresponding to the file. In another embodiment, the enhanced tiering program 300 determines other access count information corresponding to a file based on metadata associated with the accessed file, such as identifying cache hits and in-memory accesses of the file, in addition to the accesses processed by the file system 141.

[0063] At decision step 309, the enhanced tiering program 300 determines whether storage tiering is based on application priority. In one embodiment, the enhanced tiering program 300 determines that storage tiering for files associated with an app is based on application priority by analyzing information associated with the app, such as information in application information 135, an SLA associated with the app, or an SLA associated with a client (i.e., user) running the app, or a combination thereof. In some embodiments, the enhanced tiering program 300 determines (at step 306) that storage tiering for files utilized by multiple apps is based on application priority by analyzing priority information associated with multiple apps. In other embodiments, the enhanced tiering program 300 determines that storage tiering for files associated with one or more apps is based on file access protocol rather than application priority by analyzing information associated with the app, such as information in application information 135, an SLA associated with the app, or an SLA associated with a client (i.e., user) running the app, or a combination thereof.

[0064] In response to determining that storage tiering is not based on application priority (No branch, decision step 309), the enhanced tiering program 300 determines a protocol-based heat count value for the file (step 310).

[0065] In step 310, the enhanced tiering program 300 determines a protocol-based heat count value for the file. In one embodiment, the enhanced tiering program 300 determines a protocol-based heat count value corresponding to the file based on looking up a protocol-based heat count value corresponding to the file in the file metadata 144. In various embodiments, the enhanced tiering program 300 determines a protocol-based heat count value corresponding to the file based on each protocol utilized to access the file. In some embodiments, the enhanced tiering program 300 further determines a cumulative (e.g., sum-based or aggregate) protocol-based heat count value corresponding to a file accessed by two or more apps. In yet another embodiment, the enhanced tiering program 300 determines a cumulative protocol-based heat count value corresponding to a file corresponding to a combination of access protocols.

[0066] With reference to decision step 309, in response to a determination that storage tiering is based on application priority (yes branch, decision step 309), the enhanced tiering program 300 determines an application priority-based heat count value for the file (step 311).

[0067] In step 311, the enhanced tiering program 300 determines an application priority-based heat count value for the file. In various embodiments, the enhanced tiering program 300 determines an application priority-based heat count value for the file, such as at least the PBHC associated with the file and the apps that access the file, based on previously determined information and one or more algorithms included in the ILM system 142 (previously discussed in connection with FIG. 2b). In some embodiments, the enhanced tiering program 300 further determines a cumulative priority-based heat count value corresponding to a file accessed by two or more apps. In yet another embodiment, once the enhanced tiering program 300 determines that the set of priority-based tiering policies determines storage tiers based on factors of three protocols and various combinations of the three protocols in addition to heat count values, the enhanced tiering program 300 then correlates the determined heat count values ​​with respect to various groupings or orderings of factors, such as protocols 1-3, protocol combination A, protocol combination B, and apps, as opposed to one protocol and each app.

[0068] At step 312, the enhanced tiering program 300 determines a storage tier for the file. In one embodiment, the enhanced tiering program 300 assigns the file to a storage tier based on information in the application information 135. In another embodiment, the enhanced tiering program 300 determines the storage tier assignment for the file based on comparing the protocol-based heat value determined at step 310 to a set of heat count values ​​respectively associated with one or more protocol-based tiering policies identified at step 306. In some embodiments, the enhanced tiering program 300 determines the storage tier assignment for the file based on an analysis of a heat value or cumulative heat value corresponding to the file and a set of heat count values ​​respectively associated with two or more protocol-based tiering policies and an analytical hierarchy between the two or more protocol-based tiering policies identified at step 306, as previously discussed in connection with FIG. 2A.

[0069] In another embodiment, the enhanced tiering program 300 determines a storage tier assignment for the file based on an analysis of the effective heat value or cumulative effective heat value corresponding to the file determined in step 311 and a respective set of one or more priority-based tiering policies and heat count values ​​included in tiering policies 145 (previously discussed in connection with FIG. 2B ) associated with one or more apps in the set of running apps. In yet another embodiment, in response to determining that the storage tier assignment is based on importance in addition to priority, the enhanced tiering program 300 utilizes the other priority-based tiering policies identified in step 306 to determine a storage tier assignment for the file.

[0070] At step 314, the enhanced tiering program 300 moves the file within the tiered storage system. In one embodiment, the enhanced tiering program 300 moves the file within the tiered storage system 150 based on the tier determined for the file at step 312. In another embodiment, the enhanced tiering program 300 determines that the file's current storage tier assignment within the tiered storage system 150 corresponds to the tier determined for the file at step 312. In response, the enhanced tiering program 300 does not move the file. In some embodiments, the enhanced tiering program 300 updates an instance of file metadata 144 corresponding to the file, or application information 135 corresponding to an app accessing the file, or both, to indicate an initial storage tier assignment for the file after a period of inactivity (i.e., inactivity) associated with the file.

[0071] 4 illustrates a computer system 400 representing a client 110-1, a client 110-2 through a client 110-N, a data processing environment 120, a management environment 130, and a unified storage environment 140. The computer system 400 is an example of a system that includes software and data 412. The computer system 400 includes a processor 401, a cache 403, a memory 402, a persistent storage 405, a communication unit 407, an input / output (I / O) interface 406, and a communication fabric 404. The communication fabric 404 provides communication between the cache 403, the memory 402, the persistent storage 405, the communication unit 407, and the input / output (I / O) interface 406. The communication fabric 404 can be implemented with any architecture designed to transmit data and / or control information between a processor (e.g., a microprocessor, a communication and network processor, etc.), a system memory, peripherals, and any other hardware components in the system. For example, the communications firmware 04 may be implemented in one or more buses or crossbar switches.

[0072] Memory 402 and persistent storage 405 are computer-readable storage media. In this embodiment, memory 402 includes random access memory (RAM). In general, memory 402 may include any suitable volatile or non-volatile computer-readable storage medium. Cache 403 is a high-speed memory that enhances the performance of processor 401 by holding recently accessed and near recently accessed data from memory 402.

[0073] Program instructions and data used to implement embodiments of the present invention may be stored in persistent storage 405 and memory 402 for execution by one or more of the respective processors 401 via cache 403. In one embodiment, persistent storage 405 includes a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive, persistent storage 405 may include a solid state hard drive, a semiconductor storage device, a read only memory (ROM), an erasable programmable read only memory (EPROM), a flash memory, or any other computer readable storage medium capable of storing program instructions or digital information. In some embodiments, various elements of persistent storage 405 or memory 402, or both, may also be assigned to storage tiers within tiered storage system 150, such as non-volatile storage classes, memory (SCM), in-memory storage, and other types of storage media as described above.

[0074] The media used by persistent storage 405 may also be removable. For example, a removable hard drive may be used for persistent storage 405. Other examples include optical and magnetic disks, thumb drives, and smart cards inserted into the drive for transfer to another computer readable storage medium that is also part of persistent storage 405. Software and data 412 is stored in persistent storage 405 for access and / or execution by one or more of the respective processors 401 via one or more memories of cache 403 and memory 402. For a managed environment, software and data 412 includes management controls 131, service level agreements 132, client applications 134, and other programs and data (not shown). With respect to a unified storage environment, software and data 412 includes file system 141, ILM system 142, file list 143, file metadata 144, tiering policy 145, enhanced tiering program 300, and other programs and data (not shown).

[0075] Communications unit 407 provides for communication with other data processing systems or devices, including, in these examples, resources of client 110-1, client 110-2 through client 110-N, data processing environment 120, management environment 130, and unified storage environment 140. In these examples, communications unit 407 includes one or more network interface cards. Communications unit 407 provides for communication using physical and / or wireless communication links. Program instructions and data used to implement embodiments of the present invention may be downloaded to persistent storage 405 through communications unit 407.

[0076] The I / O interface 406 allows for the input and output of data to and from other devices that may be connected to each computer system. For example, the I / O interface 406 may provide a connection to external devices 408, such as a keyboard, a keypad, a touch screen, or any other suitable input device, or a combination thereof. The external devices 408 may also include portable computer-readable storage media, such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. Program instructions and data used to implement embodiments of the present invention may be stored on such portable computer-readable storage media and loaded into the persistent storage 405 via the I / O interface 406. The I / O interface 406 also connects to a display 409.

[0077] Display 409 provides a mechanism for displaying data to a user and may be, for example, a computer monitor. Display 409 may also function as a touch screen, such as the display of a tablet computer or smartphone. Alternatively, Disney 09 may display information to a user based on projection techniques, such as a virtual retinal display, a virtual display, or an image projector.

[0078] Although this disclosure includes detailed descriptions of cloud computing, it is understood that implementation of the teachings detailed herein is not limited to a cloud computing environment. Rather, embodiments of the disclosed technology may be implemented in conjunction with any other type of computing environment now known or later developed.

[0079] Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with a service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0080] Its features are as follows.

[0081] On-Demand Self-Service: Cloud consumers can automatically and unilaterally provision computing capacity, such as server time and network storage, as they need it, without the need for human interaction with the provider of the service. Pervasive Network Access: Functionality is available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (eg, cell phones, laptops, and PDAs).

[0082] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated on demand. Consumers are location independent in that they generally have no control or knowledge of the exact location of the resources provided to them, although they may be able to specify a location at a higher level of abstraction (e.g., country, state, or data center).

[0083] Rapid Elasticity: Capabilities can be rapidly provisioned and rapidly scaled out, and rapidly released and rapidly scaled in, rapidly and elastically, sometimes automatically. To the consumer, the capabilities available for provisioning often appear unlimited, and can be purchased in any quantity at any time.

[0084] Metered Services: Cloud systems automatically control and optimize resource usage by using metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being utilized.

[0085] The service model is as follows:

[0086] Software as a Service (SaaS): The functionality provided to the consumer is the use of the provider's applications running on a cloud infrastructure. These applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or individual application capabilities, with the expected exception of limited user-specific application configuration settings.

[0087] Platform as a Service (PaaS): The functionality offered to the consumer is the deployment onto a cloud infrastructure of applications the consumer creates or acquires, written using programming languages ​​and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does control the deployed applications and, in some cases, the configuration of the environment that hosts the applications.

[0088] Infrastructure as a Service (IaaS): The functionality provided to a consumer is to provision processing, storage, network, and other basic computing resources onto which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating systems, storage, deployed applications, and possibly limited control over the selection of network components (e.g., host firewalls).

[0089] The deployment model is as follows:

[0090] Private Cloud: The cloud infrastructure is operated exclusively for one organization. It can be managed by that organization or a third party and can exist on-premise or off-premise. Community Cloud: The cloud infrastructure is shared by several organizations to support a specific community with common concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by those organizations or a third party and can exist on-premise or off-premise.

[0091] Public Cloud: The cloud infrastructure is available to the general public or large industry groups and is owned by organizations that sell cloud services.

[0092] Hybrid Cloud: A cloud infrastructure is a blend of two or more clouds (private, community, or public) that remain unique entities but are tied together by standardized or proprietary technologies (e.g., cloud bursting for load balancing between clouds) that enable data and application portability.

[0093] Cloud computing environments are service-oriented and focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0094] 5, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which a local computing device used by a cloud consumer, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54, or an automobile computer system 54N, or a combination thereof, can communicate. The nodes 10 can communicate with each other. The nodes 10 can be physically or virtually grouped in one or more networks, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or a combination thereof, as described above (not shown). This enables the cloud computing environment 50 to provide Infrastructure as a Service, Platform as a Service, or Software as a Service, or a combination thereof, without the cloud consumer having to maintain resources on a local computing device. It will be understood that the types of computing devices 54A-N shown in FIG. 5 are intended to be merely exemplary, and that the computing node 10 and cloud computing environment 50 are capable of communicating with any type of computerized device (e.g., using a web browser) via any type of network or network-addressable connection or both.

[0095] Referring now to Figure 6, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 5) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 6 are intended to be merely illustrative, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0096] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes 61, RISC (Reduced Instruction Set Computer) architecture based servers 62, servers 63, blade servers 64, storage devices 65 such as tiered storage system 150, and networks and networking components 66. In some embodiments, the software components include network application server software 67 and database software 68.

[0097] The virtualization layer 70 provides an abstraction layer that can provide the following examples of virtual entities: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.

[0098] In one example, the management layer 80 may provide the functionality described below. Various functions of the management layer 80 may be associated with aspects of the management environment 130 and the unified storage environment 140. Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to perform tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides allocation and management of cloud computing resources such that required service levels are met. Service Level Agreement (SLA) Planning and Implementation 85 provides for the pre-allocation and procurement of cloud computing resources for anticipated future needs in accordance with SLAs.

[0099] Workload tier 90 provides examples of functionality that may utilize a cloud computing environment. Examples of workloads and functionality that may be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and software 96. In various embodiments of the invention, software 96 represents information lifecycle management system 142 and enhanced tiering program 300, or corresponding processing capabilities, described in further detail with respect to Figures 1 and 3, respectively.

[0100] The programs described herein are identified based on the application for which they are implemented in a particular embodiment of the invention, however, it should be understood that any particular program nomenclature herein is used for convenience only, and thus the invention should not be limited to use only with any particular application identified and / or implied by such nomenclature.

[0101] The present invention may be a system, a method, or a computer program product, or a combination thereof. The computer program product may include a computer readable storage medium or media having computer readable program instructions for causing a processor to perform aspects of the present invention.

[0102] A computer readable storage medium may be any tangible device capable of holding and storing instructions for use by an instruction execution device. A computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. A non-exhaustive list of more specific examples of computer readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves having instructions recorded thereon, and any suitable combination of the above. As used herein, a computer-readable storage medium is not to be construed as a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses through a fiber optic cable), or an electrical signal sent through a wire.

[0103] The computer readable program instructions described herein may be downloaded from a computer readable storage medium to each computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer readable program instructions from the network and transfers the computer readable program instructions for storage in a computer readable storage medium in the respective computing / processing device.

[0104] The computer readable program instructions for carrying out the operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object oriented programming languages ​​such as Smalltalk, C++, and traditional procedural programming languages ​​such as the "C" programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partly on the user's computer as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on a remote computer or server. In the last scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or may be connected to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer readable program instructions to individualize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the invention.

[0105] Aspects of the present invention are described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.

[0106] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, whereby the instructions executed by the processor of the computer or other programmable data processing apparatus create means for performing the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both. These computer program instructions, which may direct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, may also be stored in a computer readable medium, whereby the instructions stored in the computer readable medium may include an article of manufacture including instructions implementing aspects of the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both.

[0107] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, such that the instructions executing on the computer or other programmable apparatus provide a process for performing the functions / operations specified in one or more blocks of the flowcharts or block diagrams or both.

[0108] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts may represent a module, segment, or portion of code, including one or more executable instructions for implementing the specified logical functions. In some alternative implementations, the functions shown in the blocks may occur in a different order than that shown in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or these blocks may sometimes be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by a dedicated hardware-based system that executes the specified functions or operations, or executes a combination of dedicated hardware and computer instructions.

[0109] The description of various embodiments of the present disclosure has been presented for illustrative purposes, but they are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used in this specification have been selected to best explain the principles of the embodiments, practical applications, or technical improvements over the art found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

Claims

1. determining, by one or more computer processors, a number of files stored within the tiered storage environment that are accessed by a set of running applications; determining, by one or more computer processors, that one or more files of the plurality of files are accessed using two or more protocols; identifying, by one or more computer processors, a group of two or more tiering policies to be utilized within a tiered storage environment; determining, by one or more computer processors, protocol-based heat count values ​​corresponding to the plurality of files; storing, by one or more computer processors, the plurality of files among tiers of the tiered storage environment based on the identified group of two or more tiering policies and the protocol-based heat count values ​​corresponding to the plurality of files; The method includes:

2. 2. The method of claim 1, wherein identifying the group of two or more tiering policies to be utilized within the tiered storage environment is based at least in part on information respectively associated with the set of running applications, and a first application in the set of running applications accesses a first file using a first protocol.

3. 3. The method of claim 2, wherein identifying the group of two or more tiering policies to be utilized within the tiered storage environment is further based on one or more policies related to a service level agreement (SLA) associated with an application among the set of running applications.

4. Storing the plurality of files among tiers of the tiered storage environment based on the identified group of two or more tiering policies includes: determining, by one or more computer processors, an analytical hierarchy between said groups of two or more tiering policies; analyzing, with one or more computer processors, the protocol-based heat count values ​​corresponding to the plurality of files with respect to the analysis hierarchy among the group of two or more tiering policies; allocating, by one or more computer processors, the plurality of files among storage tiers based on the determined set of heat count values ​​associated respectively with the plurality of files and further based on the analyzed hierarchy among the identified groups of two or more tiering policies. The method of claim 1 further comprising:

5. a service level agreement (SLA) associated with at least one application of the set of running applications defines an analytical hierarchy between the identified sets of two or more tiering policies; 5. The method of claim 4, wherein the SLA enables upgrading a storage tier assignment of a file based on a next tiering policy in the analytical hierarchy among tiering policies and prevents downgrading the storage tier assignment of the file based on the next tiering policy in the analytical hierarchy among the tiering policies.

6. the identified set of two or more tiering policies further includes one or more multi-protocol tiering policies associated with files accessed by two or more protocols; a set of heat count values ​​associated with a multi-protocol layering policy is based on a combination of two or more access protocols utilized to access a file and a number of running applications utilizing the combination of two or more access protocols to access the file; The method of claim 1.

7. Analyzing the protocol-based heat count values ​​corresponding to the plurality of files includes: in response to determining that a file of the plurality of files is accessed utilizing two or more protocols, determining, by one or more computer processors, a multi-protocol heat count value corresponding to the file and further associated with a combination of protocols, the multi-protocol heat count value corresponding to the file being a value corresponding to a sum of the heat count values ​​corresponding to each protocol of the combination of protocols; analyzing, by one or more computer processors, the protocol-based heat count values ​​corresponding to the plurality of files and one or more multi-protocol heat count values ​​corresponding to the files with respect to the analysis hierarchy between the groups of two or more tiering policies; The method of claim 4 further comprising:

8. A computer program comprising computer readable program instructions causing a computer to carry out a method according to any one of claims 1 to 7.

9. A computer-readable storage medium storing the computer program of claim 8.

10. one or more computer processors; one or more computer readable storage media; program instructions stored on the computer-readable storage medium for execution by at least one of the one or more computer processors; wherein the program instructions include: program instructions for determining a number of files stored within a hierarchical storage environment and accessed by a set of running applications; program instructions for determining that one or more files of the plurality of files are accessed using two or more protocols; program instructions for identifying a group of two or more tiering policies to be utilized within a tiered storage environment; program instructions for determining protocol-based heat count values ​​corresponding to the plurality of files; program instructions for storing the plurality of files among tiers of the tiered storage environment based on the identified group of two or more tiering policies and the protocol-based heat count values ​​corresponding to the plurality of files; Including, Computer system.

11. 11. The computer system of claim 10, wherein the program instructions for identifying the group of two or more tiering policies to be utilized within the tiered storage environment are based at least in part on information respectively associated with the set of running applications, and a first application in the set of running applications accesses a first file using a first protocol.

12. 12. The computer system of claim 11, wherein the program instructions for identifying the group of two or more tiering policies to be utilized within the tiered storage environment are further based on one or more provisions related to a service level agreement (SLA) associated with an application in the set of running applications.

13. program instructions for storing the plurality of files among tiers of the tiered storage environment based on the identified group of two or more tiering policies, the program instructions comprising: program instructions for determining an analysis hierarchy between said groups of two or more tiering policies; program instructions for analyzing the protocol-based heat count values ​​corresponding to the plurality of files with respect to an analysis hierarchy among the group of two or more tiering policies; program instructions for allocating the plurality of files among storage tiers based on the determined set of heat count values ​​associated with each of the plurality of files and further based on the analyzed hierarchy among the identified groups of two or more tiering policies; The computer system of claim 10 further comprising:

14. a service level agreement (SLA) associated with at least one application of the set of running applications defines the analyzed hierarchy between the identified sets of two or more tiering policies; 14. The computer system of claim 13, wherein the SLA enables upgrading a storage tier assignment of a file based on a next tiering policy in the analytical hierarchy among tiering policies and prevents downgrading the storage tier assignment of the file based on the next tiering policy in the analytical hierarchy among the tiering policies.

15. The program instructions for analyzing the protocol based heat count values ​​corresponding to the plurality of files include: program instructions for determining, in response to determining that a file of the plurality of files is accessed using two or more protocols, a multi-protocol heat count value corresponding to the file and further associated with a combination of protocols, the multi-protocol heat count value corresponding to the file being a value corresponding to a sum of the heat count values ​​corresponding to each protocol of the combination of protocols; program instructions for analyzing the protocol-based heat count values ​​corresponding to the plurality of files and one or more multi-protocol heat count values ​​corresponding to the files with respect to the analysis hierarchy between the groups of two or more tiering policies; Further comprising:

14. The computer system of claim 13.

Citation Information

Patent Citations

  • Storage policy monitoring for storage networks

    JP2008515120A

  • Dynamic storage hierarchization in virtual environment

    JP2018110014A

  • Heat-tiered storage system having host awareness

    US20190250819A1