BTRFS,通常念成 Butter FS,Better FS 或B-tree FS。下一代的Linux文件系统。

它基于写时拷贝(copy-on-write),支持高效的snapshot和clone。它使用b-tree作为存储的数据结构。在BTRFS项目主页上对自己是这么描述的:"一个新的针对Linux的写时复制文件系统,致力于实施高级的功能,同时关注容错、修复和管理方便性。"

它有哪些高级功能呢?下面的feature来自BTRFS的项目主页:http://btrfs.wiki.kernel.org/

  • Extent based file storage #扩展了
  • 2^64 byte == 16 EiB maximum file size #支持16EB的文件大小, 1PB = 1024 TB, 1EB = 1024 PB
  • Space-efficient packing of small files   #高效支持小文件, 通过inline files实现的
  • Space-efficient indexed directories       #高效的目录索引
  • Dynamic inode allocation                       #动态inode分配。我们知道,传统Linux文件系统的inode格式化好后inode的节点数就确定了,也就是说文件系统的文件数确定
  • Writable snapshots, read-only snapshots  #支持可读,可写的快照
  • Subvolumes (separate internal filesystem roots)  #支持subvolumes,可以理解成在文件系统上创建子的文件系统,方便用户的权限控制
  • Checksums on data and metadata (crc32c)    #支持数据和元数据的检验,保证数据的正确性
  • Compression (zlib and LZO)                               #支持在线压缩
  • Integrated multiple device support                     #多设备支持
    • File Striping, File Mirroring, File Striping+Mirroring, Striping with Single and Dual Parity implementations
  • SSD (Flash storage) awareness (TRIM/Discard for reporting free blocks for reuse) and optimizations (e.g. avoiding unnecessary seek optimizations, sending writes in clusters, even if they are from unrelated files. This results in larger write operations and faster write throughput)
  • Efficient Incremental Backup#高效的增量备份
  • Background scrub process for finding and fixing errors on files with redundant copies #后台进程自动检测并修复错误
  • Online filesystem defragmentation   #在线的文件系统碎片管理
  • Offline filesystem check#离线的文件系统检查
  • Conversion of existing ext3/4 file systems #ext3/4文件系统的转换
  • Seed devices. Create a (readonly) filesystem that acts as a template to seed other Btrfs filesystems. The original filesystem and devices are included as a readonly starting point for the new filesystem. Using copy on write, all modifications are stored on different devices; the original is unchanged.
  • Subvolume-aware quota support#支持subvolume配额,就是支持subvolume的大小限制设定
  • Send/receive of subvolume changes
    • Efficient incremental filesystem mirroring
  • Batch, or out-of-band deduplication (happens after writes, not during) #支持写后的数据消重

以下这些features正在开发,或者计划中:

  • Very fast offline filesystem check   #快速离线文件系统检查
  • Object-level mirroring and striping #对象级别的镜像和条带
  • Alternative checksum algorithms    #可选择的校验算法
  • Online filesystem check    #在线文件系统检查
  • Other compression methods (snappy, lz4)   #其他的压缩算法
  • Hot data tracking and moving to faster devices (currently being pushed as a generic feature available through VFS): 热数据转移到更快的设备上,比如SSD
  • In-band deduplication (happens during writes)   #支持写时数据消重

既然BTRFS的目标是下一代的Linux文件系统,那么它不单单能作为智能手持设备的文件系统,还能作为企业生产环境下的文件系统。它需要能搭建在众多的硬件平台上。

BTRFS的实现视图可以看成需要btree构成的一个森林,使用copy-on-write(COW,写时复制)作为更新的方法。硬盘的block以extent的形式被管理。

这篇文章作为该系列文章的开篇,简单的介绍一下BTRFS。接下来的文章我讲更详细的去分享这些feature的具体实现。敬请期待!


尊重原创,转载请注明出处 anzhsoft: http://blog.csdn.net/anzhsoft/article/details/20359531

存储那些事儿(二): 下一代Linux文件系统BTRFS简介的更多相关文章

  1. 新一代 Linux 文件系统 btrfs 简介

    https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3 ...

  2. Linux学习之二十-Linux文件系统

    Linux文件系统 文件系统的定义 文件系统是操作系统的必备软件,文件系统是对一个存储设备上的数据(block)和元数据(inode)进行组织的一种机制.文件系统可以帮助用户管理磁盘空间,进行文件的快 ...

  3. Linux 入门记录:二、Linux 文件系统基本结构

    一.树状目录结构 Linux 文件系统是一个倒置的单根树状结构.文件系统的根为"/":文件名严格区分大小写:路径使用"/"分割(Windows 中使用" ...

  4. 【Linux学习二】Linux文件系统

    Linux文件系统结构 ●Linux文件系统是一种倒转的单根结构 ●文件系统的根是"/" ●文件系统严格区分大小写 ●路径使用"/"分割(window下为&qu ...

  5. 存储那些事儿(五):BTRFS文件系统之Btree结构详解

    Btree数据结构可以说是BTRFS文件系统的基础.它提供了一个通用的方式去存储不同的数据类型.它仅仅存储3个数据类型:key, item和block header. btrfs_header的定义如 ...

  6. 第十二章Linux文件系统与日志

    1.inode 包含文件的元信息(1)inode 内容:文件的字节数.拥有者的 UID.GID.文件的读写执行权限.时间戳等,但不包含文件名.文件名是储存在目录的目录项中.(2)查看文件的 inode ...

  7. 二、linux文件系统之linux启动

    Linux组成 kernel  shell  文件系统  application(应用程序) 标准库函数 内核源码位置: /usr/src   /boot/vmlinuz*(内核压缩文件,启动要加载) ...

  8. 二、Linux文件系统之内存管理

    虚拟内存  32位:4G 64位:2^64 内存管理: 进程管理 自动分配和管理 支持模块化程序设计 保护和访问控制 长期存储 虚拟内存  <---MMU-->物理内存

  9. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

随机推荐

  1. JVM程序计数器

    一.先来看看概念 多线程的Java应用程序:为了让每个线程正常工作就提出了程序计数器(Programe Counter Register),每个线程都有自己的程序计数器这样当线程执行切换的时候就可以在 ...

  2. bootstrap插件fileinput.js 出现出现$("#xxxx").fileinput({}); 不生效的情况解决

    如果出现$("#xxxx").fileinput({}); 不生效的情况请将fileinput.js中最后几行注释掉: /* $(document).ready(function ...

  3. Why Helm? - 每天5分钟玩转 Docker 容器技术(160)

    本章我们将学习 Helm,Kubernetes 的包管理器. 每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Hel ...

  4. OpenCV3.1.0中调用MHI(Motion History Images, 运动历史图像)

    写在前边: OpenCV3.0+要想使用MHI,就要现安装扩展模块opencv_contrib.安装方法见:ubuntu 14.04 64位 安装Opencv3.1.0 (包含opencv_contr ...

  5. EntityFramework Core 自动绑定模型映射

    笔者最近在和同事共同开发项目时,需要从他们提供的包含数据库实体类型的类库中读取实体信息绑定到自己的项目中(但是都在同一个解决方案里),所以很直接的一种方式就是把项目中所有的实体都以 public Db ...

  6. 用Netty解析Redis网络协议

    用Netty解析Redis网络协议 根据Redis官方文档的介绍,学习了一下Redis网络通信协议.然后偶然在GitHub上发现了个用Netty实现的Redis服务器,很有趣,于是就动手实现了一下! ...

  7. 剑指Offer——知识点储备-JVM基础

    剑指Offer--知识点储备-JVM基础 1.java内存与内存溢出 1.1 JVM分为哪些区,每一个区干嘛的?(见java虚拟机38页) (1)程序计数器(线程私有) 当前线程执行字节码的信号指示器 ...

  8. activiti 任务节点 处理人设置

    1.1.1. 前言 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) 我们在使用activiti 工作流引擎的时候, ...

  9. Java之继承深刻理解

    1.关于私有成员变量 无论父类中的成员变量是私有的.共有的.还是其它类型的,子类都会拥有父类中的这些成员变量.但是父类中的私有成员变量,无法在子类中直接访问,必须通过从父类中继承得到的protecte ...

  10. java.util.ServiceLoader使用

    近期在项目中需要实现能在配置文件中定义多个统一接口类型的类,可以在程序中获取到所有配置的类,刚开始打算配置到properties中,然后去程序读取,感觉这种方式不太灵活,于是,研究研究java中有没有 ...