US20110276578A1 - Obtaining file system view in block-level data storage systems - Google Patents
Obtaining file system view in block-level data storage systems Download PDFInfo
- Publication number
- US20110276578A1 US20110276578A1 US12/773,852 US77385210A US2011276578A1 US 20110276578 A1 US20110276578 A1 US 20110276578A1 US 77385210 A US77385210 A US 77385210A US 2011276578 A1 US2011276578 A1 US 2011276578A1
- Authority
- US
- United States
- Prior art keywords
- block
- file
- level
- map
- storage medium
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000013500 data storage Methods 0.000 title description 4
- 238000004590 computer program Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000010586 diagram Methods 0.000 description 18
- 101100226366 Arabidopsis thaliana EXT3 gene Proteins 0.000 description 17
- 208000034420 multiple type III exostoses Diseases 0.000 description 17
- 230000006870 function Effects 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 238000011010 flushing procedure Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Definitions
- the present invention relates to data storage systems. More specifically the present invention relates to obtaining file system view in block-level data storage systems.
- a block level storage controller (e.g. Storage Area Network—SAN—controller) controls communications between a host and data storage, using a block-level protocol.
- the SAN block storage controller interacts with hosts via block-level protocols, such as iSCSI and Fibre Channel (FC).
- block-level protocols such as iSCSI and Fibre Channel (FC).
- block-level storage systems do not maintain information specific to the file-system using them.
- a file system view at the controller, together with the knowledge of which arriving block belongs to which file or mode may leverage many controller applications, such as, for example, storage based intrusion detection that may handle file level threats, semantic data replication, online backup and fine-tuned monitoring. Such view may supply knowledge of association between blocks and the corresponding file to which these blocks belong, and also allow ongoing inference of file-level commands.
- An intrusion detection system is an appliance or application that monitors network and/or system activities for malicious activities or policy violations.
- IDS systems There are two main types of IDS systems: network-based and host-based IDS.
- network-based IDS sensors are located at points in the network to be monitored. The sensors capture all network traffic and analyze the content of individual packets in order to detect malicious traffic.
- host-based system the sensor usually is a software agent that monitors activity of the host on which it is installed, including file system, log files and the kernel.
- storage-based IDS a sensor captures all the traffic (I/O requests) that arrives at the storage controller, and analyzes possible storage system violations or threats.
- the very few storage systems that do maintain online IDS are accessed via file-level protocols, such as CIFS or NFS. Application of a block level storage based IDS seem to be far more complicated and does not exist to-date.
- a computer implemented method for obtaining file-level information from block level information of files stored on a storage medium includes accessing the storage medium to obtain metadata available in block level on the storage medium and building an inverse block-to-file map of the files stored on the storage medium.
- the method also includes listening online to incoming block-level commands communicated from a host to the storage medium, parsing the incoming block-level commands and inferring file-level information from the parsed block level commands; and updating the inverse block-to-file-information map
- a computer program product stored on a non-transitory tangible computer readable storage medium for obtaining file-level information from block level information of files stored on a storage medium.
- the computer program includes code for accessing the storage medium to obtain metadata available in block level on the storage medium and building an inverse block-to-file map of the files stored on the storage medium.
- the computer program product also includes code for listening online to incoming block-level commands communicated from a host to the storage medium, parsing the incoming block-level commands and inferring file-level information from the parsed block level commands; and updating the inverse block-to-file map.
- a data processing system for obtaining file-level information from block level information of files stored on a storage medium.
- the system includes a storage system; a host communicating with the storage system, a computer usable medium connected to a processor.
- the computer usable medium contains a set of instructions designed to be carried out by the processor.
- the set of instructions includes accessing the storage medium to obtain metadata available in block level on the storage medium and building an inverse block-to-file map of the files stored on the storage medium; listening online to incoming block-level commands communicated from a host to the storage medium, parsing the incoming block-level commands and inferring file-level information from the parsed block level commands; and updating the inverse block-to-file map.
- FIG. 1 is a schematic block diagram of a host and a storage system, with a file system view application according to embodiments of the present invention.
- FIG. 2 is a schematic block diagram of a file system view application according to embodiments of the present invention.
- FIG. 3 illustrates a data block state machine according to embodiments of the present invention.
- FIG. 4 illustrates an inode state machine according to embodiments of the present invention.
- FIG. 5 is a flow chart diagram of a file system view application using a self-contained parsing epoch according to embodiments of the present invention.
- FIG. 6 is a flow chart diagram of a file system view inference process of block level commands according to embodiments of the present invention.
- aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
- a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
- a computer readable storage medium may be any non-transitory, tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
- a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
- An inverse block-to-file map may include one or more of the following: block-to-inode map, inode-to-filename map and block-to-filename map.
- a block-to-file inverse map enables one to answer efficiently questions like: “given a data block number, which inode owns it?” and “what is the filename of this inode?” that are currently not easily answered at storage system level and whose answers are needed for a file-level system awareness at the storage. According to embodiments of the present invention this identification is done in an online manner, by capturing and parsing block-level commands communicated between the host and the storage system.
- a file system view application listens to block-level storage protocol without interfering with the input-output (I/O) data communications between the host and the storage system.
- the file system view application may be used to detect, for example, intrusions by passively listening to the block-level commands stream between the host and the storage system without interfering with the host to storage system I/O data path and without adding overhead accesses to the storage system.
- file-level commands from the incoming stream of block-level commands enables one to answer question such as “What was the order, the rate, or the pattern of access inside a specific file?” and “which commands were executed on this file?”
- question such as “What was the order, the rate, or the pattern of access inside a specific file?” and “which commands were executed on this file?”
- file system view awareness supplies knowledge of which arriving block belongs to which file.
- FIG. 1 is a schematic block diagram of a host and a storage system, with file system view application according to embodiments of the present invention.
- Host 100 initiates block level commands to store or retrieve data at a storage system 110 that arrive to the block-level protocol target at the storage controller 120 .
- a file system view application 130 which may be located at a remote server or at the storage server itself, listens to the communication of block-level commands.
- the block-level commands stream between host 100 and storage disks 140 is captured for further processing by the file system view application 130 without interfering and adding requests to the ongoing I/O data flow.
- Storage disks 140 contain a file system layout 145 , i.e., both metadata and data blocks.
- the layout of the file system at the storage system 110 depends on the file system type that the operating system uses.
- EXT3 (Third Extended) file provides a system layout with a partition into data block groups. Each data block group contains metadata blocks followed by data blocks. Metadata blocks store information on the structure of the stored files and their hierarchy. Metadata blocks hold an inode table for each inode in a block group.
- An inode of a regular file points to a list of data blocks making up that file.
- An inode representing a directory points to data blocks that contain information on inode numbers belonging to the directory, along with their filenames.
- Metadata block inode table contains inode attributes and a list of the blocks belonging to each inode.
- EXT3 data blocks contain regular file data but may also contain additional metadata information such as a directory listing or information regarding indirect addressing of data blocks.
- EXT3 data blocks that contain pure data are hereinafter termed puredata blocks and data blocks that contain metadata information are hereinafter termed fakedata blocks.
- An EXT3 file system allocates puredata blocks and fakedata blocks from the data blocks pool indiscriminately and dynamically, and thus a data block can be a pure data block when associated with one inode, and later (after being freed) reallocated as a fake data block for another inode (and vice versa).
- file system information is organized and stored in storage disks in a way that enables determining file-level information such as association of blocks to a specific inode, but determining the reversed question “given a data block number, which inode owns it?” is difficult.
- file-level information such as association of blocks to a specific inode
- determining the reversed question “given a data block number, which inode owns it?” is difficult.
- one In order to find an inode owning a block given the block number, one must scan the entire inode table until an inode that contains the required data block number is found.
- an additional inverse mapping has to be resolved and the directory structure must also be found and scanned.
- file system view application 130 provides a file system view by performing block-to-inode inverse mapping and by maintaining online an efficient inverse block-to-file map using state machines and keeping track of metadata information only. Parsing the block-level commands that arrive and maintaining the inverse block-to-file map allow identifying the association of each block in the file system layout.
- a block-to-inode inverse map holds all the allocated valid data blocks and inodes of the file system where each data block points to the directory or file inode that holds it.
- FIG. 2 is a schematic block diagram of a file system view application according to embodiments of the present invention.
- the file system view application 130 includes application control code 250 and three data structures that store information using state machines and keep track of metadata information.
- the file system view application control 250 implements a block-level protocol listener and parser that identifies the semantic meaning of each arriving block, constructs the state machine to find the inode or file that owns a given block, infers file-level commands from a block-level command sequence and determines the file-level access pattern by tracking the block-level access patterns.
- the file system view 130 implements three data structures: block-to-inode inverse map 260 , inode hash table 270 and data block tracker list 280 where the inverse block-to-file map occupies less memory than memory required for copying the entire storage disk 140 .
- file system view application 130 performs the following steps: it captures block-level commands, identifies the type of the Internet Small Computer System Interface (iSCSI) command and the type of the block specified in the command, inserts the relevant information to the data structure that reflects the state machine logic and finally adds the block-to-inode information to an inverse map.
- iSCSI Internet Small Computer System Interface
- Block-to-inode inverse map 260 may include the numbers of all the allocated data blocks in the file system, their type in the file system (e.g. puredata, metadata or fakedata) and their associated owning inodes.
- the block-to-inode inverse map may be built, for example, as a physical data structure type B-Tree such that given a block number, its associated owner inode can be determined efficiently.
- the keys in this B-Tree are consecutive ranges of data blocks of the same type and are owned by the same inode, and the values are the inode structures. Note that not all block keys should be inserted into the tree, and only start and end ranges may be inserted.
- the block-to-inode inverse map contains only valid blocks pointing to valid inodes such that the inode number of a given data block number can be fetched efficiently, answering the question: “given a data block number, which inode owns it?” and a file level awareness and semantics are thus enabled at the storage controller level and may be used to detect intrusions to the file system.
- Data block tracker list 280 holds a list of the data blocks that were encountered and that can not yet be associated with any of the inode with certainty. For each such data block, the state (valid, semi-valid or delete) and the block content is kept temporarily until its ownership and type is determined and registered in the corresponding state machines. The blocks content of the data block tracker list is kept since if a block contains metadata information, its data has to be further parsed and processed and only after it is inferred and registered in the corresponding state machines it can be deleted. When working with self-contained epochs (to be explained later), the content of the data block tracker list is deleted after each parsing epoch is complete.
- Inode hash table 270 holds a list of the inodes that exist in the storage system, either valid or semi valid. An inode is considered valid when its corresponding state machine is in a valid state. An inode is considered semi valid when its corresponding state machine is in an intermediate state (see also FIG. 4 and corresponding explanation hereinafter). For each inode, an inode structure that contains the inode state, type and other attributes are stored at the state machine. An inode is deleted from the Inode hash table when its state machine transits it to a deleted state.
- Each file-level command is usually translated into several block-level commands in order to update the information stored in the metadata blocks in the storage disks according to a typical block level protocol.
- a file-level command for the EXT3 file system that creates a new file at the storage disk is translated at the initiator host to the following block level commands that update both metadata and pure data blocks: (1) update the stored super block fields specifying the number of allocated blocks and inodes, (2) update the stored field in the group descriptor of the appropriate block group specifying the number of free inodes, (3) set the relevant bit in the inode bitmap to true, (4) set the relevant bits in the data bitmap to true, corresponding to the additional data blocks that were allocated for this file, (5) create a new inode structure in the inode table, (6) update the access time fields in inode structure of the parent directory, (7) add the filename to the relevant data block of the parent inode, and finally, (8) write the data blocks of this inode.
- these block-level commands are captured and inferred to maintain an updated file system view at the storage controller or at a remote server and to identify which arriving block belongs to which file or inode.
- FIG. 3 illustrates a data block state machine according to embodiments of the present invention.
- a data block state machine transits to valid state 310 and enters the block-to-inode inverse map according to incoming captured and inferred block level commands and according to the corresponding state machine current state.
- Three block-level commands need to be parsed and inferred, independent of their arrival order, in order to get the state machine transit to a valid state: a. a write command to this specific data block 301 , b. a write command that set to “true” the address bit of this specific data block 302 , and c. a write command that set to “true” the corresponding bit in the block bitmap 303 .
- the state machine waits for the next command to arrive and transits to states W & A 304 or state A & T 305 accordingly. From these two intermediate states, a transition to a valid state 310 occurs when the appropriate inferred block-level command arrives next.
- a transition to valid state occurs the block is registered at the block-to-inode inverse map and a new block are determined.
- a transition to intermediate state occurs the block is registered at the data block tracker list.
- the data block state machine holds relevant data block information such as the data block type which is important for achieving file level awareness.
- a data block is deleted 300 after a block level-command is captured and inferred that set to false the corresponding bit in the data block bitmap. After validation or deletion of a data block the block-to-inode inverse map and the data block tracker list are updated accordingly.
- FIG. 4 illustrates an inode state machine according to embodiments of the present invention.
- An inode state machine transits to a valid state 410 and enters the inode hash table according to incoming captured and inferred block level commands and according to the corresponding state machine current state.
- Two block-level commands need to be parsed, independent of their arrival order, in order to reach a valid state: a. a write command to this specific inode with dtime field equal to zero 401 , b. a write command to the corresponding bit in the inode bitmap 402 .
- the state machine transits to valid state 410 .
- the inode When a transition to intermediate states, 401 and 402 , occurs the inode is registered at the inode hash table. When a transition to valid state 410 occurs the inode remains registered at the inode hash table.
- the inode state machine holds relevant attributes relating to the inode such as the inode type, pointing to a file or to a directory, which are important information for achieving file level awareness.
- An inode is deleted 400 in two stages. First a transition to states 411 or 412 occurs after a corresponding block level command is captured and inferred with a non-zero dtime field or the command set to “false” the corresponding bit in the inode bitmap. Next, when the complementary command is captured the state machine transits to a deleted state 400 . After validation or deletion of an inode, the block-to-inode inverse map and the inode hash table are updated accordingly.
- a file system view application In order to identify creation of new inodes and data blocks, a file system view application according to embodiments of the present invention maintains state machines for inodes and blocks that were encountered but were not yet validated in a separate data structures, the data block tracker list and the inode hash table, in addition to the main block-to-inode inverse map that hold only valid inodes and valid data blocks. Accordingly, when an inode or a data block state machine transit to a valid state a creation of new inode or data block is determined and the new inode or data block is registered in the block to inode inverse map.
- the data block and inode state machines illustrated in FIG. 3 and FIG. 4 allow the file system view inference process according to embodiments of the present invention to identify correctly the creation of a new file, the deletion of a file and the addition of a new data block or its removal.
- a file system view online inference process may be used to detect unauthorized intrusion to the storage medium.
- Unauthorized intrusions that may be detected may include, for example, modifying data or metadata that belongs to files that system adminstrators expect to remain unchnged, accessing with a suspicious pattern certain files or the file system, taking up all or most of the storage free space by allocating many inodes or other metadata structures causing a storage denial-of-service.
- a self-contained epoch is used, according to embodiments of the present invention, where all block commands that are related to a certain set of data blocks are found within the self-contained epoch. Through the self-contained epoch, parsing of data blocks is delayed and parsing of metadata blocks is performed first.
- EXT3 file system is an example of file systems whose view can be obtained according to embodiments of the present invention.
- block level commands are captured and the role of each block is identified with regard to EXT3 layout.
- An inode structure in EXT3 that represent a regular file points to a list of data blocks making up that file.
- An inode structure representing a directory points to data blocks that contain information on inode numbers that belong to the directory, along with their filenames.
- metadata-like information such as inode directory or indirect addressing data blocks).
- the file system allocates pure blocks and fake blocks from the data blocks pool indiscriminately, and thus a data block can be a pure data block when associated with one inode, and later (after being freed) reallocated as a fake data block for a different inode (and vice versa). Furthermore, since the only way in EXT3 to differentiate between pure data and fake data blocks at the block level is by identifying their correct inode association and their role within that inode, pure data and fake data blocks parsing are delayed until parsing and inferring of the relevant metadata blocks are performed.
- journal end-of-transaction finish message is used as an indication.
- the EXT3 file system is a journaled file system that uses journal mode affecting the order in which block level commands are flushed to the disk and logs information that can be recovered later from the journal in case of failure.
- journal mode In the EXT3 journal mode, all file system data and metadata changes are logged into the journal which minimizes the chance of losing updates made to each file, but it requires many additional disk accesses.
- Another mode used by EXT3 is an ordered mode that logs only changes to file system metadata. In the EXT3 ordered mode, puredata blocks are flushed to the disk before performing the actual metadata modifications.
- Each journaling transaction is accompanied by a T_FINISHED entry that indicates that flushing of data blocks to disk switches from puredata blocks to metadata blocks (including both metadata and fake data blocks).
- a self-contained epoch is defined according to the file system T_FINISHED entry initiated by the host when switching from flushing puredata blocks to flushing metadata blocks to disk.
- the blocks are ordered and metadata blocks are parsed and inferred first while fakedata blocks are parsed after the metadata blocks. Puredata blocks do not contain system level information and are not parsed.
- FIG. 5 is a flow chart diagram of a file system view application using a self-contained parsing epoch according to embodiments of the present invention.
- Block-to-inode mapping is obtained first by building an inverse file level map 510 .
- metadata is read from the storage system disk and the relevant information is inserted into data structures 260 state machines (see FIGS. 3 and 4 and corresponding explanation in the present specification). This step is performed once at system initialization.
- the file system view application listens to host-disk communications 515 and identifies the presence of a self-contained parsing epoch 520 .
- the metadata blocks are parsed first 530 while data blocks are stored and their parsing is delayed to the end of the self-contained parsing epoch 540 .
- the saved data blocks are parsed 550 and fakedata blocks metadata information is stored 560 using data structures 260 , 270 and 280 that implement state machines for each data block and inode.
- FIG. 6 is a flow chart diagram of the EXT3 file system view inference process of block level commands according to embodiments of the present invention.
- a file system view application according to embodiments of the present invention waits for a T_FINISHED entry to be received from the host indicating that an end of self-contained parsing epoch of flushing puredata blocks from host to disk occurred 600 .
- Metadata blocks received at the current journal parsing epoch are parsed first while fakedata and puredata blocks are stored and parsed at the end of the parsing epoch 605 .
- Metadata blocks are parsed 610 and information relating to the inode which is accessed, and relating to the block level command which is performed (for example, set the true bit in an inode bitmap, write a non-zero value to the inode dtime field or any other iSCSI commands) are inferred and the corresponding state machines are managed accordingly 615 .
- Data block state machine, block-to-inode, inode hash table and data block data tracker list may be modified in this step.
- the fakedata blocks are parsed 620 and the parsed information is registered at the data structures state machines accordingly 625 .
- the flow chart of FIG. 6 illustrates how block-level commands parsing and inferring in each self-contained parsing epoch allows maintaining online a file system view and inferring file-level commands that enables unauthorized intrusion detection at the storage medium.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- The present invention relates to data storage systems. More specifically the present invention relates to obtaining file system view in block-level data storage systems.
- A block level storage controller (e.g. Storage Area Network—SAN—controller) controls communications between a host and data storage, using a block-level protocol. The SAN block storage controller interacts with hosts via block-level protocols, such as iSCSI and Fibre Channel (FC). Usually, block-level storage systems do not maintain information specific to the file-system using them. A file system view at the controller, together with the knowledge of which arriving block belongs to which file or mode may leverage many controller applications, such as, for example, storage based intrusion detection that may handle file level threats, semantic data replication, online backup and fine-tuned monitoring. Such view may supply knowledge of association between blocks and the corresponding file to which these blocks belong, and also allow ongoing inference of file-level commands.
- An intrusion detection system (IDS) is an appliance or application that monitors network and/or system activities for malicious activities or policy violations. There are two main types of IDS systems: network-based and host-based IDS. In network-based IDS, sensors are located at points in the network to be monitored. The sensors capture all network traffic and analyze the content of individual packets in order to detect malicious traffic. In a host-based system, the sensor usually is a software agent that monitors activity of the host on which it is installed, including file system, log files and the kernel. In storage-based IDS, a sensor captures all the traffic (I/O requests) that arrives at the storage controller, and analyzes possible storage system violations or threats. The very few storage systems that do maintain online IDS are accessed via file-level protocols, such as CIFS or NFS. Application of a block level storage based IDS seem to be far more complicated and does not exist to-date.
- Several ways have been suggested to facilitate a file system view at the controller. However these suggestions interfere with the controller I/O path, an approach that suffers from several limitations. First, adding software to the modules that handle the I/O path of a controller is a complicated and error-prone task with heavy development expenses. Second, the CPU capacity at the controller is designed to handle the arriving I/O requests and may not be able to perform additional computation tasks that are required in order to obtain the file-view. Finally, it is much more appealing to add a new external appliance, rather than replacing or patching the existing system.
- According to embodiments of the present invention, there is provided a computer implemented method for obtaining file-level information from block level information of files stored on a storage medium. The method includes accessing the storage medium to obtain metadata available in block level on the storage medium and building an inverse block-to-file map of the files stored on the storage medium. The method also includes listening online to incoming block-level commands communicated from a host to the storage medium, parsing the incoming block-level commands and inferring file-level information from the parsed block level commands; and updating the inverse block-to-file-information map
- Furthermore, according to embodiments of the present invention, there is provided a computer program product stored on a non-transitory tangible computer readable storage medium for obtaining file-level information from block level information of files stored on a storage medium. The computer program includes code for accessing the storage medium to obtain metadata available in block level on the storage medium and building an inverse block-to-file map of the files stored on the storage medium. The computer program product also includes code for listening online to incoming block-level commands communicated from a host to the storage medium, parsing the incoming block-level commands and inferring file-level information from the parsed block level commands; and updating the inverse block-to-file map.
- Furthermore, according to embodiments of the present invention, there is provided a data processing system for obtaining file-level information from block level information of files stored on a storage medium. The system includes a storage system; a host communicating with the storage system, a computer usable medium connected to a processor. The computer usable medium contains a set of instructions designed to be carried out by the processor. The set of instructions includes accessing the storage medium to obtain metadata available in block level on the storage medium and building an inverse block-to-file map of the files stored on the storage medium; listening online to incoming block-level commands communicated from a host to the storage medium, parsing the incoming block-level commands and inferring file-level information from the parsed block level commands; and updating the inverse block-to-file map.
- The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
-
FIG. 1 is a schematic block diagram of a host and a storage system, with a file system view application according to embodiments of the present invention. -
FIG. 2 is a schematic block diagram of a file system view application according to embodiments of the present invention. -
FIG. 3 illustrates a data block state machine according to embodiments of the present invention. -
FIG. 4 illustrates an inode state machine according to embodiments of the present invention. -
FIG. 5 is a flow chart diagram of a file system view application using a self-contained parsing epoch according to embodiments of the present invention. -
FIG. 6 is a flow chart diagram of a file system view inference process of block level commands according to embodiments of the present invention. - As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any non-transitory, tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- Flowchart/s and block diagram/s in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
- According to embodiments of the present invention it is proposed to obtain file level information at a block level storage system by generating an inverse block-to-file map; maintaining and updating online the inverse map;. It is suggested to infer file level commands by parsing the incoming stream of block level commands, while performing this in a listening mode. An inverse block-to-file map may include one or more of the following: block-to-inode map, inode-to-filename map and block-to-filename map. A block-to-file inverse map enables one to answer efficiently questions like: “given a data block number, which inode owns it?” and “what is the filename of this inode?” that are currently not easily answered at storage system level and whose answers are needed for a file-level system awareness at the storage. According to embodiments of the present invention this identification is done in an online manner, by capturing and parsing block-level commands communicated between the host and the storage system.
- According to embodiments of the present invention a file system view application listens to block-level storage protocol without interfering with the input-output (I/O) data communications between the host and the storage system. The file system view application may be used to detect, for example, intrusions by passively listening to the block-level commands stream between the host and the storage system without interfering with the host to storage system I/O data path and without adding overhead accesses to the storage system.
- Inferring file-level commands from the incoming stream of block-level commands enables one to answer question such as “What was the order, the rate, or the pattern of access inside a specific file?” and “which commands were executed on this file?” Such file system view awareness supplies knowledge of which arriving block belongs to which file.
-
FIG. 1 is a schematic block diagram of a host and a storage system, with file system view application according to embodiments of the present invention.Host 100 initiates block level commands to store or retrieve data at astorage system 110 that arrive to the block-level protocol target at thestorage controller 120. A filesystem view application 130, which may be located at a remote server or at the storage server itself, listens to the communication of block-level commands. The block-level commands stream betweenhost 100 andstorage disks 140 is captured for further processing by the filesystem view application 130 without interfering and adding requests to the ongoing I/O data flow.Storage disks 140 contain afile system layout 145, i.e., both metadata and data blocks. The layout of the file system at thestorage system 110 depends on the file system type that the operating system uses. For example, EXT3 (Third Extended) file provides a system layout with a partition into data block groups. Each data block group contains metadata blocks followed by data blocks. Metadata blocks store information on the structure of the stored files and their hierarchy. Metadata blocks hold an inode table for each inode in a block group. An inode of a regular file points to a list of data blocks making up that file. An inode representing a directory points to data blocks that contain information on inode numbers belonging to the directory, along with their filenames. - Metadata block inode table contains inode attributes and a list of the blocks belonging to each inode. EXT3 data blocks contain regular file data but may also contain additional metadata information such as a directory listing or information regarding indirect addressing of data blocks. EXT3 data blocks that contain pure data are hereinafter termed puredata blocks and data blocks that contain metadata information are hereinafter termed fakedata blocks.
- An EXT3 file system allocates puredata blocks and fakedata blocks from the data blocks pool indiscriminately and dynamically, and thus a data block can be a pure data block when associated with one inode, and later (after being freed) reallocated as a fake data block for another inode (and vice versa).
- In storage systems today, file system information is organized and stored in storage disks in a way that enables determining file-level information such as association of blocks to a specific inode, but determining the reversed question “given a data block number, which inode owns it?” is difficult. In order to find an inode owning a block given the block number, one must scan the entire inode table until an inode that contains the required data block number is found. Moreover, when a filename is also required, and since the directory hierarchy is kept separate from inode information, an additional inverse mapping has to be resolved and the directory structure must also be found and scanned.
- According to embodiments of the present invention, file
system view application 130 provides a file system view by performing block-to-inode inverse mapping and by maintaining online an efficient inverse block-to-file map using state machines and keeping track of metadata information only. Parsing the block-level commands that arrive and maintaining the inverse block-to-file map allow identifying the association of each block in the file system layout. A block-to-inode inverse map holds all the allocated valid data blocks and inodes of the file system where each data block points to the directory or file inode that holds it. -
FIG. 2 is a schematic block diagram of a file system view application according to embodiments of the present invention. The filesystem view application 130 includesapplication control code 250 and three data structures that store information using state machines and keep track of metadata information. The file systemview application control 250 implements a block-level protocol listener and parser that identifies the semantic meaning of each arriving block, constructs the state machine to find the inode or file that owns a given block, infers file-level commands from a block-level command sequence and determines the file-level access pattern by tracking the block-level access patterns. Thefile system view 130 implements three data structures: block-to-inode inverse map 260, inode hash table 270 and data blocktracker list 280 where the inverse block-to-file map occupies less memory than memory required for copying theentire storage disk 140. - According to embodiments of the present invention, file
system view application 130 performs the following steps: it captures block-level commands, identifies the type of the Internet Small Computer System Interface (iSCSI) command and the type of the block specified in the command, inserts the relevant information to the data structure that reflects the state machine logic and finally adds the block-to-inode information to an inverse map. - Block-to-
inode inverse map 260 may include the numbers of all the allocated data blocks in the file system, their type in the file system (e.g. puredata, metadata or fakedata) and their associated owning inodes. The block-to-inode inverse map may be built, for example, as a physical data structure type B-Tree such that given a block number, its associated owner inode can be determined efficiently. The keys in this B-Tree are consecutive ranges of data blocks of the same type and are owned by the same inode, and the values are the inode structures. Note that not all block keys should be inserted into the tree, and only start and end ranges may be inserted. The block-to-inode inverse map contains only valid blocks pointing to valid inodes such that the inode number of a given data block number can be fetched efficiently, answering the question: “given a data block number, which inode owns it?” and a file level awareness and semantics are thus enabled at the storage controller level and may be used to detect intrusions to the file system. - Data
block tracker list 280 holds a list of the data blocks that were encountered and that can not yet be associated with any of the inode with certainty. For each such data block, the state (valid, semi-valid or delete) and the block content is kept temporarily until its ownership and type is determined and registered in the corresponding state machines. The blocks content of the data block tracker list is kept since if a block contains metadata information, its data has to be further parsed and processed and only after it is inferred and registered in the corresponding state machines it can be deleted. When working with self-contained epochs (to be explained later), the content of the data block tracker list is deleted after each parsing epoch is complete. - Inode hash table 270 holds a list of the inodes that exist in the storage system, either valid or semi valid. An inode is considered valid when its corresponding state machine is in a valid state. An inode is considered semi valid when its corresponding state machine is in an intermediate state (see also
FIG. 4 and corresponding explanation hereinafter). For each inode, an inode structure that contains the inode state, type and other attributes are stored at the state machine. An inode is deleted from the Inode hash table when its state machine transits it to a deleted state. - Each file-level command is usually translated into several block-level commands in order to update the information stored in the metadata blocks in the storage disks according to a typical block level protocol. For example, a file-level command for the EXT3 file system that creates a new file at the storage disk is translated at the initiator host to the following block level commands that update both metadata and pure data blocks: (1) update the stored super block fields specifying the number of allocated blocks and inodes, (2) update the stored field in the group descriptor of the appropriate block group specifying the number of free inodes, (3) set the relevant bit in the inode bitmap to true, (4) set the relevant bits in the data bitmap to true, corresponding to the additional data blocks that were allocated for this file, (5) create a new inode structure in the inode table, (6) update the access time fields in inode structure of the parent directory, (7) add the filename to the relevant data block of the parent inode, and finally, (8) write the data blocks of this inode.
- According to embodiments of the present invention, these block-level commands are captured and inferred to maintain an updated file system view at the storage controller or at a remote server and to identify which arriving block belongs to which file or inode.
-
FIG. 3 illustrates a data block state machine according to embodiments of the present invention. A data block state machine transits tovalid state 310 and enters the block-to-inode inverse map according to incoming captured and inferred block level commands and according to the corresponding state machine current state. Three block-level commands need to be parsed and inferred, independent of their arrival order, in order to get the state machine transit to a valid state: a. a write command to thisspecific data block 301, b. a write command that set to “true” the address bit of thisspecific data block 302, and c. a write command that set to “true” the corresponding bit in theblock bitmap 303. After one, out of the three block-level commands, has arrived and a transition was performed accordingly to an intermediate states 301-303, the state machine waits for the next command to arrive and transits to states W & A 304 or state A &T 305 accordingly. From these two intermediate states, a transition to avalid state 310 occurs when the appropriate inferred block-level command arrives next. When a transition to valid state occurs the block is registered at the block-to-inode inverse map and a new block are determined. When a transition to intermediate state occurs the block is registered at the data block tracker list. The data block state machine holds relevant data block information such as the data block type which is important for achieving file level awareness. - A data block is deleted 300 after a block level-command is captured and inferred that set to false the corresponding bit in the data block bitmap. After validation or deletion of a data block the block-to-inode inverse map and the data block tracker list are updated accordingly.
-
FIG. 4 illustrates an inode state machine according to embodiments of the present invention. An inode state machine transits to avalid state 410 and enters the inode hash table according to incoming captured and inferred block level commands and according to the corresponding state machine current state. Two block-level commands need to be parsed, independent of their arrival order, in order to reach a valid state: a. a write command to this specific inode with dtime field equal to zero 401, b. a write command to the corresponding bit in theinode bitmap 402. After the second complementary write command has arrived, the state machine transits tovalid state 410. When a transition to intermediate states, 401 and 402, occurs the inode is registered at the inode hash table. When a transition tovalid state 410 occurs the inode remains registered at the inode hash table. The inode state machine holds relevant attributes relating to the inode such as the inode type, pointing to a file or to a directory, which are important information for achieving file level awareness. - An inode is deleted 400 in two stages. First a transition to
states state 400. After validation or deletion of an inode, the block-to-inode inverse map and the inode hash table are updated accordingly. - In order to identify creation of new inodes and data blocks, a file system view application according to embodiments of the present invention maintains state machines for inodes and blocks that were encountered but were not yet validated in a separate data structures, the data block tracker list and the inode hash table, in addition to the main block-to-inode inverse map that hold only valid inodes and valid data blocks. Accordingly, when an inode or a data block state machine transit to a valid state a creation of new inode or data block is determined and the new inode or data block is registered in the block to inode inverse map.
- The data block and inode state machines illustrated in
FIG. 3 andFIG. 4 , allow the file system view inference process according to embodiments of the present invention to identify correctly the creation of a new file, the deletion of a file and the addition of a new data block or its removal. - A file system view online inference process according to embodiments of the present invention may be used to detect unauthorized intrusion to the storage medium. Unauthorized intrusions that may be detected may include, for example, modifying data or metadata that belongs to files that system adminstrators expect to remain unchnged, accessing with a suspicious pattern certain files or the file system, taking up all or most of the storage free space by allocating many inodes or other metadata structures causing a storage denial-of-service.
- Since a file-level command is translated into several block-level commands that may be delayed and interleaved and may be flushed to the storage system in any order, re-ordering of the arriving commands is needed where metadata blocks that contain the file level information are parsed and inferred first. Accordingly, a self-contained epoch is used, according to embodiments of the present invention, where all block commands that are related to a certain set of data blocks are found within the self-contained epoch. Through the self-contained epoch, parsing of data blocks is delayed and parsing of metadata blocks is performed first.
- EXT3 file system is an example of file systems whose view can be obtained according to embodiments of the present invention. According to embodiments of the present invention block level commands are captured and the role of each block is identified with regard to EXT3 layout. An inode structure in EXT3 that represent a regular file points to a list of data blocks making up that file. An inode structure representing a directory points to data blocks that contain information on inode numbers that belong to the directory, along with their filenames. Thus part of EXT3 data blocks are fake data blocks since they hold metadata-like information (such as inode directory or indirect addressing data blocks). The file system allocates pure blocks and fake blocks from the data blocks pool indiscriminately, and thus a data block can be a pure data block when associated with one inode, and later (after being freed) reallocated as a fake data block for a different inode (and vice versa). Furthermore, since the only way in EXT3 to differentiate between pure data and fake data blocks at the block level is by identifying their correct inode association and their role within that inode, pure data and fake data blocks parsing are delayed until parsing and inferring of the relevant metadata blocks are performed.
- In order to identify the end of the parsing epoch in the EXT3 file system, a journal end-of-transaction finish message is used as an indication. The EXT3 file system is a journaled file system that uses journal mode affecting the order in which block level commands are flushed to the disk and logs information that can be recovered later from the journal in case of failure. In the EXT3 journal mode, all file system data and metadata changes are logged into the journal which minimizes the chance of losing updates made to each file, but it requires many additional disk accesses. Another mode used by EXT3 is an ordered mode that logs only changes to file system metadata. In the EXT3 ordered mode, puredata blocks are flushed to the disk before performing the actual metadata modifications. Each journaling transaction is accompanied by a T_FINISHED entry that indicates that flushing of data blocks to disk switches from puredata blocks to metadata blocks (including both metadata and fake data blocks).
- According to embodiments of the present invention a self-contained epoch is defined according to the file system T_FINISHED entry initiated by the host when switching from flushing puredata blocks to flushing metadata blocks to disk. Next, the blocks are ordered and metadata blocks are parsed and inferred first while fakedata blocks are parsed after the metadata blocks. Puredata blocks do not contain system level information and are not parsed.
-
FIG. 5 is a flow chart diagram of a file system view application using a self-contained parsing epoch according to embodiments of the present invention. Block-to-inode mapping is obtained first by building an inversefile level map 510. In order to build the file system view, metadata is read from the storage system disk and the relevant information is inserted intodata structures 260 state machines (seeFIGS. 3 and 4 and corresponding explanation in the present specification). This step is performed once at system initialization. Next, the file system view application listens to host-disk communications 515 and identifies the presence of a self-containedparsing epoch 520. The metadata blocks are parsed first 530 while data blocks are stored and their parsing is delayed to the end of the self-containedparsing epoch 540. After the metadata blocks are parsed and inferred an end of the self-contained parsing epoch is identified, the saved data blocks are parsed 550 and fakedata blocks metadata information is stored 560 usingdata structures -
FIG. 6 is a flow chart diagram of the EXT3 file system view inference process of block level commands according to embodiments of the present invention. A file system view application according to embodiments of the present invention waits for a T_FINISHED entry to be received from the host indicating that an end of self-contained parsing epoch of flushing puredata blocks from host to disk occurred 600. Metadata blocks received at the current journal parsing epoch are parsed first while fakedata and puredata blocks are stored and parsed at the end of theparsing epoch 605. Metadata blocks are parsed 610 and information relating to the inode which is accessed, and relating to the block level command which is performed (for example, set the true bit in an inode bitmap, write a non-zero value to the inode dtime field or any other iSCSI commands) are inferred and the corresponding state machines are managed accordingly 615. Data block state machine, block-to-inode, inode hash table and data block data tracker list may be modified in this step. After parsing all the metadata blocks, the fakedata blocks are parsed 620 and the parsed information is registered at the data structures state machines accordingly 625. - The flow chart of
FIG. 6 illustrates how block-level commands parsing and inferring in each self-contained parsing epoch allows maintaining online a file system view and inferring file-level commands that enables unauthorized intrusion detection at the storage medium. - Additional data structures (maps) and state machines could be maintained to answer the question: “What was the exact filename that is related to a certain inferred host-level command, given an inode?”.
- Specifically in EXT3, when using hard links there may be several different filenames to the same inode The files that belong to a directory are listed in data blocks that are associated with the directory inode. These data blocks hold an unsorted list of records, one record for each filename. The record keeps the filename and its inode ID. A directory that has a large number of files can span over many data blocks. In order to discover whether a new filename was added or deleted to the list, a copy of the entire directory hierarchy is kept by the listener application. A creation of a new link at the host-level is translated into two block-level write commands: a) a write command to a data block that belongs to the parent directory with the additional filename (hard link) added to the list. b) a write command to the inode table, in which the link counter of the inode is updated. To find out which filename was added and to which inode it relates, one may review the list written to the directory data block, and add any previously unknown filename to the data structures.
Claims (24)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/773,852 US8290994B2 (en) | 2010-05-05 | 2010-05-05 | Obtaining file system view in block-level data storage systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/773,852 US8290994B2 (en) | 2010-05-05 | 2010-05-05 | Obtaining file system view in block-level data storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
US20110276578A1 true US20110276578A1 (en) | 2011-11-10 |
US8290994B2 US8290994B2 (en) | 2012-10-16 |
Family
ID=44902633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/773,852 Expired - Fee Related US8290994B2 (en) | 2010-05-05 | 2010-05-05 | Obtaining file system view in block-level data storage systems |
Country Status (1)
Country | Link |
---|---|
US (1) | US8290994B2 (en) |
Cited By (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8301597B1 (en) * | 2011-09-16 | 2012-10-30 | Ca, Inc. | System and method for network file system server replication using reverse path lookup |
US20120278295A1 (en) * | 2011-04-29 | 2012-11-01 | International Business Machines Corporation | Disk image introspection for storage systems |
US20130138616A1 (en) * | 2011-11-29 | 2013-05-30 | International Business Machines Corporation | Synchronizing updates across cluster filesystems |
US20130262533A1 (en) * | 2012-03-29 | 2013-10-03 | Lsi Corporation | File system hinting |
US20140297612A1 (en) * | 2012-01-24 | 2014-10-02 | Varonis Systems, Inc | Method and apparatus for authentication of file read events |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
CN104866456A (en) * | 2014-02-24 | 2015-08-26 | 三星电子株式会社 | Electronic device and communication method |
US20160224434A1 (en) * | 2013-10-16 | 2016-08-04 | Axxana (Israel) Ltd. | Zero-transaction-loss recovery for database systems |
US9519647B2 (en) * | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US9552367B2 (en) | 2011-09-16 | 2017-01-24 | Ca, Inc. | System and method for network file system server replication using reverse path lookup |
US20170235591A1 (en) | 2016-02-12 | 2017-08-17 | Nutanix, Inc. | Virtualized file server block awareness |
US20170344573A1 (en) * | 2016-05-26 | 2017-11-30 | Research & Business Foundation Sungkyunkwan University | Data discard method for journaling file system and memory management apparatus thereof |
US9880786B1 (en) * | 2014-05-30 | 2018-01-30 | Amazon Technologies, Inc. | Multi-tiered elastic block device performance |
US10360622B2 (en) | 2016-05-31 | 2019-07-23 | Target Brands, Inc. | Method and system for attribution rule controls with page content preview |
US10592326B2 (en) | 2017-03-08 | 2020-03-17 | Axxana (Israel) Ltd. | Method and apparatus for data loss assessment |
US10671370B2 (en) * | 2018-05-30 | 2020-06-02 | Red Hat, Inc. | Distributing file system states |
US10728090B2 (en) | 2016-12-02 | 2020-07-28 | Nutanix, Inc. | Configuring network segmentation for a virtualization environment |
CN111797058A (en) * | 2020-07-02 | 2020-10-20 | 长沙景嘉微电子股份有限公司 | Universal file system and file management method |
US10824455B2 (en) | 2016-12-02 | 2020-11-03 | Nutanix, Inc. | Virtualized server systems and methods including load balancing for virtualized file servers |
US11055183B2 (en) | 2009-08-04 | 2021-07-06 | Axxana (Israel) Ltd. | Data gap management in a remote data mirroring system |
US11086826B2 (en) | 2018-04-30 | 2021-08-10 | Nutanix, Inc. | Virtualized server systems and methods including domain joining techniques |
US11194680B2 (en) | 2018-07-20 | 2021-12-07 | Nutanix, Inc. | Two node clusters recovery on a failure |
US11218418B2 (en) | 2016-05-20 | 2022-01-04 | Nutanix, Inc. | Scalable leadership election in a multi-processing computing environment |
CN114063879A (en) * | 2020-07-31 | 2022-02-18 | 伊姆西Ip控股有限责任公司 | Method, electronic device and computer program product for processing operation commands |
US11269972B2 (en) | 2016-05-31 | 2022-03-08 | Target Brands, Inc. | Date-specific webpage versions |
US11281484B2 (en) | 2016-12-06 | 2022-03-22 | Nutanix, Inc. | Virtualized server systems and methods including scaling of file system virtual machines |
US11288239B2 (en) | 2016-12-06 | 2022-03-29 | Nutanix, Inc. | Cloning virtualized file servers |
US11294777B2 (en) | 2016-12-05 | 2022-04-05 | Nutanix, Inc. | Disaster recovery for distributed file servers, including metadata fixers |
US11310286B2 (en) | 2014-05-09 | 2022-04-19 | Nutanix, Inc. | Mechanism for providing external access to a secured networked virtualization environment |
US11386022B2 (en) * | 2020-03-05 | 2022-07-12 | Samsung Electronics Co., Ltd. | Memory storage device including a configurable data transfer trigger |
US11562034B2 (en) | 2016-12-02 | 2023-01-24 | Nutanix, Inc. | Transparent referrals for distributed file servers |
US11568073B2 (en) | 2016-12-02 | 2023-01-31 | Nutanix, Inc. | Handling permissions for virtualized file servers |
US11770447B2 (en) | 2018-10-31 | 2023-09-26 | Nutanix, Inc. | Managing high-availability file servers |
US11768809B2 (en) | 2020-05-08 | 2023-09-26 | Nutanix, Inc. | Managing incremental snapshots for fast leader node bring-up |
US12072770B2 (en) | 2021-08-19 | 2024-08-27 | Nutanix, Inc. | Share-based file server replication for disaster recovery |
US12117972B2 (en) | 2021-08-19 | 2024-10-15 | Nutanix, Inc. | File server managers and systems for managing virtualized file servers |
US12131192B2 (en) | 2021-03-18 | 2024-10-29 | Nutanix, Inc. | Scope-based distributed lock infrastructure for virtualized file server |
US12153690B2 (en) | 2022-01-24 | 2024-11-26 | Nutanix, Inc. | Consistent access control lists across file servers for local users in a distributed file server environment |
US12182264B2 (en) | 2022-03-11 | 2024-12-31 | Nutanix, Inc. | Malicious activity detection, validation, and remediation in virtualized file servers |
US12189499B2 (en) | 2022-07-29 | 2025-01-07 | Nutanix, Inc. | Self-service restore (SSR) snapshot replication with share-level file system disaster recovery on virtualized file servers |
US12197398B2 (en) | 2021-03-31 | 2025-01-14 | Nutanix, Inc. | Virtualized file servers and methods to persistently store file system event data |
US12242455B2 (en) | 2021-03-31 | 2025-03-04 | Nutanix, Inc. | File analytics systems and methods including receiving and processing file system event data in order |
US12248435B2 (en) | 2021-03-31 | 2025-03-11 | Nutanix, Inc. | File analytics systems and methods |
US12248434B2 (en) | 2021-03-31 | 2025-03-11 | Nutanix, Inc. | File analytics systems including examples providing metrics adjusted for application operation |
US12307238B2 (en) | 2023-04-25 | 2025-05-20 | Nutanix, Inc. | Self-healing virtualized file server |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069806B2 (en) * | 2012-03-27 | 2015-06-30 | Google Inc. | Virtual block devices |
US8938481B2 (en) | 2012-08-13 | 2015-01-20 | Commvault Systems, Inc. | Generic file level restore from a block-level secondary copy |
US9798596B2 (en) | 2014-02-27 | 2017-10-24 | Commvault Systems, Inc. | Automatic alert escalation for an information management system |
KR101674176B1 (en) * | 2014-07-24 | 2016-11-08 | 성균관대학교산학협력단 | Method and apparatus for fsync system call processing using ordered mode journaling with file unit |
US10360110B2 (en) | 2014-08-06 | 2019-07-23 | Commvault Systems, Inc. | Point-in-time backups of a production application made accessible over fibre channel and/or iSCSI as data sources to a remote application by representing the backups as pseudo-disks operating apart from the production application and its host |
US9852026B2 (en) | 2014-08-06 | 2017-12-26 | Commvault Systems, Inc. | Efficient application recovery in an information management system based on a pseudo-storage-device driver |
US11249858B2 (en) | 2014-08-06 | 2022-02-15 | Commvault Systems, Inc. | Point-in-time backups of a production application made accessible over fibre channel and/or ISCSI as data sources to a remote application by representing the backups as pseudo-disks operating apart from the production application and its host |
US9946548B2 (en) * | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9766825B2 (en) | 2015-07-22 | 2017-09-19 | Commvault Systems, Inc. | Browse and restore for block-level backups |
US10296368B2 (en) | 2016-03-09 | 2019-05-21 | Commvault Systems, Inc. | Hypervisor-independent block-level live browse for access to backed up virtual machine (VM) data and hypervisor-free file-level recovery (block-level pseudo-mount) |
US10740193B2 (en) | 2017-02-27 | 2020-08-11 | Commvault Systems, Inc. | Hypervisor-independent reference copies of virtual machine payload data based on block-level pseudo-mount |
US10664352B2 (en) | 2017-06-14 | 2020-05-26 | Commvault Systems, Inc. | Live browsing of backed up data residing on cloned disks |
US10872069B2 (en) | 2019-01-22 | 2020-12-22 | Commvault Systems, Inc. | File indexing for virtual machine backups in a data storage management system |
US11347707B2 (en) | 2019-01-22 | 2022-05-31 | Commvault Systems, Inc. | File indexing for virtual machine backups based on using live browse features |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544356A (en) * | 1990-12-31 | 1996-08-06 | Intel Corporation | Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block |
US7072910B2 (en) * | 2002-03-22 | 2006-07-04 | Network Appliance, Inc. | File folding technique |
US7099900B1 (en) * | 2000-09-13 | 2006-08-29 | Veritas Operating Corporation | Mapping driver for use in data backup systems |
US7260575B2 (en) * | 1999-05-12 | 2007-08-21 | International Business Machines Corporation | Performance optimization for data sharing across batch sequential processes and on-line transaction processes |
US7392261B2 (en) * | 2004-05-20 | 2008-06-24 | International Business Machines Corporation | Method, system, and program for maintaining a namespace of filesets accessible to clients over a network |
US7392260B2 (en) * | 2003-07-21 | 2008-06-24 | Innopath Software, Inc. | Code alignment of binary files |
US20100070544A1 (en) * | 2008-09-12 | 2010-03-18 | Microsoft Corporation | Virtual block-level storage over a file system |
US7698334B2 (en) * | 2005-04-29 | 2010-04-13 | Netapp, Inc. | System and method for multi-tiered meta-data caching and distribution in a clustered computer environment |
US20110302383A1 (en) * | 1997-10-30 | 2011-12-08 | Commvault Systems, Inc. | Systems and methods for transferring data in a block-level storage operation |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6779063B2 (en) | 2001-04-09 | 2004-08-17 | Hitachi, Ltd. | Direct access storage system having plural interfaces which permit receipt of block and file I/O requests |
JP4211285B2 (en) | 2002-05-24 | 2009-01-21 | 株式会社日立製作所 | Method and apparatus for virtual unification of network storage system |
US7584279B1 (en) | 2002-07-02 | 2009-09-01 | Netapp, Inc. | System and method for mapping block-based file operations to file level protocols |
US7263108B2 (en) | 2002-08-06 | 2007-08-28 | Netxen, Inc. | Dual-mode network storage systems and methods |
US7243207B1 (en) | 2004-09-27 | 2007-07-10 | Network Appliance, Inc. | Technique for translating a pure virtual file system data stream into a hybrid virtual volume |
US7383406B2 (en) | 2004-11-19 | 2008-06-03 | International Business Machines Corporation | Application transparent autonomic availability on a storage area network aware file system |
US7801993B2 (en) | 2007-07-19 | 2010-09-21 | Hitachi, Ltd. | Method and apparatus for storage-service-provider-aware storage system |
-
2010
- 2010-05-05 US US12/773,852 patent/US8290994B2/en not_active Expired - Fee Related
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544356A (en) * | 1990-12-31 | 1996-08-06 | Intel Corporation | Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block |
US20110302383A1 (en) * | 1997-10-30 | 2011-12-08 | Commvault Systems, Inc. | Systems and methods for transferring data in a block-level storage operation |
US7260575B2 (en) * | 1999-05-12 | 2007-08-21 | International Business Machines Corporation | Performance optimization for data sharing across batch sequential processes and on-line transaction processes |
US7099900B1 (en) * | 2000-09-13 | 2006-08-29 | Veritas Operating Corporation | Mapping driver for use in data backup systems |
US7072910B2 (en) * | 2002-03-22 | 2006-07-04 | Network Appliance, Inc. | File folding technique |
US7392260B2 (en) * | 2003-07-21 | 2008-06-24 | Innopath Software, Inc. | Code alignment of binary files |
US7392261B2 (en) * | 2004-05-20 | 2008-06-24 | International Business Machines Corporation | Method, system, and program for maintaining a namespace of filesets accessible to clients over a network |
US7698334B2 (en) * | 2005-04-29 | 2010-04-13 | Netapp, Inc. | System and method for multi-tiered meta-data caching and distribution in a clustered computer environment |
US20100070544A1 (en) * | 2008-09-12 | 2010-03-18 | Microsoft Corporation | Virtual block-level storage over a file system |
Cited By (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055183B2 (en) | 2009-08-04 | 2021-07-06 | Axxana (Israel) Ltd. | Data gap management in a remote data mirroring system |
US20120278295A1 (en) * | 2011-04-29 | 2012-11-01 | International Business Machines Corporation | Disk image introspection for storage systems |
US9244933B2 (en) * | 2011-04-29 | 2016-01-26 | International Business Machines Corporation | Disk image introspection for storage systems |
US8301597B1 (en) * | 2011-09-16 | 2012-10-30 | Ca, Inc. | System and method for network file system server replication using reverse path lookup |
US9552367B2 (en) | 2011-09-16 | 2017-01-24 | Ca, Inc. | System and method for network file system server replication using reverse path lookup |
US9235594B2 (en) * | 2011-11-29 | 2016-01-12 | International Business Machines Corporation | Synchronizing updates across cluster filesystems |
US20130138616A1 (en) * | 2011-11-29 | 2013-05-30 | International Business Machines Corporation | Synchronizing updates across cluster filesystems |
US10698866B2 (en) * | 2011-11-29 | 2020-06-30 | International Business Machines Corporation | Synchronizing updates across cluster filesystems |
US20160103850A1 (en) * | 2011-11-29 | 2016-04-14 | International Business Machines Corporation | Synchronizing Updates Across Cluster Filesystems |
US9639541B2 (en) * | 2012-01-24 | 2017-05-02 | Varonis Systems, Inc | Method and apparatus for authentication of file read events |
US20140297612A1 (en) * | 2012-01-24 | 2014-10-02 | Varonis Systems, Inc | Method and apparatus for authentication of file read events |
US8825724B2 (en) * | 2012-03-29 | 2014-09-02 | Lsi Corporation | File system hinting |
KR101445481B1 (en) | 2012-03-29 | 2014-09-26 | 엘에스아이 코포레이션 | File system hinting |
US20130262533A1 (en) * | 2012-03-29 | 2013-10-03 | Lsi Corporation | File system hinting |
CN103365944A (en) * | 2012-03-29 | 2013-10-23 | Lsi公司 | File system hinting |
EP2645260A3 (en) * | 2012-03-29 | 2014-03-19 | LSI Corporation | File system hinting |
US9519647B2 (en) * | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US20160224434A1 (en) * | 2013-10-16 | 2016-08-04 | Axxana (Israel) Ltd. | Zero-transaction-loss recovery for database systems |
US10769028B2 (en) * | 2013-10-16 | 2020-09-08 | Axxana (Israel) Ltd. | Zero-transaction-loss recovery for database systems |
CN104866456A (en) * | 2014-02-24 | 2015-08-26 | 三星电子株式会社 | Electronic device and communication method |
US20170153841A1 (en) * | 2014-02-24 | 2017-06-01 | Samsung Electronics Co., Ltd. | Electronic device and communication method |
US9864543B2 (en) * | 2014-02-24 | 2018-01-09 | Samsung Electronics Co., Ltd. | Electronic device and communication method |
US11310286B2 (en) | 2014-05-09 | 2022-04-19 | Nutanix, Inc. | Mechanism for providing external access to a secured networked virtualization environment |
US9880786B1 (en) * | 2014-05-30 | 2018-01-30 | Amazon Technologies, Inc. | Multi-tiered elastic block device performance |
US10540164B2 (en) | 2016-02-12 | 2020-01-21 | Nutanix, Inc. | Virtualized file server upgrade |
US10831465B2 (en) | 2016-02-12 | 2020-11-10 | Nutanix, Inc. | Virtualized file server distribution across clusters |
US10540165B2 (en) | 2016-02-12 | 2020-01-21 | Nutanix, Inc. | Virtualized file server rolling upgrade |
US12135963B2 (en) | 2016-02-12 | 2024-11-05 | Nutanix, Inc. | Virtualized file server distribution across clusters |
US12014166B2 (en) | 2016-02-12 | 2024-06-18 | Nutanix, Inc. | Virtualized file server user views |
US11966729B2 (en) | 2016-02-12 | 2024-04-23 | Nutanix, Inc. | Virtualized file server |
US10540166B2 (en) | 2016-02-12 | 2020-01-21 | Nutanix, Inc. | Virtualized file server high availability |
US10719307B2 (en) | 2016-02-12 | 2020-07-21 | Nutanix, Inc. | Virtualized file server block awareness |
US10719305B2 (en) | 2016-02-12 | 2020-07-21 | Nutanix, Inc. | Virtualized file server tiers |
US10719306B2 (en) | 2016-02-12 | 2020-07-21 | Nutanix, Inc. | Virtualized file server resilience |
US11966730B2 (en) | 2016-02-12 | 2024-04-23 | Nutanix, Inc. | Virtualized file server smart data ingestion |
US12153913B2 (en) | 2016-02-12 | 2024-11-26 | Nutanix, Inc. | Virtualized file server deployment |
US11947952B2 (en) | 2016-02-12 | 2024-04-02 | Nutanix, Inc. | Virtualized file server disaster recovery |
US10809998B2 (en) | 2016-02-12 | 2020-10-20 | Nutanix, Inc. | Virtualized file server splitting and merging |
US11922157B2 (en) | 2016-02-12 | 2024-03-05 | Nutanix, Inc. | Virtualized file server |
US11537384B2 (en) | 2016-02-12 | 2022-12-27 | Nutanix, Inc. | Virtualized file server distribution across clusters |
US10838708B2 (en) | 2016-02-12 | 2020-11-17 | Nutanix, Inc. | Virtualized file server backup to cloud |
US10949192B2 (en) | 2016-02-12 | 2021-03-16 | Nutanix, Inc. | Virtualized file server data sharing |
US12217039B2 (en) | 2016-02-12 | 2025-02-04 | Nutanix, Inc. | Virtualized file server data sharing |
US11669320B2 (en) | 2016-02-12 | 2023-06-06 | Nutanix, Inc. | Self-healing virtualized file server |
US11106447B2 (en) | 2016-02-12 | 2021-08-31 | Nutanix, Inc. | Virtualized file server user views |
US11645065B2 (en) | 2016-02-12 | 2023-05-09 | Nutanix, Inc. | Virtualized file server user views |
US20170235654A1 (en) | 2016-02-12 | 2017-08-17 | Nutanix, Inc. | Virtualized file server resilience |
US11579861B2 (en) | 2016-02-12 | 2023-02-14 | Nutanix, Inc. | Virtualized file server smart data ingestion |
US11550559B2 (en) | 2016-02-12 | 2023-01-10 | Nutanix, Inc. | Virtualized file server rolling upgrade |
US11550558B2 (en) | 2016-02-12 | 2023-01-10 | Nutanix, Inc. | Virtualized file server deployment |
US11550557B2 (en) | 2016-02-12 | 2023-01-10 | Nutanix, Inc. | Virtualized file server |
US11544049B2 (en) | 2016-02-12 | 2023-01-03 | Nutanix, Inc. | Virtualized file server disaster recovery |
US20170235591A1 (en) | 2016-02-12 | 2017-08-17 | Nutanix, Inc. | Virtualized file server block awareness |
US11218418B2 (en) | 2016-05-20 | 2022-01-04 | Nutanix, Inc. | Scalable leadership election in a multi-processing computing environment |
US11888599B2 (en) | 2016-05-20 | 2024-01-30 | Nutanix, Inc. | Scalable leadership election in a multi-processing computing environment |
US10552377B2 (en) * | 2016-05-26 | 2020-02-04 | Research & Business Foundation Sungkyunkwan University | Data discard method for journaling file system and memory management apparatus thereof |
US20170344573A1 (en) * | 2016-05-26 | 2017-11-30 | Research & Business Foundation Sungkyunkwan University | Data discard method for journaling file system and memory management apparatus thereof |
US11269972B2 (en) | 2016-05-31 | 2022-03-08 | Target Brands, Inc. | Date-specific webpage versions |
US10360622B2 (en) | 2016-05-31 | 2019-07-23 | Target Brands, Inc. | Method and system for attribution rule controls with page content preview |
US11532035B2 (en) | 2016-05-31 | 2022-12-20 | Target Brands, Inc. | Attribution rule controls with page content preview |
US10728090B2 (en) | 2016-12-02 | 2020-07-28 | Nutanix, Inc. | Configuring network segmentation for a virtualization environment |
US11562034B2 (en) | 2016-12-02 | 2023-01-24 | Nutanix, Inc. | Transparent referrals for distributed file servers |
US11568073B2 (en) | 2016-12-02 | 2023-01-31 | Nutanix, Inc. | Handling permissions for virtualized file servers |
US10824455B2 (en) | 2016-12-02 | 2020-11-03 | Nutanix, Inc. | Virtualized server systems and methods including load balancing for virtualized file servers |
US11775397B2 (en) | 2016-12-05 | 2023-10-03 | Nutanix, Inc. | Disaster recovery for distributed file servers, including metadata fixers |
US11294777B2 (en) | 2016-12-05 | 2022-04-05 | Nutanix, Inc. | Disaster recovery for distributed file servers, including metadata fixers |
US11288239B2 (en) | 2016-12-06 | 2022-03-29 | Nutanix, Inc. | Cloning virtualized file servers |
US11281484B2 (en) | 2016-12-06 | 2022-03-22 | Nutanix, Inc. | Virtualized server systems and methods including scaling of file system virtual machines |
US11922203B2 (en) | 2016-12-06 | 2024-03-05 | Nutanix, Inc. | Virtualized server systems and methods including scaling of file system virtual machines |
US11954078B2 (en) | 2016-12-06 | 2024-04-09 | Nutanix, Inc. | Cloning virtualized file servers |
US10592326B2 (en) | 2017-03-08 | 2020-03-17 | Axxana (Israel) Ltd. | Method and apparatus for data loss assessment |
US11675746B2 (en) | 2018-04-30 | 2023-06-13 | Nutanix, Inc. | Virtualized server systems and methods including domain joining techniques |
US11086826B2 (en) | 2018-04-30 | 2021-08-10 | Nutanix, Inc. | Virtualized server systems and methods including domain joining techniques |
US10671370B2 (en) * | 2018-05-30 | 2020-06-02 | Red Hat, Inc. | Distributing file system states |
US11194680B2 (en) | 2018-07-20 | 2021-12-07 | Nutanix, Inc. | Two node clusters recovery on a failure |
US11770447B2 (en) | 2018-10-31 | 2023-09-26 | Nutanix, Inc. | Managing high-availability file servers |
US11386022B2 (en) * | 2020-03-05 | 2022-07-12 | Samsung Electronics Co., Ltd. | Memory storage device including a configurable data transfer trigger |
US11768809B2 (en) | 2020-05-08 | 2023-09-26 | Nutanix, Inc. | Managing incremental snapshots for fast leader node bring-up |
CN111797058A (en) * | 2020-07-02 | 2020-10-20 | 长沙景嘉微电子股份有限公司 | Universal file system and file management method |
CN114063879A (en) * | 2020-07-31 | 2022-02-18 | 伊姆西Ip控股有限责任公司 | Method, electronic device and computer program product for processing operation commands |
US12131192B2 (en) | 2021-03-18 | 2024-10-29 | Nutanix, Inc. | Scope-based distributed lock infrastructure for virtualized file server |
US12197398B2 (en) | 2021-03-31 | 2025-01-14 | Nutanix, Inc. | Virtualized file servers and methods to persistently store file system event data |
US12242455B2 (en) | 2021-03-31 | 2025-03-04 | Nutanix, Inc. | File analytics systems and methods including receiving and processing file system event data in order |
US12248435B2 (en) | 2021-03-31 | 2025-03-11 | Nutanix, Inc. | File analytics systems and methods |
US12248434B2 (en) | 2021-03-31 | 2025-03-11 | Nutanix, Inc. | File analytics systems including examples providing metrics adjusted for application operation |
US12117972B2 (en) | 2021-08-19 | 2024-10-15 | Nutanix, Inc. | File server managers and systems for managing virtualized file servers |
US12164383B2 (en) | 2021-08-19 | 2024-12-10 | Nutanix, Inc. | Failover and failback of distributed file servers |
US12072770B2 (en) | 2021-08-19 | 2024-08-27 | Nutanix, Inc. | Share-based file server replication for disaster recovery |
US12153690B2 (en) | 2022-01-24 | 2024-11-26 | Nutanix, Inc. | Consistent access control lists across file servers for local users in a distributed file server environment |
US12182264B2 (en) | 2022-03-11 | 2024-12-31 | Nutanix, Inc. | Malicious activity detection, validation, and remediation in virtualized file servers |
US12189499B2 (en) | 2022-07-29 | 2025-01-07 | Nutanix, Inc. | Self-service restore (SSR) snapshot replication with share-level file system disaster recovery on virtualized file servers |
US12307238B2 (en) | 2023-04-25 | 2025-05-20 | Nutanix, Inc. | Self-healing virtualized file server |
Also Published As
Publication number | Publication date |
---|---|
US8290994B2 (en) | 2012-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8290994B2 (en) | Obtaining file system view in block-level data storage systems | |
JP6510112B2 (en) | Datastream Capture and Persistence Policy | |
US10691716B2 (en) | Dynamic partitioning techniques for data streams | |
US9836514B2 (en) | Cache based key-value store mapping and replication | |
US11422907B2 (en) | Disconnected operation for systems utilizing cloud storage | |
US11093466B2 (en) | Incremental out-of-place updates for index structures | |
US20180189367A1 (en) | Data stream ingestion and persistence techniques | |
US7890716B2 (en) | Method of managing time-based differential snapshot | |
US20080077752A1 (en) | Storage system and audit log management method | |
US12001452B2 (en) | Search and analytics for storage systems | |
US20080027998A1 (en) | Method and apparatus of continuous data protection for NAS | |
JP2014535107A5 (en) | ||
US9075722B2 (en) | Clustered and highly-available wide-area write-through file system cache | |
WO2020024903A1 (en) | Method and device for searching for blockchain data, and computer readable storage medium | |
US20220342851A1 (en) | File system event monitoring using metadata snapshots | |
CN110598467A (en) | Memory data block integrity checking method | |
CN104881483A (en) | Automatic detecting and evidence-taking method for Hadoop platform data leakage attack | |
CN104965835A (en) | Method and apparatus for reading and writing files of a distributed file system | |
US8239403B2 (en) | Enhancing soft file system links | |
US11514002B2 (en) | Indexing splitter for any pit replication | |
WO2019200751A1 (en) | Host and backup computer switching method, apparatus, computing device and storage medium | |
US11681657B2 (en) | System and method for parallel flushing with bucketized data | |
CN106790521B (en) | System and method for distributed networking by using node equipment based on FTP | |
US11531644B2 (en) | Fractional consistent global snapshots of a distributed namespace | |
US8954780B1 (en) | Systems and methods for transferring input/output operations within computer clusters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ALLALOUF, MIRIAM;BEN-YEHUDA, MULI;SATRAN, JULIAN;AND OTHERS;SIGNING DATES FROM 20100428 TO 20100503;REEL/FRAME:024334/0645 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20201016 |