btrfs
Balance-tree FS
Better FS
Butter FS
2007年有Oracle开源,到目前为止,仍然是技术预览版(Technical Preview)。
btrfs开发目的就是取代ext系列文件系统,成为下一代Linux的标准文件系统。
在Linux上运行的btrfs,遵循GPL开源协定;2014年8月,稳定版推出。
btrfs的特性:
1.可扩展性
extent是最小管理逻辑单元,每个extent是由一组连续的block组成
ext文件系统inode数量是一定的,btrfs的inode数量是动态可调整的
2.多物理卷支持:
btrfs可以跨越多个物理设备,动态的增加或减少设备来达到扩容或缩容的目的;
而且,从技术角度来讲,btrfs还支持RAID-0,RAID-1,RAID-5,RAID-10等
还支持在线添加,删除,及修改设备;
3.写时复制更新机制(CoW, Copy onWrite)
所谓的CoW,就是每次写磁盘数据的时候,先将当前块的数据复制到一个新块中,然后在新块中进行数据更新写入,当新块写入完成后,只需要将原来指向旧块的指针指向新块即可。
4.双重校验机制——数据及元数据都有校验码:checksum
5.支持子卷:
6.快照卷:
对父卷做快照
对子卷做快照
对快照卷做快照
7.透明压缩,隐形压缩:
mkfs.btrfs
选项:
-L|--label <name>:为即将创建的btrfs文件系统指定卷标
-d|--data <type>:为数据存储指定类型;可以选择的类型有:raid0, raid1, raid5, raid6, 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文件系统的mount命令中使用下列方式开启透明压缩功能:
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
btrfs
btrfs - control a btrfs filesystem
btrfs <command> [<args>]
btrfs filesystem show
查看btrfs文件系统的详细属性;
btrfs filesystem df MOUNT_POINT
查看文件系统的挂载和使用情况
例:btrfs filesystem df/mnt/btrfs/
在线修改文件系统大小:
btrfs filesystem resize {+|-}SIZE[KkMmGgTtPpEe]MOUNT_POINT
例:btrfs filesystem resize-15G /mnt/btrfs/
btrfs filesystem resize +5G/mnt/btrfs/
btrfs filesystem resize max/mnt/btrfs/
向btrfs文件系统中添加或删除设备
btrfs device
btrfs device add [options]<device> [<device>...] <path>
向文件系统中添加一个新设备
btrfs device delete <device>[<device>...] <path>
从文件系统中删除一个设备
平衡数据:
btrfs balance start [options] <path>
开启跨设备的chunk的数据平衡
-mconvert={radi0|raid1|raid5|radi10|raid6|single|dup}
改变元数据的数据平衡布局方式
例:btrfsbalance start -mconvert=raid5 /mnt/btrfs/
-dconvert={radi0|raid1|raid5|radi10|raid6|single}
改变数据的数据平衡布局方式
例:btrfs balance start-dconvert=raid6 /mnt/btrfs/
btrfs balance pause <path>
暂停数据平衡
btrfs balance cancel <path>
取消正在进行的或已经暂停的数据平衡
btrfs balance resume <path>
恢复被打断的数据平衡
btrfs balance status [-v] <path>
显示正在进行的或已经暂停的数据平衡的状态信息
子卷管理:
btrfs subvolume create [-i <qgroupid>][<dest>/]<name>
创建子卷
例:btrfssubvolume create /mnt/btrfs/mysub1/
btrfs subvolume delete [options]<subvolume> [<subvolume>...]
删除子卷
例:btrfs subvolume delete/mnt/btrfs/mysub1/
btrfs subvolume show <subvol-path>
显示子卷的信息
例:btrfssubvolume show /mnt/btrfs/mysub1/
子卷类似于ext文件系统中的将其他分区挂载到根目录下的某个空闲子目录的操作;
快照:
btrfs subvolume snapshot [-r] [-i<qgroupid>] <source> <dest>|[<dest>/]<name>
创建指定子卷的快照卷
例:btrfs subvolume snapshot/mnt/btrfs/mysub1/ /mnt/btrfs/snap_mysub1
将btrfs和ext系列进行转换:
btrfs-convert
btrfs-convert - convert from ext2/3/4filesystem to btrfs or rollback
btrfs-convert [options] <device>
将文件系统从ext转换为btrfs:
~]# btrfs-convert /dev/sdb1
注意:/dev/sdb1分区,应该事先格式化为ext系列文件系统;
将文件系统从btrfs回滚到ext
~]# btrfs-convert -r /dev/sdb1