linux高级文件系统管理——btrfs

author author     2022-08-02     794

关键词:

前几天,关于高级文件系统方面也给大家分享过RAID和LVM,今天给大家分享的这款文件系统可能比这两者更先进,可以将其二者合二为一。第一,它可以使用磁盘或者分区大小不一样的设备组建RAID;第二,它可以做到像LVM一样,随时扩展以及缩减使用空间,LVM支持在线扩展,但不能支持在线缩减,btrfs同时支持在线扩展和在线缩减;并且支持一条命令直接创建出带RAID功能的LV。所以个人体验之后觉得相当不错,分享于大家。


一、btrfs文件系统定义

1、Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, 2007, CoW 

核心特性:

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

2、写时复制更新机制(CoW):复制、更新及替换指针,而非“就地”更新

3、数据及元数据校验码:checksum

4、子卷:sub_volume

5、快照:支持快照的快照

6、透明压缩


二、brtfs文件系统操作的相关命令

1、创建文件系统

mkfs.btrfs

-L "LABEL"指定brtfs文件系统的卷标

-d <type>: raid0, raid1, raid5, raid6, raid10, single

-f|--force:强制写入btrfs文件系统(会覆盖原有文件系统)

-m <profile>: raid0, raid1, raid5, raid6, raid10, single or dup

-O <feature>:指定创建文件系统时启用的特性

-O list-all: 列出支持的所有feature

如:mkfs.btrfs -L mydata -f /dev/sdb /dev/sdc


2、查看文件系统属性

btrfs filesystem show 查看所有btrfs文件系统的设备属性,等同于使用blkid

btrfs filesystem show –m device 查看某个指定的设备的btrfs文件系统属性


3、挂载文件系统

mount -t btrfs device mount_point


4、挂载透明压缩机制

mount -o compress={lzo|zlib} device mount_point


5、在线缩减文件系统(可以带RAID操作)

btrfs filesystem resize -10G mount_point


6、在线扩展文件系统(可以带RAID操作)

btrfs filesystem resize +5G mount_point

btrfs filesystem resize max mount_point(使用全部空间)


7、查看指定btrfs文件系统的使用详情

btrfs filesytem df mount_point等同于使用df –lh


8、添加设备:man btrfs-device

btrfs device add /dev/sdb mount_point


9、删除设备

btrfs device delete /dev/sdb mount_point


10、平衡数据:man btrfs-banlance

btrfs banlance status mount_point 查看当前数据的平衡状态

btrfs banlance start mount_point 开始平衡数据

btrfs banlance pause mount_point 暂停平衡灵气

btrfs banlance cancel mount_point 取消平衡数据

btrfs banlance resume mount_point 查看数据平衡的摘要


11、修改raid级别:需要raid对成员数量的要求

btrfs balance start -mconvert=raid1|raid0|raid5 mount_point

btrfs balance start -dconvert=raid1|raid0|raid5 mount_point


12、子卷管理:man btrfs-subvolume

btrfs subvolume list mount_point 查看子卷信息

btrfs subvolume create mount_point/subv1 在当前卷下创建子卷

mount -o subvol=subv1 /dev/sdb mount_point 挂载子卷

mount /dev/sdb mount_point 挂父卷,子卷自动挂载

mount -o subvolid=### /dev/sdb mount_point 使用子卷ID挂载子卷

btrfs subvolume delete mount_point/subv1 删除子卷


13、创建快照

btrfs-subvolume snapshot [-r] mount_point/subv1 mount_point/snapshot_subv1


14、删除快照

btrfs-subvolume delete mount_point/snapshot_subv1


15、将ext4转换成btrfs(需要离线操作)

btrfs-convert /dev/sdb1


16、将btrfs转换成ext4(需要离线操作)

btrfs-convert -r /dev/sdb1


17、对文件启用CoW(写时复制)需要系统内核支持

cp --reflink testfile testfile2


三、btrfs文件系统管理实例

1、使用四块同样大小的硬盘,创建一个带有raid10功能的btrfs文件系统

