US20170161294A1 - File directory storage on a storage device - Google Patents
File directory storage on a storage device Download PDFInfo
- Publication number
- US20170161294A1 US20170161294A1 US15/327,421 US201415327421A US2017161294A1 US 20170161294 A1 US20170161294 A1 US 20170161294A1 US 201415327421 A US201415327421 A US 201415327421A US 2017161294 A1 US2017161294 A1 US 2017161294A1
- Authority
- US
- United States
- Prior art keywords
- file
- directory
- storage device
- storage
- storage space
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G06F17/30138—
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G06F17/30091—
-
- G06F17/30135—
-
- G06F17/30144—
Definitions
- a file system is a means for organizing data on a storage device.
- a file system may be used to control how data is stored and retrieved from a storage system.
- data may be stored as a “file”.
- a file system provides the basic structure for organizing files in a storage device. For instance, a file may be placed in a directory or subdirectory of a file system. The file system keeps track of file locations (physical or virtual) on a storage medium.
- FIG. 1 is a block diagram of an example computing device for storing file directories
- FIG. 2 is a block diagram of an example storage device indicating a reserved portion for storing file directories
- FIG. 3 is a block diagram of an example storage device for storing file directories
- FIG. 4 is a flowchart of an example method for storing file directories on a storage device.
- FIG. 5 is a block diagram of an example system for storing file directories.
- a file system is an integral part of an operating system. It provides the underlying structure that a computing device uses to organize data on a storage medium.
- a computer file or “file” is the basic component of a file system. Each piece of data on a storage device may be called a “file”.
- a file may contain data, such as text files, image files, video files, and the like, or it may be an executable file or program.
- Files may be organized by storing related files in a directory or sub-directory.
- a directory or sub-directory is also a file.
- the term “directory” (or “file directory), as used herein, may include a file that contains references (for example, names) to other files.
- a directory may be considered as a container for files.
- Each directory might consist of several files and in order to store these file names and respective inode number (i.e. (filename, inode number)), it may require several on-disk pages.
- Each such page is called as directory page.
- Directory page thus, is a container which may hold a finite set of filenames and respective inode mapping i.e. ⁇ filename, inode number ⁇ . Apart from ⁇ filename, inode number ⁇ , a directory page may hold other metadata relevant to an inode or a file.
- a directory contained inside another directory is called a subdirectory.
- the top-most directory in such a file system, which does not have a parent of its own, is called the root directory.
- a file system may be associated with a volume, which is, generally, a single accessible storage area on a single partition of a storage medium, such as a hard disk, optical disc, NAND flash memory, etc.
- a volume may be divided into blocks, which is a sequence of bits or bytes.
- Many file systems use blocks to store file and directories.
- a file or directory may be stored over several blocks that may be located at various places on a volume.
- a directory may be spread over different physical areas of a storage medium.
- One of the reasons for fragmentation of directory extents is that a directory page allocation request is serviced from same free space pool on a storage medium which is used for servicing other storage allocation requests such as a data or tag page allocation request.
- the directories and their pages on a storage medium are fragmented i.e. they are not close enough; it may cause a number of issues. For instance, it may result in a longer read latency since a directory may be scattered over multiple blocks in a storage medium. It may lead to a longer disk spindle movement and, consequently, more power consumption since multiple I/O reads may be required. In another instance, it may impact the performance of a file correction tool, such as a file system check (fsck), since in order to validate a directory tree and correct name space connectivity, an fsck tool may need to walk the name space resulting in read of several directories and their respective directory pages on disk. If the directories and their pages on disk are not close enough, it may result in longer read latency and affect the performance of fsck tool.
- a file correction tool such as a file system check (fsck)
- a portion of available free space on a storage device may be assigned or demarcated for storing file directories only.
- the assigned portion may be used to store the file directory. In an instance, this would lead to aggregation of the directories and directory pages, which would help bring the directories close to each other, thereby improving the read latency, directory listing and fsck tool directory tree connectivity phase.
- FIG. 1 is a block diagram of an example computing device 100 for storing file directories.
- Computing device 100 generally represents any type of computing system capable of reading machine-executable instructions. Examples of computing device may include, without limitation, a server, a desktop computer, a notebook computer, a tablet computer, a thin client, a mobile device, a personal digital assistant (PDA), a phablet, and the like.
- computing device 100 may be a file storage system.
- computing device 100 may include a data storage device or medium 102 , a system module 104 , and a file system check (fsck) module 106 .
- Storage device 102 may be a primary storage device such as, but not limited to, random access memory (RAM), read only memory (ROM), processor cache, or another type of dynamic storage device that may store information and machine-readable instructions that may be executed by a processor. For example, Synchronous DRAM (SDRAM), Double Data Rate (DDR), Rambus DRAM (RDRAM), Rambus RAM, etc.
- SDRAM Synchronous DRAM
- DDR Double Data Rate
- RDRAM Rambus DRAM
- Rambus RAM Rambus RAM
- Storage device 102 may be a secondary storage device such as, but not limited to, a floppy disk, a hard disk, a CD-ROM, a DVD, a pen drive, a flash memory (e.g. USB flash drives or keys), a paper tape, an Iomega Zip drive, and the like.
- Storage device 102 may be a tertiary storage device such as, but not limited to, a tape library, an optical jukebox, and the like.
- storage device 102 may be a Direct Attached Storage (DAS) device, a Network Attached Storage (NAS) device, a tape drive, a magnetic tape drive, a data archival storage system, or a combination of these devices.
- DAS Direct Attached Storage
- NAS Network Attached Storage
- storage device 102 may store data based on a block-based file system.
- files are typically stored in units known as blocks, which is a sequence of bytes or bits.
- blocks are typically stored in units known as blocks, which is a sequence of bytes or bits.
- Many file systems use blocks to store file and directories. In such case, data is read as a whole block.
- a block includes data only from a single file.
- a storage device (example, 102 ) may contain empty blocks. These may include unused blocks i.e. blocks on which no data have been written so far or blocks from which data has been deleted. Such areas (or blocks) on a storage device (example, 102 ) may be termed as “free space.”
- file systems may include FAT (FAT12, FAT16, FAT32), NTFS, HFS and HFS+, HPFS, UFS, ext2, ext3, and ext4.
- FAT FAT12, FAT16, FAT32
- NTFS N-FU
- HFS HFS+
- HPFS HPFS
- UFS UFS
- various allocation methods may be used to allocate a file on storage device (example, 102 ).
- An allocation method refers to how disk blocks are allocated for files. For example, in contiguous allocation, each file may occupy a set of contiguous blocks on the storage device (example, 102 ). In another form of contiguous allocation, a file system may allocate disk blocks in extents. An extent is a contiguous block of disks, which may be used for file allocation. A file may consist of one or more extents.
- linked allocation each file may be a linked list of disk blocks, and the blocks may be scattered anywhere on the disk
- a section of available free storage space on a storage device may be assigned or reserved for storing file directories or directory pages only.
- free space available on a storage medium may be analyzed, and a portion of such free space may be reserved for storing file directories or directory pages only.
- the reserved area of free storage space may not be used for storing any other file, such as a data file, a metadata file, an executable file, etc., apart from a file directory or directory page.
- system module 104 may allocate storage space to the directory (or directory page), from the assigned section only. In other words, all directory or directory page allocation requests may get storage space from the reserved section of the storage device (example, 102 ) only. This results in aggregation of directories and directory pages in a specific physical area of the storage device (example, 102 ). Likewise, if a request is received for allocating storage space to a sub-directory of a file directory already stored in the assigned section of the storage device (example, 102 ), the sub-directory may be allocated a storage space in physical proximity of the file directory in the assigned portion of the storage space.
- system module 104 may allocate to the sub-directory a storage space contiguous to the storage space allocated to the file directory in the assigned portion of the available free space. In a contiguous allocation, both the file directory and the sub-directory may occupy a set of contiguous blocks on the disk.
- a request for allocating storage space to a file associated with a file directory (for e.g., a data file)
- a request may be fulfilled from the unassigned portion of the available free storage space.
- the portion of available free space assigned only for storing a file directory (or a directory page) is proportionate (for example, percentage) to the available free space on the storage device (example, 102 ). This is illustrated in FIG. 2 .
- a portion (10%; indicated as “A”) 202 of free storage space 200 on a storage device 210 may be reserved for storing file directories (or directory pages) such as root directory (or “root”), dir 1, dir 2, dir 4, and dir 5.
- a portion (20%; indicated as “B”) 204 of the remaining free storage space may be used for allocating storage to metadata files.
- the remaining free space (70%; indicated as “C”) 206 may be used for allocating storage to, for instance, data files of a directory stored in portion “A”. For instance, page 0 and page 1 of directory “dir 4”.
- computing device 100 may include a file system check (fsck) module 106 .
- An fsck module 106 may be used for checking and repairing file system inconsistencies on the storage device.
- a file system may become inconsistent, for example, due to power failure, a nonstandard shutdown, hardware failure, etc. This may cause inconsistencies and mismatched information relating to data blocks, free blocks, inodes, etc. in a file system.
- allocating a portion of available free space on a storage device for storing file directories only, and utilizing the assigned portion to store a file directory may enable an fsck module 106 to improve read latency during directory tree validation involving the file directories. It may also enable a file system check (fsck) module 106 to check consistency of a file system that includes such directories (or directory pages).
- module may refer to a software component (machine readable instructions), a hardware component or a combination thereof.
- a module may include, by way of example, components, such as software components, processes, tasks, co-routines, functions, attributes, procedures, drivers, firmware, data, databases, data structures, Application Specific Integrated Circuits (ASIC) and other computing devices.
- a module may reside on a volatile or non-volatile storage medium (for example, 102 ) and configured to interact with a processor of a computing device (e.g. 100 ).
- FIG. 3 is a block diagram of an example storage device 300 for storing file directories.
- the storage device may be analogous to storage device 102 , in which like reference numerals correspond to the same or similar, though perhaps not identical, components.
- components or reference numerals of FIG. 3 having a same or similarly described function in FIG. 1 are not being described in connection with FIG. 3 .
- Said components or reference numerals may be considered alike.
- Storage device 300 may be a primary storage device such as, but not limited to, random access memory (RAM), read only memory (ROM), processor cache, or another type of dynamic storage device that may store information and machine-readable instructions that may be executed by a processor. For example, Synchronous DRAM (SDRAM), Double Data Rate (DDR), Rambus DRAM (RDRAM), Rambus RAM, etc.
- Storage device 102 may be a secondary storage device such as, but not limited to, a floppy disk, a hard disk, a CD-ROM, a DVD, a pen drive, a flash memory (e.g. USB flash drives or keys), a paper tape, an Iomega Zip drive, and the like.
- Storage device 300 may be a tertiary storage device such as, but not limited to, a tape library, an optical jukebox, and the like.
- storage device 300 may be a Direct Attached Storage (DAS) device, a Network Attached Storage (NAS) device, a tape drive, a magnetic tape drive, a data archival storage system, or a combination of these devices.
- DAS Direct Attached Storage
- NAS Network Attached Storage
- tape drive a magnetic tape drive
- data archival storage system or a combination of these devices.
- storage device may include a section 302 dedicated for storing only file directories (or directory pages) of a file system.
- the section 302 is a portion of available free space on the storage device wherein all file directories (or directory pages) of the file system may be stored. Storing all file directories (or directory pages) in the dedicated section 302 improves the read latency during directory tree validation involving such file directories.
- Storage device may include a file system check (fsck) module 106 , which may be analogous to the fsck module described earlier.
- fsck module 106 may perform directory tree validation of a file system comprising file directories (and/or directory pages) stored in the dedicated section of the storage device.
- FIG. 4 is a flowchart of an example method 400 for storing file directories on a storage device.
- the method 400 may at least partially be executed on a computing device 100 of FIG. 1 or storage device 300 of FIG. 3 .
- other computing devices may be used as well.
- a portion of available free space on a storage device (example, 102 ) may be assigned for storing file directories (or directory pages) only.
- a directory or directory page allocation request to a computing or storage device (example, 102 ) may get storage space (for example, a disk block) from a specific storage space reserved for such requests.
- a directory page is allocated from a specific portion of the available free storage space.
- the free space available on the storage space may be determined prior to reserving a portion of available free space on a storage device for storing file directories (or directory pages); the free space available on the storage space may be determined.
- the portion of available free space assigned or reserved for allocating storage space to a directory (or directory page) may increase or decrease (i.e. it may grow or shrink dynamically, as required) depending on various pre-defined factors. These may include, by way of example, the available free space on a storage device at a given time or period, number of directory (or directory page) requests in a given period, etc.
- the portion of the available free space assigned for storing file directories may be utilized to store the file directory.
- the sub-directory may be allocated a storage space in physical proximity of the file directory in the assigned portion of the storage space.
- the sub-directory may be allocated a storage space contiguous to the storage space allocated to the file directory in the assigned portion of the available free storage space. Allocating directories (or directory pages) in a reserved area of storage space, the directory pages are stored close to each other, thereby reducing directory fragmentation.
- FIG. 5 is a block diagram of an example system 500 for ensuring data integrity of a retained file upon replication to a target system.
- System 500 includes a processor 502 and a machine-readable storage medium 504 communicatively coupled through a system bus.
- system 500 may be analogous to computing device 100 of FIG. 1 or storage device 300 of FIG. 3 .
- Processor 502 may be any type of Central Processing Unit (CPU), microprocessor, or processing logic that interprets and executes machine-readable instructions stored in machine-readable storage medium 504 .
- Machine-readable storage medium 504 may be a random access memory (RAM) or another type of dynamic storage device that may store information and machine-readable instructions that may be executed by processor 502 .
- RAM random access memory
- machine-readable storage medium 504 may be Synchronous DRAM (SDRAM), Double Data Rate (DDR), Rambus DRAM (RDRAM), Rambus RAM, etc. or a storage memory media such as a floppy disk, a hard disk, a CD-ROM, a DVD, a pen drive, and the like.
- machine-readable storage medium 504 may be a non-transitory machine-readable medium.
- Machine-readable storage medium 504 may store instructions 506 and 508 .
- instructions 506 may be executed by processor 502 to assign a portion of available free storage space on a storage device (example, 102 ) for storing file directories only.
- Instructions 508 may be executed by processor 502 to allocate, in response to a request for allocating storage space on the storage device (example, 102 ) to a file directory, storage space to the file directory, from the assigned portion.
- Storage medium 504 may further include instructions to allocate, in response to a request for allocating storage space on the storage device to a file associated with the file directory, storage space to the file, from an unassigned portion of the available free storage space.
- FIG. 4 For the purpose of simplicity of explanation, the example method of FIG. 4 is shown as executing serially, however it is to be understood and appreciated that the present and other examples are not limited by the illustrated order.
- the example systems of FIGS. 1, 3 and 5 , and method of FIG. 4 may be implemented in the form of a computer program product including computer-executable instructions, such as program code, which may be run on any suitable computing device in conjunction with a suitable operating system (for example, Microsoft Windows, Linux, UNIX, and the like).
- a suitable operating system for example, Microsoft Windows, Linux, UNIX, and the like.
- Embodiments within the scope of the present solution may also include program products comprising non-transitory computer-readable media for carrying or having computer-executable instructions or data structures stored thereon.
- Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer.
- Such computer-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROM, magnetic disk storage or other storage devices, or any other medium which can be used to carry or store desired program code in the form of computer-executable instructions and which can be accessed by a general purpose or special purpose computer.
- the computer readable instructions can also be accessed from memory and executed by a processor.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- A file system is a means for organizing data on a storage device. In other words, a file system may be used to control how data is stored and retrieved from a storage system. Typically, data may be stored as a “file”. A file system provides the basic structure for organizing files in a storage device. For instance, a file may be placed in a directory or subdirectory of a file system. The file system keeps track of file locations (physical or virtual) on a storage medium.
- For a better understanding of the solution, embodiments will now be described, purely by way of example, with reference to the accompanying drawings, in which:
-
FIG. 1 is a block diagram of an example computing device for storing file directories; -
FIG. 2 is a block diagram of an example storage device indicating a reserved portion for storing file directories; -
FIG. 3 is a block diagram of an example storage device for storing file directories; -
FIG. 4 is a flowchart of an example method for storing file directories on a storage device; and -
FIG. 5 is a block diagram of an example system for storing file directories. - A file system is an integral part of an operating system. It provides the underlying structure that a computing device uses to organize data on a storage medium. A computer file or “file” is the basic component of a file system. Each piece of data on a storage device may be called a “file”. A file may contain data, such as text files, image files, video files, and the like, or it may be an executable file or program.
- Files may be organized by storing related files in a directory or sub-directory. A directory or sub-directory is also a file. The term “directory” (or “file directory), as used herein, may include a file that contains references (for example, names) to other files. Thus, a directory may be considered as a container for files. Each directory might consist of several files and in order to store these file names and respective inode number (i.e. (filename, inode number)), it may require several on-disk pages. Each such page is called as directory page. Directory page, thus, is a container which may hold a finite set of filenames and respective inode mapping i.e. {filename, inode number}. Apart from {filename, inode number}, a directory page may hold other metadata relevant to an inode or a file.
- In a hierarchical file system, a directory contained inside another directory is called a subdirectory. The top-most directory in such a file system, which does not have a parent of its own, is called the root directory.
- Increased adoption of technology by businesses has led to an explosion of data, which is typically organized by a file system as a collection of files and directories. A file system may be associated with a volume, which is, generally, a single accessible storage area on a single partition of a storage medium, such as a hard disk, optical disc, NAND flash memory, etc. A volume may be divided into blocks, which is a sequence of bits or bytes. Many file systems use blocks to store file and directories. In an instance, a file or directory may be stored over several blocks that may be located at various places on a volume. In other words, a directory may be spread over different physical areas of a storage medium. One of the reasons for fragmentation of directory extents is that a directory page allocation request is serviced from same free space pool on a storage medium which is used for servicing other storage allocation requests such as a data or tag page allocation request.
- If the directories and their pages on a storage medium are fragmented i.e. they are not close enough; it may cause a number of issues. For instance, it may result in a longer read latency since a directory may be scattered over multiple blocks in a storage medium. It may lead to a longer disk spindle movement and, consequently, more power consumption since multiple I/O reads may be required. In another instance, it may impact the performance of a file correction tool, such as a file system check (fsck), since in order to validate a directory tree and correct name space connectivity, an fsck tool may need to walk the name space resulting in read of several directories and their respective directory pages on disk. If the directories and their pages on disk are not close enough, it may result in longer read latency and affect the performance of fsck tool.
- To prevent these issues, the present disclosure describes various examples for storing file directories on a storage device. In an example, a portion of available free space on a storage device may be assigned or demarcated for storing file directories only. When a request for allocating storage space for a file directory is received, the assigned portion may be used to store the file directory. In an instance, this would lead to aggregation of the directories and directory pages, which would help bring the directories close to each other, thereby improving the read latency, directory listing and fsck tool directory tree connectivity phase.
-
FIG. 1 is a block diagram of anexample computing device 100 for storing file directories.Computing device 100 generally represents any type of computing system capable of reading machine-executable instructions. Examples of computing device may include, without limitation, a server, a desktop computer, a notebook computer, a tablet computer, a thin client, a mobile device, a personal digital assistant (PDA), a phablet, and the like. In an example,computing device 100 may be a file storage system. - In the example of
FIG. 1 ,computing device 100 may include a data storage device ormedium 102, asystem module 104, and a file system check (fsck)module 106.Storage device 102 may be a primary storage device such as, but not limited to, random access memory (RAM), read only memory (ROM), processor cache, or another type of dynamic storage device that may store information and machine-readable instructions that may be executed by a processor. For example, Synchronous DRAM (SDRAM), Double Data Rate (DDR), Rambus DRAM (RDRAM), Rambus RAM, etc.Storage device 102 may be a secondary storage device such as, but not limited to, a floppy disk, a hard disk, a CD-ROM, a DVD, a pen drive, a flash memory (e.g. USB flash drives or keys), a paper tape, an Iomega Zip drive, and the like.Storage device 102 may be a tertiary storage device such as, but not limited to, a tape library, an optical jukebox, and the like. In another example,storage device 102 may be a Direct Attached Storage (DAS) device, a Network Attached Storage (NAS) device, a tape drive, a magnetic tape drive, a data archival storage system, or a combination of these devices. - In an example,
storage device 102 may store data based on a block-based file system. In a block based file system, files are typically stored in units known as blocks, which is a sequence of bytes or bits. Many file systems use blocks to store file and directories. In such case, data is read as a whole block. A block includes data only from a single file. In many instances, a storage device (example, 102) may contain empty blocks. These may include unused blocks i.e. blocks on which no data have been written so far or blocks from which data has been deleted. Such areas (or blocks) on a storage device (example, 102) may be termed as “free space.” - Some non-limiting examples of file systems that may be used on storage device (example, 102) may include FAT (FAT12, FAT16, FAT32), NTFS, HFS and HFS+, HPFS, UFS, ext2, ext3, and ext4. Further, various allocation methods may be used to allocate a file on storage device (example, 102). An allocation method refers to how disk blocks are allocated for files. For example, in contiguous allocation, each file may occupy a set of contiguous blocks on the storage device (example, 102). In another form of contiguous allocation, a file system may allocate disk blocks in extents. An extent is a contiguous block of disks, which may be used for file allocation. A file may consist of one or more extents. In linked allocation, each file may be a linked list of disk blocks, and the blocks may be scattered anywhere on the disk. In indexed allocation, all pointers to file data are brought together in an index block.
- In an example, a section of available free storage space on a storage device (example, 102) may be assigned or reserved for storing file directories or directory pages only. In others words, free space available on a storage medium (example, 102) may be analyzed, and a portion of such free space may be reserved for storing file directories or directory pages only. The reserved area of free storage space may not be used for storing any other file, such as a data file, a metadata file, an executable file, etc., apart from a file directory or directory page.
- When a request is received for allocating storage space to a directory (or directory page) on the
storage device 102,system module 104 may allocate storage space to the directory (or directory page), from the assigned section only. In other words, all directory or directory page allocation requests may get storage space from the reserved section of the storage device (example, 102) only. This results in aggregation of directories and directory pages in a specific physical area of the storage device (example, 102). Likewise, if a request is received for allocating storage space to a sub-directory of a file directory already stored in the assigned section of the storage device (example, 102), the sub-directory may be allocated a storage space in physical proximity of the file directory in the assigned portion of the storage space. In another instance, upon receipt of a request for allocating storage space to a sub-directory of a file directory already stored in the assigned section of the storage device,system module 104 may allocate to the sub-directory a storage space contiguous to the storage space allocated to the file directory in the assigned portion of the available free space. In a contiguous allocation, both the file directory and the sub-directory may occupy a set of contiguous blocks on the disk. - In the event a request is received for allocating storage space to a file associated with a file directory (for e.g., a data file), such request may be fulfilled from the unassigned portion of the available free storage space.
- In an example, the portion of available free space assigned only for storing a file directory (or a directory page) is proportionate (for example, percentage) to the available free space on the storage device (example, 102). This is illustrated in
FIG. 2 . A portion (10%; indicated as “A”) 202 of free storage space 200 on astorage device 210, in the example ofFIG. 2 , may be reserved for storing file directories (or directory pages) such as root directory (or “root”),dir 1,dir 2,dir 4, anddir 5. A portion (20%; indicated as “B”) 204 of the remaining free storage space may be used for allocating storage to metadata files. The remaining free space (70%; indicated as “C”) 206 may be used for allocating storage to, for instance, data files of a directory stored in portion “A”. For instance,page 0 andpage 1 of directory “dir 4”. - In an instance,
computing device 100 may include a file system check (fsck)module 106. Anfsck module 106 may be used for checking and repairing file system inconsistencies on the storage device. A file system may become inconsistent, for example, due to power failure, a nonstandard shutdown, hardware failure, etc. This may cause inconsistencies and mismatched information relating to data blocks, free blocks, inodes, etc. in a file system. In an example, allocating a portion of available free space on a storage device for storing file directories only, and utilizing the assigned portion to store a file directory, may enable anfsck module 106 to improve read latency during directory tree validation involving the file directories. It may also enable a file system check (fsck)module 106 to check consistency of a file system that includes such directories (or directory pages). - The term “module” may refer to a software component (machine readable instructions), a hardware component or a combination thereof. A module may include, by way of example, components, such as software components, processes, tasks, co-routines, functions, attributes, procedures, drivers, firmware, data, databases, data structures, Application Specific Integrated Circuits (ASIC) and other computing devices. A module may reside on a volatile or non-volatile storage medium (for example, 102) and configured to interact with a processor of a computing device (e.g. 100).
-
FIG. 3 is a block diagram of anexample storage device 300 for storing file directories. In an example, the storage device may be analogous tostorage device 102, in which like reference numerals correspond to the same or similar, though perhaps not identical, components. For the sake of brevity, components or reference numerals ofFIG. 3 having a same or similarly described function inFIG. 1 are not being described in connection withFIG. 3 . Said components or reference numerals may be considered alike. -
Storage device 300 may be a primary storage device such as, but not limited to, random access memory (RAM), read only memory (ROM), processor cache, or another type of dynamic storage device that may store information and machine-readable instructions that may be executed by a processor. For example, Synchronous DRAM (SDRAM), Double Data Rate (DDR), Rambus DRAM (RDRAM), Rambus RAM, etc.Storage device 102 may be a secondary storage device such as, but not limited to, a floppy disk, a hard disk, a CD-ROM, a DVD, a pen drive, a flash memory (e.g. USB flash drives or keys), a paper tape, an Iomega Zip drive, and the like.Storage device 300 may be a tertiary storage device such as, but not limited to, a tape library, an optical jukebox, and the like. In another example,storage device 300 may be a Direct Attached Storage (DAS) device, a Network Attached Storage (NAS) device, a tape drive, a magnetic tape drive, a data archival storage system, or a combination of these devices. - In an example, storage device may include a
section 302 dedicated for storing only file directories (or directory pages) of a file system. Thesection 302 is a portion of available free space on the storage device wherein all file directories (or directory pages) of the file system may be stored. Storing all file directories (or directory pages) in thededicated section 302 improves the read latency during directory tree validation involving such file directories. - Storage device may include a file system check (fsck)
module 106, which may be analogous to the fsck module described earlier. In an example,fsck module 106 may perform directory tree validation of a file system comprising file directories (and/or directory pages) stored in the dedicated section of the storage device. -
FIG. 4 is a flowchart of anexample method 400 for storing file directories on a storage device. Themethod 400, which is described below, may at least partially be executed on acomputing device 100 ofFIG. 1 orstorage device 300 ofFIG. 3 . However, other computing devices may be used as well. Atblock 402, a portion of available free space on a storage device (example, 102) may be assigned for storing file directories (or directory pages) only. In other words, a directory or directory page allocation request to a computing or storage device (example, 102) may get storage space (for example, a disk block) from a specific storage space reserved for such requests. Thus, instead of allocating directory pages from a common free storage space pool, which may be contended by other requests such as file data allocation requests, a directory page is allocated from a specific portion of the available free storage space. - In an example, prior to reserving a portion of available free space on a storage device for storing file directories (or directory pages); the free space available on the storage space may be determined. In another example, the portion of available free space assigned or reserved for allocating storage space to a directory (or directory page) may increase or decrease (i.e. it may grow or shrink dynamically, as required) depending on various pre-defined factors. These may include, by way of example, the available free space on a storage device at a given time or period, number of directory (or directory page) requests in a given period, etc.
- At
block 404, upon receipt of a request for allocating storage space to a file directory on the storage device (example, 102), the portion of the available free space assigned for storing file directories (or directory pages) may be utilized to store the file directory. In an example, if a request is received for allocating storage space to a sub-directory of a file directory already stored in the assigned section of the storage device, the sub-directory may be allocated a storage space in physical proximity of the file directory in the assigned portion of the storage space. In another instance, upon receipt of a request for allocating storage space to a sub-directory of a file directory already stored in the assigned section of the storage device (example, 102), the sub-directory may be allocated a storage space contiguous to the storage space allocated to the file directory in the assigned portion of the available free storage space. Allocating directories (or directory pages) in a reserved area of storage space, the directory pages are stored close to each other, thereby reducing directory fragmentation. -
FIG. 5 is a block diagram of anexample system 500 for ensuring data integrity of a retained file upon replication to a target system.System 500 includes aprocessor 502 and a machine-readable storage medium 504 communicatively coupled through a system bus. In an example,system 500 may be analogous tocomputing device 100 ofFIG. 1 orstorage device 300 ofFIG. 3 .Processor 502 may be any type of Central Processing Unit (CPU), microprocessor, or processing logic that interprets and executes machine-readable instructions stored in machine-readable storage medium 504. Machine-readable storage medium 504 may be a random access memory (RAM) or another type of dynamic storage device that may store information and machine-readable instructions that may be executed byprocessor 502. For example, machine-readable storage medium 504 may be Synchronous DRAM (SDRAM), Double Data Rate (DDR), Rambus DRAM (RDRAM), Rambus RAM, etc. or a storage memory media such as a floppy disk, a hard disk, a CD-ROM, a DVD, a pen drive, and the like. In an example, machine-readable storage medium 504 may be a non-transitory machine-readable medium. Machine-readable storage medium 504 may store 506 and 508. In an example,instructions instructions 506 may be executed byprocessor 502 to assign a portion of available free storage space on a storage device (example, 102) for storing file directories only.Instructions 508 may be executed byprocessor 502 to allocate, in response to a request for allocating storage space on the storage device (example, 102) to a file directory, storage space to the file directory, from the assigned portion.Storage medium 504 may further include instructions to allocate, in response to a request for allocating storage space on the storage device to a file associated with the file directory, storage space to the file, from an unassigned portion of the available free storage space. - For the purpose of simplicity of explanation, the example method of
FIG. 4 is shown as executing serially, however it is to be understood and appreciated that the present and other examples are not limited by the illustrated order. The example systems ofFIGS. 1, 3 and 5 , and method ofFIG. 4 may be implemented in the form of a computer program product including computer-executable instructions, such as program code, which may be run on any suitable computing device in conjunction with a suitable operating system (for example, Microsoft Windows, Linux, UNIX, and the like). Embodiments within the scope of the present solution may also include program products comprising non-transitory computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, such computer-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROM, magnetic disk storage or other storage devices, or any other medium which can be used to carry or store desired program code in the form of computer-executable instructions and which can be accessed by a general purpose or special purpose computer. The computer readable instructions can also be accessed from memory and executed by a processor. - It may be noted that the above-described examples of the present solution is for the purpose of illustration only. Although the solution has been described in conjunction with a specific embodiment thereof, numerous modifications may be possible without materially departing from the teachings and advantages of the subject matter described herein. Other substitutions, modifications and changes may be made without departing from the spirit of the present solution. All of the features disclosed in this specification (including any accompanying claims, abstract and drawings), and/or all of the steps of any method or process so disclosed, may be combined in any combination, except combinations where at least some of such features and/or steps are mutually exclusive.
Claims (16)
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IN3722CH2014 | 2014-07-30 | ||
| IN3722/CHE/2014 | 2014-07-30 | ||
| PCT/US2014/056337 WO2016018439A1 (en) | 2014-07-30 | 2014-09-18 | File directory storage on a storage device |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20170161294A1 true US20170161294A1 (en) | 2017-06-08 |
Family
ID=55218150
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/327,421 Abandoned US20170161294A1 (en) | 2014-07-30 | 2014-09-18 | File directory storage on a storage device |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20170161294A1 (en) |
| WO (1) | WO2016018439A1 (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230123921A1 (en) * | 2021-10-14 | 2023-04-20 | EMC IP Holding Company LLC | Facilitating the embedding of block references for reducing file access latency file systems |
| US12282671B2 (en) | 2023-05-05 | 2025-04-22 | The Boeing Company | Hardware file system |
| US20250335091A1 (en) * | 2024-04-26 | 2025-10-30 | Dell Products L.P. | Method, device, and computer program product for determining space consumption |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5029125A (en) * | 1989-03-07 | 1991-07-02 | Drexler Technology Corporation | Method of reading and writing files on nonerasable storage media |
| US8606830B2 (en) * | 2004-12-17 | 2013-12-10 | Microsoft Corporation | Contiguous file allocation in an extensible file system |
| US7640415B2 (en) * | 2005-03-25 | 2009-12-29 | Hitachi, Ltd. | Storage system having a first computer, a second computer connected to the first computer via a network, and a storage device system that is accessed by the second computer |
| US7792882B2 (en) * | 2007-09-27 | 2010-09-07 | Oracle America, Inc. | Method and system for block allocation for hybrid drives |
| US8239395B2 (en) * | 2008-12-26 | 2012-08-07 | Sandisk Il Ltd. | Storage device presenting to hosts only files compatible with a defined host capability |
-
2014
- 2014-09-18 WO PCT/US2014/056337 patent/WO2016018439A1/en not_active Ceased
- 2014-09-18 US US15/327,421 patent/US20170161294A1/en not_active Abandoned
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230123921A1 (en) * | 2021-10-14 | 2023-04-20 | EMC IP Holding Company LLC | Facilitating the embedding of block references for reducing file access latency file systems |
| US12282671B2 (en) | 2023-05-05 | 2025-04-22 | The Boeing Company | Hardware file system |
| US20250335091A1 (en) * | 2024-04-26 | 2025-10-30 | Dell Products L.P. | Method, device, and computer program product for determining space consumption |
| US12511045B2 (en) * | 2024-04-26 | 2025-12-30 | Dell Products L.P. | Method, device, and computer program product for determining space consumption |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2016018439A1 (en) | 2016-02-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10175894B1 (en) | Method for populating a cache index on a deduplicated storage system | |
| EP2691886B1 (en) | Time-based data partitioning | |
| US9043576B2 (en) | System and method for virtual machine conversion | |
| US10872059B2 (en) | System and method for managing snapshots of storage objects for snapshot deletions | |
| US9886443B1 (en) | Distributed NFS metadata server | |
| KR101384438B1 (en) | Capturing and naming dynamic storage tiering configurations to support data pre-staging | |
| EP2691889B1 (en) | Resource efficient scale-out file systems | |
| CN106662985B (en) | Host managed non-volatile memory | |
| JP7794381B2 (en) | Data compression method and apparatus | |
| JP2015521310A (en) | Efficient data object storage and retrieval | |
| US20180275919A1 (en) | Prefetching data in a distributed storage system | |
| CN106709014B (en) | A file system conversion method and device | |
| US10489346B2 (en) | Atomic update of B-tree in a persistent memory-based file system | |
| US20170161294A1 (en) | File directory storage on a storage device | |
| US9665385B1 (en) | Method and apparatus for simulation storage shelves | |
| US9009204B2 (en) | Storage system | |
| US8639656B2 (en) | Method for implementing persistent file pre-allocation | |
| Wu et al. | Selfie: co-locating metadata and data to enable fast virtual block devices | |
| EP2951674B1 (en) | Method and apparatus to enable finer-grained, scalable allocation of storage in a data storage system | |
| Zhang et al. | Storage abstractions for SSDs: The past, present, and future | |
| WO2016130167A1 (en) | Consistency check on namespace of an online file system | |
| US9262424B1 (en) | Techniques for performing slice consistency checks | |
| WO2016137524A1 (en) | File level snapshots in a file system | |
| WO2016118176A1 (en) | Database management | |
| US20180165037A1 (en) | Storage Reclamation in a Thin Provisioned Storage Device |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GANJIHAL, ANAND;R, ANOOP KUMAR;MONDAL, SANTIGOPAL;AND OTHERS;SIGNING DATES FROM 20140730 TO 20140804;REEL/FRAME:041473/0072 Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:041894/0001 Effective date: 20151027 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |