Btrfs文件系统的管理和应用

    Btrfs(我们称之为Butter FS或者B-tree FS)被称为新一代的linux文件系统。一直以来,EXT文件系统以其卓越的稳定性成为linux标准的文件系统。但近年来,EXT3暴露出一些扩展性的问题(如单一文件大小限制、总文件系统大小限制等),于是便催生了EXT4。但同时,Btrfs向人们展现出诸多优秀的功能。目前很多厂商都投入到Btrfs文件系统的研发,诸多新的发行版也开始在新版本中支持此文件系统。

    一、btrfs文件系统的特性

      1、多物理卷支持:btrfs可以又多个底层物理卷组成,支持raid,可以联机“添加”“删除”“修改”;

      2、写时复制更新机制(CoW):对数据的修改是遵循复制、修改和替换指针。当我们修改某文件时,不是直接修改源文件,而是先复制一份进行修改,修改完成后将源文件指针指向修改后的文件。

      3、数据及元数据校验码:存储文件时会把数据和元数据的校验码通过文件某些扩展保存下来,在读取文件时快速校验文件是否损坏,如果损坏会自动尝试修复文件。

      4、子卷(sub_volume):每个子卷可以单独挂载。

      5、支持快照功能snapshot。

      6、透明压缩:自动通过占用cpu时钟周期的方式对数据自动进行压缩,读取的时候自动解压缩。

    二、btrfs文件系统的管理

      btrfs在centos7以上版本中已经默认支持,对于7以下的版本,需要重新编译及更新内核,并安装相关的管理工具才可以使用。

      为了更好的演示btrfs文件系统的相关功能,我们使用centos7系统,并单独添加一块硬盘,并划分三个独立分区sdb1、sdb2、sdb3。

        blob.png

      1、创建btrfs

        使用mkfs.btrfs命令创建btrfs

        mkfs.btrfs [OPTIONS] '<device>' ['<device>'…]

            常用选项:

            -L|–label <name> 指明卷标

               -m|–metadata <profile> 指明元数据存放机制,Valid values                   are raid0, raid1, raid5, raid6, raid10, single or dup.

            -d|–data <type>指明数据存放机制,Valid values are raid0,                 raid1, raid5, raid6, raid10 or single.

            -O|–features <feature1>[,<feature2>…]文件系统特性开关

                      可以通过mkfs.btrfs -O list-all查看支持哪些特性

          我们将sdb1和sdb2作为底层卷一起创建卷标为mybtrfs的文件系统,且label被挂在sdb1上,大小为两个分区大小之和。

 blob.png

        通过mount可以直接挂载使用该文件系统:

blob.png

        通过blkid查看两个分区的文件系统信息:blob.png

        可以看到两个分区的LABEL和UUID是一样的,说明两个分区属于一个文件系统卷,但是子卷id是不一样的。

        2、btrfs文件系统的查看和设置

         btrfs filesystem show 查看

            –mounted  查看所有挂载的btrfs

            –all-devices 查看所有的btrfs,默认。

         btrfs filesystem sync 将挂载的文件系统在内存中的数据同步到硬盘

         btrfs filesystem df /PATH 查看已挂载文件系统的数据及元数据使用率情况。

            btrfs filesystem label [<dev>|<mountpoint>] [<newlabel>] 

            查看或修改设备或挂载点的卷标

           btrfs filesystem resize resize [<devid>:]<size>[gkm]|[<devid>:]max <path> 调整文件系统大小

        下面演示的是先减少500m空间然后还原。

    blob.png

        

        3、btrfs设备的查看和设置

        btrfs device add [-Kf] <dev> [<dev>…] <path>

        将分区sdb3加入到文件系统中,可以看到刚加入时候显示分区用量是0,             这是由于系统没有做数据均衡(balance),如果分区原来有别的文件系            统,可以用-f参数强制加入。 

