btrfs(B-tree filesystem),由Oracle 2007年后研发,这是一个技术预览版的文件系统,推出用于弥补、替换Linux中的Ext系列文件系统。
  重要技术特性:
   1)支持写时复制(COW),保证数据的可靠性
   2)更好的扩展性支持,利用动态inode创建、Extent、B-tree实现
   3)支持非常大的单个文件与总容量
   4)支持文件快速检查功能,基于数据及元数据校验码机制,将数据、元数据的某些属性保存下来,下次读取时可根据这些属性快速检测是否受损,如果损坏还能尝试修复,这样极大的提高数据的准确性
   5)支持将多个物理卷组成一个Btrfs文件系统,并内置RAID,支持将数据、元数据以RAID、single、dup等方式在多个物理卷中存储。
   6)支持创建子卷,可以创建多个子卷,子卷可以单独挂载
   7)支持透明压缩功能,自动占用CPU资源对传入/出的文件进行压缩/解压
   8)支持快照,支持对子卷、文件进行快照,还能对快照进行快照
   
  Ext系列对比Btrfs系统:
   参考: https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html

btrfs 文件系统管理命令:
  btrfs subvolume     用于管理子卷
  btrfs filesystem    用于管理文件系统
  btrfs balance    用于调整数据、元数据存储负载均衡
  btrfs device    用于管理设备
  btrfs rescue    用于救援
  btrfs quota     用于设置磁盘配额
一、将多个设备文件创建为一个Btrfs文件系统

mkfs.btrfs [options] Device ...-L  指定卷标-m  指定元数据如何跨设备文件存储,可以为 raid0, raid1, raid5, raid6, raid10, single or dup。-d  指定数据如何跨设备文件存储,可以为raid0, raid1, raid5, raid6, raid10 or single or dup-f  强制格式化[root@localhost ~]# mkfs.btrfs  -f  -L  myBtrfs  /dev/sdb /dev/sdc
btrfs-progs v4.4.1
See http://btrfs.wiki.kernel.org for more information.Label:              myBtrfs
UUID:               144d67a0-5235-491b-bc0c-5edeb63e94f4
Node size:          16384
Sector size:        4096
Filesystem size:    40.00GiB
Block group profiles:Data:             RAID0             2.01GiB       发现数据以RAID0存放Metadata:         RAID1             1.01GiB       发现元数据以RAID1存放System:           RAID1            12.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  2
Devices:ID        SIZE  PATH1    20.00GiB  /dev/sdb2    20.00GiB  /dev/sdc

二、调整Btrfs逻辑边界

查看Btrfs文件系统由sdb、sdc组成,大小为40G
[root@localhost ~]# btrfs filesystem show /data/
Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4Total devices 2 FS bytes used 896.00KiBdevid    1 size 20.00GiB used 2.01GiB path /dev/sdbdevid    2 size 20.00GiB used 2.01GiB path /dev/sdc
将Btrfs文件系统缩减10G的大小
[root@localhost ~]# btrfs  filesystem resize   -10G /data/
Resize '/data/' of '-10G'[root@localhost ~]# btrfs filesystem show /data/
Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4Total devices 2 FS bytes used 896.00KiBdevid    1 size 10.00GiB used 2.01GiB path /dev/sdbdevid    2 size 20.00GiB used 2.01GiB path /dev/sdc

三、为原Btrfs文件系统添加、删除物理设备

添加sdd、sde设备
[root@localhost ~]# btrfs  device add  /dev/sdd  /dev/sde /data/[root@localhost ~]# btrfs  filesystem show  /data/
Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4Total devices 4 FS bytes used 896.00KiBdevid    1 size 10.00GiB used 2.01GiB path /dev/sdbdevid    2 size 20.00GiB used 2.01GiB path /dev/sdcdevid    3 size 20.00GiB used 0.00B path /dev/sdedevid    4 size 20.00GiB used 0.00B path /dev/sdd删除sde设备
[root@localhost ~]# btrfs device  del  /dev/sde /data[root@localhost ~]# btrfs filesystem show /data
Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4Total devices 3 FS bytes used 896.00KiBdevid    1 size 10.00GiB used 2.01GiB path /dev/sdbdevid    2 size 20.00GiB used 2.01GiB path /dev/sdcdevid    4 size 20.00GiB used 0.00B path /dev/sdd相比LVM ,Btrfs不需要人工把数据此该磁盘中移出来,Btrfs自动完成,功能更为强大
四、管理数据、元数据存放磁盘及方式
当新添加一块硬盘进来后,需要将数据均匀存放到各个磁盘上,此时可以这样做:
[root@localhost ~]# btrfs  balance  start /data/
Done, had to relocate 3 out of 3 chunks当数据过大时可以使用pause暂停,resume恢复。修改数据的存放方式为RAID5:
[root@localhost ~]# btrfs  balance start -dconvert=raid5 /data/
Done, had to relocate 1 out of 3 chunks
修改元数据的存放方式为RAID1:
[root@localhost ~]# btrfs  balance start -mconvert=raid1 /data/
Done, had to relocate 2 out of 4 chunks

