btrfs文件系统常用命令使用

Btrfs,也可称为B-tree,Butter FS,Better FS,是CentOS7中一种新型的文件系统。

核心特性:

1.多物理卷支持,可由多个物理卷(pv)组成,支持raid,以联机添加删除

2.支持写实复制(Copy on Write,Cow)

复制一份修改,改好之后用指针替换,出错时指回原本文件。而不是就地修改

3.数据及元数据校验码:checksum

4.子卷:Sub_volume

5.快照,基于写实复制,支持快照的快照,能实现增量快照

6.透明压缩

格式化:

mkfs.btrfs -L LABEL /dev/device1 /dev/device2

mkfs.btrfs
-L            #label
-d <type>    #date,数据保存的类型,raid0,raid5,raid6,raid10,single
-m,metadata  #元数据保存类型 raid0,raid5,raid6,raid10,single,dup(冗余)
-O            #功能选项,特性,在格式化时生效

mkfsbtrfs -O list-all查看支持的格式化选项。
由于不同版本内核可能功能不一样,所以用这个命令查看

feature.png

用blkid /dev/device1和device2查看信息的时候,两个硬盘的pv的主uuid一样,副uuid不一样

QQ截图20160326003401.png

注意:虽然这两个设备是放在一起格式化了,但是并不是子卷的关系。只是将两个硬盘设备格式化成一个btrfs设备

btrfs的子命令以及详细用法介绍

1.filesystem    管理命令

btrfs filesystem show                          #显示详细信息
btrfs filesystem df <挂载点>                   #已挂载分区使用状况
btrfs filesystem resize [+?G|max] <挂载点>    #增减容量
btrfs filesystem defragment                    #碎片整理

filesystem.png

2.device    #添加到已有的挂载点上使用add之后,第二个被添加的就会绑定在一起。

#下一次挂载的时候依然是绑定的,所以要用delete来拆除设备才能分开。

btrfs device add <需要添加的设备> <挂载点>
btrfs device delete <需要添加的设备> <挂载点>

device.png

在这里我们可以看见这两块硬盘是独自的btrfs。

我们可以通过device子命令来添加,将两个空的btrfs硬盘合并成一个

device add.png

合并之后,他们的主uuid一样,副uuid不一样。

容量为两个20G硬盘合并的40G。

3.balance    均衡

btrfs balance start <挂载点>   #开始
        -mconvert=raid[0,1,5,10] BTRFS_LABEL metadata
        -dconvert=raid[0,1,5,10] BTRFS_LABEL data
                                 #convert之类的选项,可以通过man文档中的filter字段查到
btrfs balance pause        #暂停
btrfs balance status        #状态

balance.png

使用device子命令增加容量后,再使用balance子命令。

可以把文件转移一部分到新的pv上,能为其他硬盘减少读写压力。

balance1.png

假如在格式化的时候没有指定数据和元数据的raid类型,也可以通过balance来修改。

4.subvolume    子卷命令

#子卷是什么?举个简单的例子,我们可以想象根目录是一个主卷。而下面的/usr,/bin,/sbin等文件夹都能设置成子卷。
#而需要的时候,可以只挂载子卷。但是如果挂载了主卷,下面的子卷都会全部挂载
#想要单独挂载子卷,而不挂载上级卷的话,要指定id或者label
btrfs volume create 主卷下的挂载点
btrfs volume delete 主卷下的挂载点

subvolume.png

    snapshot

snapshot1.png

#注意:创建快照,是对创建快照一个瞬间的状态进行定格。
#也就是说,sub1里面没有文件的时候创建快照的。用快照还原的话,sub1就是个空分区。
#如果sub1里面有一个文件。在创建快照之后,没修改的那一份保留在sub1_snapshot中
#往后如果sub1中的文件遭到多次修改,sub1_snapshot中的数据也不会改变,因为我们做的快照只是这一瞬间的。
#第二次修改的那个瞬间就不管。

snapshot_对比.png

例如:我们给空的sub1创建一个sub1_snapshot快照,我们复制进去一个conf配置文件。snapshot子卷下面一点变化也没有

issu.png

#而我们复制一个issue文件进去,再创建一个快照2的时候,snapshot2里面就会有一个issue文件。
#而这个时候,我们怎么修改sub1内的issue文件,snapshot2的issue文件也不会改变。
#因为快照只对那一瞬间的issue进行了定格。

    list BTRFS_LABEL_NAME 列出指定btrfs下的子卷及其id

    [root@localhost ~]# btrfs subvolume list /media/btrfs/
    ID 261 gen 54 top level 5 path sub1
    ID 262 gen 53 top level 5 path sub2
    ID 263 gen 54 top level 5 path sub1_snapshot

只挂载子卷(假如操作系统是btrfs,如brtfs的/下的子卷是/usr/,/lib等)

mount -o subvolid=ID MOUNT_POINT

挂载子卷.png

对单独文件创建快照

    cp –reflink

转换

btrfs-convert EXT4_DEVICEext4转换成btrfs
btrfs-convert -r BTRFS_DEVICE此前为ext4的btrfs转换回ext4

透明压缩机制:

mount -o compress=[lzo|zlib] DEVICE /MOUNT_POINT

由于读写的时候都要压缩,所以要占用CPU来压缩和解压

原创文章,作者:菠菜,如若转载,请注明出处:http://www.178linux.com/13386

(3)
上一篇 2016-03-06 08:53
下一篇 2016-03-07 22:26

相关推荐

  • LVM

       本节主要为raid和LVM相关 一、作业 1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项 2、写一个脚本,完成如下功能: (1) 列出当前系统识别到的所有磁盘设备 (2) 如磁盘数量为1,则显示其空间使用信息 …

    Linux干货 2016-08-30
  • http请求过程

    1、浏览器根据访问的域名找到其IP地址。DNS查找过程如下: 1.浏览器缓存:浏览器会缓存DNS记录一段时间。 2.系统缓存:如果在浏览器缓存里没有找到需要的域名,浏览器会查系统缓存中的记录。 3.路由器缓存:如果系统缓存也没找到需要的域名,则会向路由器发送查询请求。 4.ISP DNS缓存:如果依然没找到需要的域名,则最后要查的就是ISP缓存DNS的服务器…

    Linux干货 2017-10-23
  • 文件查找命令(find、locate)

    在文件系统上查找符合条件的文件: 实现工具:locate, find locate: 依赖于事先构建好的索引库; 系统自动实现(周期性任务); 手动更新数据库(updatedb); 工作特性: 查找速度快; 模糊查找; 非实时查找; locate [OPTION]… PATTERN… -b:只匹配路径中的基名; -c:统计出共有多少个符合条件的文件;…

    Linux干货 2016-11-06
  • N28-第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    2017-12-17
  • bash 循环语句while、until练习

    bash 循环语句while、until while练习题          1、求100以内所有正整数之和     2、通过ping命令探测172.16.250.1 – 254范围内的所有主机的在线状态,统计在线主机和…

    Linux干货 2016-08-19
  • centos6安装docker

    使用的操作系统是是centos6.3,按照官方的推荐的配置,把linux内核升级到3.8以上。安装步骤如下: 1、升级内核版本(包含aufs) cd /etc/yum.repos.d     wget http://www.hop5.in/yum/el6/hop5.repo   …

    Linux干货 2016-05-05