blob.png

        btrfs device delete <dev> [<dev>…] <path>

        删除一个设备,删除是要保证文件系统容量大于文件总大小,系统会自动            将要删除设备中的文件移动到其他设备中。

        btrfs device scan [(–all-devices|-d)|<device> [<device>…]]

        扫描btrfs文件系统设备

        btrfs device stats [-z] <path>|<device>

        查看文件系统I/O状态

        4、btrfs数据均衡

        对于新加入的底层设备,可以通过balance子命令进行将数据均衡到各个设备中。    

        btrfs balance start <path>开始数据均衡

        blob.png

        btrfs balance pause <path>暂停数据均衡,在数据量大且系统繁忙时

        btrfs balance resume <path>继续暂停的数据均衡

        btrfs balance cancle <path>取消在进行的或暂停的数据均衡

        btrfs balance status <path>查看正在进行或暂停的数据均衡状态

        通过balance子命令,还可以对数据和元数据的存放机制进行调整

        btrfs balance -dconvert={raid#,single}调整数据存放机制

        btrfs balance -mconvert={raid#,dup,single}调整元数据存放机制

        5、btrfs子卷(sub_volume)管理

        子卷(subvolume)是Btrfs的一个内部概念,每一个子卷构成一个子卷树。子卷相当于一个子文件系统,子卷中存储着在文件的元数据信息。这点需要区别于目录。通过subvolume子命令,可以创建、删除、查看子卷及快照卷

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

        创建子卷,如果dest不指定就指子卷会被创建在当前目录中

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

        删除子卷

        btrfs subvolume list [options] [-G [+|-]value] [-C [+|-]value] [–sort=gen,ogen,rootid,path] <path>查看子卷 

        -G +表示>=,-表示<=,不标注表示=

        blob.png

        创建新的子卷后,如果父卷已经挂载,子卷会自动挂载。如果要单独挂载子卷,需要先卸载附卷。

        blob.png

        快照(Snapshots)其实就是一种特殊的子卷, 它能记录下在创建它的那一刻,它所在的父子卷(parent subvolume)的所有内容。 如果想要创建一个文件或系统的备份, 那么就可以通过创建快照来快速实现。

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

        创建快照卷

        

blob.png

        可以看到快照卷创建完成后自动完成了对于源目录的备份,当前文件系统有两个子卷


blob.png

        btrfs subvolume show <subvol-path>查看子卷的详细信息

        6、将其他文件系统转换为btrfs

        卸载挂载的文件系统

        强制检查文件系统 fsck -f dev

        使用btrfs-convert dev装换

        查看是否转换成功并挂载看是否正常

        可以使用btrfs-convert -r dev回滚

        blob.png

        

         可以看到转换后文件系统可以正常挂载且原来文件都保持正常。

      btrfs文件系统目前已经得到了各大linux发行版的支持,虽然目前或者将来很久一段时间EXT文件系统仍然是linux文件系统的主流。但是一个事物必定有自己的生命周期,让我们对btrfs拭目以待。

            




原创文章,作者:frameboy,如若转载,请注明出处:http://www.178linux.com/11476

(0)
frameboyframeboy
上一篇 2016-02-14
下一篇 2016-02-14

相关推荐

  • 二进制、八进制、十进制、十六进制之间的转换

    二进制、八进制、十进制、十六进制之间的关系:   二进制:0,1 八进制:0,1,2,3,4,5,6,7, 十进制:0,1,2,3,4,5,6,7,8,9 十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F   二进制与十进制之间的转换: 十进制转二进制:   二进制转十进制:   二进制与八进制…

    2017-04-01
  • iptables

    iptables: Firewall:隔离工具;Packets Filter Firewall;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件; 硬件防火墙:在硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现;  软件防火墙:应用软件处理逻辑运行于通用硬…

    Linux干货 2016-12-05
  • Linux入门命令(一)

    已经一年没有在接触过Linux了,经过一个星期的Linux学习之后,又重新对她产生了兴趣,本周学习了一些Linux入门级的命令: (1)     (1)tty 这个命令是查看当前所处于的中终端信息的,同样也可以使用 who am i ,who以及w来查看终端信息. 终端也还有物理终端、虚拟终端以及伪终端之分,在虚拟机下…

    2017-07-16
  • N25_第一周

    计算机组成 计算机通常由硬件和软件组成1.硬件 CPU CPU通常由控制器和运算器组成。控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。运算器:是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 存储 存储器的功能是存储程序、…

    Linux干货 2016-12-03
  • 磁盘阵列(RAID)简介

    资料 RAID(Redundant Arrays of Inexpensive Disks 廉价磁盘冗余阵列)即磁盘阵列,磁盘阵列是由多个价格比较便宜的磁盘组合成的一个容量巨大的磁盘组,其原理是利用数组方式来制作磁盘组,配合数据分散排列的设计,配合数据分散排列的设计,提升数据的安全性。它把数据分别存放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能,因…

    Linux干货 2017-04-17
  • 权限管理和字符匹配示例

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 cp -r /etc/skel /home/tuser1 chmod -R 700 tuser1 2、编辑/etc/group文件,添加组hadoop hadoop:x:999 3、手动编辑/etc/passwd文件新增一行,…

    2017-12-25

评论列表(1条)

  • stanley
    stanley 2016-02-14 09:48

    已置顶