US20100241815A1 - Hybrid Storage Device - Google Patents

Hybrid Storage Device Download PDF

Info

Publication number
US20100241815A1
US20100241815A1 US12/408,036 US40803609A US2010241815A1 US 20100241815 A1 US20100241815 A1 US 20100241815A1 US 40803609 A US40803609 A US 40803609A US 2010241815 A1 US2010241815 A1 US 2010241815A1
Authority
US
United States
Prior art keywords
information
volatile memory
memory device
host computer
processor
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
Application number
US12/408,036
Other languages
English (en)
Inventor
Chuck MCMANIS
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to US12/408,036 priority Critical patent/US20100241815A1/en
Assigned to GOOGLE INC. reassignment GOOGLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MCMANIS, CHUCK
Priority to EP10712622A priority patent/EP2409216A1/de
Priority to DE202010017644U priority patent/DE202010017644U1/de
Priority to PCT/US2010/027989 priority patent/WO2010108102A1/en
Priority to AU2010226518A priority patent/AU2010226518A1/en
Priority to CN2010800213826A priority patent/CN102439557A/zh
Publication of US20100241815A1 publication Critical patent/US20100241815A1/en
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: GOOGLE INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems

Definitions

  • This invention relates generally to data storage devices.
  • the time taken to complete the startup-process and come to an operational state after normal power-on or system reset, the extent to which a system is vulnerable to security compromises particularly by unauthorized modifications to the boot-up configurations of the system, and the ability to recover from system failures, are often key performance factors in computer systems including processing servers, storage servers, and various embedded computer systems.
  • the boot-up process and file access are aspects that affect these performance factors.
  • BIOS Basic Input Output System
  • ROM read-only memory
  • the BIOS performs its many startup activities, including hardware detection and verification tests, and attempts to invoke a program resident in a known area, such as, for example, in the master boot record (MBR) of the boot device, and pass control to that program.
  • MBR master boot record
  • the boot device is a local or network attached storage device that is configured to be bootable and noted as such by the computer.
  • the program resident in the MBR for example, can be a boot loader program that permits the loading of different operating systems.
  • Some computer operating systems can have a boot-up process in which, upon power-on, a relatively small operating system kernel (initial kernel) starts up, and then a root filesystem is installed before the computer becomes completely operational.
  • the initial kernel image is typically loaded into memory from a predefined storage location by a boot loader such as, for example, the GRUB or LILO boot loaders used commonly in Linux systems.
  • the initial kernel image can then load a root filesystem from one of many locations, including, a local disk, a removable storage device attached to the computer, or a network location. It is often the case that the root filesystem resides on the boot device.
  • the root filesystem includes most software modules required for the useful operation of the computer, including device drivers for various hardware components, user access information, and software and configuration to mount and access files. Although the root filesystem necessary for each type of computer may differ, in general, this multi-step boot-up process is one of the slower aspects in the operation of many computers and is often sought to be optimized.
  • the term “computer” herein includes any computing device that comprises at least one processor and that has the capability to access files on a storage device.
  • the root filesystem may be substantially large, and loading a substantial part of a root file system can be time consuming. For this and other reasons, loading the root filesystem from a local disk or attached removable storage device is generally preferred to loading the root filesystem over a network.
  • solid state memory device such as a flash disk
  • a compressed image of the root filesystem sometimes including an operating system image
  • solid state drives offer substantially higher reliability than their magnetic disk counterparts and other persistent memory devices, the read and write speeds are often found to slow the operating speed of these embedded systems.
  • Many computers can load the entire filesystem from a persistent storage medium, such as a magnetic disk or a solid state disk, to the computer's local random access memory (local RAM) and into a virtual disk in RAM, i.e., a RAM disk.
  • a persistent storage medium such as a magnetic disk or a solid state disk
  • the operating system can access it as it accesses any local disk.
  • Creating a RAM disk and having the computer access the RAM disk in the same or similar manner in which it accesses any disk drive can improve the operating speed of the computer.
  • the RAM disk enables fast access to files because the files are accessed in volatile memory and the need for relatively slow disk accesses to retrieve files is significantly reduced. But, because the entire filesystem is brought into the local RAM, valuable RAM capacity is denied to applications and other processes that require that RAM space.
  • a hybrid storage device includes a persistent memory, a volatile memory, a processor, a memory loader module that enables the processor to load a first set of information, for example, a filesystem, from the persistent memory device and to organize the first set of information according to a predetermined format in the volatile memory device, and a storage drive interface controller.
  • the storage drive interface controller enables the processor to receive information access requests from a host computer coupled to the hybrid storage device, to respond to the information access requests using the first set of information in the volatile memory device, and to provide the host computer with metadata descriptive of the first set of information.
  • the host computer is enabled to begin accessing the first set of information using the metadata without having the first set of information in a local memory of the host computer, and the time required to access the first set of information is reduced by having the first set of information in volatile memory.
  • a system in another embodiment, includes a host computer and a hybrid storage device coupled to the host computer.
  • the hybrid storage device includes a persistent memory, a volatile memory, a processor, a memory loader module that enables the processor to load a first set of information from the persistent memory device to the volatile memory device and to organize the first set of information according to a predetermined format in the volatile memory device, and a storage drive interface controller.
  • the storage drive interface controller enables the processor to receive information access requests from a host computer and to respond to the information access requests using the first set of information in the volatile memory.
  • a method in yet another embodiment, includes the stages of coupling a hybrid storage device to a host computer, loading a first set of information from a persistent memory device to a volatile memory device located in the hybrid storage device and organizing the first set of information according to a predetermined format in the volatile memory device, loading access information from the volatile memory device to a local random access memory (local RAM) located in the host computer, and accessing a second set of information using the access information located in the local RAM, where the first set of information includes the second set of information.
  • local RAM local random access memory
  • FIG. 1 shows a system that includes a host computer and a hybrid storage device, according to an embodiment of the present invention.
  • FIG. 2 shows components of the hybrid storage device according to an embodiment of the present invention.
  • FIG. 3 shows a high level flowchart of a method of using a hybrid storage device, according to an embodiment of the present invention.
  • FIG. 4 is a more detailed flowchart of the events that occur when the hybrid storage device is powered on shown in FIG. 3 , according to one embodiment of the present invention.
  • FIG. 5 is a more detailed flowchart of the “access filesystem” stage shown in FIG. 3 , according to one embodiment of the present invention.
  • FIG. 6 is a detailed flowchart showing the processing flow when a data block is brought from the hybrid storage device to the local memory of the host computer, according to an embodiment of the present invention.
  • the present invention in an embodiment, enables a host computer to benefit from the ability to access a filesystem in volatile memory while not being disadvantaged by having a substantial amount of its local memory (e.g. random access memory, or RAM, locally attached to the CPU is generally the most expensive memory in the system) dedicated to the filesystem.
  • a hybrid storage device having a persistent memory device such as a solid state memory device (e.g., flash memory) is described.
  • the HSD includes its own processor and a volatile memory to which a filesystem resident in the persistent memory device can be loaded.
  • a disk interface and a disk controller in the HSD allows processes in an external device, such as, for example, a host computer, that is coupled to the HSD, to access files in the volatile memory of the HSD.
  • a host computer such as, for example, a host computer
  • the HSD may be a removable device coupled to the host computer, and in other embodiments the HSD may be a device integrated into the host computer.
  • An example application and use of an embodiment of the present invention is the use of a HSD to allow a server to boot-up using a root filesystem that is stored on a flash memory device on an attached HSD.
  • a compressed Linux® root filesystem may be stored on a persistent memory device in the HSD.
  • the Linux root filesystem is uncompressed into a volatile memory under the direction of the local processor of the HSD.
  • the filesystem in volatile memory of the HSD appears as a filesystem in a persistent storage device.
  • the filesystem in the volatile memory of the HSD can include an area corresponding to the first sector of a bootable disk that contains an MBR.
  • Metadata, including inode information, of the filesystem may be exported by the HSD to the local memory of the host computer.
  • the host computer can then access the entire filesystem in volatile memory of the HSD using some form of a disk interface.
  • the host computer would access the volatile memory of the HSD in a manner that is same or similar to how it accesses a directly attached disk drive.
  • an efficient storage device is provided with reliable storage that can reduce failures and reduce the time required to recover after failures. Also, because, as in the case of using an embodiment of the present invention to access the root filesystem, any changes to the files would occur in the HSD's volatile memory, the exposure of the server to security threats, such as trojan programs, viruses, and unauthorized modifications to compromised boot-up configuration files, is reduced.
  • the HSD interfaces to the host computer using a standard disk interface, for example, Serial Advanced Technology Attachment (SATA), little or no software modification is required in the host computer to enable processes in the host computer to view the volatile memory in the HSD as a disk.
  • SATA Serial Advanced Technology Attachment
  • the persistent memory device in the HSD remains transparent to most processes in the host computer.
  • the HSD may also be used for such tasks as, general file storage, for paging and for virtual memory.
  • the term “host computer” applies to any processing device to which a HSD can be coupled.
  • the composition of the present invention in some of its embodiments is described, followed by a description of the processing stages involved.
  • FIG. 1 shows a common usage scenario 100 of an embodiment of the present invention.
  • a HSD 120 is coupled to a host computer 110 .
  • HSD 120 is described below with respect to FIG. 2 .
  • Host computer 110 can be any processing device, such as, including but not limited to, a commercially available computer (e.g., personal computer), personal digital assistant, mobile phone or other mobile electronic device having a processor, digital video recorder, network router, game console, set-top box, kiosk or other embedded processing platform.
  • a commercially available computer e.g., personal computer
  • personal digital assistant mobile phone or other mobile electronic device having a processor, digital video recorder, network router, game console, set-top box, kiosk or other embedded processing platform.
  • Host computer 110 includes several components, including a host processor 111 , host memory (local RAM) 113 , host storage 114 , host input and display interfaces 115 , host disk interface controller 112 , and a host communications bus 116 that interconnects the components 111 , 112 , 113 , 114 , and 115 .
  • Host processor 111 can be any commercially available processor or special purpose processor.
  • Host memory 113 includes random access memory (RAM). In the rest of this document, host memory 113 may be referred to as local RAM to distinguish it from other volatile memory devices, particularly RAM present in HSD 120 .
  • Host storage 114 may include a form of non-volatile storage such as a magnetic disk or flash disk.
  • Host input and display interfaces 115 may include one or more of, keyboard, mouse, display device, and any other input/output device.
  • Host disk interface controller 112 may be any interface controller capable of interfacing with HSD 120 .
  • host disk interface controller 112 may be an interface controller corresponding to a disk interface standard such as, Serial Advanced Technology Attachment (SATA) or one of its variants, Small Computer System Interface (SCSI), Integrated Drive Electronics (IDE), Internet Small Computer Interface (iSCSI), Fiber Channel, or another standard or special purpose disk drive interface protocol.
  • Host communications bus 116 can include one or more standard or special purpose device interconnects such as, Peripheral Component Interconnect (PCI) or a variant, Industry Standards Architecture (ISA), Extended Industry Standards Architecture (EISA).
  • PCI Peripheral Component Interconnect
  • ISA Industry Standards Architecture
  • EISA Extended Industry Standards Architecture
  • Host computer 110 connects to HSD 120 using an interface connector 130 .
  • HSD 120 can be integrated into host computer 120 or can be coupled through a network to host computer 120 .
  • FIG. 2 shows components of HSD 120 in one embodiment of the present invention.
  • HSD 120 includes a processor 201 is coupled to a persistent memory device (e.g., solid state memory device) 203 , a volatile memory device 202 , a static RAM memory device 205 , a storage drive interface controller 208 , and a configuration device 214 .
  • processor 201 is also be coupled to a memory loader module 209 .
  • Processor 201 may include any commercially available processor, a special purpose processor, or a field programmable gate array (FPGA) such as a Altera Cyclone® II or a Xilinx Spartan® chip.
  • FPGA field programmable gate array
  • Persistent memory device 203 may include a solid state memory device such as, but not limited to, a second generation Secure Digital flash card or a CompactFlash® card and a corresponding drive.
  • Volatile memory device 202 may include a dynamic RAM (DRAM) such as double data rate two dynamic random access memory (DDR2 DRAM).
  • Volatile memory device 202 (also referred to simply as “volatile memory”) may have its own backup power source device 213 , that can provide power for a limited duration when HSD 120 is not receiving power from the host computer 110 .
  • a backup power source device 213 may include a rechargeable battery that can help increase the reliability of the HSD 120 by providing power to maintain the data in volatile memory 202 during periods of power loss to the HSD 120 .
  • Storage drive interface controller 208 may be any disk interface that corresponds to one of the disk interface types supported by the external device (for example, host computer 110 ) to which HSD 120 is to be coupled to, including standard disk interfaces such as SATA, SCSI, and
  • modules 208 and 209 may be implemented in software, firmware, hardware or using a combination thereof.
  • computer programs that achieve all or part of the functionality of module 208 and 209 may be written in any computer programming language including C, C++, Java, Assembly, or as a hardware-specific logic definition with a language such as Hardware Definition Language (HDL).
  • the program logic of modules 208 and 209 may then be executed by processor 201 .
  • Memory loader module 209 includes program logic that enables processor 201 to load a filesystem from persistent memory device 203 into volatile memory 202 and make that filesystem in volatile memory 202 accessible to other devices coupled to processor 201 .
  • Storage drive interface controller module 208 includes program logic to enable processor 201 to permit access to the filesystem in volatile memory 202 by storage drive interface 206 .
  • Storage drive interface controller module 208 in combination with storage drive interface device 206 , allows an external device, such as, for example, host computer 110 , that is coupled to HSD 120 through connector 211 , to access the filesystem stored in volatile memory 202 in a similar manner to accessing a filesystem local to host computer 110 .
  • host computer 110 that is coupled to HSD 120 through connector 211
  • storage drive interface controller 208 can include program logic to implement a corresponding SATA processing state machine using processor 201 . Detailed explanation of how this functionality is achieved is provided below with respect to FIGS. 3-5 .
  • configuration device 214 can be used to configure and initialize various aspects of HSD 120 .
  • configuration device 214 may include the functionality to initialize and format persistent memory device 203 .
  • Configuration device 214 may include an interface that connects to an external input/output device to enable the receipt of configuration commands given manually and/or programmatically.
  • Configuration device 214 may include a connection to processor 201 that is compliant with the JTAG (i.e., the IEEE 1149.1 standard entitled Standard Test Access Port and Boundary-Scan Architecture) standard permitting standard configuration and analysis devices to be coupled to HSD 120 .
  • JTAG i.e., the IEEE 1149.1 standard entitled Standard Test Access Port and Boundary-Scan Architecture
  • a power distributor device 210 may provide power to HSD 120 .
  • power distributor device 210 may include a battery charge.
  • power distributor device 210 may obtain power from an external device, such as host computer 110 , through a power connector 212 .
  • the SATA disk interface standard specifies a communications interface as well as a power interface.
  • HSD 120 When HSD 120 is coupled to host computer 110 , a compressed filesystem in persistent memory device 203 may be loaded to and decompressed in volatile memory 202 .
  • HSD 120 may have loaded a filesystem into a RAM disk in volatile memory 202 before it is coupled to host computer 110 . Thereafter, processes executing in host computer 110 may access the filesystem in volatile memory 202 in a manner similar to accessing a filesystem that is local to host computer 110 . The access is facilitated by disk interface controller 208 and a corresponding disk interface (for example, disk interface controller 112 ) on host computer 110 . Description of the processing stages in achieving this and other functionalities are described below.
  • the host computer after power on and basic initialization, will proceed to indentify locally connected storage.
  • the host computer issues probe commands on its interfaces. For example, after power on and basic initialization host computer 110 initializes host disk controller 112 and proceeds to issue probe commands on interfaces including interface 130 . Based on the responses received to the probe commands, host computer 110 may identify storage devices, such as, for example, HSD 120 . Subsequently, the host computer identifies a boot device and a kernel is read and started. After the kernel is started, the host computer can mount any connected storage, including, such as, HSD 120 . After RS 120 is mounted, host computer 110 can access any filesystem that resides on HSD 120 by issuing storage commands.
  • FIG. 3 illustrates a routine 300 that enables an external device, such as, for example, host computer 110 , to access a filesystem that is maintained in volatile memory in a HSD, for example, HSD 120 (stages 301 - 303 ).
  • a HSD for example, HSD 120
  • stage 301 the startup of the HSD is commenced.
  • the startup of the HSD may be commenced when the HSD is connected to a host computer that is already powered on, or when power is turned on to a host computer that is already connected to a HSD.
  • a dissection of stage 301 can be found below with respect to FIG. 4 .
  • a first set of information (such as a filesystem) that was previously stored in a persistent storage device, such as, for example, persistent memory device 203 is loaded into volatile memory of the HSD, such as, for example, volatile memory 202 .
  • the first set of information may be a complete filesystem, such as, for example, a root filesystem compliant to a filesystem format such as, but not limited to, the Second Extended Filesystem (EXT 2 ).
  • the filesystem format defines how the data is organized in the storage media.
  • the loading may cause the data of the filesystem to be brought into volatile memory and to be uncompressed.
  • a RAM disk may be created in the volatile memory, and the RAM disk may be populated with the filesystem imported from the persistent memory device.
  • the volatile memory can be large enough to hold the entire uncompressed filesystem in a RAM disk.
  • the RAM disk in the volatile memory of the HSD can contain a root filesystem organized according to a filesystem format such as EXT 2 , and data structures indicating that the storage volume represented by that RAM disk is a bootable storage device. For example, the host computer may expect the first sector of a bootable storage devices to have a particular data flag to indicate that the device is bootable.
  • a second set of information may be exported from the volatile memory on the HSD to the dynamic memory on the host computer, such as local RAM 113 on host computer 110 .
  • a part of an inode table of a filesystem i.e., metadata that describes the filesystem, can be exported to the host computer.
  • the inode table of a filesystem includes basic information necessary to identify and access files in the filesystem.
  • the transfer of the metadata may be initiated by the HSD or by the host computer. The transfer of only the metadata to the local RAM of the host computer is generally much faster than transferring files of the filesystem due to the reduction in the volume of data to be transferred.
  • the host computer may now access the filesystem in stage 303 .
  • the kernel can then proceed to mount the root filesystem.
  • processes executing on the host computer can begin accessing various files in the root filesystem.
  • Access to the root filesystem may be made by the host computer issuing read and write commands to the HSD.
  • the read and write commands are processed by, for example, storage interface controller 208 according to the chosen interface protocol.
  • the kernel after mounting the initially required parts of the root filesystem, in general, the kernel locates one or more files in the root filesystem (e.g., /sbin/init) which are then executed to initialize the services and user processes that implement much of the functionality of the host computer.
  • An init file is located either based on a parameter provided to the kernel at boot-up time, or by the kernel searching a series of predetermined locations. The processes initiated by the init file may then access other files (e.g., /etc/rc.d in some Linux and UNIX systems) in the root filesystem to invoke other user processes.
  • the memory blocks containing that file are generally brought into local RAM.
  • a paging system may be implemented, that swaps some data blocks out of local RAM to make space for new data blocks incoming from the filesystem.
  • the data blocks that are being paged out of local memory may be selectively, for example, if that block contains some updates, written to an area in the volatile memory in the HSD. Paging data blocks out to volatile memory instead of disk storage can improve the speed of execution of processes by reducing the frequency of accessing non-volatile storage media.
  • the entire filesystem directory structure (or necessary parts thereof) including the actual files are, in general, already in the volatile memory of the HSD at the time of being required by the kernel in the host computer.
  • the filesystem present in the volatile memory of the HSD appears to the kernel as a directly attached disk having the root filesystem. Therefore, the local RAM may hold only the metadata and only blocks of data corresponding to those actually accessed by the kernel or related applications. Not having to maintain the entire root filesystem or substantial portions thereof in local RAM allows the local RAM to be used for numerous other processing tasks.
  • FIG. 4 shows stage 301 in more detail according to some embodiments of the invention.
  • the processor of the HSD Upon receiving power to the HSD, the processor of the HSD is initialized in stage 401 .
  • Initialization of the processor is generally begun by code resident in read only memory (ROM) known simply as the BIOS (Basic Input/Output System) and may include standard processor power-on steps such as, for example and without limitation, power-on self test, initialization of other hardware components, initializing low level system routines that the operating system (once loaded) can use to access various devices and services provided by the processor, and also the initializing onboard volatile memory and RAM of the HSD.
  • BIOS Basic Input/Output System
  • static RAM device 205 can store the BIOS instructions to commence initializing the HSD.
  • Stages 402 and 403 may be performed in any order or in parallel.
  • the processor of the HSD initializes the storage drive interface controller.
  • processor 201 may execute instructions to initialize storage drive interface controller 208 that is designed to interact with a corresponding disk controller on host computer 110 .
  • the storage device interface controller may respond to probe commands and identification commands received from the host computer, to enable the host computer to recognize the HSD.
  • the processor on the HSD may also perform detection of the type and the integrity of the persistent memory device and related sanity checks. For example, the processor may verify that a loadable filesystem with a verifiable checksum is available in the persistent memory device.
  • this initialization may include, for example and without limitation, the initialization of a SATA controller state machine.
  • the processor in the HSD may trigger a signal to copy a filesystem from the persistent memory device into the volatile memory of the HSD.
  • a signal may also be originated by the host computer.
  • the signal to load the filesystem may cause the processor to invoke and execute instructions to load the filesystem from the persistent memory device into volatile memory and decompress the filesystem in volatile memory.
  • the signal to copy the filesystem may cause processor 201 to execute the program logic of memory loader module 209 to load a compressed filesystem, in its entirety or in part, to volatile memory 202 and uncompress it therein.
  • the uncompressed filesystem resident in volatile memory 202 may be visible to the host computer 110 as another disk drive, to which access is coordinated through storage drive interface controller 208 .
  • the first set of information may include a root filesystem uncompressed in the volatile memory of the HSD and organized according to a filesystem format, along with data structures in the volatile memory to enable the host computer to recognize the filesystem in the volatile memory as, for example, a bootable disk storage volume.
  • the host computer may expect the first disk sector of a bootable disk volume to contain an boot device indicator if it is bootable. Based on the filesystem format and the disk interface protocol a boot device indicator may be written, for example, the area in the volatile memory that corresponds to the last word in the first sector of a disk storage medium.
  • the HSD services storage commands received from the host computer.
  • a SATA controller state machine initialized in storage device controller 208 in stage 402 may be used to receive and process read and write commands received from the host computer.
  • FIG. 5 is a breakdown of stage 303 according to an embodiment of the present invention.
  • the host computer's processes can proceed to access files and directories of the filesystem. For example, in stage 501 , a process executing on the host computer's processor may request a read or write operation on a file in the filesystem.
  • the inode table is checked to see if the host computer's local RAM of the HSD already contains the required file or part of the file in its memory. If the required file or part of the file is not in local RAM, the inode table would point to the presence of the data in the removable storage drive.
  • stage 503 the processor determines that the required data is in the filesystem in the volatile memory of the HSD and initiates the process to transfer the relevant data blocks to local RAM of the host computer.
  • the filesystem and directory structure present in the volatile memory of the HSD can appear as a standard disk and directory structure to the host computer.
  • the HSD and its RAM disk may appear as a disk that is accessible using a SATA interface.
  • the transfer process included in stage 503 is further described with respect to FIG. 6 below.
  • updates will be written straight-through to the corresponding blocks in volatile memory on the HSD in stage 505 .
  • updates made in stage 504 may not be performed in a continuous straight-through manner, and instead may be performed at time intervals or upon receiving an instruction to save updates from the user.
  • the updates made to volatile memory in the HSD can remain in volatile storage until, in some embodiments, the user conveys an instruction to save the updates.
  • the contents of the volatile memory are written to the persistent memory device in the appropriate format. If a power loss occurs in the HSD (e.g., being momentarily decoupled from the host computer), a power-source that is attached to the volatile memory of the HSD can preserve the data and updates until the power is restored, or until the updates are written to the persistent memory device, if configured to do so. If the data in volatile memory in the HSD is not preserved by a power source on the HSD, a clean filesystem can be available on the attached HSD when the host computer is re-initiated.
  • FIG. 6 illustrates a breakdown, according to an embodiment of the present invention, of stage 503 that loads data from the volatile memory of the HSD into the local RAM of the host computer.
  • the kernel executing in the host computer processor invokes the disk controller that is responsible for interfacing with the HSD in stage 601 .
  • the host disk controller in stage 602 , generates a command according to the protocol used to interface with the HSD.
  • a command to retrieve the corresponding file is received by the corresponding disk controller in the HSD.
  • the processor of the HSD may process the received command to validate the command and to translate the command to a format understood by the programs and devices in the HSD. Using the translated command, the appropriate data is retrieved from volatile memory of the HSD in stage 605 . The data is then provided by the processor in the HSD to the disk controller interface on the HSD, in stage 606 , to be transmitted to the requesting host computer. The transmitted data is then, in stage 607 , received by the disk controller in the host computer and loaded into local RAM in the host computer. The requesting process may now access the relevant data in the local RAM of the host computer.
  • the HSD in another embodiment of the present invention, may be used as a location for virtual memory and/or paging memory.
  • the host computer can map some or all of its virtual memory space to the volatile memory of the HSD.
  • the host computer may use the volatile memory of the HSD for swapping memory pages in and out of its local RAM.
  • the use of the volatile memory of the HSD can result in improved performance over the conventional approaches of using a local persistent memory device as the location for virtual memory and paging memory, because disk accesses (or more generally, accesses to persistent memory devices) are reduced.
  • the persistent memory device in the HSD generally remains transparent to the host computer in these applications.
  • a HSD having, in some embodiments, a compressed image of a filesystem that can be speedily uncompressed into an onboard volatile memory such that the filesystem in volatile memory can be accessed by a host computer in much the same way as it would access a disk drive is disclosed in this document.
  • one embodiment of the invention can be a HSD that holds a root filesystem. Having the root filesystem in relatively fast volatile memory instead of relatively slow flash memory improves access latencies. It also improves the resiliency of the system to security compromises because the changes to the filesystem remain in volatile memory until specifically directed to save to persistent memory. It improves the time to deploy and time to repair devices that use configurable root filesystems.
  • Another aspect of embodiments of the present invention is that little or no modification of the programming code of many operating systems is required.
  • a HSD built according to the teachings in this disclosure will be recognized as an external disk by the processor of the host computer, and may only require that the interface hosting the HSD be specified as a parameter to the kernel at start-up.
  • the removable storage may be used to store and access filesystems other than root filesystems.
  • the HSD can also be used as a fast cache device or virtual memory to supplement the local memory of a host computer.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
