Linux基础之-BTRFS文件系统

2023-05-16

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 选项可以还原到原先的分区类型:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux基础之-BTRFS文件系统 的相关文章

  • ACME.SH 申请SSL证书(免费、自动更新)

    1 获取DNS密钥 xff08 1 xff09 获取域名服务商AccessKey ID及AccessKey Secret 我使用的域名是阿里云 xff0c 故需要去阿里云RAM管理平台获取 xff1a 其他服务商 xff0c 可以去指定的服
  • C语言fscanf函数读取结构化数据

    函数原型 xff1a int fscanf FILE restrict stream const char restrict format span class hljs keyword span fscanf 分隔符是 空格 tab 回车
  • 选择法排序

    选择法排序 xff1a 假设有N个数要按照从大到小的顺序排序 xff0c 选择法就是先设第一个数是最大的 xff08 进行第一次大循环 xff09 xff0c 然后将这个数与数组中剩下的数依次比较 xff0c 如果剩下的数中有比这个数大的
  • debian 10的安装DVD

    准备 下载debian 链接 xff1a https pan baidu com s 1BfyVmF3UgiEyKWzgQO90LA 提取码 xff1a evk9 复制这段内容后打开百度网盘手机App xff0c 操作更方便哦 来自百度网盘
  • Linux 最常用命令汇总

    常用命令 一 文件操作进入文件夹查看文件夹下文件创建文件夹复制文件移动文件删除文件查看文件内容实时查看文件内容创建文件编辑文件追加文件内容添加文件内容替换文件内容清空文件压缩解压文件分割文件文件合并文件对比显示文件树软链接一次执行多个she
  • CSP官网题目——炉石传说

    问题描述 玩家会控制一些角色 xff0c 每个角色有自己的生命值和攻击力 当生命值小于等于 0 时 xff0c 该角色死亡 角色分为英雄和随从 玩家各控制一个英雄 xff0c 游戏开始时 xff0c 英雄的生命值为 30 xff0c 攻击力
  • 【C51自学笔记】定时器

    CPU时序 xff1a v 振荡周期 xff1a 为单片机提供定时信号的振荡源的周期 xff08 晶振周期或外加振荡周期 xff09 v 状态周期 xff1a 2个振荡周期为1个状态周期 xff0c 用S表示 振荡周期又称S周期或时钟周期
  • Codeforces Round #706 (Div. 2)

    代码 xff1a span class token macro property span class token directive keyword include span span class token string lt iost
  • Codeforces Round #366 (Div. 2) A和B

    昨晚打了一个小时CF感悟最大的就是英文真是菜的抠脚 xff0c 第二题看了半天再结合样例解释才知道是什么意思 xff0c 第一题第一次提交代码输出漏写个单词真是醉了 xff0c 两题都掉分果真CF A Hulk 题意 xff1a 如果是1就
  • Matlab进行多项式的因式分解

    clear all span class token punctuation span clc syms x span class token punctuation span f1 span class token operator 61
  • 【linux】详解linux 下安装软件tar.gz, rpm,deb的方法

    在Linux系统中 xff0c 软件安装程序比较纷繁复杂 xff0c 不过最常见的有两种 xff1a 1 xff09 一种是软件的源代码 xff0c 您需要自己动手编译它 这种软件安装包通常是用gzip压缩过的tar包 xff08 后缀为
  • 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第 几号的那位。

    问题 xff1a 有n个人围成一圈 xff0c 顺序排号 从第一个人开始报数 xff08 从1到3报数 xff09 xff0c 凡报到3的人退出圈子 xff0c 问最后留下的是原来第 几号的那位 解决思路 我的解决思路是先给这n个人排序生成
  • 【AtCoder】【模拟】【模型转化】Camel and Oases(AGC012)

    题意 xff1a 有一个骆驼 xff0c n个绿洲遍布在数轴上 xff0c 第i个绿洲的坐标为x i xff0c 保证x i 单增 骆驼的驼峰有体积初始值V 当驼峰的体积变为v的时候 xff0c 驼峰中至多只能够存储v L的水 骆驼希望走完
  • windows10远程桌面登录ubuntu20.04

    一 ubuntu系统共享设置 设置远程共享密码 xff0c 密码要记住 xff0c 一会在windows远程登陆的时候 xff0c 第二步要输入密码 二 安装xrdp sudo apt get install xrdp 三 安装dconf
  • 配置ArchLinux系统

    配置ArchLinux系统环境 文章目录 配置ArchLinux系统环境配置 96 AUR 96 中国源桌面环境安装登录管理器安装字体与其他附加组件安装驱动安装中文输入法安装 xff1a 优化配置 96 TRM 96 磁盘优化 96 tlp
  • Linux字体推荐

    Linux字体推荐 以下是Linux推荐的字体在不同Linux发行版的不同包装名称 xff0c 每款都很精致 xff0c 请欣赏 xff01 ArchLinux字体软件包名称Debian字体软件包名称Fedora字体软件包名称Gentoo字
  • 安装配置fcitx输入法

    安装配置fcitx输入法 文章目录 安装配置 96 fcitx 96 输入法安装输入法引擎可用的 96 fcitx 96 输入法包括 xff1a 中文日文其语言 可用的 96 fcitx5 96 输入法包括 xff1a 中文日文其他语言 输
  • 使用adb安装或卸载卸载手机系统应用

    使用adb安装 卸载手机系统应用 准备工具 在浏览器下载并打开带有adb的工具 xff1b 手机打开 开发者选项 xff0c 在 开发者选项 中开启usb调试并连接电脑 xff0c 手机端选择 传输文件 xff1b 在手机端点击 一律允许计
  • OpenWRT好用的插件

    PPP xff08 连接Internet共享 xff09 xff1a 用于让路由器到外网的连接 xff1b 资源占用小 xff0c 官网有相应版本可供下载 xff0c 软件包名称为 ppp mod pppoe Adblock xff08 广
  • Gentoo Linux查看已安装软件包

    Gentoo Linux查看已安装软件包 对于Gentoo Linux xff0c 需要一个名为Equery的软件来查看已安装软件包的信息 Equery是一个用于简化常用 Portage 操作的工具 此外 xff0c 可以显示包依赖项 元数

