WO2017019128A1 - File system metadata representations - Google Patents

File system metadata representations Download PDF

Info

Publication number
WO2017019128A1
WO2017019128A1 PCT/US2016/021401 US2016021401W WO2017019128A1 WO 2017019128 A1 WO2017019128 A1 WO 2017019128A1 US 2016021401 W US2016021401 W US 2016021401W WO 2017019128 A1 WO2017019128 A1 WO 2017019128A1
Authority
WO
WIPO (PCT)
Prior art keywords
metadata
file system
representation
type
oriented
Prior art date
Application number
PCT/US2016/021401
Other languages
French (fr)
Inventor
Sandya Srivilliputtur Mannarswamy
Iii Charles B. Morrey
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Publication of WO2017019128A1 publication Critical patent/WO2017019128A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation

Definitions

  • a computer system may store data in a file system, which may store data in files organized into directories.
  • the file system may implement a hierarchical structure of directories.
  • a file system may also store metadata associated with other data in the file system.
  • the file system may additionally store in the file system metadata related to each file and directory of the file system. Examples of such metadata may include information related to or otherwise about a given file or directory in the file system, such as its owner, size, modify time, and the like.
  • FIG. 1 is a block diagram of an example computing device including instructions to perform a process native to a file system to modify metadata in first and second metadata representations;
  • FIG. 2 is a block diagram of an example computing environment including an example computing device to store pieces of metadata of a respective type for different file system objects such that they are clustered adjacently in physical storage;
  • FIG. 3 is a block diagram of an example system including an example file system to perform a process in kernel space of an operating system to modify given metadata a row-oriented metadata representation and a column-oriented metadata representation;
  • FIG. 4 is a flowchart of an example method for performing a native file system operation in kernel space to modify given metadata in row-oriented and column-oriented metadata representations;
  • FIG. 5 is a flowchart of an example method for accessing metadata of different types for a file system object from a row-oriented metadata representation.
  • a file system may store files, directories, or other "file system objects", and may store various metadata associated with each file system object.
  • Some operations on file system objects e.g., write operations, operations to change permissions, etc.
  • Such operations may benefit from a file system organization in which the metadata for a single file system object is stored together.
  • examples described herein may comprise a first metadata representation in a file system including, for each of a plurality of file system objects of the file system, a respective data structure including each piece of metadata for that file system object, and a second metadata representation in the file system including the same metadata as the first metadata representation, and including, for each type of metadata, a respective data structure to store metadata of only that type for different ones of the file system objects.
  • Such examples described herein may acquire a request to perform a file system operation associated with a given file system object of the file system and, in response to the request, perform a process native to the file system to modify given metadata for the given file system object in the first metadata representation in the file system and in a second metadata representation in the file system, before completion of the file system operation, wherein completion of the file system operation is contingent upon completion of modifying the given metadata in both the first and second metadata representations.
  • examples described herein may provide in a file system both a first metadata representation storing metadata for respective file system objects together, and a second metadata representation storing metadata of the same type together, for different file system objects, to thereby improve the efficiency of analytics operations involving at least one type of metadata across different file system objects (by using the second metadata representation) while maintaining efficiency for operations using multiple different types of metadata for a single file system object (by using the first metadata representation).
  • Examples described herein may update the same metadata in both the first and second metadata representations in a transactional manner so that both metadata representations are maintained up to date after each file system operation that modifies any metadata. For example, in response to a request to perform a file system operation that may involve modification of a given piece of metadata, examples described herein may modify the given piece of metadata in both the first and second metadata representations before completion of the requested file system operation to maintain both representations up to date in a transactional manner as described above. In this manner, the most up to date metadata is accessible in each metadata representation for requests accessing either representation.
  • Examples described herein may also maintain each of the metadata representations in the file system and may modify each of the metadata representations using a process native to the file system (e.g., perform the process in kernel space of an operating system) to provide an efficient technique for updating both metadata representations, without accessing and updating one or the other outside of the file system (e.g., in middleware or via a middleware implementation, for example).
  • a process native to the file system e.g., perform the process in kernel space of an operating system
  • examples described herein may efficiently keep both of the metadata representations updated in a transactional manner, such that they are both up to date after each file system operation. In this manner, examples described herein may improve the efficiency of certain analytics operations performed by a file system while maintaining efficiency for operations performed by a file system accessing multiple pieces of metadata for a single file system object, and also provide for accuracy of operations utilizing either of the metadata representations by keeping both up to date at each operation of the file system that modifies metadata.
  • FIG. 1 is a block diagram of an example computing device 100 including instructions to perform a process native to a file system to modify metadata in first and second metadata representations.
  • Computing device 100 includes a processing resource 110 and a machine-readable storage medium 120 comprising (e.g., encoded with) instructions 121 (including instructions 122 and 124) executable by processing resource 1 0 to implement functionalities described herein in relation to FIG. 1.
  • storage medium 120 may include additional instructions.
  • the functionalities described herein in relation to instructions 121 and any additional instructions described herein in relation to storage medium 120, may be implemented as engines comprising any combination of hardware and programming to implement the functionalities of the engines, as described below.
  • computing device 100 may comprise at least a portion of a file system that includes a plurality of file system objects and file system instructions 121 , which include instructions 122 and 124,
  • File system instructions 121 may be instructions that at least partially implement the file system
  • computing device 100 may further include file system data 114 of the file system.
  • File system data 114 may include a first metadata representation 140 and a separate second metadata representation 50, different from the first metadata representation 150.
  • first and second metadata representations 140, 150 may each be stored in at least one machine- readable storage medium of computing device 100.
  • a "metadata representation" may be an organized collection of metadata.
  • a metadata representation may comprise metadata in a plurality of data structures.
  • first metadata representation 140 may include, for each of a plurality of file system objects of the file system, a respective data structure 142, 144, etc., including each piece of metadata for that file system object.
  • first metadata representation 140 may include a first file system object data structure 142 associated with a first file system object of the file system (e.g., a file or directory) and that includes each piece of metadata 142A, 142B, 142C, etc., associated with the first file system object in the file system.
  • First metadata representation 140 may also include a second file system object data structure 144 associated with a second file system object of the file system (e.g., a file or directory) and that includes each piece of metadata 144A, 144B, 144C, etc., associated with the second file system object in the file system.
  • first metadata representation 140 may include additional file system object data structures.
  • first metadata representation 140 may include a respective file system object data structure associated with more than two different file system objects in the file system, and may include a respective file system object data structure associated with each file system object in the file system.
  • Metadata may include data about or otherwise associated with a file system object (such as a file or directory) in a file system.
  • metadata for a file system object may include a size of the file system object, access time for the file system object, modify time for the file system object, information indicating the owner of the file system object, information indicating access permission(s) for the file system object, and the like.
  • each of the file system object data structures (142, 144, etc.) of first metadata representation 140 i.e., associated with respective file system objects
  • first metadata representation 140 may be a respective inode of the file system representing a respective one of the file system objects of the file system.
  • each inode may represent a respective one of the file system objects of the file system and include each piece of metadata for the file system object maintained in the file system, including identifier(s) for the file system object (e.g., an inode number, etc.).
  • the file system object data structures of first metadata representations 140 may be other types of data structures.
  • the file system object data structures 142, 144, etc. may be respective vnodes for file system objects of the file system.
  • second metadata representation 150 may include the same metadata as the first metadata representation 140, organized in a different manner.
  • second metadata representation 150 may include, for each type of metadata among the metadata of first metadata representation 140, a respective data structure 152, 154, etc., to store metadata of only that type for different ones of the file system objects.
  • a "type" of metadata may include metadata for a particular attribute or characteristic of file system objects (e.g., size, owner, identifier, etc.).
  • one type of metadata is file system object size, while other types of metadata include owner, modify time, access time, etc.
  • Metadata examples include information for each different type of permission related to a file system object (e.g., owner read permission, owner write permission, group read permission, group write permission, etc.). Because first metadata representation 140 is organized via a plurality of file system object data structures 142, 144, etc., each including metadata of different types for a respective file system object, each of the file system object data structures may conceptually resemble a row of a table or similar data structure, and first metadata representation 140 may be referred to herein as a "row-oriented" metadata representation.
  • second metadata representation 150 may include a first type data structure 152 that includes metadata 142A, 144A, etc., of only the first type for a plurality of different file system objects of the file system.
  • first type data structure 152 may include first type metadata 142A for a first file system object (associated with first file system object data structure 142), include first type metadata 144A for a second file system object (associated with second file system object data structure 144), while excluding any metadata of a different type (i.e. , not of the first type).
  • first type data structure 152 is illustrated as including two pieces of metadata of the first type, in some examples, first type data structure 152 may include further pieces of metadata of the first type associated with further file system objects. For example, first type data structure 152 may include respective first type metadata for each of a majority of the file system objects of the file system, or for each of the file system objects of the file system,
  • second metadata representation 150 may include further data structure(s) each including metadata of only a respective type for different file system objects of the file system, as described above in relation to first type data structure 152,
  • second metadata representation 150 may include a second type data structure 154 that includes metadata 142B, 144B, etc., of only the second type for a plurality of different file system objects of the file system, and excluding any metadata of a different type (i.e., not of the second type).
  • second metadata representation 150 may include, for at least a majority of the types of metadata in the file system, a respective data structure including metadata of only a respective type for different file system objects of the file system, as described above in relation to data structures 152, 154. In some examples, second metadata representation 150 may include, for each type of metadata in the file system, a respective data structure including metadata of only a respective type for different file system objects of the file system, as described above in relation to data structures 152, 154.
  • each of the metadata type data structures may conceptually resemble a column of a table or similar data structure, and second metadata representation 150 may be referred to herein as a "column-oriented" metadata representation.
  • each metadata type data structure, 152, 154, etc may include only metadata of a respective type, as described above.
  • each respective metadata type data structure may include metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata.
  • first type metadata data structure 152 may include metadata of the first type 142A, 144A, etc., and index metadata associated with each piece of metadata of the first type, and exclude any other type of metadata (i.e., other that the first type and the index metadata), in such examples, each piece of metadata of the first type may be associated with a respective one of the pieces of index metadata identifying a file system object with which the respective metadata of the first type is associated.
  • index metadata may include identifiers such as inode numbers or the like
  • each data structure of second metadata representation 150 may include pieces of metadata of a particular type each associated with a respective identifier (i.e., index metadata) identifying a file system object that the piece of metadata is associated with.
  • file system instructions 121 may include instructions 122 and 124 of the file system.
  • instructions 122 may acquire a request 180 to perform a file system operation associated with a given file system object of the file system.
  • the request 180 may be acquired in any suitable manner.
  • request 180 may be acquired by instructions 122 in response to user input acquired by the file system, may be acquired from a tool or system external to the file system, may be invoked by the file system itself, or in any other suitable manner, in some examples, request 180 may be acquired as a call to a function of the file system, a request or command to invoke such a function, or the like.
  • the file system operation requested may be any suitable file system operation that operates on file system object(s) and modifies metadata for the file system object(s).
  • file system operations may include a write operation, a rename operation, an operation to change permission(s), an open operation, a truncate operation, etc.
  • instructions 124 may perform a process native to the file system to modify given metadata for the given file system object in the first metadata representation 140 and in the second metadata representation 150 in the file system, before completion of the file system operation, wherein completion of the file system operation is contingent upon completion of modifying the given metadata in both the first and second metadata representations 140 and 150.
  • the request 180 may be a request to perform a particular file system operation (e.g., a write operation) on a given file system object, which may include modifying given metadata for the given file system object (e.g., size, modify time, etc.), in such examples, instructions 124 may perform a process native to the file system (e.g., with instructions 124 of the file system) to modify the given metadata for the given file system object in the first metadata representation 140 and in the second metadata representation 150.
  • a particular file system operation e.g., a write operation
  • instructions 124 may perform a process native to the file system (e.g., with instructions 124 of the file system) to modify the given metadata for the given file system object in the first metadata representation 140 and in the second metadata representation 150.
  • instructions 124 may modify 182 the given metadata in first metadata representation 140 and may modify 184 the same given metadata in second metadata representation 150, each before completion of the requested file system operation.
  • completion of the requested file system operation by instructions 124 may be contingent upon completion of modifying the given metadata in both the first and second metadata representations 140 and 150.
  • instructions 124 may wait for completion of the modification of the given metadata in both the first and second metadata representations 140 and 150 before returning from execution of the requested file system operation.
  • the request 180 may be a request to perform a write operation with the file system on a given file system object, which may include modifying at least the size and modify time metadata for the given file system object.
  • instructions 124 may perform a process native to the file system to modify at least the size and modify time metadata for the given file system object in the first metadata representation 140 and the second metadata representation 150 before completion of the write operation by the file system.
  • instructions 124 may modify 182 at least the size and modify time metadata for the given file system object in a file system object data structure (e.g., an inode) of first metadata representation 140 for the given file system object.
  • a file system object data structure e.g., an inode
  • instructions 124 may further modify 184 at least the size and modify time metadata for the given file system object in the second metadata representation 150 by modifying the size of the given file system object in a data structure storing size type metadata (e.g., first type data structure 152), and modifying the modify time of the given file system object in a data structure storing modify time type metadata (e.g., second type data structure 154).
  • size type metadata e.g., first type data structure 152
  • modify time type metadata e.g., second type data structure 154
  • instructions 124 may modify the size and a modify time metadata in both the first and second metadata representations 140 and 150 before completion of the requested write operation, and the completion of the requested write operation by instructions 124 may be contingent upon completion of modifying the size and modify time in both the first and second metadata representations 140 and 150 such that instructions 124 wait until the modifications in both metadata representations are complete before the write operation returns as completed.
  • modification of size and modify time metadata is described above, in other examples, more, fewer, or other pieces of metadata may be modified in the first and second metadata representations 140 and 150.
  • the process native to the file system may be performed in kernel space of an operating system of computing device 100 in which the file system operates, and not in user space of the operating system or any other space outside of kernel space of the operating system.
  • instructions, engines, etc. may "acquire" information either actively (e.g., by retrieving the information), passively (e.g., by receiving the information), or in any other suitable manner.
  • a "computing device” may be a server, blade enclosure, desktop computer, laptop (or notebook) computer, workstation, tablet computer, mobile phone, smart device, or any other processing device or equipment including a processing resource, in examples described herein, a processing resource may include, for example, one processor or multiple processors included in a single computing device or distributed across multiple computing devices,
  • a "processor” may be at least one of a centra! processing unit (CPU), a semiconductor-based microprocessor, a graphics processing unit (GPU), a field- programmable gate array (FPGA) configured to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a machine- readable storage medium, or a combination thereof.
  • Processing resource 110 may fetch, decode, and execute instructions stored on storage medium 120 to perform the functionalities described below.
  • any of the instructions of storage medium 120 may be implemented in the form of electronic circuitry, in the form of executable instructions encoded on a machine-readable storage medium, or a combination thereof,
  • a "machine-readable storage medium” may be any electronic, magnetic, optical, or other physical storage apparatus to contain or store information such as executable instructions, data, and the like.
  • any machine-readable storage medium described herein may be any of Random Access Memory (RAM), volatile memory, non-volatile memory, flash memory, a storage drive (e.g., a hard drive), a solid state drive, any type of storage disc (e.g., a compact disc, a DVD, etc.), and the like, or a combination thereof.
  • RAM Random Access Memory
  • volatile memory volatile memory
  • non-volatile memory flash memory
  • a storage drive e.g., a hard drive
  • solid state drive any type of storage disc (e.g., a compact disc, a DVD, etc.), and the like, or a combination thereof.
  • any machine-readable storage medium described herein may be non- transitory.
  • a machine-readable storage medium or media is part of an article (or article of manufacture).
  • An article or article of manufacture may refer to any manufactured single component or multiple components.
  • the storage medium may be located either in the computing device executing the machine-readable instructions, or remote from but accessible to the computing device (e.g., via a computer network) for execution, in the example of FIG. 1 , storage medium 120 may be implemented by one machine-readable storage medium, or multiple machine-readable storage media.
  • computing device 100 may communicate with components implemented on separate computing device(s) via a network interface device of computing device 100.
  • a "network interface device” may be a hardware device to communicate over at least one computer network.
  • a network interface may be a network interface card (NIC) or the like.
  • NIC network interface card
  • a computer network may include, for example, a local area network (LAN), a wireless local area network (WLAN), a virtual private network (VPN), the Internet, or the like, or a combination thereof, in some examples, a computer network may include a telephone network (e.g., a cellular telephone network).
  • instructions 121 may be part of an installation package that, when installed, may be executed by processing resource 110 to implement the functionalities described herein in relation to instructions 121.
  • storage medium 120 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed.
  • instructions 121 may be part of an application, applications, or component(s) already installed on a computing device 100 including processing resource 110.
  • the storage medium 120 may include memory such as a hard drive, solid state drive, or the like, in some examples, functionalities described herein in relation to FIG. 1 may be provided in combination with functionalities described herein in relation to any of FIGS. 2- 5.
  • FIG. 2 is a block diagram of an example computing environment including an example computing device 100 to store pieces of metadata of a respective type for different file system objects such that they are clustered adjacently in physical storage, in the example of FIG. 2, the example computing environment includes a computing device 100 as described above in relation to FIG. 1 , including processing resource 110, storage medium 120, file system instructions 121 , and file system data 114 including first and second metadata representations 140 and 150 stored in at least one machine-readable storage medium of computing device 100, as described above, in the example of FIG. 2, computing device 100 includes physical storage 170, which may be implemented by one or multiple machine-readable storage devices of or associated with computing device 100.
  • first and second metadata representations 140 and 150 may be stored at least partially on physical storage 70 or at least partially on at least one machine-readable storage medium different from physical storage 170.
  • the example computing environment of FIG. 2 also includes an external tool 160 separate from computing device 100 that may interact with the file system implemented at least partially by file system instructions 121.
  • externals tool(s) may include, for example, file system consistency check (fsck) tools, search or query tools (e.g., applications), or the like.
  • first metadata representation 140 may include, for each of a plurality of file system objects of the file system, a respective data structure including each piece of metadata for that file system object.
  • first metadata representation 140 may include a first file system object data structure 142 associated with a first file system object of the file system and including different types of metadata (142A, 142B, 142C, etc.) associated with the first file system object, a second file system object data structure 144 associated with a second file system object of the file system and including different types of metadata (144A, 144B, 144C, etc) associated with the second file system object, and in some examples, additional respective file system object data structures associated with further respective file system objects.
  • first metadata representation 140 is to store metadata in physical storage 170 such that, for each of the plurality of file system objects, ail of the metadata for that file system object is clustered adjacently in physical storage 170 without intervening metadata of another file system object between the metadata of that file system object.
  • first metadata representation 140 may store all of the metadata of first file system object data structure 142 (e.g., metadata 142A, 142B, 142C, etc.) in physical storage such that the ail of the metadata for the first file system object is clustered adjacently in physical storage 170 without intervening metadata of another file system object between the metadata of the first file system object.
  • the metadata 142A, 142B, 142C, etc., of data structure 142 and associated with the first file system object is stored adjacently in physical storage 170 without intervening metadata of any other file system object between the metadata of that the first system object
  • ail of the metadata of a respective file system object may be stored adjacently in physical storage 170 such that it may be accessed (e.g., read) sequentially from physical storage without accessing metadata of any other file system object.
  • first metadata representation 140 may provide for efficient access of ail of the metadata of a given file system object.
  • the data structures 142, 144, etc., of first metadata representation comprise respective inodes for each of the plurality of file system objects, such that each of the data structures 142, 144, etc., is a respective inode for a respective one of the file system objects of the file system.
  • second metadata representation 150 may include the same metadata as first metadata representation 140, as described above.
  • second metadata representation 150 may comprise, for each type of metadata, a respective data structure 152, 154, etc., to store metadata of only that type for different ones of the file system objects, as described above in relation to FIG. 1.
  • second metadata representation 150 may include a first type data structure 52 that includes metadata 142A, 144A, etc., of only the first type for a plurality of different file system objects of the file system (i.e., excluding metadata not of the first type), a second type data structure 154 that includes metadata 142B, 144B, etc., of only the second type for the plurality of different file system objects of the file system (i.e., excluding metadata not of the second type), and in some examples, additional respective metadata type data structure(s) each storing only a respective type of metadata for different file system objects,
  • each respective data structure is to store a plurality of pieces of metadata of a respective type for different file system objects such that they are clustered adjacently in physical storage without intervening metadata of another type between them.
  • second metadata representation 150 may store ail of the metadata of first type data structure 152 (e.g., metadata 142A, 144A, etc., of the first type) in physical storage such that the pieces of metadata of the first type of data structure 152 is clustered adjacently in physical storage 170 without intervening metadata of another type between them.
  • the first type metadata 142A, 144A, etc., of data structure 152 is stored adjacently in physical storage 170 without intervening metadata of any other type between the metadata of the first type.
  • all of the metadata of the respective type may be stored adjacently in physical storage 170 such that it may be accessed (e.g., read) sequentially from physical storage without accessing metadata of any other type.
  • second metadata representation 150 may provide for efficient access of some or all of the metadata of a given type.
  • each respective metadata type data structure of second metadata representation 150 may include metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata, as described above.
  • second metadata representation 150 may store all or a majority of the types of metadata associated with all or a majority of the file system objects of the file system, and stores such metadata by type as described above.
  • second metadata representation 150 may comprise at least one log-structured merge-tree (LS ) to at least partially implement the second metadata representation 150.
  • LS log-structured merge-tree
  • implementation via LS (s) may enable instructions 124 to modify metadata in the second metadata representation 150 efficiently with good performance time when updating second metadata representation 150 before completion of a file system operation that involves modifying metadata, as described above.
  • instructions 122 may acquire a request 180 to perform a file system operation associated with a given file system object of the file system.
  • instructions 124 may perform a process native to the file system to modify given metadata for the given file system object in the first and second metadata representations 140, 150 in the file system, before completion of the file system operation, and wherein completion of the requested file system operation is contingent upon completion of modifying the given metadata in both the first and second metadata representations 140, 150.
  • instructions 122 may acquire an analytics request 192 related to a given type of metadata
  • an "analytics request” may be a request for a file system to at least one of access, analyze, and return results related to a given type of metadata for a plurality of different file system objects.
  • instructions 124 may access a plurality of a pieces of metadata of the given type from second metadata representation 150 without accessing metadata of another, different type.
  • instructions 122 may acquire an analytics request 192 related to size metadata for different file system objects.
  • instructions 122 may acquire an analytics request 192 to identify all of the file system objects of the file system having a size greater than 50 MB.
  • instructions 124 may access a plurality of a pieces of size metadata for different file system objects from a data structure 152 of second metadata representation 150 storing size metadata, and use that metadata to determine each file system object with a size greater than 50 MB.
  • instructions 124 may efficiently access size metadata for a plurality of different file system objects (i.e., without accessing much unrelated metadata) in determining a result for the analytics request. After determining the result, instructions 124 may return the result 196.
  • request 192 may be acquired by instructions 122 in response to user input acquired by the file system, may be acquired from a tool or system external to the file system (e.g., external tool 160), may be invoked by the file system itself, or in any other suitable manner.
  • request 192 may be acquired as a call to a function of the file system (e.g., an analytics function), a request or command to invoke such a function, or the like.
  • the analytics request 192 may be a request 192 received from a tool 160 external to the file system implemented at least in part by instructions 121 of computing device 100.
  • instructions 124 may provide, to the external tool 160, a result 196 of the analytics request 192, based on the metadata accessed in response to the request, as described above.
  • instructions 124 in response to a request related to a particular file system object of the file system, instructions 124 may access a plurality of a pieces of metadata of different types for the particular file system object from first metadata representation 140.
  • request 194 may be acquired by instructions 122 in response to user input acquired by the file system, may be acquired from a tool or system external to the file system (e.g., external tool 180), may be invoked by the file system itself, or in any other suitable manner.
  • request 194 may be acquired as a call to a function of the file system (e.g., an analytics function), a request or command to invoke such a function, or the like.
  • instructions 124 may access a plurality of a pieces of metadata of different types for the first file system object from first metadata representation 140.
  • examples described herein may efficiently access multiple pieces of metadata for a given file system object using the first metadata representation 140, and efficiently access metadata of the same type for different file system objects using the second metadata representation 150, as described above.
  • whether the file system (i.e., instructions 124) accesses the first metadata representation 140 or the second metadata representation 150 may depend on the type of the request, which may relate to a type of file system function called by the request.
  • file system functions implemented by instructions 124 to perform analytics operations (i.e., in response to analytics requests) involving a given type of metadata for a plurality of different file system objects may access metadata in the second metadata representation 150, while functions implemented by instructions 124 to perform operations involving a given file system object (e.g., read a given file system object) may access metadata in the first metadata representation 140.
  • functionalities described herein in relation to FIG. 2 may be provided in combination with functionalities described herein in relation to any of FIGS. 1 and 3-5.
  • FIG. 3 is a block diagram of an example system 300 including an example file system 302 to perform a process in kernel space of an operating system to modify given metadata a row-oriented metadata representation and a column-oriented metadata representation.
  • a system 300 may be implemented by at least one computing device and may include a file system 302 implemented at least in part by engines 322, 324, and 328, which may be any combination of hardware and programming to implement the functionalities of the engines described herein.
  • System 302 may include physical storage 170, as described above.
  • File system 302 may include a plurality of file system objects 317, each having associated metadata.
  • the plurality of file system objects 317 include a first file system object 342, a second file system object 344, and in some examples, further file system objects.
  • file system 302 includes a row-oriented metadata representation 140 (as described above in relation to the first metadata representation 140 of FIGS. 1 and 2).
  • Row-oriented metadata representation 140 may store the metadata for each of the file system objects, and may include for each file system object, a respective data structure 142, 144, etc., to store metadata associated with that file contiguously in physical storage 170.
  • the row-oriented metadata representation 140 may store ail of the metadata for each of the plurality of file system objects 317 of file system 302.
  • row-oriented metadata representation 140 may include a first file system object data structure 142 to store metadata of different types associated with first file system object 342 (e.g., metadata 142A, 142B, 142C, etc.) contiguously in physical storage 170, as described above, in some examples, row-oriented metadata representation 140 may further include a second file system object data structure 144 to store metadata of different types associated with first file system object 344 (e.g., metadata 144A, 144B, 144C, etc.) contiguously in physical storage 170, as described above, in some examples, row-oriented metadata representation 140 may store further file system object data structure(s) for respective further file system objects as described above in relation to data structures 142 and 144.
  • first file system object data structure 142 to store metadata of different types associated with first file system object 342 (e.g., metadata 142A, 142B, 142C, etc.) contiguously in physical storage 170, as described above
  • row-oriented metadata representation 140 may store further file system
  • the data structures 142, 144, etc., of row-oriented metadata representation 140 may comprise respective inodes representing corresponding file system objects 342, 344, etc., as described above, such that each of the data structures 142, 144, etc., is a respective inode for a respective one of the file system objects 342, 344, etc., of the file system.
  • file system 302 may include a column-oriented metadata representation 150 (as described above in relation to the second metadata representation 150 of FIGS. 1 and 2).
  • Column-oriented metadata representation 50 may store, for each of at least a majority of different types of metadata for the file system objects 317, a respective data structure to store metadata of only that type for different ones of the file system objects and such that a plurality of pieces of metadata of that type for different file system objects are clustered adjacently in physical storage 170 without intervening metadata of another type between them.
  • column-oriented metadata representation 150 may include a first type data structure 152 to store metadata of a first type (e.g., metadata 142A, 144A, etc.) associated with different file system objects (e.g., objects 342, 344, etc.) contiguously in physical storage 170 without intervening metadata of another type between them, as described above.
  • column-oriented metadata representation 150 may further include a second type data structure 154 to store metadata of a second type (e.g., metadata 142B, 144B, etc.) associated with different file system objects (e.g., objects 342, 344, etc.) contiguously in physical storage 170 without intervening metadata of another type between them, as described above.
  • column-oriented metadata representation 150 may store further metadata type data structure(s) storing metadata of a respective type for different file system objects, as described above in relation to data structures 152 and 154.
  • coiumn-orienfed metadata representation 150 may store, for each of at least a majority of different types of metadata for at least a majority of the file system objects 317 of file system 302, a respective data structure to store metadata of only a respective type.
  • column-oriented metadata representation 150 may store, for each different type of metadata among each of the file system objects 317 of file system 302, a respective data structure to store metadata of only a respective type, in some examples, the column-oriented metadata representation 150 may store ail of the metadata for each of the plurality of file system objects 317 of file system 302.
  • types of metadata may include file system object size, modify time, owner, and a plurality of different permission attributes, or any other types described above, or the like, or a combination thereof.
  • each respective metadata type data structure of row-oriented metadata representation 150 may include metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata, as described above.
  • an acquire engine of file system 302 may acquire a request 180 to perform a file system operation associated with a first file system object of the file system 342, as described above.
  • a modify engine 324 may perform a process of the file system to modify given metadata for the first file system object 342 in the row-oriented metadata representation 140 and in the column-oriented metadata representation 140 before completion of the requested file system operation, in some examples, the modify engine 324 may perform the process in kernel space 330 of an operating system of system 300 (e.g., computing device 300), wherein the file system operates in the operating system of system 300.
  • the requested file system operation may be a suitable file system operation as described above in relation to FIG. 1
  • modify engine 324 may modify the given metadata for the first file system object 342 in the row-oriented and column-oriented metadata representations 140 and 150, as described above in relation to FIGS. 1 and 2.
  • modify engine 324 may modify the given metadata for the file system object 342 in first file system object data structure 142 of row-oriented metadata representation 140 and may modify the given metadata in at least one of the data structures 152, 154, etc, of column-oriented metadata representation 150, In some examples, modify engine 324 may modify the given metadata for the first file system object 324 in the row-oriented metadata representation 140 and in the column-oriented metadata representation 150, before completion of the requested file system operation, and wherein completion of the requested file system operation by modify engine 324 is contingent upon completion of modifying the given metadata in both the row-oriented and column-oriented metadata representations 140 and 150, as described above.
  • the above-described process of engine 324 of file system 302 to modify the given metadata, in response to the request 180 to perform the file system operation may be integrated with a crash-consistency mechanism of the file system implemented by engine 328.
  • the process may be integrated with the crash-consistency mechanism such that, when a file system crash occurs after beginning the file system operation and before completing the modification of the given metadata in at least one of the column-oriented metadata representation 150 and the row-oriented metadata representation 140, engine 324 of the file system may complete the modification of the given metadata in the at least one of the column-oriented metadata representation 150 and the row-oriented metadata representation 140 after recovering from the crash and before the completion of the requested file system operation. That is, in such examples, after recovering from the crash, engine 324 may complete the modification of the given metadata in whichever of representations 150 and 140 the modification was not completed in before the crash.
  • engine 322 may acquire an analytics request related to a given type of metadata, as described above, in such examples, in response to the analytics request, modify engine 324 may access a plurality of a pieces of metadata of the given type from column-oriented metadata representation 150 without accessing metadata of a different type. For example, engine 324 may access the metadata of the given type from a data structure for the metadata of the given type of column-oriented metadata representation 150.
  • engine 322 may acquire a file system read request related to a particular one of the file system objects 317.
  • modify engine 324 may access a plurality of a pieces of metadata of different types for the particular file system object from row-oriented metadata representation 140.
  • the file system read request may be related to first file system object 342, and in response modify engine 324 may access a plurality of a pieces of metadata of different types for first file system object 342 from first file system object data structure 142 of row-oriented metadata representation 140.
  • engine 324 may access metadata of different types for first file system object 342 stored adjacently in physical storage 170, as described above.
  • modify engine 324 may access a plurality of a pieces of metadata of different types for a particular file system object from row-oriented metadata representation 140 in response to a request to perform other types of file system operations related to a particular one of file system objects 317.
  • each of the respective data structures 152, 154, etc., of column-oriented metadata representation 150 stores metadata of a particular type for a corresponding collection of the file system objects 317 whose respective data structures 142, 144, etc., in row-oriented metadata representation 140 are stored on a respective single page of physical storage 170.
  • each of the data structures 152, 154, etc. may store metadata of a particular type for fewer than ail of the file system object 317 of file 302, and may store the metadata of a particular type whose respective data structures 142, 144, etc., (e.g., inodes) are stored on a single page in physical storage 170.
  • the metadata of a particular type stored in the respective data structure may partitioned in physical storage according to a namespace structure of file system 302.
  • the metadata may be partitioned such that first pieces of metadata of the respective data structure in the same portion of the namespace (e.g., a first directory) may be stored adjacently on physical storage 170, as described above, but second pieces of the metadata of the respective data structure that are in a different portion of the namespace (e.g., a second directory different than the first directory) are not stored adjacent to the first pieces.
  • the second pieces of metadata may be stored adjacently to one another in physical storage 170, but separate from the first pieces of the metadata.
  • System 300 may be implemented by at least one computing device and may include at least engines 322, 324, and 328, which may be any combination of hardware and programming to implement the functionalities of the engines described herein, in examples described herein, such combinations of hardware and programming may be implemented in a number of different ways.
  • the programming for the engines may be processor executable instructions stored on at least one non-transitory machine-readable storage medium and the hardware for the engines may include at least one processing resource to execute those instructions.
  • the at least one machine-readable storage medium may store instructions that, when executed by the at least one processing resource, implement the engines of file system 302.
  • system 300 may include the at least one machine-readable storage medium storing the instructions and the at least one processing resource to execute the instructions, or one or more of the at least one machine- readable storage medium may be separate from but accessible to system 300 and the at least one processing resource (e.g., via a computer network), in some examples, the hardware and programming implementing engines 322, 324, and 326 may be divided among multiple computing devices.
  • the instructions can be part of an installation package that, when installed, can be executed by the at least one processing resource to implement at least the engines of system 300.
  • the machine-readable storage medium may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed.
  • the instructions may be part of an application, applications, or component already installed on system 300 including the processing resource.
  • the machine- readable storage medium may include memory such as a hard drive, solid state drive, or the like, in other examples, the functionalities of any engines of system 300 may be implemented in the form of electronic circuitry.
  • System 300 may also include a network interface device, as described above, to communicate with other components via a network.
  • a network interface device as described above, to communicate with other components via a network.
  • functionalities described herein in relation to FIG. 3 may be provided in combination with functionalities described herein in relation to any of FIGS. 1-2 and 4-5.
  • FIG. 4 is a flowchart of an example method 400 for performing a native file system operation in kernel space to modify given metadata in row-oriented and column-oriented metadata representations.
  • execution of method 400 is described below with reference to system 300 of FIG. 3, other suitable systems for the execution of method 400 can be utilized (e.g., computing device 100 of FIG. 1 or FIG. 2). Additionally, implementation of method 400 is not limited to such examples.
  • acquire engine 322 of file system 302 may acquire a request 180 to perform a file system operation associated with a given file system object of file system 302.
  • modify engine 324 may perform a native file system process of file system 302 (in kernel space 330 of an operating system in which file system 302 operates) to modify given metadata for the given file system object in a row-oriented metadata representation 140 in file system 302 and in a column-oriented metadata representation 150 in file system 302, before completion of the file system operation.
  • completion of the requested file system operation by modify engine 324 may be contingent upon completion of modifying the given metadata in both the metadata representations 140 and 150.
  • engine 324 may wait for completion of the modification of the given metadata in both the metadata representations 140 and 150 before returning from execution of the requested file system operation.
  • row-oriented metadata representation 140 includes, for each of a plurality of file system objects 317 of file system 302, a respective data structure 142, 144, etc., including each piece of metadata for that file system object
  • column-oriented metadata representation 150 includes, for each type of metadata for file system objects 317, a respective data structure 152, 154, etc., including metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata, as described above.
  • the metadata of each respective data structure of column-oriented metadata representation 150 may be stored such that a plurality of pieces of metadata of the respective data structure of a respective type for different file system objects are clustered adjacently in physical storage without intervening metadata excluded from the respective data structure.
  • engine 324 may access a plurality of pieces of metadata of the given type from a respective data structure including metadata of the given type in the column- oriented metadata representation without accessing metadata of a type excluded from the respective data structure.
  • FIG. 4 shows a specific order of performance of certain functionalities
  • method 400 is not limited to that order.
  • the functionalities shown in succession in the flowchart may be performed in a different order, may be executed concurrently or with partial concurrence, or a combination thereof.
  • functionalities described herein in relation to FIG. 4 may be provided in combination with functionalities described herein in relation to any of FIGS. 1-3 and 5.
  • FIG. 5 is a flowchart of an example method 500 for accessing metadata of different types for a file system object from a row-oriented metadata representation.
  • execution of method 500 is described below with reference to system 300 of FIG. 3, other suitable systems for the execution of method 500 can be utilized (e.g., computing device 100 of FIG. 1 or FIG. 2). Additionally, implementation of method 500 is not limited to such examples,
  • acquire engine 322 of file system 302 may acquire a request 180 to perform a file system operation associated with a given file system object of file system 302. in response to the request, at 510, modify engine 324 may perform a native file system process of file system 302 (in kernel space 330 of an operating system in which file system 302 operates) to modify given metadata for the given file system object in a row-oriented metadata representation 140 in file system 302 and in a column-oriented metadata representation 150 in file system 302, before completion of the file system operation.
  • completion of the requested file system operation by modify engine 324 may be contingent upon completion of modifying the given metadata in both the metadata representations 140 and 150.
  • engine 324 may wait for completion of the modification of the given metadata in both the metadata representations 140 and 150 before returning from execution of the requested file system operation.
  • row-oriented metadata representation 140 and the column-oriented metadata representation 150 may each be as described above in relation to FIG. 4.
  • engine 324 may access a plurality of pieces of metadata of the given type from a respective data structure including metadata of the given type in the column-oriented metadata representation without accessing metadata of a type excluded from the respective data structure.
  • the analytics request may be acquired by engine 322 of file system 302 from a tool external to file system 302, as described above.
  • engine 324 may provide a result of the analytics request based on the accessed metadata to the external tool.
  • engine 322 may acquire a file system read request related to a particular one of the file system objects.
  • engine 324 in response to the file system read request, at 525 engine 324 may access a plurality of a pieces of metadata of different types for the particular file system object from row-oriented metadata representation 140.
  • FIG. 5 shows a specific order of performance of certain functionalities
  • method 500 is not limited to that order.
  • the functionalities shown in succession in the flowchart may be performed in a different order, may be executed concurrently or with partial concurrence, or a combination thereof.
  • functionalities described herein in relation to FIG. 5 may be provided in combination with functionalities described herein in relation to any of FIGS. 1-4. All of the features disclosed in this specification (including any accompanying claims, abstract and drawings), and/or ail of the elements of any method or process so disclosed, may be combined in any combination, except combinations where at least some of such features and/or elements are mutualiy exclusive.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Examples include file system metadata representations. Some examples include acquisition of a request to perform a file system operation associated with a given file system object and, in response to the request, performance of a process to modify given metadata for the given file system object in a first metadata representation in the file system and in a second metadata representation in the file system, before completion of the file system representation.

Description

RLE SYSTEIVI M ETADATA REPRESENTATIONS
BACKGROUND
[0001] A computer system may store data in a file system, which may store data in files organized into directories. In some examples, the file system may implement a hierarchical structure of directories. A file system may also store metadata associated with other data in the file system. For example, the file system may additionally store in the file system metadata related to each file and directory of the file system. Examples of such metadata may include information related to or otherwise about a given file or directory in the file system, such as its owner, size, modify time, and the like.
BRIEF DESCRSPTION OF THE DRAWINGS
[0002] The following detailed description references the drawings, wherein:
[0003] FIG. 1 is a block diagram of an example computing device including instructions to perform a process native to a file system to modify metadata in first and second metadata representations;
[0004] FIG. 2 is a block diagram of an example computing environment including an example computing device to store pieces of metadata of a respective type for different file system objects such that they are clustered adjacently in physical storage;
[0005] FIG. 3 is a block diagram of an example system including an example file system to perform a process in kernel space of an operating system to modify given metadata a row-oriented metadata representation and a column-oriented metadata representation;
[0006] FIG. 4 is a flowchart of an example method for performing a native file system operation in kernel space to modify given metadata in row-oriented and column-oriented metadata representations; and
[0007] FIG. 5 is a flowchart of an example method for accessing metadata of different types for a file system object from a row-oriented metadata representation.
DETAILED DESCRIPTION
[0008] A file system may store files, directories, or other "file system objects", and may store various metadata associated with each file system object. Some operations on file system objects (e.g., write operations, operations to change permissions, etc.) may read, update, or otherwise access various different pieces of metadata for a single file system object. Such operations may benefit from a file system organization in which the metadata for a single file system object is stored together. [0009] However, for a file system that stores metadata in this manner, it may be difficult to perform certain types of analytics operations involving analysis of a single type of metadata (e.g., file system object size) for a plurality of different file system objects, as the analytics operation may involve traversing much metadata of different types (not related to the particular analytics operation) for a plurality of different file system objects. Storing together pieces of metadata of the same type for different file system objects may be beneficial for certain analytics requests, as described above, but may be disadvantageous for file system operations that read, update, or otherwise access multiple pieces of metadata for a single file system object, as such operations may involve traversing many pieces of metadata not related to the single file system object.
[0010] To address these issues, examples described herein may comprise a first metadata representation in a file system including, for each of a plurality of file system objects of the file system, a respective data structure including each piece of metadata for that file system object, and a second metadata representation in the file system including the same metadata as the first metadata representation, and including, for each type of metadata, a respective data structure to store metadata of only that type for different ones of the file system objects. Such examples described herein may acquire a request to perform a file system operation associated with a given file system object of the file system and, in response to the request, perform a process native to the file system to modify given metadata for the given file system object in the first metadata representation in the file system and in a second metadata representation in the file system, before completion of the file system operation, wherein completion of the file system operation is contingent upon completion of modifying the given metadata in both the first and second metadata representations.
[0011] In this manner, examples described herein may provide in a file system both a first metadata representation storing metadata for respective file system objects together, and a second metadata representation storing metadata of the same type together, for different file system objects, to thereby improve the efficiency of analytics operations involving at least one type of metadata across different file system objects (by using the second metadata representation) while maintaining efficiency for operations using multiple different types of metadata for a single file system object (by using the first metadata representation).
[0012] Examples described herein may update the same metadata in both the first and second metadata representations in a transactional manner so that both metadata representations are maintained up to date after each file system operation that modifies any metadata. For example, in response to a request to perform a file system operation that may involve modification of a given piece of metadata, examples described herein may modify the given piece of metadata in both the first and second metadata representations before completion of the requested file system operation to maintain both representations up to date in a transactional manner as described above. In this manner, the most up to date metadata is accessible in each metadata representation for requests accessing either representation.
[0013] Examples described herein may also maintain each of the metadata representations in the file system and may modify each of the metadata representations using a process native to the file system (e.g., perform the process in kernel space of an operating system) to provide an efficient technique for updating both metadata representations, without accessing and updating one or the other outside of the file system (e.g., in middleware or via a middleware implementation, for example).
[0014] in this manner, by maintaining in a file system both the first and second metadata representations and updating both natively in the file system before completion of any file system operation modifying metadata, examples described herein may efficiently keep both of the metadata representations updated in a transactional manner, such that they are both up to date after each file system operation. In this manner, examples described herein may improve the efficiency of certain analytics operations performed by a file system while maintaining efficiency for operations performed by a file system accessing multiple pieces of metadata for a single file system object, and also provide for accuracy of operations utilizing either of the metadata representations by keeping both up to date at each operation of the file system that modifies metadata.
[0015] Referring now to the drawings, FIG. 1 is a block diagram of an example computing device 100 including instructions to perform a process native to a file system to modify metadata in first and second metadata representations. Computing device 100 includes a processing resource 110 and a machine-readable storage medium 120 comprising (e.g., encoded with) instructions 121 (including instructions 122 and 124) executable by processing resource 1 0 to implement functionalities described herein in relation to FIG. 1. In some examples, storage medium 120 may include additional instructions. In other examples, the functionalities described herein in relation to instructions 121 , and any additional instructions described herein in relation to storage medium 120, may be implemented as engines comprising any combination of hardware and programming to implement the functionalities of the engines, as described below.
[0016] in the example of FIG. 1 , computing device 100 may comprise at least a portion of a file system that includes a plurality of file system objects and file system instructions 121 , which include instructions 122 and 124, File system instructions 121 may be instructions that at least partially implement the file system, in the example of FIG. 1 , computing device 100 may further include file system data 114 of the file system. File system data 114 may include a first metadata representation 140 and a separate second metadata representation 50, different from the first metadata representation 150. in examples described herein, first and second metadata representations 140, 150 may each be stored in at least one machine- readable storage medium of computing device 100. In examples described herein, a "metadata representation" may be an organized collection of metadata. As described below, in some examples, a metadata representation may comprise metadata in a plurality of data structures.
[0017] in the example of FIG. 1 , first metadata representation 140 may include, for each of a plurality of file system objects of the file system, a respective data structure 142, 144, etc., including each piece of metadata for that file system object. For example, first metadata representation 140 may include a first file system object data structure 142 associated with a first file system object of the file system (e.g., a file or directory) and that includes each piece of metadata 142A, 142B, 142C, etc., associated with the first file system object in the file system. First metadata representation 140 may also include a second file system object data structure 144 associated with a second file system object of the file system (e.g., a file or directory) and that includes each piece of metadata 144A, 144B, 144C, etc., associated with the second file system object in the file system. Although two file system object data structures 142 and 144 are shown in FIG. 1 , in some examples, first metadata representation 140 may include additional file system object data structures. For example, first metadata representation 140 may include a respective file system object data structure associated with more than two different file system objects in the file system, and may include a respective file system object data structure associated with each file system object in the file system.
[0018] in examples described herein, "metadata" may include data about or otherwise associated with a file system object (such as a file or directory) in a file system. Examples of metadata for a file system object may include a size of the file system object, access time for the file system object, modify time for the file system object, information indicating the owner of the file system object, information indicating access permission(s) for the file system object, and the like. In some examples, each of the file system object data structures (142, 144, etc.) of first metadata representation 140 (i.e., associated with respective file system objects) may be a respective inode of the file system representing a respective one of the file system objects of the file system. In such examples, each inode may represent a respective one of the file system objects of the file system and include each piece of metadata for the file system object maintained in the file system, including identifier(s) for the file system object (e.g., an inode number, etc.). In other examples, the file system object data structures of first metadata representations 140 may be other types of data structures. For example, the file system object data structures 142, 144, etc., may be respective vnodes for file system objects of the file system.
[0019] in the example of FIG. 1 , second metadata representation 150 may include the same metadata as the first metadata representation 140, organized in a different manner. For example, second metadata representation 150 may include, for each type of metadata among the metadata of first metadata representation 140, a respective data structure 152, 154, etc., to store metadata of only that type for different ones of the file system objects. In examples described herein, a "type" of metadata may include metadata for a particular attribute or characteristic of file system objects (e.g., size, owner, identifier, etc.). For example, one type of metadata is file system object size, while other types of metadata include owner, modify time, access time, etc. Other example types of metadata include information for each different type of permission related to a file system object (e.g., owner read permission, owner write permission, group read permission, group write permission, etc.). Because first metadata representation 140 is organized via a plurality of file system object data structures 142, 144, etc., each including metadata of different types for a respective file system object, each of the file system object data structures may conceptually resemble a row of a table or similar data structure, and first metadata representation 140 may be referred to herein as a "row-oriented" metadata representation.
[0020] in the example of FIG. 1 , second metadata representation 150 may include a first type data structure 152 that includes metadata 142A, 144A, etc., of only the first type for a plurality of different file system objects of the file system. For example, first type data structure 152 may include first type metadata 142A for a first file system object (associated with first file system object data structure 142), include first type metadata 144A for a second file system object (associated with second file system object data structure 144), while excluding any metadata of a different type (i.e. , not of the first type). Although in the example of FIG. 1 , first type data structure 152 is illustrated as including two pieces of metadata of the first type, in some examples, first type data structure 152 may include further pieces of metadata of the first type associated with further file system objects. For example, first type data structure 152 may include respective first type metadata for each of a majority of the file system objects of the file system, or for each of the file system objects of the file system,
[0021] In the example of FIG, 1 , second metadata representation 150 may include further data structure(s) each including metadata of only a respective type for different file system objects of the file system, as described above in relation to first type data structure 152, For example, second metadata representation 150 may include a second type data structure 154 that includes metadata 142B, 144B, etc., of only the second type for a plurality of different file system objects of the file system, and excluding any metadata of a different type (i.e., not of the second type). In some examples, second metadata representation 150 may include, for at least a majority of the types of metadata in the file system, a respective data structure including metadata of only a respective type for different file system objects of the file system, as described above in relation to data structures 152, 154. In some examples, second metadata representation 150 may include, for each type of metadata in the file system, a respective data structure including metadata of only a respective type for different file system objects of the file system, as described above in relation to data structures 152, 154.
[0022] Because second metadata representation 150 is organized via a plurality of metadata type data structures 152, 154, etc., each including metadata of a respective type for different file system objects, each of the metadata type data structures may conceptually resemble a column of a table or similar data structure, and second metadata representation 150 may be referred to herein as a "column-oriented" metadata representation. In some examples, each metadata type data structure, 152, 154, etc, may include only metadata of a respective type, as described above. In other examples, for each type of metadata, each respective metadata type data structure may include metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata. For example, in some examples, first type metadata data structure 152 may include metadata of the first type 142A, 144A, etc., and index metadata associated with each piece of metadata of the first type, and exclude any other type of metadata (i.e., other that the first type and the index metadata), in such examples, each piece of metadata of the first type may be associated with a respective one of the pieces of index metadata identifying a file system object with which the respective metadata of the first type is associated. For example, index metadata may include identifiers such as inode numbers or the like, in such examples, each data structure of second metadata representation 150 may include pieces of metadata of a particular type each associated with a respective identifier (i.e., index metadata) identifying a file system object that the piece of metadata is associated with. [0023] As noted above, file system instructions 121 may include instructions 122 and 124 of the file system. In the example of FIG. 1 , instructions 122 may acquire a request 180 to perform a file system operation associated with a given file system object of the file system. In some examples, the request 180 may be acquired in any suitable manner. For example, request 180 may be acquired by instructions 122 in response to user input acquired by the file system, may be acquired from a tool or system external to the file system, may be invoked by the file system itself, or in any other suitable manner, in some examples, request 180 may be acquired as a call to a function of the file system, a request or command to invoke such a function, or the like. In examples described herein, the file system operation requested may be any suitable file system operation that operates on file system object(s) and modifies metadata for the file system object(s). Examples of such file system operations may include a write operation, a rename operation, an operation to change permission(s), an open operation, a truncate operation, etc.
[0024] In response to request 180, instructions 124 may perform a process native to the file system to modify given metadata for the given file system object in the first metadata representation 140 and in the second metadata representation 150 in the file system, before completion of the file system operation, wherein completion of the file system operation is contingent upon completion of modifying the given metadata in both the first and second metadata representations 140 and 150. For example, the request 180 may be a request to perform a particular file system operation (e.g., a write operation) on a given file system object, which may include modifying given metadata for the given file system object (e.g., size, modify time, etc.), in such examples, instructions 124 may perform a process native to the file system (e.g., with instructions 124 of the file system) to modify the given metadata for the given file system object in the first metadata representation 140 and in the second metadata representation 150.
[0025] For example, in response to request 180, instructions 124 may modify 182 the given metadata in first metadata representation 140 and may modify 184 the same given metadata in second metadata representation 150, each before completion of the requested file system operation. In such examples, completion of the requested file system operation by instructions 124 may be contingent upon completion of modifying the given metadata in both the first and second metadata representations 140 and 150. In such examples, instructions 124 may wait for completion of the modification of the given metadata in both the first and second metadata representations 140 and 150 before returning from execution of the requested file system operation.
[0026] As an example, the request 180 may be a request to perform a write operation with the file system on a given file system object, which may include modifying at least the size and modify time metadata for the given file system object. In such examples, instructions 124 may perform a process native to the file system to modify at least the size and modify time metadata for the given file system object in the first metadata representation 140 and the second metadata representation 150 before completion of the write operation by the file system. In such examples, as part of the native process, instructions 124 may modify 182 at least the size and modify time metadata for the given file system object in a file system object data structure (e.g., an inode) of first metadata representation 140 for the given file system object.
[0027] In such examples, as part of the native process, instructions 124 may further modify 184 at least the size and modify time metadata for the given file system object in the second metadata representation 150 by modifying the size of the given file system object in a data structure storing size type metadata (e.g., first type data structure 152), and modifying the modify time of the given file system object in a data structure storing modify time type metadata (e.g., second type data structure 154). In such examples, instructions 124 may modify the size and a modify time metadata in both the first and second metadata representations 140 and 150 before completion of the requested write operation, and the completion of the requested write operation by instructions 124 may be contingent upon completion of modifying the size and modify time in both the first and second metadata representations 140 and 150 such that instructions 124 wait until the modifications in both metadata representations are complete before the write operation returns as completed. Although modification of size and modify time metadata is described above, in other examples, more, fewer, or other pieces of metadata may be modified in the first and second metadata representations 140 and 150.
[0028] in some examples, the process native to the file system may be performed in kernel space of an operating system of computing device 100 in which the file system operates, and not in user space of the operating system or any other space outside of kernel space of the operating system. In examples described herein, instructions, engines, etc., may "acquire" information either actively (e.g., by retrieving the information), passively (e.g., by receiving the information), or in any other suitable manner. As used herein, a "computing device" may be a server, blade enclosure, desktop computer, laptop (or notebook) computer, workstation, tablet computer, mobile phone, smart device, or any other processing device or equipment including a processing resource, in examples described herein, a processing resource may include, for example, one processor or multiple processors included in a single computing device or distributed across multiple computing devices,
[0029] As used herein, a "processor" may be at least one of a centra! processing unit (CPU), a semiconductor-based microprocessor, a graphics processing unit (GPU), a field- programmable gate array (FPGA) configured to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a machine- readable storage medium, or a combination thereof. Processing resource 110 may fetch, decode, and execute instructions stored on storage medium 120 to perform the functionalities described below. In other examples, the functionalities of any of the instructions of storage medium 120 may be implemented in the form of electronic circuitry, in the form of executable instructions encoded on a machine-readable storage medium, or a combination thereof, [0030] As used herein, a "machine-readable storage medium" may be any electronic, magnetic, optical, or other physical storage apparatus to contain or store information such as executable instructions, data, and the like. For example, any machine-readable storage medium described herein may be any of Random Access Memory (RAM), volatile memory, non-volatile memory, flash memory, a storage drive (e.g., a hard drive), a solid state drive, any type of storage disc (e.g., a compact disc, a DVD, etc.), and the like, or a combination thereof. Further, any machine-readable storage medium described herein may be non- transitory. In examples described herein, a machine-readable storage medium or media is part of an article (or article of manufacture). An article or article of manufacture may refer to any manufactured single component or multiple components. The storage medium may be located either in the computing device executing the machine-readable instructions, or remote from but accessible to the computing device (e.g., via a computer network) for execution, in the example of FIG. 1 , storage medium 120 may be implemented by one machine-readable storage medium, or multiple machine-readable storage media.
[0031] in examples described herein, computing device 100 may communicate with components implemented on separate computing device(s) via a network interface device of computing device 100. in examples described herein, a "network interface device" may be a hardware device to communicate over at least one computer network. In some examples, a network interface may be a network interface card (NIC) or the like. As used herein, a computer network may include, for example, a local area network (LAN), a wireless local area network (WLAN), a virtual private network (VPN), the Internet, or the like, or a combination thereof, in some examples, a computer network may include a telephone network (e.g., a cellular telephone network).
[0032] in some examples, instructions 121 may be part of an installation package that, when installed, may be executed by processing resource 110 to implement the functionalities described herein in relation to instructions 121. In such examples, storage medium 120 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, instructions 121 may be part of an application, applications, or component(s) already installed on a computing device 100 including processing resource 110. in such examples, the storage medium 120 may include memory such as a hard drive, solid state drive, or the like, in some examples, functionalities described herein in relation to FIG. 1 may be provided in combination with functionalities described herein in relation to any of FIGS. 2- 5.
[0033] FIG. 2 is a block diagram of an example computing environment including an example computing device 100 to store pieces of metadata of a respective type for different file system objects such that they are clustered adjacently in physical storage, in the example of FIG. 2, the example computing environment includes a computing device 100 as described above in relation to FIG. 1 , including processing resource 110, storage medium 120, file system instructions 121 , and file system data 114 including first and second metadata representations 140 and 150 stored in at least one machine-readable storage medium of computing device 100, as described above, in the example of FIG. 2, computing device 100 includes physical storage 170, which may be implemented by one or multiple machine-readable storage devices of or associated with computing device 100. In examples described herein, first and second metadata representations 140 and 150 may be stored at least partially on physical storage 70 or at least partially on at least one machine-readable storage medium different from physical storage 170. The example computing environment of FIG. 2 also includes an external tool 160 separate from computing device 100 that may interact with the file system implemented at least partially by file system instructions 121. In examples described herein, such externals tool(s) may include, for example, file system consistency check (fsck) tools, search or query tools (e.g., applications), or the like.
[0034] As described above in relation to FIG. 1 , first metadata representation 140 may include, for each of a plurality of file system objects of the file system, a respective data structure including each piece of metadata for that file system object. For example, first metadata representation 140 may include a first file system object data structure 142 associated with a first file system object of the file system and including different types of metadata (142A, 142B, 142C, etc.) associated with the first file system object, a second file system object data structure 144 associated with a second file system object of the file system and including different types of metadata (144A, 144B, 144C, etc) associated with the second file system object, and in some examples, additional respective file system object data structures associated with further respective file system objects.
[0035] In some examples, first metadata representation 140 is to store metadata in physical storage 170 such that, for each of the plurality of file system objects, ail of the metadata for that file system object is clustered adjacently in physical storage 170 without intervening metadata of another file system object between the metadata of that file system object. For example, as shown in the example of FIG. 2, first metadata representation 140 may store all of the metadata of first file system object data structure 142 (e.g., metadata 142A, 142B, 142C, etc.) in physical storage such that the ail of the metadata for the first file system object is clustered adjacently in physical storage 170 without intervening metadata of another file system object between the metadata of the first file system object.
[0036] As shown in the example of FIG. 2, for example, the metadata 142A, 142B, 142C, etc., of data structure 142 and associated with the first file system object is stored adjacently in physical storage 170 without intervening metadata of any other file system object between the metadata of that the first system object, in such examples, for each file system object and associated file system object data structure of first metadata representation 140, ail of the metadata of a respective file system object may be stored adjacently in physical storage 170 such that it may be accessed (e.g., read) sequentially from physical storage without accessing metadata of any other file system object. In such examples, first metadata representation 140 may provide for efficient access of ail of the metadata of a given file system object. In some examples, as described above, the data structures 142, 144, etc., of first metadata representation comprise respective inodes for each of the plurality of file system objects, such that each of the data structures 142, 144, etc., is a respective inode for a respective one of the file system objects of the file system.
[0037] As described above in relation to FIG. 1 , second metadata representation 150 may include the same metadata as first metadata representation 140, as described above. In some examples, second metadata representation 150 may comprise, for each type of metadata, a respective data structure 152, 154, etc., to store metadata of only that type for different ones of the file system objects, as described above in relation to FIG. 1.
[0038] For example, as described above in relation to FIG. 1 , second metadata representation 150 may include a first type data structure 52 that includes metadata 142A, 144A, etc., of only the first type for a plurality of different file system objects of the file system (i.e., excluding metadata not of the first type), a second type data structure 154 that includes metadata 142B, 144B, etc., of only the second type for the plurality of different file system objects of the file system (i.e., excluding metadata not of the second type), and in some examples, additional respective metadata type data structure(s) each storing only a respective type of metadata for different file system objects,
[0039] In some examples, in the second metadata representation 150, each respective data structure is to store a plurality of pieces of metadata of a respective type for different file system objects such that they are clustered adjacently in physical storage without intervening metadata of another type between them. For example, as shown in the example of FIG. 2, second metadata representation 150 may store ail of the metadata of first type data structure 152 (e.g., metadata 142A, 144A, etc., of the first type) in physical storage such that the pieces of metadata of the first type of data structure 152 is clustered adjacently in physical storage 170 without intervening metadata of another type between them.
[0040] For example, as shown in the example of FIG. 2, the first type metadata 142A, 144A, etc., of data structure 152 is stored adjacently in physical storage 170 without intervening metadata of any other type between the metadata of the first type. In such examples, for each data structure of second metadata representation 150 associated with a respective type of metadata, all of the metadata of the respective type may be stored adjacently in physical storage 170 such that it may be accessed (e.g., read) sequentially from physical storage without accessing metadata of any other type. In such examples, second metadata representation 150 may provide for efficient access of some or all of the metadata of a given type. In some examples, for each type of metadata, each respective metadata type data structure of second metadata representation 150 may include metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata, as described above.
[0041] in some examples, second metadata representation 150 may store all or a majority of the types of metadata associated with all or a majority of the file system objects of the file system, and stores such metadata by type as described above. In some examples, second metadata representation 150 may comprise at least one log-structured merge-tree (LS ) to at least partially implement the second metadata representation 150. In such examples, implementation via LS (s) may enable instructions 124 to modify metadata in the second metadata representation 150 efficiently with good performance time when updating second metadata representation 150 before completion of a file system operation that involves modifying metadata, as described above.
[0042] As described above in the example of FIG. 1 , instructions 122 may acquire a request 180 to perform a file system operation associated with a given file system object of the file system. As described above, in response to request 180, instructions 124 may perform a process native to the file system to modify given metadata for the given file system object in the first and second metadata representations 140, 150 in the file system, before completion of the file system operation, and wherein completion of the requested file system operation is contingent upon completion of modifying the given metadata in both the first and second metadata representations 140, 150.
[0043] In the example of FIG. 2, instructions 122 may acquire an analytics request 192 related to a given type of metadata, in examples described herein, an "analytics request" may be a request for a file system to at least one of access, analyze, and return results related to a given type of metadata for a plurality of different file system objects. In response to an analytics request 192 related to a given type of metadata, instructions 124 may access a plurality of a pieces of metadata of the given type from second metadata representation 150 without accessing metadata of another, different type.
[0044] For example, instructions 122 may acquire an analytics request 192 related to size metadata for different file system objects. For example, instructions 122 may acquire an analytics request 192 to identify all of the file system objects of the file system having a size greater than 50 MB. In such examples, in response to the request 192, instructions 124 may access a plurality of a pieces of size metadata for different file system objects from a data structure 152 of second metadata representation 150 storing size metadata, and use that metadata to determine each file system object with a size greater than 50 MB. In such examples, using the data structure storing size metadata (which is stored adjacently in physical storage, as described above) instructions 124 may efficiently access size metadata for a plurality of different file system objects (i.e., without accessing much unrelated metadata) in determining a result for the analytics request. After determining the result, instructions 124 may return the result 196.
[0045] in some examples, request 192 may be acquired by instructions 122 in response to user input acquired by the file system, may be acquired from a tool or system external to the file system (e.g., external tool 160), may be invoked by the file system itself, or in any other suitable manner. In some examples, request 192 may be acquired as a call to a function of the file system (e.g., an analytics function), a request or command to invoke such a function, or the like.
[0048] In the example of FIG. 2, the analytics request 192 may be a request 192 received from a tool 160 external to the file system implemented at least in part by instructions 121 of computing device 100. in such examples, instructions 124 may provide, to the external tool 160, a result 196 of the analytics request 192, based on the metadata accessed in response to the request, as described above. [0047] in some examples, in response to a request related to a particular file system object of the file system, instructions 124 may access a plurality of a pieces of metadata of different types for the particular file system object from first metadata representation 140. In some examples, request 194 may be acquired by instructions 122 in response to user input acquired by the file system, may be acquired from a tool or system external to the file system (e.g., external tool 180), may be invoked by the file system itself, or in any other suitable manner. In some examples, request 194 may be acquired as a call to a function of the file system (e.g., an analytics function), a request or command to invoke such a function, or the like.
[0048] For example, in response to a file system read request 194 related to a first file system object of the file system, instructions 124 may access a plurality of a pieces of metadata of different types for the first file system object from first metadata representation 140. In examples described herein, examples described herein may efficiently access multiple pieces of metadata for a given file system object using the first metadata representation 140, and efficiently access metadata of the same type for different file system objects using the second metadata representation 150, as described above. In examples described herein, whether the file system (i.e., instructions 124) accesses the first metadata representation 140 or the second metadata representation 150 may depend on the type of the request, which may relate to a type of file system function called by the request. For example, file system functions implemented by instructions 124 to perform analytics operations (i.e., in response to analytics requests) involving a given type of metadata for a plurality of different file system objects may access metadata in the second metadata representation 150, while functions implemented by instructions 124 to perform operations involving a given file system object (e.g., read a given file system object) may access metadata in the first metadata representation 140. in some examples, functionalities described herein in relation to FIG. 2 may be provided in combination with functionalities described herein in relation to any of FIGS. 1 and 3-5.
[0049] FIG. 3 is a block diagram of an example system 300 including an example file system 302 to perform a process in kernel space of an operating system to modify given metadata a row-oriented metadata representation and a column-oriented metadata representation. In the example of FIG. 3, a system 300 may be implemented by at least one computing device and may include a file system 302 implemented at least in part by engines 322, 324, and 328, which may be any combination of hardware and programming to implement the functionalities of the engines described herein. System 302 may include physical storage 170, as described above. File system 302 may include a plurality of file system objects 317, each having associated metadata. In the example of FIG. 3, the plurality of file system objects 317 include a first file system object 342, a second file system object 344, and in some examples, further file system objects.
[0050] in the example of FIG. 3, file system 302 includes a row-oriented metadata representation 140 (as described above in relation to the first metadata representation 140 of FIGS. 1 and 2). Row-oriented metadata representation 140 may store the metadata for each of the file system objects, and may include for each file system object, a respective data structure 142, 144, etc., to store metadata associated with that file contiguously in physical storage 170. In some examples, the row-oriented metadata representation 140 may store ail of the metadata for each of the plurality of file system objects 317 of file system 302.
[0051] For example, row-oriented metadata representation 140 may include a first file system object data structure 142 to store metadata of different types associated with first file system object 342 (e.g., metadata 142A, 142B, 142C, etc.) contiguously in physical storage 170, as described above, in some examples, row-oriented metadata representation 140 may further include a second file system object data structure 144 to store metadata of different types associated with first file system object 344 (e.g., metadata 144A, 144B, 144C, etc.) contiguously in physical storage 170, as described above, in some examples, row-oriented metadata representation 140 may store further file system object data structure(s) for respective further file system objects as described above in relation to data structures 142 and 144. in some examples, the data structures 142, 144, etc., of row-oriented metadata representation 140 may comprise respective inodes representing corresponding file system objects 342, 344, etc., as described above, such that each of the data structures 142, 144, etc., is a respective inode for a respective one of the file system objects 342, 344, etc., of the file system.
[0052] in the example of FIG. 3, file system 302 may include a column-oriented metadata representation 150 (as described above in relation to the second metadata representation 150 of FIGS. 1 and 2). Column-oriented metadata representation 50 may store, for each of at least a majority of different types of metadata for the file system objects 317, a respective data structure to store metadata of only that type for different ones of the file system objects and such that a plurality of pieces of metadata of that type for different file system objects are clustered adjacently in physical storage 170 without intervening metadata of another type between them.
[0053] For example, column-oriented metadata representation 150 may include a first type data structure 152 to store metadata of a first type (e.g., metadata 142A, 144A, etc.) associated with different file system objects (e.g., objects 342, 344, etc.) contiguously in physical storage 170 without intervening metadata of another type between them, as described above. In some examples, column-oriented metadata representation 150 may further include a second type data structure 154 to store metadata of a second type (e.g., metadata 142B, 144B, etc.) associated with different file system objects (e.g., objects 342, 344, etc.) contiguously in physical storage 170 without intervening metadata of another type between them, as described above.
[0054] In some examples, column-oriented metadata representation 150 may store further metadata type data structure(s) storing metadata of a respective type for different file system objects, as described above in relation to data structures 152 and 154. In some examples, coiumn-orienfed metadata representation 150 may store, for each of at least a majority of different types of metadata for at least a majority of the file system objects 317 of file system 302, a respective data structure to store metadata of only a respective type. In some examples, column-oriented metadata representation 150 may store, for each different type of metadata among each of the file system objects 317 of file system 302, a respective data structure to store metadata of only a respective type, in some examples, the column-oriented metadata representation 150 may store ail of the metadata for each of the plurality of file system objects 317 of file system 302. In examples described herein, types of metadata may include file system object size, modify time, owner, and a plurality of different permission attributes, or any other types described above, or the like, or a combination thereof. In some examples, for each type of metadata, each respective metadata type data structure of row-oriented metadata representation 150 may include metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata, as described above.
[0055] in the example of FIG. 3, an acquire engine of file system 302 may acquire a request 180 to perform a file system operation associated with a first file system object of the file system 342, as described above. In response to the request, a modify engine 324 may perform a process of the file system to modify given metadata for the first file system object 342 in the row-oriented metadata representation 140 and in the column-oriented metadata representation 140 before completion of the requested file system operation, in some examples, the modify engine 324 may perform the process in kernel space 330 of an operating system of system 300 (e.g., computing device 300), wherein the file system operates in the operating system of system 300.
[0056] In the example of FIG. 3, the requested file system operation may be a suitable file system operation as described above in relation to FIG. 1 , and modify engine 324 may modify the given metadata for the first file system object 342 in the row-oriented and column-oriented metadata representations 140 and 150, as described above in relation to FIGS. 1 and 2. in some examples, modify engine 324 may modify the given metadata for the file system object 342 in first file system object data structure 142 of row-oriented metadata representation 140 and may modify the given metadata in at least one of the data structures 152, 154, etc, of column-oriented metadata representation 150, In some examples, modify engine 324 may modify the given metadata for the first file system object 324 in the row-oriented metadata representation 140 and in the column-oriented metadata representation 150, before completion of the requested file system operation, and wherein completion of the requested file system operation by modify engine 324 is contingent upon completion of modifying the given metadata in both the row-oriented and column-oriented metadata representations 140 and 150, as described above.
[0057] in some examples, the above-described process of engine 324 of file system 302 to modify the given metadata, in response to the request 180 to perform the file system operation, may be integrated with a crash-consistency mechanism of the file system implemented by engine 328. In such examples, the process may be integrated with the crash-consistency mechanism such that, when a file system crash occurs after beginning the file system operation and before completing the modification of the given metadata in at least one of the column-oriented metadata representation 150 and the row-oriented metadata representation 140, engine 324 of the file system may complete the modification of the given metadata in the at least one of the column-oriented metadata representation 150 and the row-oriented metadata representation 140 after recovering from the crash and before the completion of the requested file system operation. That is, in such examples, after recovering from the crash, engine 324 may complete the modification of the given metadata in whichever of representations 150 and 140 the modification was not completed in before the crash.
[0058] in some examples, engine 322 may acquire an analytics request related to a given type of metadata, as described above, in such examples, in response to the analytics request, modify engine 324 may access a plurality of a pieces of metadata of the given type from column-oriented metadata representation 150 without accessing metadata of a different type. For example, engine 324 may access the metadata of the given type from a data structure for the metadata of the given type of column-oriented metadata representation 150.
[0059] in some examples, engine 322 may acquire a file system read request related to a particular one of the file system objects 317. In response to the read request, modify engine 324 may access a plurality of a pieces of metadata of different types for the particular file system object from row-oriented metadata representation 140. For example, the file system read request may be related to first file system object 342, and in response modify engine 324 may access a plurality of a pieces of metadata of different types for first file system object 342 from first file system object data structure 142 of row-oriented metadata representation 140. In such examples, engine 324 may access metadata of different types for first file system object 342 stored adjacently in physical storage 170, as described above. In other examples, modify engine 324 may access a plurality of a pieces of metadata of different types for a particular file system object from row-oriented metadata representation 140 in response to a request to perform other types of file system operations related to a particular one of file system objects 317.
[0060] in some examples, each of the respective data structures 152, 154, etc., of column-oriented metadata representation 150 stores metadata of a particular type for a corresponding collection of the file system objects 317 whose respective data structures 142, 144, etc., in row-oriented metadata representation 140 are stored on a respective single page of physical storage 170. In such examples, each of the data structures 152, 154, etc. , may store metadata of a particular type for fewer than ail of the file system object 317 of file 302, and may store the metadata of a particular type whose respective data structures 142, 144, etc., (e.g., inodes) are stored on a single page in physical storage 170.
[0061] in some examples, for at least one of the respective data structures 152, 154, etc., of column-oriented metadata representation 150, the metadata of a particular type stored in the respective data structure may partitioned in physical storage according to a namespace structure of file system 302. For example, the metadata may be partitioned such that first pieces of metadata of the respective data structure in the same portion of the namespace (e.g., a first directory) may be stored adjacently on physical storage 170, as described above, but second pieces of the metadata of the respective data structure that are in a different portion of the namespace (e.g., a second directory different than the first directory) are not stored adjacent to the first pieces. In such examples, the second pieces of metadata may be stored adjacently to one another in physical storage 170, but separate from the first pieces of the metadata.
[0062] System 300 may be implemented by at least one computing device and may include at least engines 322, 324, and 328, which may be any combination of hardware and programming to implement the functionalities of the engines described herein, in examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, the programming for the engines may be processor executable instructions stored on at least one non-transitory machine-readable storage medium and the hardware for the engines may include at least one processing resource to execute those instructions. In such examples, the at least one machine-readable storage medium may store instructions that, when executed by the at least one processing resource, implement the engines of file system 302. In such examples, system 300 may include the at least one machine-readable storage medium storing the instructions and the at least one processing resource to execute the instructions, or one or more of the at least one machine- readable storage medium may be separate from but accessible to system 300 and the at least one processing resource (e.g., via a computer network), in some examples, the hardware and programming implementing engines 322, 324, and 326 may be divided among multiple computing devices.
[0063] in some examples, the instructions can be part of an installation package that, when installed, can be executed by the at least one processing resource to implement at least the engines of system 300. in such examples, the machine-readable storage medium may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, the instructions may be part of an application, applications, or component already installed on system 300 including the processing resource. In such examples, the machine- readable storage medium may include memory such as a hard drive, solid state drive, or the like, in other examples, the functionalities of any engines of system 300 may be implemented in the form of electronic circuitry. System 300 may also include a network interface device, as described above, to communicate with other components via a network. In some examples, functionalities described herein in relation to FIG. 3 may be provided in combination with functionalities described herein in relation to any of FIGS. 1-2 and 4-5.
[0064] FIG. 4 is a flowchart of an example method 400 for performing a native file system operation in kernel space to modify given metadata in row-oriented and column-oriented metadata representations. Although execution of method 400 is described below with reference to system 300 of FIG. 3, other suitable systems for the execution of method 400 can be utilized (e.g., computing device 100 of FIG. 1 or FIG. 2). Additionally, implementation of method 400 is not limited to such examples.
[0085] At 405 of method 400, acquire engine 322 of file system 302 may acquire a request 180 to perform a file system operation associated with a given file system object of file system 302. In response to the request, at 410, modify engine 324 may perform a native file system process of file system 302 (in kernel space 330 of an operating system in which file system 302 operates) to modify given metadata for the given file system object in a row-oriented metadata representation 140 in file system 302 and in a column-oriented metadata representation 150 in file system 302, before completion of the file system operation. In some examples, completion of the requested file system operation by modify engine 324 may be contingent upon completion of modifying the given metadata in both the metadata representations 140 and 150. In such examples, engine 324 may wait for completion of the modification of the given metadata in both the metadata representations 140 and 150 before returning from execution of the requested file system operation.
[0086] In the example of FIG. 4, row-oriented metadata representation 140 includes, for each of a plurality of file system objects 317 of file system 302, a respective data structure 142, 144, etc., including each piece of metadata for that file system object, in some examples, column-oriented metadata representation 150 includes, for each type of metadata for file system objects 317, a respective data structure 152, 154, etc., including metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata, as described above. In such examples, the metadata of each respective data structure of column-oriented metadata representation 150 may be stored such that a plurality of pieces of metadata of the respective data structure of a respective type for different file system objects are clustered adjacently in physical storage without intervening metadata excluded from the respective data structure.
[0067] At 415 of method 400, in response to an analytics request related to a given type of metadata, engine 324 may access a plurality of pieces of metadata of the given type from a respective data structure including metadata of the given type in the column- oriented metadata representation without accessing metadata of a type excluded from the respective data structure.
[0088] Although the flowchart of FIG. 4 shows a specific order of performance of certain functionalities, method 400 is not limited to that order. For example, the functionalities shown in succession in the flowchart may be performed in a different order, may be executed concurrently or with partial concurrence, or a combination thereof. In some examples, functionalities described herein in relation to FIG. 4 may be provided in combination with functionalities described herein in relation to any of FIGS. 1-3 and 5.
[0069] FIG. 5 is a flowchart of an example method 500 for accessing metadata of different types for a file system object from a row-oriented metadata representation. Although execution of method 500 is described below with reference to system 300 of FIG. 3, other suitable systems for the execution of method 500 can be utilized (e.g., computing device 100 of FIG. 1 or FIG. 2). Additionally, implementation of method 500 is not limited to such examples,
[0070] At 505 of method 500, acquire engine 322 of file system 302 may acquire a request 180 to perform a file system operation associated with a given file system object of file system 302. in response to the request, at 510, modify engine 324 may perform a native file system process of file system 302 (in kernel space 330 of an operating system in which file system 302 operates) to modify given metadata for the given file system object in a row-oriented metadata representation 140 in file system 302 and in a column-oriented metadata representation 150 in file system 302, before completion of the file system operation. In some examples, completion of the requested file system operation by modify engine 324 may be contingent upon completion of modifying the given metadata in both the metadata representations 140 and 150. In such examples, engine 324 may wait for completion of the modification of the given metadata in both the metadata representations 140 and 150 before returning from execution of the requested file system operation.
[0071] in the example of FIG. 5, row-oriented metadata representation 140 and the column-oriented metadata representation 150 may each be as described above in relation to FIG. 4. At 515, in response to an analytics request related to a given type of metadata, engine 324 may access a plurality of pieces of metadata of the given type from a respective data structure including metadata of the given type in the column-oriented metadata representation without accessing metadata of a type excluded from the respective data structure. In some examples, the analytics request may be acquired by engine 322 of file system 302 from a tool external to file system 302, as described above. In such examples, at 520, engine 324 may provide a result of the analytics request based on the accessed metadata to the external tool.
[0072] in some examples, engine 322 may acquire a file system read request related to a particular one of the file system objects. In such examples, in response to the file system read request, at 525 engine 324 may access a plurality of a pieces of metadata of different types for the particular file system object from row-oriented metadata representation 140.
[0073] Although the flowchart of FIG. 5 shows a specific order of performance of certain functionalities, method 500 is not limited to that order. For example, the functionalities shown in succession in the flowchart may be performed in a different order, may be executed concurrently or with partial concurrence, or a combination thereof. In some examples, functionalities described herein in relation to FIG. 5 may be provided in combination with functionalities described herein in relation to any of FIGS. 1-4. All of the features disclosed in this specification (including any accompanying claims, abstract and drawings), and/or ail of the elements of any method or process so disclosed, may be combined in any combination, except combinations where at least some of such features and/or elements are mutualiy exclusive.

Claims

What is claimed is:
1. An article comprising at least one non-transitory machine-readable storage medium comprising instructions, of a file system, executable by a processing resource to:
acquire a request to perform a file system operation associated with a given file system object of the file system; and
in response to the request, perform a process native to the file system to modify given metadata for the given file system object in a first metadata representation in the file system and in a second metadata representation in the file system, before completion of the file system operation, wherein completion of the file system operation is contingent upon completion of modifying the given metadata in both the first and second metadata representations;
wherein the first metadata representation includes, for each of a plurality of file system objects of the file system, a respective data structure including each piece of metadata for that file system object; and
wherein the second metadata representation includes the same metadata as the first metadata representation, and comprises, for each type of metadata, a respective data structure to store metadata of only that type for different ones of the file system objects.
2. The article of claim 1 , wherein, in the second metadata representation, each respective data structure is to store a plurality of pieces of metadata of a respective type for different file system objects such that they are clustered adjacently in physical storage without intervening metadata of another type between them.
3. The article of claim 1 , wherein the instructions to perform further comprise instructions to:
in response to an analytics request related to a given type of metadata, access a plurality of a pieces of metadata of the given type from the second metadata representation without accessing metadata of a different type.
4. The article of claim 3, wherein:
the analytics request is a request received from a tool external to the file system; and
the instructions to access further comprise instructions to provide, to the external tool, a result of the analytics request based on the accessed metadata.
5. The article of claim 1 , wherein the instructions to perform further comprise instructions to:
in response to a file system read request related to a particular one of the file system objects, access a plurality of a pieces of metadata of different types for the particular file system object from the first metadata representation;
wherein the data structures of the first metadata representation comprise respective inodes for each of the plurality of file system objects; and
wherein the second metadata representation comprises a log-structured merge- tree,
8. The article of claim 1 , wherein:
the first metadata representation is to store metadata such that, for each of the plurality of file system objects, all of the metadata for that file system object is clustered adjacently in physical storage without intervening metadata of another file system object between the metadata of that file system object; and
the second metadata representation stores all of the metadata for each of the plurality of file system objects.
7. A file system comprising:
a plurality of file system objects, each having associated metadata;
a row-oriented metadata representation to store the metadata for each of the file system objects, including, for each file system object, a respective data structure to store metadata associated with that file contiguously in physical storage;
a column-oriented metadata representation to store, for each of a majority of different types of the metadata for each of the file system objects, a respective data structure to store metadata of only that type for different ones of the file system objects and such that a plurality of pieces of metadata of that type for different file system objects are clustered adjacently in physical storage without intervening metadata of another type between them;
an acquire engine to acquire a request to perform a file system operation associated with a given file system object of the file system; and
a modify engine to, in response to the request, perform a process of the file system, in kernel space of an operating system, to modify given metadata for the given file system object in the row-oriented metadata representation and in the column-oriented metadata representation before completion of the file system operation,
8. The file system of claim 7, wherein the modify engine is further to:
in response to an analytics request related to a given type of metadata, access a plurality of a pieces of metadata of the given type from the column-oriented metadata representation without accessing metadata of a different type; and
in response to a file system read request related to a particular one of the file system objects, access a plurality of a pieces of metadata of different types for the particular file system object from the row-oriented metadata representation.
9. The file system of claim 7, wherein:
the row-oriented metadata representation and the column-oriented metadata representation each store all of the metadata for the plurality of file system objects;
the types of metadata include values for file attributes including size, modify time, owner, and a plurality of different permission attributes; and
the completion of the file system operation is contingent upon completion of modifying the given metadata in both the row-oriented and column-oriented metadata representations.
10. The file system of claim 7, wherein the process of the file system to modify the given metadata is integrated with a crash-consistency mechanism of the file system such that, when a file system crash occurs after beginning the file system operation and before completing the modification of the given metadata in at least one of the column-oriented metadata representation and the row-oriented metadata representation, the file system is to complete the modification of the given metadata in the at least one of the column- oriented metadata representation and the row-oriented metadata representation after recovering from the crash.
11. The file system of claim 7, wherein each of the respective data structures of the column-oriented metadata representation stores metadata of a particular type for a corresponding collection of the file system objects whose respective data structures in the row-oriented metadata representation are stored on a respective single page of physical storage.
12. The file system of claim 7, wherein, for at least one of the respective data structures of the column-oriented metadata representation, the metadata of a particular type stored in the respective data structure is partitioned in physical storage according to a namespace structure of the file system.
13. A method comprising:
acquiring, with a file system, a request to perform a file system operation associated with a given file system object of the file system;
in response to the request, performing a native file system process of the file system, in kernel space of an operating system, to modify given metadata for the given file system object in a row-oriented metadata representation in the file system and in a column- oriented metadata representation in the file system, before completion of the file system operation;
wherein the row-oriented metadata representation includes, for each of a plurality of file system objects of the file system, a respective data structure including each piece of metadata for that file system object; and
wherein the column-oriented metadata representation includes, for each type of metadata for the file system objects, a respective data structure including metadata of that type and respective index metadata for different ones of the file system objects, excluding any other type of metadata, and stored such that a plurality of pieces of metadata of the respective data structure for different file system objects are clustered adjacently in physical storage without intervening metadata excluded from the respective data structure; and
in response to an analytics request related to a given type of metadata, accessing a plurality of pieces of metadata of the given type from a respective data structure of the column-oriented metadata representation without accessing metadata of a type excluded from the respective data structure.
14. The method of claim 13, further comprising:
in response to a file system read request related to a particular one of the file system objects, accessing a plurality of a pieces of metadata of different types for the particular file system object from the row-oriented metadata representation.
15. The method of claim 13, further comprising:
providing, to a tool external to the file system, a result of the analytics request based on the accessed metadata,
wherein the analytics request is acquired by the file system from the external tool.
PCT/US2016/021401 2015-07-29 2016-03-08 File system metadata representations WO2017019128A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN3899/CHE/2015 2015-07-29
IN3899CH2015 2015-07-29

