Btrfs文件系统应用简介

一、Btrfs文件系统介绍

Btrfs(Butter FS),由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小等.....

二、环境准备

操作系统:CentOS7

新添加3块新磁盘:/dev/sdb、/dev/sdc、/dev/sdd

三、btrfs文件系统管理及应用

1、btrfs文件系统的创建

[[email protected] ~]# mkfs.btrfs -L data /dev/sdb /dev/sdc   #创建btrfs,卷标设置为data

2、btrfs文件系统信息的查看

[[email protected] ~]# btrfs filesystem show       #显示系统中的btrfs文件系统
Label: ‘data‘  uuid: a1ab4260-2dbe-4e62-bb55-4c53533d85a8
	Total devices 2 FS bytes used 112.00KiB
	devid    1 size 20.00GiB used 2.03GiB path /dev/sdb
	devid    2 size 20.00GiB used 2.01GiB path /dev/sdc		
[[email protected] ~]# blkid /dev/sdb        #查看btrfs中物理卷/dev/sdb的信息
/dev/sdb: LABEL="data" UUID="a1ab4260-2dbe-4e62-bb55-4c53533d85a8" UUID_SUB="6f565410-b2f7-45db-b7b8-efd6f9fd3523" TYPE="btrfs" 
[[email protected] ~]# blkid /dev/sdc        #查看btrfs中物理卷/dev/sdc的信息
/dev/sdc: LABEL="data" UUID="a1ab4260-2dbe-4e62-bb55-4c53533d85a8" UUID_SUB="4f2ec113-886a-48e1-b9b7-8d90eec29841" TYPE="btrfs"

3、挂载刚建立的btrfs文件系统到/html目录,并使用df查看

[[email protected] ~]# mkdir /html           #创建/html目录
[[email protected] ~]# mount /dev/sdb /html    #将btrfs文件系统挂载至/html
[[email protected] ~]# df -h
/dev/sdb                  40G  1.0M   38G   1% /html

4、在线调整btrfs文件系统的大小

注:扩展和缩减都不能超过1个磁盘的空间大小

[[email protected] ~]# btrfs filesystem resize -15G /html   #缩减btrfs文件系统15G
Resize ‘/html‘ of ‘-15G‘
[[email protected] ~]# df -h        #查看缩减后的信息
/dev/sdb                  25G  1.0M  8.0G   1% /html
[[email protected] ~]# btrfs filesystem resize +10G /html  #扩展btrfs文件系统10G
Resize ‘/html‘ of ‘+10G‘
[[email protected] ~]# df -h        # 查看扩展后的信息
/dev/sdb                  35G  1.0M   28G   1% /html

5、向btrfs文件系统中添加或移除物理设备/dev/sdd

[[email protected] ~]# btrfs device add /dev/sdd /html   #添加/dev/sdd磁盘到btrfs文件系统
[[email protected] ~]# df -h
/dev/sdb                  55G  448K   55G   1% /html
[[email protected] ~]# btrfs device delete /dev/sdb /html  #从btrfs文件系统移除/dev/sdb磁盘
[[email protected] ~]# df -h
/dev/sdc                  40G  448K   40G   1% /html

6、子卷的创建、删除及挂载

与子卷相关的命令介绍


btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

创建子卷

btrfs subvolume delete [options] <subvolume> [<subvolume>...]

删除子卷

btrfs subvolume snapshot [-r] <source> <dest>|[<dest>/]<name>

创建子卷的快照

btrfs subvolume show <subvol-path>

显示子卷的信息

btrfs subvolume list [options] [-G [+|-]value] [-C [+|-]value] [--sort=gen,ogen,rootid,path] <path>       查看btrfs文件系统中子卷列表

(1)创建子卷/html/logs

[[email protected] ~]# btrfs subvolume create /html/logs
Create subvolume ‘/html/logs‘

(2)查看子卷/html/logs的相关信息

[[email protected] ~]# btrfs subvolume list /html     #显示子卷列表
ID 260 gen 37 top level 5 path logs
[[email protected] ~]# btrfs subvolume show /html/logs     #显示子卷详细信息

(3)删除子卷

[[email protected] ~]# btrfs subvolume delete /html/logs   # 删除子卷
Transaction commit: none (default)
Delete subvolume ‘/html/logs‘

(4)挂载子卷的方法

注;单独挂载子卷的话,就不能看到父卷中的文件

测试一:挂载子卷并复制/etc/inittab到子卷中,然后挂载父卷可以查看子卷中的文件

[[email protected] ~]# mount -o subvol=logs /dev/sdc /messages  #挂载子卷到/messages上
[[email protected] ~]# cp /etc/inittab /messages/
[[email protected] ~]# umount /messages/
[[email protected] ~]# cat /html/logs/inittab     #挂载父卷并查看子卷中的文件内容

