首页 > 代码库 > btrfs的管理及应用

btrfs的管理及应用

btrfs的特性

     支持多物理卷扩展、添加、移除、修改

    支持快照可写和快照只读

    对RAID5和RAID6加强支持

    子卷:sub_volume

    支持数据和元的校验和

     透明压缩

btrfs的创建

     现在有硬盘/dev/sdb /dev/sdc。

    将两块硬盘合并创建btrfs,卷标为mydata

    mkfs.btrfs -L mydata /dev/sdb /dev/sdc

    本人用的是Redhat Enterprise 7 btrfs在红帽7里面还只是测试,在Centos 7+版本中就不会

    出现WARNING EXPERIMENTAL

     btrfs filesystem show查看本地的btrfs文件信息,UUID都是一样的,但是UUID_SUB不一样

     

技术分享


 技术分享


btrfs的信息查看

    btrfs filesystem <subcommand> <option>

    subcommand

        show  --------------查看信息

            /PATH      使用挂载的目录进行查看btrfs的信息

            <option> 

            --mounted    只显示查看btrfs的挂载信息

            --devices    指明btrfs其中的一个硬盘就可以查看全局的信息

            --all     查看所有的信息

        label ---------------  显示卷标

           btrfsf filesystem label /dev/sdb

            

技术分享

        resize --------------缩减或都增大文件系统的容量

           btrfs filesystem resize max /mydata 增加到最大

           btrfs filesystem resize -10G /mydata 减少

           btrfs filesystem resize +10G /mydata 增加

        df   ---------------显示已经挂载的文件系统的信息

           btrfs filesystem df /mydata

        sync  --------------同步操作

btrfs的挂载

     mount -t btrfs /dev/sdb /mydata

    挂载时候可以不用指明文件类型,挂载的设备只要是btrfs文件系统中的其中一个设备即可

    umount /mydata 御载

    技术分享

btrfs的压缩机制

    先御载先前的挂载

    mount -o compress={lzo|zlib} DEVICE MOUNT_POINT

    mount -o compress=lzo /dev/sdb /mydata

    在/mydata下创建的文件自动压缩成lzo的压缩文件

btrfs物理设备的管理

    btrfs device <subcommand><args>

    <subcommand>

        add  --------------  添加设备(自动添加、自动扩展)

             btrfs device add /dev/sd# /mydata

         delete ---------------  移除设备

             btrfs device delete /dev/sd# /mydata

        scan ----------------- 扫描设备

        ready ----------------- 检查设备是否准备备可以用来挂载

        stat ------------------- 显示IO统计的数据

btrfs均衡各物理卷直接的数据量

            btrfs [filesystem] balance <subcommand><args>

    <subcommand>

        start ------------- 开始均衡文件系统

            btrfs balance start /mydata

        start -dconvert -------------- 修改数据的组织机制,即RAID级别

        start -mconvert -------------- 修改元数据的组织机制,即RAID级别

            btrfs balance stat -mconvert=raid1 /mydata

            技术分享

            技术分享

        start -sconvert -------------- 修改系统的组织机制,即RAID组别

        pause -------------- 停止

             btrfs balance pause /mydata

        cancel -------------- 取消

             btrfs balance cancel /mydata

        resume -------------- 继续

             btrfs balance resume /mydata

        status -------------- 查看均衡状

             btrfs balance status /mydata

btrfs子卷的管理

    btrfs subvolume <subcommand>[<args>]

    <subcommand>

        create ------------- 创建子卷            

            btrfs subvolume create /mydata/logs

            btrfs subvolume create /mydata/cache          

        delete ------------- 删除子卷

            btrfs subvolume delete /mydata/logs

            btrfs subvolume delete /mydata/cache

        list ------------- 列表显示子卷信息       

技术分享

        snapshot ------------- 创建子卷快照(只能与父卷同一目录下)

            btrfs subvolume snapshot /mydata/logs /mydata/logs_snapshots          

技术分享

            btrfs subvolume snapshot delete /mydata/logs_snapshot

            对单个文件执行快照功能-----写实复制

               cp --reflink filename filename_snapshot

              

        get-default 

        set-default

        find-new

        show 

     挂载子卷

        1.先卸载交卷

            umount /mydata

        2.再挂载子卷(设备哪个都可以只要在btrfs中)

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

            在子卷中创建bb{1..10}然后卸载子卷挂载父卷

            umount /mnt

            mount /dev/sdb /mydata

            查看父卷的文件都还在,并且多了两个目录cache和logs,进入logs子卷

                bb{1..10}仍然存在

            技术分享

              通过子卷ID挂载

                btrfs subvolume list /mydata 查看子卷ID        

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

                   技术分享

                         

        

其它文件系统转换成btrfs文件系统(无损)

    btrfs-convert /dev/sd#

    a.将文件系统为ext4的dev/sda8转换成btrfs文件系统,ext4现在正挂载在/mnt下面?

    1.先御载

        umount /mnt

    2.强制检查磁盘块

        fsck -f /dev/sda8

    3.执行转换

        btrfs-convert /dev/sda8

    4.重新挂载

        mount /dev/sda8 /mnt

    5.查看文件是存在

   b.moun将/dev/sda8转换回成ext4文件系统

    1.先卸载

        umount /mnt

    2.执行回滚命令

        btrfs-convert -r /dev/sda8


    

btrfs的管理及应用