Publications (1)

Publication Number Publication Date
WO2017019128A1 true WO2017019128A1 (en) 2017-02-02

Family

ID=57886846

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/021401 WO2017019128A1 (en) 2015-07-29 2016-03-08 File system metadata representations

Country Status (1)

Country Link
WO (1) WO2017019128A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007088081A1 (en) * 2006-01-31 2007-08-09 International Business Machines Corporation Efficient data management in a cluster file system
US20080270451A1 (en) * 2007-04-24 2008-10-30 Interse A/S System and Method of Generating a Metadata Model for Use in Classifying and Searching for Information Objects Maintained in Heterogeneous Data Stores
US20110016085A1 (en) * 2009-07-16 2011-01-20 Netapp, Inc. Method and system for maintaining multiple inode containers in a storage server
US20130246335A1 (en) * 2011-12-27 2013-09-19 Mcafee, Inc. System and method for providing data protection workflows in a network environment
US20130346444A1 (en) * 2009-12-08 2013-12-26 Netapp, Inc. Metadata subsystem for a distributed object store in a network storage system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007088081A1 (en) * 2006-01-31 2007-08-09 International Business Machines Corporation Efficient data management in a cluster file system
US20080270451A1 (en) * 2007-04-24 2008-10-30 Interse A/S System and Method of Generating a Metadata Model for Use in Classifying and Searching for Information Objects Maintained in Heterogeneous Data Stores
US20110016085A1 (en) * 2009-07-16 2011-01-20 Netapp, Inc. Method and system for maintaining multiple inode containers in a storage server
US20130346444A1 (en) * 2009-12-08 2013-12-26 Netapp, Inc. Metadata subsystem for a distributed object store in a network storage system
US20130246335A1 (en) * 2011-12-27 2013-09-19 Mcafee, Inc. System and method for providing data protection workflows in a network environment

Similar Documents

Publication Publication Date Title
US11593037B2 (en) File system block-level tiering and co-allocation
JP6639420B2 (en) Method for flash-optimized data layout, apparatus for flash-optimized storage, and computer program
Wang et al. SSD in-storage computing for list intersection
US10824673B2 (en) Column store main fragments in non-volatile RAM and the column store main fragments are merged with delta fragments, wherein the column store main fragments are not allocated to volatile random access memory and initialized from disk
US9858303B2 (en) In-memory latch-free index structure
US8972337B1 (en) Efficient query processing in columnar databases using bloom filters
US7689574B2 (en) Index and method for extending and querying index
EP3519986B1 (en) Direct table association in in-memory databases
US11586629B2 (en) Method and device of storing data object
EP2778972B1 (en) Shared cache used to provide zero copy memory mapped database
CN103229164B (en) Data access method and device
US10678784B2 (en) Dynamic column synopsis for analytical databases
US9430492B1 (en) Efficient scavenging of data and metadata file system blocks
US9430503B1 (en) Coalescing transactional same-block writes for virtual block maps
Sarwat et al. Generic and efficient framework for search trees on flash memory storage systems
CN108628885B (en) Data synchronization method and device and storage equipment
Cruz et al. A scalable file based data store for forensic analysis
CN110352410B (en) Tracking access patterns of index nodes and pre-fetching index nodes
US10152482B2 (en) Method of speeding up access to design databases having large numbers of design units
Shen et al. An efficient LSM-tree-based SQLite-like database engine for mobile devices
US10185660B2 (en) System and method for automated data organization in a storage system
WO2017019128A1 (en) File system metadata representations
EP3696688B1 (en) Locking based on categorical memory allocation
US10664442B1 (en) Method and system for data consistency verification in a storage system
Omar et al. A scalable array storage for efficient maintenance of future data

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16830952

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16830952

Country of ref document: EP

Kind code of ref document: A1