测试二:复制/etc/fstab到父卷中,卸载父卷,单独挂载子卷,子卷看不到父卷中的文件

[[email protected] ~]# cp /etc/fstab /html    #复制/etc/fstab到父卷
[[email protected] ~]# ll /html
-rw-r--r--. 1 root root 619 Aug 13 00:50 fstab
drwxr-xr-x. 1 root root  14 Aug 13 00:49 logs
[[email protected] ~]# mount -o subvolid=261 /dev/sdc /messages/     #使用子卷id挂载
[[email protected] ~]# ll /messages/                 #只能查看到子卷挂载目录中的文件
total 4
-rw-r--r--. 1 root root 511 Aug 13 00:49 inittab     
[[email protected] ~]# ll /html           #看不到父卷中的文件
total 0

(5)子卷的快照创建和删除

注:必须要挂载父卷

创建子卷的快照

[[email protected] ~]# mount /dev/sdc /html    
[[email protected] ~]# btrfs subvolume snapshot /html/logs /html/logs_snapshot  #创建子卷的快照
Create a snapshot of ‘/html/logs‘ in ‘/html/logs_snapshot‘
[[email protected] ~]# btrfs subvolume list /html     #显示子卷信息
ID 261 gen 50 top level 5 path logs
ID 262 gen 50 top level 5 path logs_snapshot
[[email protected] ~]# cat /html/logs_snapshot/inittab  #查看快照中的文件,跟原卷中一样;修改原卷中的文件,快照卷也不会发生变化

删除子卷的快照

[[email protected] ~]# btrfs subvolume delete /html/logs_snapshot  #删除子卷的快照
Transaction commit: none (default)
Delete subvolume ‘/html/logs_snapshot‘
[[email protected] ~]# btrfs subvolume list /html     #父卷中子卷的信息
ID 261 gen 50 top level 5 path logs

(6)ext文件系统与btrfs文件系统间的转换


[[email protected] ~]# btrfs-convert --help     #查看btrfs-convert的使用帮助

btrfs-convert: invalid option -- ‘-‘

usage: btrfs-convert [-d] [-i] [-n] [-r] device

-d disable data checksum       #关闭数据校验码

-i ignore xattrs and ACLs      #忽略xattrs和acls

-n disable packing of small files #

-r roll back to ext2fs        #回滚到ext文件系统

使用/dev/sdb磁盘划分1个5G的分区/dev/sdb1,并格式化为ext4文件系统使用;卸载ext4文件系统,并强制修复,然后转换成btrfs文件系统;然后再回滚回ext4文件系统

[[email protected] ~]# mkfs.ext4 /dev/sdb1   #格式化/dev/sdb1为ext4文件系统
[[email protected] ~]# blkid /dev/sdb1     #查看磁盘分区信息
/dev/sdb1: UUID="6733d53d-bcd8-4341-9f0d-8e1654eef58e" TYPE="ext4" 
[[email protected] ~]# mount /dev/sdb1 /mnt   #挂载ext4分区
[[email protected] ~]# echo "ext4 filesystem." > /mnt/ext4.txt  #创建1个文件用于测试使用
[[email protected] ~]# cat /mnt/ext4.txt  #查看该文件内容
ext4 filesystem.

ext4文件系统转换为btrfs文件系统,并查看里面的文件是否有问题;

注:转换完成后,里面会多出来个ext2_saved的目录;

[[email protected] ~]# umount /mnt              #卸载/dev/sdb1分区
[[email protected] ~]# fsck -f /dev/sdb1      #强制修复/dev/sdb1分区
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 12/327680 files (0.0% non-contiguous), 58463/1310720 blocks
[[email protected] ~]# btrfs-convert /dev/sdb1   #转换成btrfs文件系统
creating btrfs metadata.
creating ext2fs image file.
cleaning up system chunk.
conversion complete.
[[email protected] ~]# blkid  /dev/sdb1      #查看转换后的分区信息
/dev/sdb1: UUID="4caab68c-da42-44a8-9cc0-9745b69a3ace" UUID_SUB="3b3e28ea-4d95-42ad-8abc-b68fd82b65b5" TYPE="btrfs" 
[[email protected] ~]# cat /mnt/ext4.txt    #查看文件内容
ext4 filesystem.

将btrfs文件系统再转换回原来的ext4文件系统,要卸载之后才可以回滚

[[email protected] ~]# umount /mnt          #卸载btrfs文件系统
[[email protected] ~]# btrfs-convert -r /dev/sdb1       #执行回滚操作 
rollback complete.
[[email protected] ~]# blkid  /dev/sdb1    #查看回滚后的磁盘分区信息
/dev/sdb1: UUID="6733d53d-bcd8-4341-9f0d-8e1654eef58e" TYPE="ext4"   
[[email protected] ~]# mount /dev/sdb1 /mnt     #再挂载后查看里面的内容
[[email protected] ~]# ll /mnt
total 20
-rw-r--r--. 1 root root    17 Aug 13 02:09 ext4.txt
drwx------. 2 root root 16384 Aug 13 02:00 lost+found