US12/408,036 2009-03-20 2009-03-20 Hybrid Storage Device Abandoned US20100241815A1 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US12/408,036 US20100241815A1 (en) 2009-03-20 2009-03-20 Hybrid Storage Device
EP10712622A EP2409216A1 (de) 2009-03-20 2010-03-19 Hybrid-speicheranordnung
DE202010017644U DE202010017644U1 (de) 2009-03-20 2010-03-19 Hybridspeichervorrichtung
PCT/US2010/027989 WO2010108102A1 (en) 2009-03-20 2010-03-19 Hybrid storage device
AU2010226518A AU2010226518A1 (en) 2009-03-20 2010-03-19 Hybrid storage device
CN2010800213826A CN102439557A (zh) 2009-03-20 2010-03-19 混合存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/408,036 US20100241815A1 (en) 2009-03-20 2009-03-20 Hybrid Storage Device

Publications (1)

Publication Number Publication Date
US20100241815A1 true US20100241815A1 (en) 2010-09-23

Family

ID=42173321

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/408,036 Abandoned US20100241815A1 (en) 2009-03-20 2009-03-20 Hybrid Storage Device

Country Status (6)

Country Link
US (1) US20100241815A1 (de)
EP (1) EP2409216A1 (de)
CN (1) CN102439557A (de)
AU (1) AU2010226518A1 (de)
DE (1) DE202010017644U1 (de)
WO (1) WO2010108102A1 (de)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079313A1 (en) * 2010-09-24 2012-03-29 Honeywell International Inc. Distributed memory array supporting random access and file storage operations
US20130124841A1 (en) * 2011-11-10 2013-05-16 Institute For Information Industry OS Processing Method and System and Computer Readable Storage Medium Applying the Method
US20150033065A1 (en) * 2013-07-24 2015-01-29 Lsi Corporation Solid state drive emergency pre-boot application providing expanded data recovery function
WO2016094003A1 (en) * 2014-12-11 2016-06-16 Intel Corporation Computing method and apparatus with persistent memory
US20170206030A1 (en) * 2016-01-14 2017-07-20 Samsung Electronics Co., Ltd. Storage device and operating method of storage device
US20190018475A1 (en) * 2016-09-26 2019-01-17 Hewlett-Packard Development Company, L.P. Update memory management information to boot an electronic device from a reduced power mode
US10339021B2 (en) * 2015-12-31 2019-07-02 EMC IP Holding Company LLC Method and apparatus for operating hybrid storage devices
CN111919201A (zh) * 2018-03-21 2020-11-10 美光科技公司 混合式存储器系统
CN113946380A (zh) * 2020-07-17 2022-01-18 西安诺瓦星云科技股份有限公司 图片加载方法、装置以及视频处理设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523270B (zh) * 2011-12-09 2015-05-13 成都东方盛行电子有限责任公司 一种实现云存储的方法
CN103811051B (zh) * 2014-02-17 2017-01-11 上海新储集成电路有限公司 一种分层存储器阵列及其工作方法
EP3433751A4 (de) * 2016-08-22 2019-12-11 Hewlett-Packard Development Company, L.P. Informationen aus angeschlossenen vorrichtungen
CN111880846B (zh) * 2020-06-04 2023-12-15 普联国际有限公司 嵌入式系统快速启动方法、装置及设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030061352A1 (en) * 2001-09-27 2003-03-27 International Business Machines Corporation Optimized file cache organization in a network server
US20030196031A1 (en) * 2000-10-30 2003-10-16 Chen Jack Yajie Storage controller with the disk drive and the RAM in a hybrid architecture
US20050188149A1 (en) * 2004-02-24 2005-08-25 Paul Kaler Solid state disk with hot-swappable components
US20060107030A1 (en) * 2004-11-18 2006-05-18 Ford Motor Company Method and system for booting a plurality of computing systems from an operating system image
US20070276994A1 (en) * 2006-05-23 2007-11-29 Jason Caulkins Methods for managing data writes and reads to a hybrid solid-state disk drive
US20090031099A1 (en) * 2007-07-25 2009-01-29 Simtek Power interrupt recovery in a hybrid memory subsystem
US20090031072A1 (en) * 2007-07-25 2009-01-29 Simtek Hybrid nonvolatile RAM
US20090157989A1 (en) * 2007-12-14 2009-06-18 Virident Systems Inc. Distributing Metadata Across Multiple Different Disruption Regions Within an Asymmetric Memory System
US20090157942A1 (en) * 2007-12-18 2009-06-18 Hitachi Global Storage Technologies Netherlands, B.V. Techniques For Data Storage Device Virtualization
US20090241103A1 (en) * 2008-03-19 2009-09-24 Joseph Michael Pennisi System and Method to Update Firmware on a Hybrid Drive
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
US8239613B2 (en) * 2008-12-30 2012-08-07 Intel Corporation Hybrid memory device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1304942C (zh) * 2002-04-30 2007-03-14 陈冠豪 硬性介质与随机存储器混合式驱动器以及存储器
JP2005166155A (ja) * 2003-12-02 2005-06-23 Hitachi-Lg Data Storage Inc 光ディスクドライブ装置
FI119664B (fi) * 2004-12-08 2009-01-30 Open Invention Network Llc Menetelmä elektronisissa laitteissa oleviin tiedostoihin pääsemiseksi
TW200739349A (en) * 2006-04-12 2007-10-16 Giga Byte Tech Co Ltd Volatile storage device and serial connection type mixed storage device having the same

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196031A1 (en) * 2000-10-30 2003-10-16 Chen Jack Yajie Storage controller with the disk drive and the RAM in a hybrid architecture
US20030061352A1 (en) * 2001-09-27 2003-03-27 International Business Machines Corporation Optimized file cache organization in a network server
US20050188149A1 (en) * 2004-02-24 2005-08-25 Paul Kaler Solid state disk with hot-swappable components
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
US20060107030A1 (en) * 2004-11-18 2006-05-18 Ford Motor Company Method and system for booting a plurality of computing systems from an operating system image
US20070276994A1 (en) * 2006-05-23 2007-11-29 Jason Caulkins Methods for managing data writes and reads to a hybrid solid-state disk drive
US20090031072A1 (en) * 2007-07-25 2009-01-29 Simtek Hybrid nonvolatile RAM
US20090031099A1 (en) * 2007-07-25 2009-01-29 Simtek Power interrupt recovery in a hybrid memory subsystem
US8074034B2 (en) * 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
US20090157989A1 (en) * 2007-12-14 2009-06-18 Virident Systems Inc. Distributing Metadata Across Multiple Different Disruption Regions Within an Asymmetric Memory System
US20090157942A1 (en) * 2007-12-18 2009-06-18 Hitachi Global Storage Technologies Netherlands, B.V. Techniques For Data Storage Device Virtualization
US20090241103A1 (en) * 2008-03-19 2009-09-24 Joseph Michael Pennisi System and Method to Update Firmware on a Hybrid Drive
US8239613B2 (en) * 2008-12-30 2012-08-07 Intel Corporation Hybrid memory device

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079313A1 (en) * 2010-09-24 2012-03-29 Honeywell International Inc. Distributed memory array supporting random access and file storage operations
US20130124841A1 (en) * 2011-11-10 2013-05-16 Institute For Information Industry OS Processing Method and System and Computer Readable Storage Medium Applying the Method
US8788800B2 (en) * 2011-11-10 2014-07-22 Institute For Information Industry OS processing method, system and non-transitory computer readable storage medium thereof
US20150033065A1 (en) * 2013-07-24 2015-01-29 Lsi Corporation Solid state drive emergency pre-boot application providing expanded data recovery function
US9329931B2 (en) * 2013-07-24 2016-05-03 Seagate Technology Llc Solid state drive emergency pre-boot application providing expanded data recovery function
US9715453B2 (en) 2014-12-11 2017-07-25 Intel Corporation Computing method and apparatus with persistent memory
WO2016094003A1 (en) * 2014-12-11 2016-06-16 Intel Corporation Computing method and apparatus with persistent memory
US10339021B2 (en) * 2015-12-31 2019-07-02 EMC IP Holding Company LLC Method and apparatus for operating hybrid storage devices
US20170206030A1 (en) * 2016-01-14 2017-07-20 Samsung Electronics Co., Ltd. Storage device and operating method of storage device
US10509575B2 (en) * 2016-01-14 2019-12-17 Samsung Electronics Co., Ltd. Storage device and operating method of storage device
US20190018475A1 (en) * 2016-09-26 2019-01-17 Hewlett-Packard Development Company, L.P. Update memory management information to boot an electronic device from a reduced power mode
US10936045B2 (en) * 2016-09-26 2021-03-02 Hewlett-Packard Development Company, L.P. Update memory management information to boot an electronic device from a reduced power mode
CN111919201A (zh) * 2018-03-21 2020-11-10 美光科技公司 混合式存储器系统
CN113946380A (zh) * 2020-07-17 2022-01-18 西安诺瓦星云科技股份有限公司 图片加载方法、装置以及视频处理设备