[[email protected] ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda      8:0    0   20G  0 disk 

├─sda1   8:1    0  200M  0 part /boot

├─sda2   8:2    0    5G  0 part /

└─sda3   8:3    0    5G  0 part /test

sdb      8:16   0   20G  0 disk 

sdc      8:32   0   20G  0 disk 

sdd      8:48   0   20G  0 disk 

sde      8:64   0   20G  0 disk 

sr0     11:0    1  7.2G  0 rom  

[[email protected] ~]# mkfs.btrfs -L raid10 -d raid10 -f /dev/sd{b,c,d,e}

btrfs-progs v3.19.1

See http://btrfs.wiki.kernel.org for more information.


Turning ON incompat feature ‘extref‘: increased hardlink limit per file to 65536

Turning ON incompat feature ‘skinny-metadata‘: reduced-size metadata extent refs

adding device /dev/sdc id 2

adding device /dev/sdd id 3

adding device /dev/sde id 4

fs created label raid10 on /dev/sdb

nodesize 16384 leafsize 16384 sectorsize 4096 size 80.00GiB

[[email protected] ~]# 

btrfs文件系统创建成功,现在可以创建挂载点挂载使用了


[[email protected] ~]# mkdir /raid10

[[email protected] ~]# mount /dev/sde /raid10

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       5.0G  4.3G  743M  86% /

devtmpfs        899M     0  899M   0% /dev

tmpfs           913M   84K  913M   1% /dev/shm

tmpfs           913M  8.9M  904M   1% /run

tmpfs           913M     0  913M   0% /sys/fs/cgroup

/dev/sda3       4.8G  1.2G  3.4G  26% /test

/dev/sda1       197M  139M   59M  71% /boot

tmpfs           183M   16K  183M   1% /run/user/42

tmpfs           183M     0  183M   0% /run/user/0

/dev/sdb         40G   17M   38G   1% /raid10

[[email protected] ~]#

由此我们可以看出,raid10创建出来的效果,80G的硬盘做出来的是40G的raid,而且可以直接以其中任意一块盘的名称去挂载使用,但是挂载列表中显示出来的始终是文件系统创建成功时标明带有卷标的那个硬盘或者分区


查看文件系统属性

[[email protected] ~]# btrfs filesystem show

Label: ‘raid10‘  uuid: 37cf611f-e4d9-4a42-a599-5e8016b67958

Total devices 4 FS bytes used 896.00KiB

devid    1 size 20.00GiB used 2.02GiB path /dev/sdb

devid    2 size 20.00GiB used 2.00GiB path /dev/sdc

devid    3 size 20.00GiB used 1.01GiB path /dev/sdd

devid    4 size 20.00GiB used 1.01GiB path /dev/sde

btrfs-progs v3.19.1

[[email protected] ~]# 


查看指定btrfs文件系统的使用详情

[[email protected] ~]# btrfs filesystem df /raid10

Data, RAID10: total=2.00GiB, used=768.00KiB

Data, single: total=8.00MiB, used=0.00B

System, RAID1: total=8.00MiB, used=16.00KiB

System, single: total=4.00MiB, used=0.00B

Metadata, RAID1: total=1.00GiB, used=112.00KiB

Metadata, single: total=8.00MiB, used=0.00B

GlobalReserve, single: total=16.00MiB, used=0.00B

[[email protected] ~]# 


添加压缩挂载选项

[[email protected] ~]# mount -o compress=zlib /dev/sdb /raid10

[[email protected] ~]# mount

/dev/sda2 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

/dev/sda3 on /test type ext4 (rw,relatime,seclabel,data=ordered)

/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

/dev/sdb on /raid10 type btrfs (rw,relatime,seclabel,compress=zlib,space_cache)

[[email protected] ~]# 


2、在线缩减空间

[[email protected] ~]# btrfs filesystem resize -10G /raid10

Resize ‘/raid10‘ of ‘-10G‘

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       5.0G  4.3G  743M  86% /

devtmpfs        899M     0  899M   0% /dev

tmpfs           913M   84K  913M   1% /dev/shm

tmpfs           913M  8.9M  904M   1% /run

tmpfs           913M     0  913M   0% /sys/fs/cgroup

/dev/sda3       4.8G  1.2G  3.4G  26% /test

/dev/sda1       197M  139M   59M  71% /boot

tmpfs           183M   16K  183M   1% /run/user/42

tmpfs           183M     0  183M   0% /run/user/0

/dev/sdb         35G   17M   18G   1% /raid10

[[email protected] ~]# btrfs filesystem show

Label: ‘raid10‘  uuid: 37cf611f-e4d9-4a42-a599-5e8016b67958

Total devices 4 FS bytes used 896.00KiB

devid    1 size 10.00GiB used 2.02GiB path /dev/sdb

devid    2 size 20.00GiB used 2.00GiB path /dev/sdc

devid    3 size 20.00GiB used 1.01GiB path /dev/sdd

devid    4 size 20.00GiB used 1.01GiB path /dev/sde

btrfs-progs v3.19.1

[[email protected] ~]# 

没有取消挂载的情况下,直接把raid10的空间缩减下来了


3、在线扩展空间

[[email protected] ~]# btrfs filesystem resize max /raid10

Resize ‘/raid10‘ of ‘max‘

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       5.0G  4.3G  743M  86% /

devtmpfs        899M     0  899M   0% /dev

tmpfs           913M   84K  913M   1% /dev/shm

tmpfs           913M  8.9M  904M   1% /run

tmpfs           913M     0  913M   0% /sys/fs/cgroup

/dev/sda3       4.8G  1.2G  3.4G  26% /test

/dev/sda1       197M  139M   59M  71% /boot

tmpfs           183M   16K  183M   1% /run/user/42

tmpfs           183M     0  183M   0% /run/user/0

/dev/sdb         40G   17M   38G   1% /raid10

[[email protected] ~]# 

没有取消挂载的情况下,直接把raid10的空间扩展到了可用空间最大值了


4、在线转换RAID级别(RAID10->RAID5)

需要分两步进行,先转换元数据,再转换数据

[[email protected] ~]# btrfs balance start -mconvert=raid5 /raid10

Done, had to relocate 4 out of 6 chunks

[[email protected] ~]# btrfs filesystem df /raid10

Data, RAID10: total=2.00GiB, used=768.00KiB

Data, single: total=8.00MiB, used=0.00B

System, RAID5: total=96.00MiB, used=16.00KiB

Metadata, RAID5: total=1.03GiB, used=112.00KiB

GlobalReserve, single: total=16.00MiB, used=0.00B

[[email protected] ~]# 

元数据已经转换好了,接下来转换数据


[[email protected] ~]# btrfs balance start -dconvert=raid5 /raid10

Done, had to relocate 2 out of 4 chunks

[[email protected] ~]# btrfs filesystem df /raid10

Data, RAID5: total=3.00GiB, used=1.00MiB

System, RAID5: total=96.00MiB, used=16.00KiB

Metadata, RAID5: total=1.03GiB, used=112.00KiB

GlobalReserve, single: total=16.00MiB, used=0.00B

[[email protected] ~]# 

元数据和数据都转换完成了


其它选项,就不再给大家一一演示了,大家可以按照我给的命令格式自行实践。虽说btrfs文件系统是一个测试版本,目前也只有Centos7上默认支持,但个人觉得功能还是相当强大,在未来是有市场空间的。如果在我们生产环境允许的情况下,也是可以考虑使用这款文件系统的。只是我们尽量采用RAID和LVM的标准参数思维来创建以及使用这款文件系统,相信它会给你带你事半功倍的效应。

本文出自 “爱情防火墙” 博客,请务必保留此出处http://183530300.blog.51cto.com/894387/1844948

linux高级文件系统管理概述:处理交换分区设置文件系统配额配置raid和逻辑卷

8月26号,学习了linux(CentOS6.8)文件系统管理,内容颇多,主要分为如下几个部分:一、处理交换分区和文件及移动介质的使用二、常见工具free,df,du,dd的使用三、设置文件系统配额四、配置raid五、配置逻辑卷六、btrfs文件系统一... 查看详情

linuxbtrfs文件系统及管理

参考技术ALinuxbtrfs文件系统及管理  linux文件系统,具有写时复制COW(copy-on-write),改善ext3文件系统单文件大小限制,并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理,下面一起... 查看详情

linux如何通过快照数据盘拷贝到系统盘?

之前linux云服务器出现故障,系统文件丢失,然后我把系统盘做了快照,现在客服给的建议是快照加载数据盘,然后将数据盘内容拷贝到系统盘,然后释放数据盘。。求教高手怎么操作呀现在是快照已经加载数据盘了,通过parted-... 查看详情

#12btrfs文件系统

btrfs TechnicalPreview,技术预览版 BtrFS(B-tree文件系统,又称为ButterFS或BetterFS),2007由oracle开源后,得到了IBM、intel等厂商的大力支持,其目标计划是替代linux目前的ext3/4,成为下一代linux标准的文件系统。 运行在linux上,并遵循GPL... 查看详情

btrfs文件系统管理与应用

...:sub_volume快照:支持快照的快照(增量快照)透明压缩文件系统 查看详情

btrfs

btrfs TechnicalPreview,技术预览版 BtrFS(B-tree文件系统,又称为ButterFS或BetterFS),2007由oracle开源后,得到了IBM、intel等厂商的大力支持,其目标计划是替代linux目前的ext3/4,成为下一代linux标准的文件系统。 运行在linux上,并遵循GPL... 查看详情

btrfs文件系统简单学习

1btrfs文件系统  btrfs文件系统在生产环境应用还不多,技术还不太成熟,因此,本文仅仅简单学习.1.1 btrfs文件系统核心特性  1)多物理卷支持:btrfs可由多个底层物理卷组成(可以是单块物理磁盘,也可以是某一分区等);支持RAI... 查看详情

lvm逻辑卷的缩减与删除,lvm逻辑卷快照,btrfs文件系统,网络管理

逻辑卷缩减缩减的时候要注意缩减的空间不要超过文件系统的空间,不然缩减的时候会损坏文件系统。第一步要先取消挂载(必须)第二部检查文件完整性(必须)e2fsck-f/dev/vg0/lv0650)this.width=650;"src="http://www.178linux.com/ueditor/php/upl... 查看详情

btrfs文件系统笔记

    发现一篇美文,先贴上链接,后续填坑。https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pconhttp://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pcon本文出自“799540 查看详情

btrfs文件系统学习及练习

###########################################################################################    Btrfs(通常念成ButterFS),由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统 查看详情

文件系统和本地存储管理1

...理1.存储管理 传统的磁盘分区 RAID技术,软RAID的实现 LVM 文件系统管理 ext,xfs,btrfs(了解)2.程序包管理 rpm、yum、dnf3.sed、gawk4.进程管理5.网络管理 网络基础知识(CiscoCCNA+CCNP) 网络属性管理 网络参数监测6.Linux内核管理 内核编译和... 查看详情

文件系统和本地存储管理1

...理1.存储管理 传统的磁盘分区 RAID技术,软RAID的实现 LVM 文件系统管理 ext,xfs,btrfs(了解)2.程序包管理 rpm、yum、dnf3.sed、gawk4.进程管理5.网络管理 网络基础知识(CiscoCCNA+CCNP) 网络属性管理 网络参数监测6.Linux内核管理 内核编译和... 查看详情

