一、简述
Btrfs又被部分书籍称之为:B-tree,Butter FS,Better FS,其相较于ext3、ext4文件系统很多优势。
Btrfs的核心特性
多种物理卷的支持:btrfs可由多个底层物理卷组成,支持RAID在联机情况下“添加”“移除”“修改”
支持非常大的单个文件与总空间容量
支持写时复制机制(CoW):复制、更新及替换指针,而非“就地”更新
支持数据及元数据校验码:checksum
支持创建子卷:可以创建多个子卷,且子卷可以单独挂载
快照:支持快照的快照(连续快照,叠加快照)
透明压缩:自动占用CPU资源对传入、传出文件进行压缩、解压
btrfs常用管理命令
命令 | 功用 |
---|---|
btrfs subvolume | 管理子卷 |
btrfs filesystem | 管理文件系统 |
btrfs balance | 调整数据、元数据存储负载均衡 |
btrfs device | 管理设备 |
btrfs rescue | 用于救援 |
btrfs quota | 设置磁盘配额 |
Btrfs文件系统使用多块磁盘才具有较大意义
二、使用
1.命令
mkfs.btrfs [options] <device> [<device>...]
-d|--data <profile> 指定数据如何跨设备文件存储(支持:raid0,raid1,raid5,raid6,raid10 or single)
-f 强制格式化
-L 'LABEL' 设置卷标
-m|--metadata <profile> 指定元数据如何跨设备文件存储(支持:raid0,raid1,raid5,raid6,raid10,single)
-O|--features <feature1>[,<feature2>...] 打开指定文件或设备指定的features(特性)
-O list-all 列出支持的所有feature(特性)
2.案例
# 利用两块硬盘创建一个Btrfs文件系统
[root@wybaron_host1015 ~]# mkfs.btrfs -f -L mybtrfs /dev/sdc /dev/sdd
btrfs-progs v4.9.1
See http://btrfs.wiki.kernel.org for more information.
Label: mybtrfs
UUID: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Node size: 16384
Sector size: 4096
Filesystem size: 70.00GiB
Block group profiles:
Data: RAID0 2.00GiB ## 数据的存放格式为RAID0
Metadata: RAID1 1.00GiB ## 元数据的存放格式为RAID1
System: RAID1 8.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 2
Devices:
ID SIZE PATH
1 20.00GiB /dev/sdc
2 50.00GiB /dev/sdd
[root@wybaron_host1015 ~]# mkdir /data/btrfs
root@wybaron_host1015 ~]# mount -t btrfs -L mybtrfs /data/btrfs/
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 70G 17M 38G 1% /data/btrfs
# 修改文件系统的大小
## 缩减
[root@wybaron_host1015 ~]# btrfs filesystem resize -10G /data/btrfs/
Resize '/data/btrfs/' of '-10G'
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 10.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 60G 17M 18G 1% /data/btrfs
## 扩充
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 10.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 60G 17M 18G 1% /data/btrfs
[root@wybaron_host1015 ~]# btrfs filesystem resize +5G /data/btrfs/
Resize '/data/btrfs/' of '+5G'
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 65G 17M 28G 1% /data/btrfs
# 设备管理
## 添加物理设备
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -l /dev/sdb
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1919536 0 1919536 0% /dev
[root@wybaron_host1015 ~]# btrfs device add /dev/sdb /data/btrfs/
/dev/sdb appears to contain a partition table (dos).
ERROR: use the -f option to force overwrite of /dev/sdb
[root@wybaron_host1015 ~]# btrfs device add -f /dev/sdb /data/btrfs/
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 3 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
devid 3 size 30.00GiB used 0.00B path /dev/sdb
[root@wybaron_host1015 ~]# df -l /dev/sdb
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1919536 0 1919536 0% /dev
## 删除物理设备
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 3 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
devid 3 size 30.00GiB used 0.00B path /dev/sdb
[root@wybaron_host1015 ~]# btrfs device del /dev/sdc /data/btrfs/
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 2 size 50.00GiB used 2.03GiB path /dev/sdd
devid 3 size 30.00GiB used 2.03GiB path /dev/sdb
# 开启透明压缩(压缩算法有lzo与zlib两种,通过mount重新挂载时选择)
# 利用两块硬盘创建一个Btrfs文件系统
[root@wybaron_host1015 ~]# mkfs.btrfs -f -L mybtrfs /dev/sdc /dev/sdd
btrfs-progs v4.9.1
See http://btrfs.wiki.kernel.org for more information.
Label: mybtrfs
UUID: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Node size: 16384
Sector size: 4096
Filesystem size: 70.00GiB
Block group profiles:
Data: RAID0 2.00GiB ## 数据的存放格式为RAID0
Metadata: RAID1 1.00GiB ## 元数据的存放格式为RAID1
System: RAID1 8.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 2
Devices:
ID SIZE PATH
1 20.00GiB /dev/sdc
2 50.00GiB /dev/sdd
[root@wybaron_host1015 ~]# mkdir /data/btrfs
root@wybaron_host1015 ~]# mount -t btrfs -L mybtrfs /data/btrfs/
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 70G 17M 38G 1% /data/btrfs
# 修改文件系统的大小
## 缩减
[root@wybaron_host1015 ~]# btrfs filesystem resize -10G /data/btrfs/
Resize '/data/btrfs/' of '-10G'
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 10.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 60G 17M 18G 1% /data/btrfs
## 扩充
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 10.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 60G 17M 18G 1% /data/btrfs
[root@wybaron_host1015 ~]# btrfs filesystem resize +5G /data/btrfs/
Resize '/data/btrfs/' of '+5G'
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 65G 17M 28G 1% /data/btrfs
# 设备管理
## 添加物理设备
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -l /dev/sdb
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1919536 0 1919536 0% /dev
[root@wybaron_host1015 ~]# btrfs device add /dev/sdb /data/btrfs/
/dev/sdb appears to contain a partition table (dos).
ERROR: use the -f option to force overwrite of /dev/sdb
[root@wybaron_host1015 ~]# btrfs device add -f /dev/sdb /data/btrfs/
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 3 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
devid 3 size 30.00GiB used 0.00B path /dev/sdb
[root@wybaron_host1015 ~]# df -l /dev/sdb
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1919536 0 1919536 0% /dev
## 删除物理设备
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 3 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
devid 3 size 30.00GiB used 0.00B path /dev/sdb
[root@wybaron_host1015 ~]# btrfs device del /dev/sdc /data/btrfs/
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 2 size 50.00GiB used 2.03GiB path /dev/sdd
devid 3 size 30.00GiB used 2.03GiB path /dev/sdb
# 开启透明压缩(压缩算法有lzo与zlib两种,通过mount重新挂载时选择)
# 利用两块硬盘创建一个Btrfs文件系统
[root@wybaron_host1015 ~]# mkfs.btrfs -f -L mybtrfs /dev/sdc /dev/sdd
btrfs-progs v4.9.1
See http://btrfs.wiki.kernel.org for more information.
Label: mybtrfs
UUID: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Node size: 16384
Sector size: 4096
Filesystem size: 70.00GiB
Block group profiles:
Data: RAID0 2.00GiB ## 数据的存放格式为RAID0
Metadata: RAID1 1.00GiB ## 元数据的存放格式为RAID1
System: RAID1 8.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 2
Devices:
ID SIZE PATH
1 20.00GiB /dev/sdc
2 50.00GiB /dev/sdd
[root@wybaron_host1015 ~]# mkdir /data/btrfs
root@wybaron_host1015 ~]# mount -t btrfs -L mybtrfs /data/btrfs/
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 70G 17M 38G 1% /data/btrfs
# 修改文件系统的大小
## 缩减
[root@wybaron_host1015 ~]# btrfs filesystem resize -10G /data/btrfs/
Resize '/data/btrfs/' of '-10G'
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 10.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 60G 17M 18G 1% /data/btrfs
## 扩充
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 10.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 60G 17M 18G 1% /data/btrfs
[root@wybaron_host1015 ~]# btrfs filesystem resize +5G /data/btrfs/
Resize '/data/btrfs/' of '+5G'
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -h /data/btrfs/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdc 65G 17M 28G 1% /data/btrfs
# 设备管理
## 添加物理设备
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
[root@wybaron_host1015 ~]# df -l /dev/sdb
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1919536 0 1919536 0% /dev
[root@wybaron_host1015 ~]# btrfs device add /dev/sdb /data/btrfs/
/dev/sdb appears to contain a partition table (dos).
ERROR: use the -f option to force overwrite of /dev/sdb
[root@wybaron_host1015 ~]# btrfs device add -f /dev/sdb /data/btrfs/
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 3 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
devid 3 size 30.00GiB used 0.00B path /dev/sdb
[root@wybaron_host1015 ~]# df -l /dev/sdb
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1919536 0 1919536 0% /dev
## 删除物理设备
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 3 FS bytes used 896.00KiB
devid 1 size 15.00GiB used 2.01GiB path /dev/sdc
devid 2 size 50.00GiB used 2.01GiB path /dev/sdd
devid 3 size 30.00GiB used 0.00B path /dev/sdb
[root@wybaron_host1015 ~]# btrfs device del /dev/sdc /data/btrfs/
[root@wybaron_host1015 ~]# btrfs filesystem show /data/btrfs/
Label: 'mybtrfs' uuid: ad5b0d56-65de-488a-9a17-f802a80b1b1d
Total devices 2 FS bytes used 896.00KiB
devid 2 size 50.00GiB used 2.03GiB path /dev/sdd
devid 3 size 30.00GiB used 2.03GiB path /dev/sdb
# 开启透明压缩(压缩算法有lzo与zlib两种,通过mount重新挂载时选择)
[root@wybaron_host1015 ~]# mount -o remount,compress=lzo -L mybtrfs /data/btrfs/
[root@wybaron_host1015 ~]# ll -h /var/log/messages /data/btrfs/messages
-rw------- 1 root root 259K 10月 12 13:16 /data/btrfs/messages
-rw------- 1 root root 260K 10月 12 13:17 /var/log/messages
三、补充
SSD支持
# 挂载时指定
~]# mount -t btrfs -o SSD /dev/SSD_name /DIR
图形界面
# 关闭启动时的默认启动到图形界面
~]# systemctl set-default multi-user.target
# 设置默认启动到图形界面
~]# systemctl set-default graphical.target
透明数据压缩
数据压缩的过程不会被用户发现和察觉,一般在广域网优化设备中会使用透明数据压缩技术。目前使用透明数据压缩的广域网优化设备的厂商有F5和lotware。
# 未挂载的挂载时指定
~]# mount -t btrfs -o compress[=[lzo|zlib]] /dev/SSD_name /DIR
# 已挂载的重载指定
~]# mount -o remount,compress[=[lzo|zlib]] /dev/SSD_name /DIR
学习参考
https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/
http://blog.51cto.com/jying/2058542