IP Library › Granted Patent US 12,105,861
Granted Patent B2
US 12,105,861 · App. 18/046,341 · Granted Oct 1, 2024

Ransomware-aware solid-state drive

Inventor: Jian Huang (Champaign, IL)
Assignee: The Board of Trustees of the University of Illinois
G06F21/79G06F21/566G06F21/567G06F21/568
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,105,861
App. No.
18/046,341
Granted
Oct 1, 2024
Kind
B2
Abstract

An example embodiment may involve a storage device comprising one or more processors, memory, a host interface connectable to a host device, a network interface connectable to a backup device, and program instructions, stored in the memory, that upon execution by the one or more processors cause the storage device to perform operations comprising: causing data received, by way of the host interface, to be stored in a page of the memory; after storing the data, marking the page as invalid due to input/output operations of the memory; determining a predicted idle time period within which the memory is not expected to be engaged in further input/output operations; determining that a duration of the predicted idle time period exceeds a threshold length; and during the predicted idle time period, transmitting, by way of the network interface, the data to the backup device.

Claims (65)

1. A method performed within a storage device containing a host interface and a network interface, the method comprising:

causing data received, by way of the host interface and from a host device, to be stored in a page of a memory;

after storing the data, marking the page as invalid due to input/output operations of the memory;

determining a predicted idle time period within which the memory is not expected to be engaged in further input/output operations;

determining that a duration of the predicted idle time period exceeds a threshold length; and

during the predicted idle time period, transmitting, by way of the network interface, the data to a backup device.

2. The method of claim 1 , wherein the network interface is configured with a network address different from that of the host device.

3. The method of claim 1 , wherein causing the data received from the host device to be stored in the page of the memory comprises storing a timestamp of when the data was received in out-of-band metadata of the page, and wherein transmitting the data to the backup device comprises transmitting the out-of-band metadata to the backup device.

4. The method of claim 3 , further comprising:

receiving a request to restore a version of the data received at the timestamp; and

traversing a plurality of versions of the data based on timestamps stored in the out-of-band metadata to retrieve the version of the data received at the timestamp.

5. The method of claim 1 , wherein determining the predicted idle time period comprises:

obtaining a predicted previous idle time period during which the memory was not expected to be engaged in previous input/output operations;

based on the previous input/output operations, determining a real previous idle time period during which the memory was not engaged in the previous input/output operations, wherein the real previous idle time period corresponds to the predicted previous idle time period; and

determining the predicted idle time period based on the predicted previous idle time period, the real previous idle time period, and a smoothing parameter.

6. The method of claim 1 , wherein the memory includes data blocks and compressed data blocks, wherein the page resides within a particular data block of the data blocks, and wherein the method further comprises:

initiating a garbage collection procedure on the memory;

during the garbage collection procedure on the particular data block, determining that the page has been marked as invalid;

based on the page being marked as invalid, compressing the data and storing the data as compressed in a particular compressed data block of the compressed data blocks, wherein transmitting the data to the backup device comprises transmitting the data as compressed to the backup device; and

erasing the particular data block.

7. The method of claim 6 , wherein transmitting the data as compressed to the backup device comprises transmitting content of the compressed data blocks in time order starting with an oldest compressed data block.

8. An article of manufacture including a non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by a computing system, cause a storage device containing a host interface and a network interface to perform operations comprising:

causing data received, by way of the host interface, to be stored in a page of a memory;

after storing the data, marking the page as invalid due to input/output operations of the memory;

determining a predicted idle time period within which the memory is not expected to be engaged in further input/output operations;

determining that a duration of the predicted idle time period exceeds a threshold length; and

during the predicted idle time period, transmitting, by way of the network interface, the data to a backup device.

9. A storage device comprising:

one or more processors;

memory;

a host interface connectable to a host device;

a network interface connectable to a backup device; and

program instructions, stored in the memory, that upon execution by the one or more processors cause the storage device to perform operations comprising:

causing data received, by way of the host interface, to be stored in a page of the memory;

after storing the data, marking the page as invalid due to input/output operations of the memory;

determining a predicted idle time period within which the memory is not expected to be engaged in further input/output operations;

determining that a duration of the predicted idle time period exceeds a threshold length; and

during the predicted idle time period, transmitting, by way of the network interface, the data to the backup device.

10. The storage device of claim 9 , wherein the network interface is configured with a network address different from that of the host device.

11. The storage device of claim 9 , wherein causing the data received from the host device to be stored in the page of the memory comprises storing a timestamp of when the data was received in out-of-band metadata of the page, and wherein transmitting the data to the backup device comprises transmitting the out-of-band metadata to the backup device.

12. The storage device of claim 11 , wherein the operations further comprise:

receiving a request to restore a version of the data received at the timestamp; and

traversing a plurality of versions of the data based on timestamps stored in the out-of-band metadata to retrieve the version of the data received at the timestamp.

13. The storage device of claim 9 , wherein determining the predicted idle time period comprises:

obtaining a predicted previous idle time period during which the memory was not expected to be engaged in previous input/output operations;

based on the previous input/output operations, determining a real previous idle time period during which the memory was not engaged in the previous input/output operations, wherein the real previous idle time period corresponds to the predicted previous idle time period; and

determining the predicted idle time period based on the predicted previous idle time period, the real previous idle time period, and a smoothing parameter.

14. The storage device of claim 9 , wherein the memory includes data blocks and compressed data blocks, wherein the page resides within a particular data block of the data blocks, and wherein the operations further comprise:

initiating a garbage collection procedure on the memory;

during the garbage collection procedure on the particular data block, determining that the page has been marked as invalid;

based on the page being marked as invalid, compressing the data and storing the data as compressed in a particular compressed data block of the compressed data blocks, wherein transmitting the data to the backup device comprises transmitting the data as compressed to the backup device; and

erasing the particular data block.

15. The storage device of claim 14 , wherein transmitting the data as compressed to the backup device comprises transmitting content of the compressed data blocks in time order starting with an oldest compressed data block.

16. The storage device of claim 14 , wherein the page is associated with a physical page address, wherein the storage device maintains a plurality of Bloom filters in time order of creation, and wherein marking the page as invalid comprises:

inserting the physical page address in a current Bloom filter that is a most-recently created one of the plurality of Bloom filters.

17. The storage device of claim 16 , wherein marking the page as invalid further comprises:

determining that a count of physical page addresses in the current Bloom filter exceeds a threshold count;

creating a new Bloom filter for maintaining of physical page addresses associated with further pages of the memory to which further data will be written; and

setting the new Bloom filter to be the current Bloom filter.

18. The storage device of claim 16 , wherein the operations further comprise:

during the garbage collection procedure, determining that the physical page address is in one of the plurality of Bloom filters, wherein compressing the data and storing the data as compressed in a particular compressed data block of the compressed data blocks is also based on the physical page address being in one of the plurality of Bloom filters.

19. The storage device of claim 9 , wherein the memory also includes tracking blocks, and wherein the operations further comprise:

receiving a command to be performed on the memory, where the command is a read command or a trim command; and

storing a representation of the command in the tracking blocks, wherein transmitting the data to the backup device also comprises transmitting content of the tracking blocks to the backup device.

20. The storage device of claim 19 , wherein transmitting the data to the backup device comprises transmitting content of the tracking blocks in time order starting with an oldest tracking block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2022
From: HUANG, JIAN
To: THE BOARD OF TRUSTEES OF THE UNIVERSITY OF ILLINOIS
Reel/Frame 061494/0368 →
Continuity (2)
Provisional Application 63262505 · Oct 14, 2021
Related Publication 20230119688A1 · Apr 20, 2023