docker存储驱动之btrfs简介

简介Btrfs是下一代的copy-on-write文件系统,它支持很多高级特性,使其更加适合Docker。Btrfs合并在内核主线中,并且它的on-disk-format也逐渐稳定了。不过,它的很多特性还仍然处于开发中。Docker的btrfs存储驱动利用了很多Btrfs特性来... 查看详情

btrfs的介绍与使用

...现还不是很明白,还需要研究,在此做个记号。Btrfs简介文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用ext2/3,ext文件系统以其卓越的稳定性成为了事实上的Linux标准文件系统。 查看详情

如何使用 C++ 代码中的 BTRFS 写入时复制?

...时间】:2018-10-1118:03:10【问题描述】:如何使用C++在BTRFS文件系统中的文件上从假定支持的Linux系统上的C++代码复制文件?该解决方案是否适用于所有Unix系统?文件系统的C++标准的任何部分都没有包含CoW。它也没有出现在Linux的... 查看详情

btrfs文件系统简介及centos7下实例

btrfs文件系统简介及CentOS7下实例由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目... 查看详情

centos7.4-btrfs管理及使用(代码片段)

btrfs,B-treeFileSystem,GPL开源文件系统,支持CoW即读时写入.核心特性:多物理卷支持;btrfs可由多个底层磁盘组成支持RAIDmkfs.btrfs命令的man文档支持:raid0,raid1,raid5,raid6,raid10,singleordup联机"添加,移除,修改"CoW写时复制更新机制对文件做更改时... 查看详情

linux高级文件系统管理——lvm

在企业里面,很多时候,我们也无法估量应用程序对磁盘空间的使用量,如果我们使用用传统的文件系统,磁盘分区一旦确定下来以后,就再也无法更改使用空间了,如果需要更改就必须让应用程序离线后,对原有分区的数据... 查看详情