Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Overview  





2 History  





3 Features  



3.1  Improvements  







4 See also  





5 References  





6 External links  














bcache






Norsk bokmål
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


bcache
Developer(s)Kent Overstreet and others
Initial releaseJune 30, 2013; 11 years ago (2013-06-30) (Linux 3.10)
Repository
Written inC
Operating systemLinux
TypeLinux kernel features
LicenseGNU GPL
Websitebcache.evilpiepirate.org

bcache (abbreviated from block cache) is a cache in the Linux kernel's block layer, which is used for accessing secondary storage devices. It allows one or more fast storage devices, such as flash-based solid-state drives (SSDs), to act as a cache for one or more slower storage devices, such as hard disk drives (HDDs); this effectively creates hybrid volumes and provides performance improvements.

Designed around the nature and performance characteristics of SSDs, bcache also minimizes write amplification by avoiding random writes and turning them into sequential writes instead. This merging of I/O operations is performed for both the cache and the primary storage, helping in extending the lifetime of flash-based devices used as caches, and in improving the performance of write-sensitive primary storages, such as RAID 5 sets.

bcache is licensed under the GNU General Public License (GPL), and Kent Overstreet is its primary developer. Overstreet considers bcache as a "prototype" for the development of bcachefs, a filesystem with significant improvements over bcache.[1]

Overview

[edit]

Using bcache makes it possible to have SSDs as another level of indirection within the data storage access paths, resulting in improved overall performance by using fast flash-based SSDs as caches for slower mechanical hard disk drives (HDDs) with rotational magnetic media. That way, the gap between SSDs and HDDs can be bridged – the costly speed of SSDs gets combined with the cheap storage capacity of traditional HDDs.[2]

Caching is implemented by using SSDs for storing data associated with performed random reads and random writes, using near-zero seek times as the most prominent feature of SSDs. Sequential I/O is not cached, to avoid rapid SSD cache invalidation on such operations that are already suitable enough for HDDs; going around the cache for big sequential writes is known as the write-around policy. Not caching the sequential I/O also helps in extending the lifetime of SSDs used as caches.[3] Write amplification is avoided by not performing random writes to SSDs; instead, all random writes to SSD caches are always combined into block-level writes, ending up with rewriting only the complete erase blocks on SSDs.[4][5]

Both write-back and write-through (which is the default) policies are supported for caching write operations. In case of the write-back policy, written data is stored inside the SSD caches first, and propagated to the HDDs later in a batched way while performing seek-friendly operations – making bcache to act also as an I/O scheduler. For the write-through policy, which ensures that no write operation is marked as finished until the data requested to be written has reached both SSDs and HDDs, performance improvements are reduced by effectively performing only caching of the written data.[4][5]

Write-back policy with batched writes to HDDs provides additional benefits to write-sensitive redundant array of independent disks (RAID) layouts such as RAID 5 and RAID 6, which perform actual write operations as atomic read-modify-write sequences. That way, performance penalties[6] of small random writes are reduced or avoided for such RAID layouts, by grouping them together and performing as batched sequential writes.[4][5]

Caching performed by bcache operates at the block device level, making itself file system–agnostic as long as the file system provides an embedded universally unique identifier (UUID); this requirement is satisfied by virtually all standard Linux file systems, as well as by swap partitions. Sizes of the logical blocks used internally by bcache as caching extents can go down to the size of a single HDD sector.[7]

History

[edit]

bcache was first announced by Kent Overstreet in July 2010, as a completely working Linux kernel module, though at its early beta stage.[8] The development continued for almost two years, until May 2012, at which point bcache reached its production-ready state.[5]

It was merged into the Linux kernel mainline in kernel version 3.10, released on June 30, 2013.[9][10] Overstreet has since been developing the file system bcachefs, based on ideas first developed in bcache that he said began "evolving ... into a full blown, general-purpose POSIX filesystem".[11] He describes bcache as a "prototype" for the ideas that became bcachefs and intends bcachefs to replace bcache.[12] He officially announced bcachefs in 2015 and got it merged into the mainline Linux kernel in October 2023.[13]

Features

[edit]

As of version 3.10 of the Linux kernel, the following features are provided by bcache:[4]

Improvements

[edit]

As of February 2014, the following new features are planned for the future releases of bcache:[10]

See also

[edit]

References

[edit]
  1. ^ "bcache FAQ". bcache.evilpiepirate.org. Retrieved May 7, 2021.
  • ^ Petros Koutoupis (November 25, 2013). "Advanced Hard Drive Caching Techniques". Linux Journal. Retrieved December 2, 2013.
  • ^ a b c "Linux kernel documentation: Documentation/bcache.txt". kernel.org. August 12, 2013. Retrieved January 24, 2014.
  • ^ a b c d Kent Overstreet. "bcache: Linux kernel block layer cache". bcache.evilpiepirate.org. Retrieved December 2, 2013.
  • ^ a b c d Jonathan Corbet (May 12, 2012). "A bcache update". LWN.net. Retrieved October 4, 2013.
  • ^ "Basic RAID Organizations". ecs.umass.edu. Retrieved October 4, 2013.
  • ^ William Stearns; Kent Overstreet (July 2, 2010). "bcache: Caching beyond just RAM". LWN.net. Retrieved October 4, 2013.
  • ^ Kent Overstreet (July 4, 2010). "bcache: Version 6". LWN.net. Retrieved October 4, 2013.
  • ^ "Linux kernel 3.10, Section 1.2. bcache, a block layer cache for SSD caching". kernelnewbies.org. June 30, 2013. Retrieved October 4, 2013.
  • ^ a b Libby Clark (June 11, 2013). "All About the Linux Kernel: bcache". linux.com. Archived from the original on September 29, 2013. Retrieved October 9, 2013.
  • ^ Larabel, Michael (August 21, 2015). "A New Linux File-System Aims For Speed While Having ZFS/Btrfs-Like Features". Phoronix. Retrieved November 22, 2018.
  • ^ Edge, Jake (May 23, 2018). "An update on bcachefs". LWN.net. Retrieved November 22, 2018.
  • ^ Larabel, Michael (October 31, 2023). "Bcachefs Merged Into The Linux 6.7 Kernel". Phoronix. Retrieved November 20, 2023.
  • [edit]

    Retrieved from "https://en.wikipedia.org/w/index.php?title=Bcache&oldid=1214095522"

    Categories: 
    Solid-state caching
    Free software programmed in C
    Linux kernel features
    Hidden categories: 
    Use mdy dates from August 2014
    Articles with short description
    Short description is different from Wikidata
    Articles containing potentially dated statements from February 2014
    All articles containing potentially dated statements
     



    This page was last edited on 16 March 2024, at 22:45 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki