IP Library Granted Patent US 12,625,627
Granted Patent B2
US 12,625,627 · App. 17/165,730 · Granted May 12, 2026

File system storage allocation based on zones of a memory device

Inventor: Kumar Vkh Kanteti (Sunnyvale, CA)
Assignee: Micron Technology, Inc.
G06F3/0631G06F3/0604G06F3/0679
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,625,627
App. No.
17/165,730
Filed
Feb 2, 2021
Granted
May 12, 2026
Kind
B2
Art Unit
2135
USPC
711/154
Abstract

A system and method for performing file system storage allocation using zones of a memory device. An example method involving a host system: receiving zone characteristic data from a memory sub-system that includes a memory device, wherein the memory device includes a plurality of zones and wherein the zone characteristic data comprises one or more locations in the memory device corresponding to the plurality of zones; identifying, by the host system, a write request that comprises file system data for a file system; determining, by the host system, whether the file system data is associated with at least one of the plurality of zones; allocating, by the host system, a storage unit in a zone based on the zone characteristic data; and providing, by the host system, a location of the storage unit to the memory sub-system to store the file system data on the memory device.

Claims (53)

1 . A method comprising:

receiving, by a host system, zone characteristic data from a memory sub-system comprising a memory device, wherein the memory device comprises a plurality of zones and wherein the zone characteristic data indicates physical characteristics, logical characteristics, and virtual characteristics of the plurality of zones;

identifying, by the host system, a write request that comprises file system data for a file system;

analyzing the zone characteristic data to identify a zone of the plurality of zones to store the file system data;

aggregating available storage spaces of one or more portions of the zone of the plurality of zones;

determining that the aggregated available storage spaces are equal to or greater than a block group size;

allocating, by the host system, based on the zone characteristic data and the file system data, a block group of the block group size in the zone of the plurality of zones, wherein the zone comprises a plurality of block groups, wherein the allocated block group comprises a contiguous area reserved for the file system data of the file system and is associated with a block group identifier; and

providing, by the host system, a physical address of the block group to the memory sub-system, wherein the physical address references a location of the file system data in the block group.

2 . The method of claim 1 , wherein the memory sub-system comprises a Solid State Drive (SSD) and wherein the plurality of zones comprise Zoned Namespaces (ZNS).

3 . The method of claim 1 , wherein the file system comprises a copy on write (COW) file system that copies file data before modifying the file data, wherein the copy on write file system comprises a B-Tree File System (BTRFS).

4 . The method of claim 1 , wherein the block group comprises one or more extents of the file system, wherein the one or more extents comprise a contiguous group of blocks of the memory device that store a portion of a file.

5 . The method of claim 1 , wherein allocating the block group based on the zone characteristic data comprises:

determining, by the host system, that the zone of the memory device has sufficient space for the block group, wherein the determining is based on a write pointer of the zone and an end location of the zone; and

responsive to the zone having sufficient space, allocating the block group in the zone.

6 . The method of claim 1 , wherein the file system data comprises data of a new file, and wherein allocating the block group comprises:

determining the file system data comprises different data types, wherein a first portion of the file system data comprises file data and a second portion of the file system data comprises file metadata;

selecting different zones based on the different types of data, wherein a first zone is for data of a file and a second zone is for metadata of the file; and

writing, by the host system, the file data to the first zone and the file metadata to the second zone.

7 . The method of claim 1 , wherein the write request comprises a plurality of write requests with changes to different portions of a superblock of the file system, and further comprising,

determining, by the host system, that the superblock is associated with the zone;

making a copy in main memory of all data in the zone;

updating, by the host system, the copy to reflect the changes of the plurality of write requests;

erasing all the data in the zone from the memory device; and

initiating, by the host system, a single sequential write of the updated copy in main memory to the zone of the memory device.

8 . The method of claim 1 , wherein receiving the zone characteristic data comprises the host system receiving the zone characteristic data from a controller of the memory sub-system, the zone characteristic data indicating a size, a write pointer, and a state of each of the plurality of zones.