随机推荐

  • 2016 Personal Training #4 Div.2 A B C G H

    xff21 URAL 2091 题意 xff1a 有四个类别 xff11 xff0e xff21 和 xff22 都包含 xff0c xff12 xff0e 只包含 xff21 不包含 xff22 xff0c xff13 xff0e 只包含
  • Gentoo Linux系统清理

    Gentoo Linux系统清理 一 清除源码包文件 清除已经下载的软件包 xff0c 步骤如下 xff1a 在这一步中 xff0c 所使用的工具是rm命令 xff0c 将会强制删除 使用前 xff0c 请仔细检查所要删除的目录是否正确 x
  • Gentoo Linux卸载无用内核

    Gentoo Linux卸载无用内核 移除内核源代码 在安装新的内核并正常工作之后 xff0c 旧的内核就可以移除了 emerge的 depclean 选项 xff08 缩写为 c xff09 可以用来移除所有旧的或者不用的软件版本 xff
  • flink学习(一)---Maven配置简单易学

    一 下载Maven 进入官网http maven apache org 点击Download 进入官网之后 xff1a 我演示的是windows的配置步骤 xff1a 1 将安装包放入C盘 xff0c 进行解压 xff0c 将maven文件
  • eclipse括号风格改为独占一行风格

    一 原Eclipse生成的花括号 情形 public class test public static void main String args System out println 34 Eclipse 的花括号 xff08 brace
  • SecureCRT按Ctrl+S后假死问题

    SecureCRT作为著名的SSH客户端 xff0c 经常用于登陆远程服务器 在上面编辑文本 xff0c 特别是用vi打开两个文本 xff0c 并且需要切换时 xff0c 很容易出现卡死的现象 xff0c 不能接受任何的键盘输入 很是郁闷
  • dll和lib(包括静态链接库和与dll同时生成的lib)

    1 xff1a 神马是Dll和Lib xff0c 神马是静态链接和动态链接 大家都懂的 xff0c DLL就是动态链接库 xff0c LIB是静态链接库 DLL其实就是EXE xff0c 只不过没main 动态链接是相对于静态链接而言的 所
  • Doxyfile的使用

    Doxygen是一个开源软件 xff0c 它类似javadoc xff0c 能够根据源代码和源代码中特定格式的注释 xff0c 生成文档和UML图 xff08 如果要生成UML图 xff0c 需要下载可选组件Graphviz xff09 的
  • 微软亚洲研究院(MSRA)面经

    我最早把简历投给MSRA是在美国交换的时候 xff0c 大概11月左右吧 不过估计是因为那时候我人也不在国内 xff0c 11月也是个收实习生的淡季 xff0c 没什么空位子 xff0c 所以在美国期间他们也并没有打国际长途联系我 后来1月
  • VIM自动缩进等格式设置方法

    xff08 1 xff09 VIM的环境是根据读取的配置文件来设定的 xff0c 配置文件的位置通常在目录 etc 下面 xff0c 有个名为vimrc的文件 xff0c 这是系统中公共的vim配置文件 xff0c 对所有用户都有效 而在每
  • Visual C++调试 ASSERT()和TRACE()工具

    Visual C 43 43 IDE提供了功能强大的调试器 xff0c 包括联编 xff08 build xff09 工具和调试 xff08 debug xff09 工具 xff0c Visual C 43 43 的调试工具栏如图2 20所
  • 2016 Team Training #21 Gym 100952 A D E F J

    A 水题 题意 xff1a 两个人的时间分别是时 xff0c 分 xff0c 秒输入 xff0c 也就是让我们输出谁时间最早呗 思路 xff1a 没有思路直接上 xff0c 看手速了 xff08 我敲代码速度慢 xff09 代码如下 xff
  • Ubuntu20.04 个人配置和i3美化

    Ubuntu20 04 个人配置和i3美化 本文是基于个人习惯和审美 xff0c 快速配置一个新ubuntu的步骤 脚本在资源里给出 xff0c 但仍有部分配置文件需在脚本执行后手动修改 文中已用红色字体标出 更新apt源 备份原来的源更换
  • debian系统的镜像地址修改

    路径 etc apt sources list Debian9 deb http mirrors 163 com debian stretch main non free contrib deb http mirrors 163 com d
  • iOS动画曲线详解(UIView Animation Curves)

    前言 iOS应用中比较性感的动画 xff0c 一般都不是匀速的 通俗的描述有 xff1a 先快后慢 xff0c 先慢后快 xff0c 弹簧式的 xff0c 不规则运动的 xff0c 等等 本文针对这几种情况进行分解 xff0c 内容包括 x
  • Ubuntu16.0.4 安装及使用

    1 点击 这里 下载一个 wubi16r22 exe xff1b 2 执行这个程序 xff08 在Win10系统下利用我的电脑 gt 管理模块 xff0c 预留一个空盘用于安装Ubuntu xff09 xff1b 3 设置初始密码后 xff
  • mysql8.0密码重置

    mysql密码忘了 xff0c 以下步骤可以找回密码 1 打开一个cmd窗口 xff0c 输入net stop mysql 关掉mysql服务 2 打开一个新的cmd窗口 win 43 R xff0c 然后进入mysql的安装目录下的bin
  • Tableau 高级 | 优化数据提取

    本文TableauServer基于win10环境 增加后台进程数 以管理员身份进入TableauServer的bin目录 xff0c 并停止Server cd 安装目录 Tableau Tableau Server 10 3 bin tab
  • VS2013出现kernel32.lib的解决方法

    在64位win7系统下安装了VS2013以后 xff0c 编译的时候出现fatal error LNK1104 xff1a 无法打开文件kernel32 lib的解决方法如下 xff1a 到上面的标题栏 项目 gt 配置属性 gt VC 4
  • Linux基础之-BTRFS文件系统

    BTRFS xff1a BTRFS xff08 通常念成Butter FS xff09 xff0c 被称为下一代的LINUX文件系统 xff0c 由Oracle于2007年宣布并进行中的COW copy on write式 文件系统 目标是