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
查看详细属性
挂载
在线调整文件系统的大小
增加一个设备到当前指定的btrfs文件系统
将先前的数据均衡到新加的盘上
移除则用delate
btrfs device delete <device> [<device>...] <path>
创建子卷
显示子卷信息
btrfs subvolume delete [options] <subvolume> [<subvolume>...]
删除子卷
创建子卷的快照卷
删除快照
将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