linux文件系统btrfs的管理及应用(自用整理)

btrfs简介

  btrfs(通常念成Butter FS,B-tree FS,Better FS),由Oracle于2007年宣布并进行中的COW(copy-on-write式,即写时复制)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小。

  btrfs 文件系统中所有的 metadata 都由 BTree 管理。使用 BTree 的主要好处在于查找,插入和删除操作都很高效。可以说 BTree 是 btrfs 的核心。

  

   FS Tree 管理文件相关的元数据,如 inode,dir; chunk tree管理设备,每一个磁盘设备都在chunk tree中有一个item; extent tree 管理磁盘空间分配,btrfs 每分配一段磁盘空间,便将该磁盘空间的信息插入到 extent tree 。查询extent tree将得到空闲的磁盘空间信息;Tree of root tree保存很多 BTree 的根节点。比如用户每建立一个快照,btrfs 便会创建一个FS Tree 。为了管理所有的树,btrfs 采用Tree of root tree来保存所有树的根节点;checksum Tree保存数据块的校验和。

 

 

 

btrfs应用 

创建文件系统

  首先使用fdisk命令创建 /dev/sda5 分区,使用mkfs.btrfs 命令建立一个 btrfs 格式的文件系统,并将其挂载到 /btrfsdisk 目录下 

    # mkfs.btrfs  /dev/sda5

    # mkdir  /btrfsdisk

    # mount -t btrfs /dev/sda5  /btrfsdisk

创建 subvolume

  使用 btrfs 命令可以方便的建立 subvolume 。

    # mkdir /mnt/subname

    # btrfsctl -S sub1 /btrfsdisk

    # mount -t btrfs -o subvol=sub1  /dev/sda5  /mnt/subname

创建 RAID(RAID0,RAID1) 

    # mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd

    # mkfs.btrfs  -m raid0 -d raid1 /dev/sdb  /dev/sdc  /dev/sdd

    # mkfs.btrfs  -d  raid1  /dev/sdb  /dev/sdc  /dev/sdd

    # mount /dev/sdb  /mnt

    # df  /mnt  #查看挂载数据和元数据详细的信息

数据压缩   

    # mount -o compress=lzo  /dev/sdb  /mnt  #进行lzo数据压缩

    # mount -o compress=zlib  /dev/sdb  /mnt  #进行zlib数据压缩

    # mount -o compress  /dev/sdb  /mnt  #默认为zlib压缩

恢复挂载

    # mount -o recovery /dev/sdb  /mnt

系统缩减

    # btrfs  filesystem  resize  -2g  /mnt  #/mnt容量减小2G

    # btrfs  filesystem  resize  -500m  /mnt

    # btrfs  filesystem  resize  +2g  /mnt  #/mnt容量增大2G

    # btrfs  filesystem  resize  max  /mnt  # /mnt容量增加到最大

增加/删除设备

    # btrfs  device  add  /dev/sde  /mnt

    # btrfs  filesystem  show  /dev/sdb #查看文件系统使用信息

    # btrfs  filesystem  balance  /mnt    #文件系统平衡

    # umount  /mnt

    # mount -o  degraded  /dev/sdb  /mnt

    # btrfs  devive  delete  /dev/sdc  /mnt  

同步文件系统

    # btrfsctl  -c  /btrfdisk

 

posted @ 2018-05-25 17:24  yi点黑暗  阅读(1025)  评论(0编辑  收藏  举报