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

前几天,关于高级文件系统方面也给大家分享过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的标准参数思维来创建以及使用这款文件系统,相信它会给你带你事半功倍的效应。

时间: 2024-10-05 19:20:12

linux高级文件系统管理——btrfs的相关文章

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

8月26号,学习了linux(CentOS6.8)文件系统管理,内容颇多,主要分为如下几个部分: 一.处理交换分区和文件及移动介质的使用 二.常见工具free,df,du,dd的使用 三.设置文件系统配额 四.配置raid 五.配置逻辑卷 六.btrfs文件系统 一.处理交换分区和文件及移动介质的使用 交换分区是系统RAM的补充 基本设置包括: 创建交换分区或者文件 使用mkswap写入特殊签名 在/etc/fstab文件中添加适当的条目 使用swapon -a 激活交换空间 1.挂载交换分区

Linux 第15天: (08月29日) Linux高级文件系统管理

本章内容设定文件系统配额设定和管理软RAID设备配置逻辑卷设定LVM快照btrfs文件系统 配置配额系统综述在内核中执行以文件系统为单位启用对不同组或者用户的策略不同根据块或者节点进行限制执行软限制(soft limit)硬限制(hard limit)初始化分区挂载选项:usrquota.grpquota初始化数据库:quotacheck 为用户设定配额执行开启或者取消配额:quotaon.quotaoff直接编辑配额:edquota username在shell中直接编辑:setquota u

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

作为大型企业,很多时候数据量相当庞大,由此以来对磁盘空间的要求比较高,更重要是的对数据的完整性的追求.所以单独的磁盘不仅空间使用满足不了,数据的完整性更是无从谈起,所以也就出现了专业的数据存储技术,而RAID是其中应用比较广泛,也是历史比较悠久的存数据储技术了.今天就给大家分享一下RAID的一些基本概念以及软件RAID的实现方法. 一.RAID的定义 RAID:Redundant Arrays of Inexpensive(Independent) Disks 1988年由加利福尼亚大学伯克利分

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

在企业里面,很多时候,我们也无法估量应用程序对磁盘空间的使用量,如果我们使用用传统的文件系统,磁盘分区一旦确定下来以后,就再也无法更改使用空间了,如果需要更改就必须让应用程序离线后,对原有分区的数据进行备份,然后再对磁盘进行重新分区格式,重新复制原来的数据放回新的磁盘分区上,由此带来的麻烦是不言而喻的,如果是可以离线的业务,到也好说,如果是不允许离线的业务,那就影响更大.所以一代全新的文件系统LVM的问世,打破了这一技术瓶颈.它允许用户使用容量不不统一的硬盘和分区组合在一起,构成一个逻辑空间,用

Linux运维 第二阶段 (七)高级文件系统管理

Linux运维第二阶段(七)高级文件系统管理 一.磁盘配额: 多用户共同使用一个硬盘,管理员应适当限制硬盘的空间,以妥善分配系统资源. #grepCONFIG_QUOTA /boot/config-2.6.32-279.el6.i686 #rpm–qa | grep quota 用户配额和组配额:磁盘容量限制和文件个数限制:软限制和硬限制:宽限时间. 注:如果用户的空间处于软限制和硬限制之间,系统会在用户登录时警告将满,宽限时间默认7天,如果达到了宽限时间未调整,软限制就会升级为硬限制. #mo

Linux之文件系统管理

文件系统不仅包含着文件中的数据而且还有文件系统的结构,不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的. Linux的文件结构是单个的树状结构,根目录是"/",其他目录都要位于根目录下.每个目录一般都存放 特定类型的文件,下表常见目录: /  根目录,只能包含目录,不能包含具体文件 /bin  存放可执行文件.很多命令就对应/bin目录下的某个程序,例如 ls.cp.mkdir./bin目录对 所有用户有效

linux之高级文件系统管理

由于Linux是一个多用户管理的操作系统,而Linux默认情况下并不限制每个用户使用磁盘空间的大小,假如某个用户疏忽或者恶意占满磁盘空间,将导致系统磁盘无法写入甚至崩溃;为了保证系统磁盘的有足够的剩余空间,我们需要对用户和组进行磁盘空间使用限制. 磁盘配额限制类型: 限制用户和组对磁盘空间的使用量 限制用户和组在磁盘内创建文件的个数 磁盘配额限制级别: 软限制:低级限制,此限制可以突破,突破时会被警告,超出部分会有宽限天数,宽限天数到期后超出部分被清空,软限制不能超过硬限制 硬限制:绝对限制,此

高级文件系统管理——Linux基本命令(15)

1.配置配额 (1)初始化 分区挂载选项:usrquota.grpquota(用户挂载,组挂载) 初始化数据库:quotacheck -cug /home (2)执行 开启或者取消配额功能:quotaon.quotaoff (开启之后发现就无法删除了,被保护了) 直接编辑配额:edquota -u/g username(对用户.对组做配额限制) 分别对文件的大小和数量进行限制.软限制就是可以允许超过软限制会发出警告,而硬限制不允许超过.因此设置的时候,软应该小于硬. 在shell中直接编辑: s

谢烟客---------Linux之文件系统管理创建与挂载

文件系统在哪实现? 内核 内核级文件系统的组成?模块.用户空间中的程序 哪些是内核级文件系统?除了分布式文件系统 模块的定义 中间层定义 文件如何按名存取 查找文件.创建文件.存储文件文件系统.格式化 swap,虚拟内存 日志型文件系统和非日志型文件系统工作原理 超级块 文件按名存取的实现 文件系统实现按名存取将分区后的存储空间划分为数据区和元数据区. 数据区:   存储大小相同的数据块    元数据区:有多个inode块,每个inode块中存储:filename,perm,owner,grou