Also Published As

Publication number Publication date
CN102439557A (zh) 2012-05-02
EP2409216A1 (de) 2012-01-25
DE202010017644U1 (de) 2012-03-23
AU2010226518A1 (en) 2011-11-03
WO2010108102A1 (en) 2010-09-23

Similar Documents

Publication Publication Date Title
US20100241815A1 (en) Hybrid Storage Device
JP4932781B2 (ja) 目標の媒体上に縮小オペレーティングシステムイメージを作成する方法、システム及びプログラム
US7631173B2 (en) Method and system for performing pre-boot operations from an external memory including memory address and geometry
US20030110369A1 (en) Firmware extensions
US9239725B2 (en) System and method for installing an OS via a network card supporting PXE
US8433890B2 (en) Preparing and preserving a system configuration during a hot upgrade
US20030233534A1 (en) Enhanced computer start-up methods
Gilbert et al. Pocket ISR: Virtual machines anywhere
US9563439B2 (en) Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS)
US20040133790A1 (en) Protected, hidden emergency boot directory
US8468334B1 (en) Efficient initial RAM disk creation
EP1634170A2 (de) Verfahren zur variablen firmware-speicherung mit starker komprimierung, failsafe-extraktion und neustartzeitkomprimierungs-scan
US10860307B2 (en) Fragmented firmware storage system and method therefor
CN101650660A (zh) 从中央存储装置引导计算机系统
US10664598B1 (en) Firmware security patch deployment
US20190065300A1 (en) Method of retrieving debugging data in uefi and computer system thereof
US6961848B2 (en) System and method for supporting legacy operating system booting in a legacy-free system
CN107135462B (zh) Uefi固件的蓝牙配对方法及其计算系统
US20090013167A1 (en) Computer device, method for booting the same, and booting module for the same
US20050223209A1 (en) Apparatus for fast booting computer and method for the same
US8499142B1 (en) UEFI boot loader for loading non-UEFI compliant operating systems
US20060080540A1 (en) Removable/detachable operating system
Votipka et al. Passe-partout: A general collection methodology for Android devices
Huber et al. A flexible framework for mobile device forensics based on cold boot attacks
US20060080518A1 (en) Method for securing computers from malicious code attacks

Legal Events

Date Code Title Description
AS Assignment

Owner name: GOOGLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MCMANIS, CHUCK;REEL/FRAME:022428/0202

Effective date: 20090317

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044142/0357

Effective date: 20170929