linux btrfs文件系统管理与应用

btrfs文件系统管理与应用


1、btrfs文件系统


基本介绍


  btrfs文件系统在CentOS7.x上属于技术预览版


  btrfs文件系统英文名:B-tree  FileSystem或者Butter FileSystem或者Better FilSystem,遵循GPL协议,是2007年由oracle研发。btrfs文件系统支持写时复制(CoW)。设计目标取代早期linux发行版上的ext3/ext4文件系统的不足。而后在CentOS6.x版本已经对ext系列文件系统不足提出了一个更为可靠的文件系统xfs。这个是早期unix提供的文件系统


  btrfs文件系统设计就是用来取代ext系列的文件系统,它的核心特性包括:


    支持非常大的单个文件


    实现文件检查


    快照可以对单个文件进行


    内建支持RAID功能


    多物理卷支持(btrfs文件系统可以有多个底层物理卷组成)


    支持写时复制更新机制(CoW):


    数据及元数据校验码:极大保证数据的可靠性


    支持子卷


    直接支持快照:同时也支持累积性快照


    支持透明压缩:能够存储文件时自动压缩,在读取文件时自动解压,但是,这个过程会特别消耗cpu时钟周期


2、btrfs文件系统的使用


创建btrfs文件系统使用命令mkfs.btrfs


  基本语法


    mkfs.btrfs   [options...]  


  常用选项


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


    -m  


    -d  type:指定数据存放时是基于什么机制进行存放的。跟元数据差不多。type可以选择有RAID0、RAID1、RAID5、RAID6、RAID10、RAID01、single、dup等


    -o   


      feature包括:


        -O  list-all:列出btrfs文件系统的所有特性


btrfs文件系统的管理


  btrfs  filesystem命令


    基本语法


       btrfs  filesystem  


        subcommand:btrfs  filesystem这个命令内建了许多子命令,如下


          df  [options]  


            options:表示可选的选项,如下(常用选项)


              -h:表示人类可读的方式显示空间使用情况


            path:表示btrfs文件系统挂载的路径


          defragment  [options]


           resize  [


          label  [


          show [options] [


  btrfs文件系统的挂载


    mount  -t  btrfs  指定磁盘设备  挂载点


  btrfs文件系统挂载时开启透明压缩


    mount  -o  compress={lzo|zlib}  指定磁盘设备  挂载点


调整btrfs文件系统的大小


  将btrfs文件系统大小减少10G


    btrfs  filesystem  resize  -10G  /mydata


将btrfs文件系统的大小增加5G


  btrfs  filesystem  resize  5G  /mydata


将btrfs文件系统大小增加到最大


  btrfs  filesystem  resize  max  /mydata


将btrfs文件系统大小增加到最小


  trfs  filesystem  resize  max  /mydata


调整以后可以通过命令查看调整后的大小


  btrfs  filesystem  df  -h  /dev/sdb


btrfs  device命令是支持联机添加或者减少磁盘设备,并且不会影响原有数据,并且拆除设备时,会将拆除设备的数据移动到其他的设备上。


  基本语法


    btrfs  device  


      subcommand:这个命令内建了许多子命令,如下:


        add [-Kf]


          使用案例


            btrfs  device  add  /dev/sdd  /mydata


          使用注意


            通过这个命令增加了一个设备文件进入btrfs文件系统,但是新的数据不会存放到这个新加的设备中。当数据要进行存储时,如果想均衡向新设备文件中输入数据。使用btrfs  balance命令


btrfs   balance命令实现联机数据在磁层各个设备的均衡。同时我们还可以使用这个命令修改数据或者元数据的组织RAID级别(当你修改数据或者元数据级别时,指定的级别没由呢么多设备文件是不会修改成功的)


  基本语法


    btrfs  balance  


      subcommand:这个命令内建了许多子命令,如下:


        cancel  


        pause  


        resume


        start [options]


  使用注意


    使用这个balance操作时会占据电脑相当大的IO能力,所以当系统服务繁忙时,我们可以用过暂停balance操作来停止均衡执行


btrfs文件系统管理或者挂载子卷


  基本语法


     btrfs  subvolume  


      subcommand:这个命令内建了许多子命令,如下:


        create  [-i


        delete  [options]  


        find-new


        get-default


        list [options] [-G [+|-]


        snapshot  [-r]  

  


          注意:快照卷必须与原来的子卷在同一个父卷下


   使用案例


     在父卷mydata下创建子卷logs


       btrfs  volume  create  /mydata/logs


  使用注意


    如果要挂载子卷,需要将父卷卸载下来,单独挂载子卷上。如果挂载到父卷上,那么子卷会自动挂载


  挂载子卷步骤:


    第一步:在父卷下面创建一个子卷


      btrfs  volume  create  /mydata/logs


    第二步:如果父卷被挂载那么卸载父卷


      umount  /mydata


    第三步:使用mount命令挂载子卷


      mount  -o   subvol=logs  /dev/sdb  /mnt


      mount  -o   subvolid=子卷id  /dev/sdb  /mnt


      注意:可以通过btrfs  subvolume  list  父卷来查看子卷的id


    第四步:列出子卷的详细信息


      btrfs  subvolume  show  /mnt


    挂在父卷的注意事项


      当我们挂载父卷时,子卷里边的数据都能通过父卷的访问路径自动访问到。但是如果你单独挂载子卷,那么父卷就没法访问了


3、怎么ext系列文件系统转化成btrfs文件系统?


转换分为两步:


第一步:将ext系列文件系统挂载的挂载点卸掉


第二步:使用btrfs-convert  设备文件。将ext系列文件系统转换成btrfs文件系统


第三步:查看是否转换成功,使用命令btrfs  filesystem  list  设备文件


第四不:将这个设备文件挂载到挂载点上


4、怎么btrfs文件系统转化成ext系列文件系统?(回滚)


转换分为两步:


第一步:将btrfs文件系统挂载的挂载点卸掉


第二步:使用btrfs-convert  -r 设备文件。-r选项表示回滚的意思。将btrfs文件系统转换成ext系列文件系统


第三步:查看是否转换成功,使用命令blkid命令查看当前设备文件的简要信息


第四不:将这个设备文件挂载到挂载点上