BTRFS

BTRFS(通常念成Butter FS),被称为下一代的LINUX文件系统,由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小。

BTRFS特性:

首先是扩展性 (scalability) 相关的特性,btrfs 最重要的设计目标是应对大型机器对文件系统的扩展性要求。 Extent,B-Tree和动态 inode 创建等特性保证了 btrfs 在大型机器上仍有卓越的表现,其整体性能而不会随着系统容量的增加而降低。

其次是数据一致性 (data integrity) 相关的特性。系统面临不可预料的硬件故障,Btrfs 采用 COW 事务技术来保证文件系统的一致性。 btrfs 还支持 checksum,避免了 silent corrupt 的出现。而传统文件系统则无法做到这一点。

第三是和多设备管理相关的特性。 Btrfs 支持创建快照 (snapshot),和克隆 (clone) 。 btrfs 还能够方便的管理多个物理设备,使得传统的卷管理软件变得多余。

最后是其他难以归类的特性。这些特性都是比较先进的技术,能够显著提高文件系统的时间 / 空间性能,包括延迟分配,小文件的存储优化,目录索引等。

优化支持

SSD 是固态存储 Solid State Disk 的简称。在过去的几十年中,CPU/RAM 等器件的发展始终遵循着摩尔定律,但硬盘 HDD 的读写速率却始终没有飞跃式的发展。磁盘 IO 始终是系统性能的瓶颈。

SSD 采用 flash memory 技术,内部没有磁盘磁头等机械装置,读写速率大幅度提升。 flash memory 有一些不同于 HDD 的特性。 flash 在写数据之前必须先执行擦除操作;其次,flash 对擦除操作的次数有一定的限制,在目前的技术水平下,对同一个数据单元最多能进行约 10 万次擦除操作,因此,为了延长 flash 的寿命,应该将写操作平均到整个 flash 上。

SSD 在硬件内部的微代码中实现了 wear leveling 等分布写操作的技术,因此系统无须再使用特殊的 MTD 驱动和 FTL 层。虽然 SSD 在硬件层面做了很多努力,但毕竟还是有限。文件系统针对 SSD 的特性做优化不仅能提高 SSD 的使用寿命,而且能提高读写性能。 Btrfs 是少数专门对 SSD 进行优化的文件系统。 btrfs 用户可以使用 mount 参数打开对 SSD 的特殊优化处理。

Btrfs 的 COW 技术从根本上避免了对同一个物理单元的反复写操作。如果用户打开了 SSD 优化选项,btrfs 将在底层的块空间分配策略上进行优化:将多次磁盘空间分配请求聚合成一个大小为 2M 的连续的块。大块连续地址的 IO 能够让固化在 SSD 内部的微代码更好的进行读写优化,从而提高 IO 性能 。

btrfs文件系统的创建

使用 mkfs.btrfs 命令来创建BTRFS文件系统(Centos 7):

查看系统上现有的硬盘、分区信息,我们使用3块空闲硬盘来创建BTRFS(在同一个分区上创建BTRFS意义不大):

默认DATA数据存储类型为:RAID0,元数据METADATA存储类型为:RAID1,后面可以通过命令来修改RAID模式

挂载使用BTRFS,3个组成的磁盘都可以成为挂载设备:

查看BTRFS信息:

调整BTRFS的大小,先减少10G,再增加2G,最后扩容到最大:

由于BTRFS 支持在线调整,不需要事先卸载。

下面将其中一块硬盘移除出BTRFS,这之前先拷贝一些文件进来,前后对比文件读写是否有问题:

下面将 /dev/sdb 磁盘移除,BTRFS在移除设备时会先自动移动数据,查看分区内的文件是否能正常读取:

注:移除分区内的存储文件不足以在剩余的BTRFS空间上保存时,数据将会丢失请谨慎操作!

下面将刚才移除的 /dev/sdb 重新添加进来:

使用 balance 选项开启平衡特性,这个时间因数据大小而延长。

下面我们使用 balance start 参数将数据、元数据的RAID类型更改为RAID5(RAID5需要至少3块硬盘,不然会转换失败):

BTRFS还支持创建多个子卷,相当于多个分区,子卷可以分别挂载到系统的不同路径下:

使用 balance   list   show 选项可以显示子卷名称、信息:

使用 balance snapshot选项给子卷创建快照:

使用 btrfs-convert 可以将其他类型的分区,在不损坏分区存储文件的前提下转换为BTRFS类型:

我们将 /dev/sdb1 和 sdb2 分区都转换成BTRFS类型,验证文件是否能正常读写:

之前2个分区挂载、读写都正常:

卸载2个分区后,分别转换,然后重新挂载:

使用 -r 选项可以还原到原先的分区类型:

Linux基础之-BTRFS文件系统相关推荐

  1. linux文本运行层次,Linux基础知识之---文件系统层级结构

    #Linux基础知识之---文件系统层级结构 @(Linux系统)[基础知识,文件系统,层级结构,FHS] 一切皆文件: 在Linux中,无论是目录.配置.cpu.内存.键盘.鼠标.或者运行中的系统及 ...

  2. Linux基础知识与文件系统简介

    Linux基础知识与文件系统简介 参考文献:Ubuntu Linux 基础教程 Linux是在什么样的历史背景下出现的 Linux的诞生与发展与UNIX系统.Minix系统.Internet.GNU计 ...

  3. linux基础命令与文件系统(ip a、ls、cat、vim、cd、pwd、hostname、date、reboot、poweroff、echo、touch、rm、mkdir、diff、file)

    目录 一.Linux命令提示符 二.linux基础命令 1.ip a命令 2.ls 命令 3.cat 查看文件命令 4.vim编辑命令 5.cd 命令 6.pwd 命令 7.hostname 命令 8 ...

  4. 2.1 Linux基础(命令-文件系统)

    一.文件系统的管理 tips:输入命令的时候要常用tab键来补全 1.常用命令 ls 查看目录信息 ( ls / ) ls -l 等价于 ll 如果是文件夹前面文件是dr 非文件夹位 -ls -la ...

  5. -Linux基础知识2 -文件系统的操作 压缩,解压缩

    df     列出文件系统整体磁盘使用量 df -h 容量以易读的方式显示 du    评估文件系统的磁盘使用量 du -a 列出文件列表 gzip 文件名    压缩文件(生成压缩文件,但源文件会被 ...

  6. linux基础知识之磁盘管理及文件系统

    linux基础知识之磁盘管理及文件系统管理 磁盘管理及文件系统管理 一.磁盘硬件介绍 1. 接口类型 2. 硬盘种类 3. 磁盘命名 二.磁盘分区及文件系统介绍 1. 分区 1.1 什么是分区 1.2 ...

  7. 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化

    优化挂载参数 在 Linux 中挂载 SSD 上的 btrfs,可以采用各种参数进行优化: # UUID=/btrfs defaults,ssd,discard,noatime,compress=lz ...

  8. linux中的软RAID实现,逻辑卷和btrfs文件系统

    RAID: Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列:              Redundant Arrays of Independent D ...

  9. linux 基础 文件系统 用户权限

    描述Linux系统的启动过程?1.开机自检 BIOS 2.MBR引导 3.GRUB菜单 4.加载内核 5.运行init进程 6.从/etc/inittab读取运行级别 7.根据/etc/rc.sysi ...

最新文章

  1. web页面的点对点复制粘贴
  2. MySQL自带工具使用介绍
  3. Spring Cloud Zuul
  4. 广东省广播电视网络股份有限公司佛山分公司BOSS系统容灾中心建设项目
  5. Informatica在linux下安装搭建
  6. 阿里云打好云基础 敬候电商开发者上云
  7. 设计赋能,数联杭温!2020温州“市长杯”·数字设计(杭州)专项赛开始报名啦!...
  8. Java的接口、继承与多态
  9. C#(Sharp)操作数据库原理及案例精析(强烈建议收藏)
  10. Daily Scrum 10.29
  11. PyTorch框架学习十六——正则化与Dropout
  12. LNMP架构介绍与搭建
  13. 横扫六大权威榜单后,达摩院开源深度语言模型体系 AliceMind
  14. php pathinfo 解析,php 解析pathinfo 类
  15. Android必知必会-App 常用图标尺寸规范汇总
  16. 观察者模式和模拟wow插件的例子
  17. 启动maven nexus3时遇到的诡异异常
  18. 函数的单调性与曲线的凸凹性
  19. python mpi4py multiprocessing_python基于multiprocessing的多进程创建方法
  20. 2020-06-03:抢红包设计

热门文章

  1. 行业逆风,燕之屋凭长期主义能飞多远?
  2. php登录密码小黑点,input输入密码变黑点密文的实现方法
  3. git branch分支切换和合并
  4. SAR图像的干涉相位 matlab_时空双缝干涉
  5. SpaceVim - 让你的vim变得更加高效和强大
  6. 输出1000以内素数
  7. 计算机毕业设计Node.js+Express校内视频资料管理系统(源码+程序+lw+远程调试)
  8. Python+Vue计算机毕业设计仓库管理oni4h(源码+程序+LW+部署)
  9. java声明数组的时候,同时赋值
  10. Unity中的部分环境光照设置以及简单雾的效果