总结

Btrfs 也有一个重要的缺点,当 BTree 中某个节点出现错误时,文件系统将失去该节点之下的所有的文件信息。而 ext2/3 却避免了这种被称为”错误扩散”的问题。但无论怎样, btrfs 将是 Linux 未来最有希望的文件系统。

时间: 2024-10-04 20:27:05

Btrfs文件系统应用简介的相关文章

btrfs文件系统的简介和用法

btrfs文件系统:      Btrfs(B-tree 档案系统, 通常念成 Butter FS,Better FS 或 Btree FS),采用 GPL 授权,是由 Oracle 于 2007 年宣布并进行中的支持写入 时复制(COW)的文件系统.目标是取代 Linux 目前的 ext3 文 件系统,改善 ext3 的限制,特别是单个文件的大小,总文件系统大小或文件检查和加入 ext3 未支持的功能,如可写快照(writable snapshots).快照的快照 (snapshots of

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

btrfs文件系统简介及CentOS7下实例 由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统.目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性.加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件

Linux学习笔记之 Btrfs文件系统简介及使用

Btrfs相关介绍: Btrfs 是一个 Linux 中的新的写时复制(copy-on-write (COW))的文件系统,目的是实现高级功能的同时着重与容错功能,修复功能以及易于管理.目前由Oracle, Red Hat, 富士通, Intel, SUSE以及其他组织共同开发,在 GPL 许可证下发行,同时向任何人公开代码. Btrfs核心特性: 多物理卷支持:btrfs可由多个底层物理卷组成:支持RAID,以联机"添加"."移除"."修改":

btrfs文件系统的管理及使用

Btrfs简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3,ext 文件系统以其卓越的稳定性成为了事实上的 Linux 标准文件系统.近年来 ext2/3 暴露出了一些扩展性问题,于是便催生了 ext4 .在 2008 年发布的 Linux2.6.19 内核中集成了 ext4 的 dev 版本. 2.6.28 内核发布时,ext4 结束了开发版,开始接受用户的使用.似乎 ext 就将成为 Linux 文件系统的代名词.然而当您阅读很多有关 ext4 的文章时,会发现都

Btrfs文件系统

一.Btrfs简介 Btrfs(B-tree,Butter FS,Better FS)是Oracle公司在2007年左右开始研发的一个开源文件系统,由GPL授权.该文件系统最重要的特性就是支持写时复制,写时复制在修复文件数据方面比传统就地修改的文件系统有着极大的优势,其目的是用来取代Linux早些年来一直使用的ext系列文件系统,ext系列文件系统的反删除功能一直不太好.Btrfs能够支持非常大的单个文件大小和总大小,并且有文件检查功能,快照功能.还能做累积性快照(快照的快照),能实现和增量备份

btrfs文件系统学习

btrfs文件系统由Oracle开发,btrfs设计目标为取代早期ext文件系统. 核心特性: 1.多物理卷支持:btrfs可由多个底层物理卷组成,支持RAID,以联机"添加"."移除"."修改". 2.写时复制更新机(COW):复制.更新及替换指针,而非就地修改更新. 3.数据及元数据效验码(checksum). 4.支持子卷(sub_volume). 5.快照及快照的快照. 6.透明压缩,支持两种压缩算法lzo和zlib通过命令mount -

centos7之btrfs文件系统

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

Linux学习笔记——Btrfs文件系统的管理及应用

Btrfs Btrfs(B-tree 文件系统, 通常念成 Butter FS,Better FS 或 B-tree FS),一种支持写入时复制(COW)的文件系统,可以由多个底层物理卷组成.另外该文件系统支持RAID,数据及元数据校验码(checksum),子卷,快照和透明压缩功能. 文件系统创建 创建完磁盘分区后对相应分区进行磁盘格式化   # mkfs.btrfs /dev/sda5    # mkdir /btrfsdisk    # mount -t btrfs /dev/sda5 /

Linux初学之btrfs文件系统及磁盘配额

btrfs Technical Preview, 技术预览版 BtrFS(B-tree文件系统,又称为Butter FS或Better FS),2007由oracle开源后,得到了IBM.intel等厂商的大力支持,其目标计划是替代linux目前的ext3/4,成为下一代linux标准的文件系统. btrfs的特性: 1.可扩展性: 1) ext系列文件系统使用块位图来保存每个块空闲与否的信息(每个块用一个位来表示是否空闲),当容量扩展时,块位图所占的空间会线性的增加,试想一下如果快位图变得很大