五、启用透明压缩机制

压缩算法有lzo与zlib两种,通过mount重新挂载时选择
[root@localhost ~]# mount -o remount,compress=lzo /dev/sdb /data/
[root@localhost ~]# cp /var/log/messages /data/
对比查看还是有点效果的,原来128K现在压缩后127K...
[root@localhost ~]# ll -h /var/log/messages /data/messages
-rw-------. 1 root root 127K Jan  4 06:24 /data/messages
-rw-------. 1 root root 128K Jan  4 06:25 /var/log/messages

六、管理子卷

创建子卷log、Coo:
[root@localhost ~]# btrfs  subvolume  create  /data/log
Create subvolume '/data/log'
[root@localhost ~]# btrfs  subvolume  create  /data/Coo
Create subvolume '/data/Coo'查看子卷的简要信息:
[root@localhost data]# btrfs  subvolume list /data/
ID 264 gen 95 top level 5 path log
ID 265 gen 92 top level 5 path Coo查看子卷的详细信息:
[root@localhost ~]# btrfs  subvolume  show  /data/log/
/data/logName:                   log         #子卷名字UUID:                   b22a5c9d-05f7-da41-89c7-d4dcceae9a0e    #子卷UUIDParent UUID:            -Received UUID:          -Creation time:          2018-01-04 06:32:19 -0800Subvolume ID:           264             #子卷IDGeneration:             91Gen at creation:        91Parent ID:              5Top level ID:           5Flags:                  -Snapshot(s):[root@localhost ~]# btrfs  subvolume  show  /data/Coo
/data/CooName:                   CooUUID:                   a5552185-a8b4-2543-b2ac-f0e348668c8e    Parent UUID:            -Received UUID:          -Creation time:          2018-01-04 06:32:46 -0800Subvolume ID:           265Generation:             92Gen at creation:        92Parent ID:              5Top level ID:           5Flags:                  -Snapshot(s):挂载子卷,一般如果挂载父卷则自动挂载所有子卷。还能单独挂载子卷:
[root@localhost ~]# mount  -o subvol=log  /dev/sdb /mnt/
[root@localhost ~]# mount | grep mnt
/dev/sdb on /mnt type btrfs (rw,relatime,seclabel,compress=lzo,space_cache,subvolid=264,subvol=/log)[root@localhost ~]# mount -o  subvolid=265 /dev/sdb /media/
[root@localhost ~]# mount | grep media
/dev/sdb on /media type btrfs (rw,relatime,seclabel,compress=lzo,space_cache,subvolid=265,subvol=/Coo)

七、快照卷的管理

创建快照卷:
[root@localhost ~]# btrfs subvolume  snapshot  /data/log /data/log_snap
Create a snapshot of '/data/log' in '/data/log_snap'
查看子卷的信息:
[root@localhost data]# btrfs  subvolume list /data/
ID 264 gen 95 top level 5 path log
ID 265 gen 92 top level 5 path Coo
ID 266 gen 93 top level 5 path log_snap删除快照卷:
[root@localhost data]# btrfs  subvolume  delete /data/log_snap/
Delete subvolume (no-commit): '/data/log_snap'对快照卷做快照:
注:创建快照之前最好将磁盘设为只读挂载
[root@localhost data]# btrfs  subvolume  snapshot /data/log_snap/ /data/log_snap_snap
Create a snapshot of '/data/log_snap/' in '/data/log_snap_snap'
对文件做快照(只能在Btrfs中实现):
[root@localhost data]# cp --reflink  1.t  1.t_snap恢复快照卷:
[root@localhost data]# btrfs  subvolume  delete  log
Delete subvolume (no-commit): '/data/log'[root@localhost data]# mv  log_snap log

八、文件系统转换、回退

