btrfs文件系统
一、Btrfs(B-tree,butter FS,better FS)
btrfs是centos7默认支持的文件系统,btrfs有着ext系列文件系统之外的众多功能,可是说功能非常强大:
特性
1、 支持跨物理设备(磁盘及分区)创建,数据和元数据分别支持RAID,可在线添加、移除、修改等操作
其支持诸多RAID,譬如数据支持raid0,raid1 raid5,raid6,raid10,single
元数据支持raid0, raid1, raid5, raid6, raid10, single or dup
2、写时复制功能:其不在原处修改,而是将文件复制一份后对副本修改,
3、数据及元数据校验机制:它自身携带有checksum校验码,以确保数据的准确性
4、子卷:文件系统中可创建子卷,子卷可以实现文件系统独立的功能
5、快照:btrfs支持快照功能,以实现数据的备份与访问
6、透明压缩:数据保存在硬盘中不是原来的格式保存,而是压缩后保存
当然,这样在读写文件时,也增加了系统的压力,繁忙读写操作慎用
2、3可实现防删除功能
二、btrfs文件系统创建
mkfs.btrfs 命令
-L “label” 指定卷标
-d|--data <type>:指定数据时如何夸设备存储的
<type>:raid0,raid1 raid5,raid6,raid10,single
-m|--metadata <profile> 指定元数据是如何夸设备存储的
<type>: raid0, raid1, raid5, raid6, raid10, single or dup
dup类型是把数据再次备份一份类似于RAID1
-s|--sectorsize <size>
-n|--nodesize <size>
-U|--uuid <UUID>
-f |--force 强制写入磁盘一个以存在分区的磁盘中,默认情况下btrfs不会向以有分区的磁盘上写数据
-O <feature> 指定其他特性
-O list-all
三、btrfs是管理btrfs文件系统的命令,其支持众多的子命令
btrfs-subvolume, btrfs-filesystem,
btrfs-balance, btrfs-device, btrfs-scrub, btrfs-check,
btrfs-rescue, btrfs-restore, btrfs-inspect-internal, btrfs-send,
btrfs-receive, btrfs-quota, btrfs-qgroup, btrfs-replace,
btrfs支持子命令嵌套习惯,以下将是btrfs的子命令嵌套格式
btrfs filesystem
show --mountd |--all-devices|<path>|<uuid>|<device>|<label>
可查看挂载了的设备|所有设备|指定路径下的设备|指定UUID的设备|指定设备名设备|指定卷标的设备
resize [<devid>:]<size>[gkm]|[<devid>:]max <path>
Resize a filesystem identified by <path> for the underlying device devid online.
支持在线调整btrfs的大小 也可调整到最大(类似lvm逻辑卷的功能)
将大小减小5G显示如下,修改是应对其挂载点操作
label [<dev>|<mountpoint>] [<newlabel>]
Show or update the label of a filesystem.显示或更新文件系统的卷标
显示系统中所有btrfs文件系统
也可以指定文件系统譬如
对设备的操作
btrfs device 命令:在线增添、删除、替换设备
add增添设备 [-Kf] <dev> [<dev>...] <path>
delete删除设备
scan扫描设备
ready将所有的设备调整为挂载状态
stats打印指定或所有的IO设备的状态
将/dev/sde 添加至myfs中其大小变为60G
btrfs balance {start|stop|pause|cancel|resume|status} [option]<path>系统的均衡操作
将当前文件系统的数据组成类型转化为其他的类型(raid的各种类型),即重建数据chunk类型
start
-d <filters>修改数据的组成格式
-m<filters>修改元数据的组成格式
-s <filters> 修改系统数据的组成格式
-f 强制转换数据的组成格式
实际生产中数据量很大,需要在空闲时调整,在调整过程中可能需要以下参数控制转换过程
stop <path> 停止转换
pause <path> 暂停转换
cancel <path> 取消转换
resume <path>继续转换
status <path>显示转换状态
<filter> convert 转换
btrfs balance start –dconvert=raid5 /media
将myfs文件系统数据的的raid调整为raid5如下,调整raid时要遵循raid规则调整,譬如raid5至少要3块设备等,也可以调整元数据raid级别
btrfs subvolume 控制系统创建/列出/显示子卷和快照卷
访问子卷可通过两种方法:1、通过父卷访问2、通过挂载点访问
create [-i <qgroupid>] <name><dest> //在dest中创建子卷 ,delete 删除子卷
list<path>列出子卷
-p 打印父卷ID
-a打印所有的子卷信息,区分不同的亲疏关心
-g输出子卷的宗代信息
-o输出指定路径的子卷
-u输出子卷的uuid信息
-q输出父卷的uuid
-s系统中的快照卷将被打印
-r系统中的只读卷将被打印
snapshot [-r] <source> <dest>|<name> //创建一个可写或只读的快照卷
find-new <subvolume> <last_gen> //列出最近改变过的子卷信息
show<path>显示指定路径的子卷信息
例如:创建子卷myfs_sub
卸载父卷,以子卷挂载,格式如下
在父卷时创建的文件重新挂载子卷时,仍然存在
子卷的删除
快照卷的实现
注意:
当将多个物理设备制作成一个btrfs文件系统时,对其中一个设备的查看、挂载即是对整个文件系统的操作。
当对一个拥有子卷的文件系统操作时,对父卷挂载时,其子卷也将挂载,卸载亦然
当子卷挂载时,其父卷将不能挂载
当制作snapshot卷时,必须将快照卷建立在同一个父卷中!
当进行raid转换,或删除设备时,要遵循raid级别,一般不要强制操作
当挂载后,一般对挂载点操作!
两外重要的一点是子卷不是目录,而可以当做单独的一个文件系统来使用,例如挂载、卸载等!