Btrfs 是一个 Linux 中的新的写时复制(copy-on-write (COW))的文件系统,目的是实现高级功能的同时着重与容错功能,修复功能以及易于管理。目前由Oracle, Red Hat, 富士通, Intel, SUSE以及其他组织共同开发,在 GPL 许可证下发行,同时向任何人公开贡献代码。

Btrfs核心特性:

 多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID,以联机“添加”、“移除”、“修改”;

 写时复制更新机制(CoW):复制、更新及替换指针,而非“就地”更新;在文件进行修改的时候,首先将文件复制一份出来,在复制出来的文件上进行修改,修改完成之后,将指向原有文件的指针修改指向到修改完成的文件上,若修改完成的文件出现了错误,则我们可以通过原文件进行修复

 数据及元数据校验码:checksum ,当存储某个文件时,checksum会将数据的源数据和数据的校验码,分别通过文件的属性扩展进行保存,当我们再次读取数据时可以方便的检测数据是否受损,如果文件受损系统可以完成自动修复;

 子卷:sub_volume,在一个卷上创建多个子卷,在每一个子卷上创建文件系统,并挂载使用;

 快照:支持快照的快照;因此可以实现类似增量快照的机制

 透明压缩 :如果我们在存储文件时,进行压缩存储,那么在文件发往btrfs时,会自动的占用时钟周期,完成数据的压缩存放,而用户并不知道,在用户读取文件时,会自动的进行文件的解压缩,可以实现节约磁盘空间。但是压缩和解压缩会占用时钟周期;

  开始创建btrfs文件系统

mkfs.btrfs

 选项:

    -L|--label <name>:为即将创建的btrfs文件系统指定卷标

    -d|--data <type>:为数据存储指定类型;可以选择的类型有:raid0,riad1,raid5,raid6,raid9,raid10 or single

    -m|--metadata <profile>:指定元数据的存储方式;可以选择的类型有:raid0, raid1, raid5, raid6, raid10, single or dup

    -O|--features <feature1>[,<feature2>...]:指定btrfs文件系统的特性,如果想要查看那些特性,可以使用命令mkfs.btrfs -O list-all

wKiom1k6lSHxqBFVAAAZGjuWy0w141.png  创建btrfswKioL1k6mGuybaNoAAAkF_xO0Xw235.png

查看详细属性

wKioL1k6mMCSKcMLAAASHym-THc336.png

挂载

wKiom1k6mY6wGO9WAAAJwnYQk6E795.png

在线调整文件系统的大小

wKiom1k6m6LjRQokAAAGTL97QjM629.png

增加一个设备到当前指定的btrfs文件系统

wKioL1k6oVDCGUifAAANrwe08DI537.png

将先前的数据均衡到新加的盘上

wKiom1k6ooGSgUTYAAAJa-p4PY0654.png

移除则用delate

 btrfs device delete <device> [<device>...] <path>

  

 创建子卷

wKioL1k6o0ChpIWDAAAGP-Wxq6Q929.png

 显示子卷信息

wKioL1k6o_TBW4f6AAAWOB8g5NQ548.png

  btrfs subvolume delete [options] <subvolume> [<subvolume>...]

      删除子卷

创建子卷的快照卷

  wKioL1k6qV_jA7gUAAAHon8tWTw638.png 子卷的快照必须与子卷在同一个父卷中

删除快照

wKioL1k6qfyBJYC_AAAHj3NyqWI327.png

将btrfs和ext系列进行转换:

btrfs-convert

btrfs-convert - convert from ext2/3/4 filesystem to btrfs or rollback

btrfs-convert [options] <device>

将文件系统从ext转换为btrfs:

~]# btrfs-convert /dev/sdb1

注意:/dev/sdb1分区,应该事先格式化为ext系列文件系统;

将文件系统从btrfs回滚到ext

~]# btrfs-convert -r /dev/sdb1