一、btrfs基本概念  

btrfs文件系统是2007年Oracle开发,支持GPL协议,为了取代Linux早期的ext系列文件系统。


btrfs核心特性:
    多物理卷支持:btrfs可由多个底层物理卷组成,支持RAID,以联机添加、移除、修改操作
    写时复制更新机制(CoW):复制、更新及替换指针,而非直接更新原文件 
    数据及元数据校验码:checksum
    子卷:sub_volume
    快照:支持快照的快照
    透明压缩:


二、btrfs基本应用


创建btrfs文件系统:  
      mkfs.btrfs:
        -L 'LABEL':
        -m : 指明元数据存放机制{raid0,raid1,raid5,raid6,raid10,single}
        -d : 指明数据存放时的类型{raid0,raid1,raid5,raid6,raid10,single,dup}
        -O 
          -O list-all: 列出支持的所有feature 


直接格式化: mkfs.btrfs -L mydata /dev/sdab /dev/sdac


    btrfs filesystem show: 显示创建的btrfs文件系统的信息
    btrfs filesystem show /dev/sdb: 查看指定设备btrfs文件系统的信息
    btrfs filesystem [OPTION] 
          sync: 将文件系统缓存在内存中的数据同步到磁盘中    
          df: 查看一个已挂载的btrfs文件系统空间使用情况: btrfs filesystem df /mydata
          defragment: 磁盘碎片整理
          resize: 修改大小, btrfs filesystem resize -10G /mydata
          label:显示卷标或显示卷标


    btrfs device [OPTION] /dev/sdd: 对硬件设备进行操作
          add: 添加设备
          deleate: 移除设备,数据自动移到其他设备上,不影响正常访问
          scan: 扫描设备


    btrfs balance [OPTION] /dev/DEVICE:均衡数据到新增加的设备上
          start [OPTION]:开始balance
            -d:修改数据的组织机制
            -m: 修改元数据的组织机制
            -s: 修改系统的组织机制
              filter:
                convert
                  比如btrfs balance start -dconvert=raid5 /mydata 修改数据的raid级别
                  比如 -mconvert 修改元数据的raid级别

          pause:暂停
          status:执行状态
          cancel:取消
          resume:继续



    btrfs subvolume : 子卷操作
          create: 创建子卷: 比如:btrfs subvolume create /mydata/logs
          delete: 删除子卷
          list: 列出所有的子卷 
          get-default: 查看默认卷
          set-default: 设置默认卷
          snapshot: 快照 比如; btrfs subvolume snapshot /mydata/logs /mydata/logs_snapshot
                对单个文件创建快照: cp --reflink grub2.cfg grub2.cfg_snap 
          show: 查看子卷详细信息


    只挂载子卷: 例如 mount -o subvol=logs /dev/sdb /mnt
              或 mount -o subvolid=267 /dev/sdb /mnt
    挂载文件系统:  mount -t btrfs /dev/sdb /MOUNT_POINT
    透明压缩机:    mount -o compress=(lzo|zlib) DEVICE MOUNT_POINT

三、应用


    ext文件系统转为btrfs文件系统:
          1. umount /mnt
          2. fsck -f /dev/sdd1
          3. btrfs -convert /dev/sdd1
          4. btrfs filesystem show 
          5. mount /dev/sdd1 :可以挂载使用了
    btrfs文件系统降级回到ext文件系统:
             btrfs -convert -r /dev/sdd1