9 . The method of claim 1 , wherein the zone characteristic data sent from the memory sub-system to the host system comprises garbage collection data and one or more physical memory locations on the memory device.

10 . The method of claim 1 , wherein allocating the block group based on the zone characteristic data comprises allocating multiple block groups in non-adjacent zones and wherein providing the physical address comprises providing the physical address of each of the multiple block groups to a controller of the memory sub-system to stripe the file system data across the non-adjacent zones.

11 . The method of claim 1 , wherein allocating the block group based on the zone characteristic data comprises allocating multiple block groups in zones of different memory devices and wherein providing the physical address comprises providing physical addresses of the multiple block groups to a controller of the memory sub-system to stripe the file system data across the zones of the different memory devices.

12 . A system comprising:

a memory; and

a processing device, operatively coupled with the memory, to perform operations comprising:

receiving zone characteristic data from a memory sub-system comprising a memory device, wherein the memory device comprises a plurality of zones and wherein the zone characteristic data indicates physical characteristics, logical characteristics, and virtual characteristics of the plurality of zones;

identifying a write request that comprises file system data for a file system;

analyzing the zone characteristic data to identify a zone of the plurality of zones to store the file system data;

aggregating available storage spaces of one or more portions of the zone of the plurality of zones;

determining that the aggregated available storage spaces are equal to or greater than a block group size;

allocating, based on the zone characteristic data and the file system data, a block group of the block group size in the zone of the plurality of zones, wherein the zone comprises a plurality of block groups, wherein the allocated block group comprises a contiguous area reserved for the file system data of the file system and is associated with a block group identifier; and

providing a physical address of the block group to the memory sub-system, wherein the physical address references a location of the file system data in the block group.

13 . The system of claim 12 , wherein each zone of the plurality of zones accepts sequential write operations from the system, wherein a first zone is associated with a first process executing on the system, and wherein a second zone is associated with a second process executing on the system.

14 . The system of claim 12 , wherein the processing device is a controller of a Solid State Drive (SSD) and wherein the plurality of zones comprise Zoned Namespaces (ZNS).

15 . The system of claim 12 , wherein the file system comprises a copy on write (COW) file system that copies file data before modifying the file data, wherein the copy on write file system comprises a B-Tree File System (BTRFS).

16 . The system of claim 12 , wherein the block group comprises one or more extents of the file system, wherein the one or more extents comprise a contiguous group of blocks of the memory device that store a portion of a file.

17 . A non-transitory computer-readable medium storing instructions, which when executed by a processing device, cause the processing device to perform operations comprising:

receiving zone characteristic data from a memory sub-system comprising a memory device, wherein the memory device comprises a plurality of zones and wherein the zone characteristic data indicates physical characteristics, logical characteristics, and virtual characteristics of the plurality of zones;

identifying a write request that comprises file system data for a file system;

analyzing the zone characteristic data to identify a zone of the plurality of zones to store the file system data;

aggregating available storage spaces of one or more portions of the zone of the plurality of zones;

determining that the aggregated available storage spaces are equal to or greater than a block group size;

allocating a block group of the block group size in the zone of the plurality of zones based on the zone characteristic data and the file system data, the zone comprising a plurality of block groups, wherein the allocated block group comprises a contiguous area reserved for the file system data of the file system and is associated with a block group identifier; and

providing a physical address of the block group to the memory sub-system, wherein the physical address references a location of the file system data in the block group.

18 . The non-transitory computer-readable medium of claim 17 , wherein the memory sub-system comprises a Solid State Drive (SSD) and wherein the plurality of zones comprise Zoned Namespaces (ZNS).

19 . The non-transitory computer-readable medium of claim 17 , wherein the file system comprises a copy on write (COW) file system that copies file data before modifying the file data, wherein the copy on write file system comprises a B-Tree File System (BTRFS).

