一、基础简介

     Btrfs(又名:B-tree, Butter FS, Better FS),GPL授权, Oracle从2007研发,写实复制更新机制 CoW,其主要是为了取代ext2,ext3,ext4,其主要功能有

  • 例如我们现在去修改一个文件A,COW机制是先将目标文件A复制一份为文件B,那么我们修改文件时是修改的复制文件B,相当于对源文件A做了快照,如对文件B修改操作失误,可以有效的恢复源文件A。

  • 多物理卷支持:btrfs可由多个底层物理卷组成,内建支持RAID(即支持条带、mirror等功能),以联机“添加”、“移除”,“修改”操作

  • 支持b-tree文件功能即支持子卷功能,如在vg中创建lv一样

  • 写时复制更新机制(英译CoW):复制、更新及替换指针,而非“就地”更新机制

  • 数据及源数据校验码机制checksum:我们存储某个文件时,checksum会将数据的源数据和数据的校验码,分别通过文件的属性扩展进行保存,当我们再次读取数据时可以方便的检测数据是否受损,如果文件受损系统可以完成自动修复。

  • 支持子卷sub_volume:可以在一个卷上创建子卷,然后分别挂载使用

  • 快照:支持快照的快照功能即增量快照

  • 透明压缩:即数据自动实现压缩和解压缩,以节约空间,会消耗一定的cpu的

二、文件系统创建

    命令帮助btrfs --help

  1. mkfs.btrfs

    1. -L 'LABEL' 指定卷标

    2. -d <type>: raid0,raid1, raid5, raid6, raid10, single   指明数据存储类型

    3. -m <profile>: raid0,raid1, raid5, raid6, raid10, single, dup  指明源数据存储的机制

    4. -O <feature> 指明在格式化时使用的特性

    5. -O list-all: 列出支持的所有feature

  2. man btrfs-filesystem查看更多的子命令

  3. mount -t btrfs /dev/sdbMOUNT_POINT 挂载文件系统

  4. mount -o compress={lzo|zlib} DEVICE MOUNT_POINT 透明压缩机制

  5. btrfs filesystem resize ±VALUE  MOUNT_POINT 调整磁盘大小

  6. btrfs devices [subcommand] args 管理磁盘设备

  7.  btrfs-balance subcomand|args 均衡数据

  8. btrfs subvolume [subcommand][args] 创建子卷

  9. btrfs snapshot 创建快照

    1. 快照必须要与原卷在同一卷组中,子卷的快照必须要与子卷在同一个父卷中 

    2.    btrfs subvolume delete  snapshot-name 删除子快照


三、创建应用示例

         # fdisk -l 查看存在的分区的磁盘

    # mkfs.btrfs -L"mybtrfs" /dev/sdb /dev/sdc 将sdb、sdc磁盘创建成为一个btrfs系统

        # btrfs filesystem show 查看已经创建的btrfs文件系统

   # blid /dev/sdb 查看UUID是相同的(说明其实属于同一个卷的)

          # mkdir  /mybtrfs 创建挂载点

          # mount  -t btrfs /dev/sda(挂载点是/dev/sda也是可以的)

          # umount /dev/sda 卸载

          # mount -o compress=lzo /dev/sdb /mybtrs重新使用,此时就是自动压缩(透明压缩)

          #btrfs filesystem resize -10G /mybtrfs

                (btrfs filesystem resize调整磁盘大小

          # btrfs devices add /dev/sdd /mybtrfs 自动磁盘扩展逻辑边界

          # man btrfs-balance start /mytrfs

                  # btrfs-lalance start -mconvert=raid1 /mytrfs 修改元数据的raid级别

                  # btrfs balance status /mytrfs

           # btrfs device delete /dev/sda /mybtrfs 拆除设备,系统会自动移动数据

           # btrfs sublimvolume create /mybtrfs   创建子卷

                   # btrfs subvolume create /mybtrfs/logs 创建logs子卷

                        umount /mybtrfs      

                        mount /dev/sdb   /mybtrfs  可以卸载父卷,只挂着子卷

                        btrfs subvolume list /mybtrfs 显示mybtrs