将EXT4转换为Btrfs:
[root@localhost ~]# fsck -f /dev/sde            #检查磁盘是否损坏、剩余空间
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/sde: 11/1310720 files (0.0% non-contiguous), 126322/5242880 blocks[root@localhost ~]# btrfs-convert  /dev/sde         #开始转换
create btrfs filesystem:blocksize: 4096nodesize:  16384features:  extref, skinny-metadata (default)
creating btrfs metadata.
copy inodes [o] [         0/        11]
creating ext2 image file.
cleaning up system chunk.
conversion complete.[root@localhost ~]# btrfs  filesystem show
Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4Total devices 3 FS bytes used 10.77MiBdevid    1 size 10.00GiB used 3.00GiB path /dev/sdbdevid    2 size 20.00GiB used 2.31GiB path /dev/sdcdevid    4 size 20.00GiB used 2.31GiB path /dev/sddLabel: none  uuid: 3e61c271-cfcb-42c0-b3f5-a62e9dc8b98aTotal devices 1 FS bytes used 494.21MiBdevid    1 size 20.00GiB used 20.00GiB path /dev/sde回滚:
[root@localhost ~]# btrfs-convert  -r  /dev/sde
rollback complete.
[root@localhost ~]# blkid  /dev/sde
/dev/sde: UUID="39eb4603-ad53-4fb7-8d23-d69732921539" TYPE="ext4" 

转载于:https://blog.51cto.com/jying/2058542

Btrfs介绍与使用相关推荐

  1. btrfs的介绍与使用

    源文献:http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pcon 简单看了一下这篇文章,对其中一些机制的实现还 ...

  2. btrfs基本介绍及应用

    一.btrfs基本概念 btrfs文件系统是2007年Oracle开发,支持GPL协议,为了取代Linux早期的ext系列文件系统. btrfs核心特性:多物理卷支持:btrfs可由多个底层物理卷组成 ...

  3. 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化

    优化挂载参数 在 Linux 中挂载 SSD 上的 btrfs,可以采用各种参数进行优化: # UUID=/btrfs defaults,ssd,discard,noatime,compress=lz ...

  4. 新一代 Linux 文件系统 btrfs 简介

    btrfs 的特性和使用 Btrfs 被称为是下一代 Linux 文件系统.近年来 ext2/3 遇到越来越多的扩展性问题,在期待 ext4 的同时,人们发现了 btrfs,据说它采用了很多先进的文件 ...

  5. SEAndroid策略介绍1

    http://en.wikipedia.org/wiki/User:Blueswhen User:Blueswhen From Wikipedia, the free encyclopedia Jum ...

  6. 资料收集新一代 Linux 文件系统 btrfs 简介

    来自: http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext ...

  7. openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程

    Centos7中openshift_3.11单节点安装及配置开机自启详解 本次openshift安装使用最简单便捷的单节点安装,适用于本地开发及测试 openshift简介 OpenShift是红帽公 ...

  8. Docker介绍与安装使用(一)

    什么是Docker? docker是一个基于LXC容器技术的管理工具,提供一系列更强的功能,如可移植性(定义了标准,可以在任意主机运行).自动化构建(dockerfile).版本控制.镜像管理等. d ...

  9. linux grub 下载,GRUB 2.04发布下载,附新功能介绍

    GRUB 2.04版本发布了,它是在GRUB 2.02/2.00的基础上更新的,GRUB 2.02是目前使用得最多的多重启动管理器,全称为GRand Unified Bootloader,使用它可以引 ...

最新文章

  1. 一步一步搭架子(DM层与Service层)
  2. Python 单例模式
  3. java加载自己写的类_java 自定义类加载器从磁盘或网络加载类
  4. react Native 环境安装配置——图解版一目了然
  5. 【Azure + Core】实现CI/CD(一)构建镜像并推送仓库
  6. PHP面向对象相关特性
  7. 腾讯十年经验总结分享!软件测试经典面试题!你招架的住吗?
  8. iptables转发基础
  9. 网易云基于 Kubernetes 的深度定制化实践
  10. 【图形学概览】几何折叠 Geometric Folding
  11. smartupload实现文件上传
  12. vue element admin 图标乱码问题
  13. OA审批流程是什么?如何提升OA审批流程效率?
  14. java微信新增永久素材_微信公众号开发之新增永久图文素材(十)
  15. 美国住宅IP和机房Ip的区别
  16. 【MATLAB】基础01
  17. BUU-MISC-你能看懂音符码
  18. 新冠造成的经济崩溃对女性影响最大
  19. JavaScript----json
  20. SEO推广技术是什么意思?SEO是什么职业?

热门文章

  1. Pinterest主页的机器学习
  2. Axure8.0教程:动态面板多级联动
  3. BlackBerry 网络连接编程
  4. 计算机电子电路基础教程视频,电子电路基础详细视频教学(100集)
  5. slim.fully_connected()
  6. 母亲节,献给母亲的沙画(太感人了!)
  7. C#_Task和Task<T>
  8. 如何使用Ubuntu Live CD进行无痕浏览
  9. Matlab之贝塞尔函数
  10. Go1 头部相机传图到自己电脑上进行开发—环境配置相关