20 . The non-transitory computer-readable medium of claim 17 , wherein the block group comprises one or more extents of the file system, wherein the one or more extents comprise a contiguous group of blocks of the memory device that store a portion of a file.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2021
From: KANTETI, KUMAR VKH
To: MICRON TECHNOLOGY, INC.
Reel/Frame 055208/0626 →
Continuity (1)
Related Publication 20220244869A1 · Aug 4, 2022
References Cited (38)
US 6473775B1 · Kusters · 2002 [cited by examiner]
US 6701420B1 · Hamilton · 2004 [cited by examiner]
US 6898680B2 · Chambers · 2005 [cited by examiner]
US 20030070034A1 · Friedman · 2003 [cited by examiner]
US 20070143563A1 · Pudipeddi · 2007 [cited by examiner]
US 20090049238A1 · Zhang · 2009 [cited by examiner]
US 20110119465A1 · Suzuki · 2011 [cited by examiner]
US 20110145538A1 · Yoshioka · 2011 [cited by examiner]
US 20110153972A1 · LaBerge · 2011 [cited by examiner]
US 20140095772A1 · Lee · 2014 [cited by examiner]
US 20140189200A1 · Gavens · 2014 [cited by examiner]
US 20150339319A1 · Malina · 2015 [cited by examiner]
US 20160313943A1 · Hashimoto · 2016 [cited by examiner]
US 20170017405A1 · Dubeyko · 2017 [cited by examiner]
US 20170024160A1 · Feldman · 2017 [cited by examiner]
US 20170060898A1 · Lu · 2017 [cited by examiner]
US 20170123665A1 · Jannen · 2017 [cited by examiner]
US 20180011786A1 · Kim · 2018 [cited by examiner]
US 20180024737A1 · Dubeyko · 2018 [cited by examiner]
US 20190278710A1 · Ehrlich · 2019 [cited by examiner]
US 20200356288A1 · Dronamraju et al. · 2020 [cited by applicant]
US 20210089217A1 · Bjørling · 2021 [cited by examiner]
US 20210223962A1 · Esaka · 2021 [cited by examiner]
US 20210406174A1 · Gole · 2021 [cited by examiner]
US 20220075716A1 · Tikoo · 2022 [cited by examiner]
US 20220138099A1 · Kang · 2022 [cited by examiner]
US 20220206952A1 · Yuan · 2022 [cited by examiner]
CN 108664218A · 2018 [cited by applicant]
CN 112041805B · 2024 [cited by applicant]
WO WO2007090857A1 · 2007 [cited by examiner]
“Zoned Namespaces (ZNS) SSDs”, https://zonedstorage.io/introduction/zns/, 9 pages. [cited by applicant]
Bjørling, Matias, “Zone Append: A New Way of Writing to Zoned Storage”, Western Digital, Feb. 23, 2020, https://www.usenix.org/system/files/vault20_slides_bjorling.pdf, 16 pages. [cited by applicant]
“Zoned Storage Now Encompasses Both HDD & SSD Technologies”, Western Digital, White Paper, 12 pages. [cited by applicant]
“File Systems and Zoned Block Devices”, Western Digital, https://zonedstorage.io/linux/fs/, 17 pages. [cited by applicant]
“ZoneFS—Zone filesystem for Zoned block devices”, The Linux Kernel, https://www.kernel.org/doc/html/latest/filesystems/zonefs.html, 1 page. [cited by applicant]
“Higher Capacities, Lower TCO & Improved QoS”, Western Digital, https://www.westerndigital.com/company/innovations/zoned-storage, 13 pages. [cited by applicant]
“Zonefs File-System Will Land with Linux® 5.6”, Western Digital, https://blog.westerndigital.com/zonefs-file-system-linux-5-6/, 7 pages. [cited by applicant]
“What is Zoned Storage and the Zoned Storage Initiative?”, Western Digital, https://blog.westerndigital.com/what-is-zoned-storage-initiative/, 11 pages. [cited by applicant]