Btrfs文件系统的管理

BTRFS文件系统

核心特性

  • 支持将多个底层物理设备组合成同一个设备使用,即多物理卷支持。btrfs可由多个底层物理卷组成:支持RAID,以连击“添加”、“移除”、“修改”

  • 写时复制,在修改文件时,先将文件复制一份,然后在新文件上进行修改,最后将文件名的指针指向新文件,所以原文件还是存在的。

  • 数据及元数据校验码:checksum

  • 子卷:在一个卷上创建子卷,每一个卷都可单独使用。

  • 快照:独特之处在于它支持快照的快照。

  • 透明压缩:在存放文件是会自动压缩,在查看文件是会自动解压缩,但缺点是会消耗更多的CPU的时钟周期

btrfs的命令的特点是将多个命令结合到一个命令用短选项实现。

文件系统创建

只有在centos7中才能使用mkfs.btrfs命令来创建

-L ’LABEL' : 指明卷标
-b:指明数据是如何跨设备存放。single,raid0,1,5,6,10
-m:指明元数据是如何跨设备存放.single,raid0,1,5,6,10
#所以我们可以知道btrfs自身就支持RAID。

注意:在一块磁盘上组合不同分区除了将多个分区组合成一个大分区并无什么其余的意义,所以建议使用不同的磁盘做btrfs。

[root@localhost ~]# mkfs.btrfs -L mydata /dev/sdb /dev/sdc
# -L :指明卷标为mydata
btrfs-progs v3.19.1
See http://btrfs.wiki.kernel.org for more information.

Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
Turning ON incompat feature 'skinny-metadata': reduced-size metadata extent refs
adding device /dev/sdc id 2
fs created label mydata on /dev/sdb
    nodesize 16384 leafsize 16384 sectorsize 4096 size 40.00GiB
[root@localhost ~]# btrfs filesystem show
Label: 'centos'  uuid: 6a9ca299-dcff-4702-9af7-c2af565bd318
    Total devices 1 FS bytes used 4.06GiB
    devid    1 size 38.00GiB used 6.04GiB path /dev/sda1

Label: 'mydata'  uuid: 6fbf4564-23cd-467e-b8e8-6b6e93567987
    Total devices 2 FS bytes used 112.00KiB
    devid    1 size 20.00GiB used 2.03GiB path /dev/sdb
    devid    2 size 20.00GiB used 2.01GiB path /dev/sdc

btrfs-progs v3.19.1

属性查看:

[root@localhost ~]# btrfs filesystem show /dev/sdb
#查看指定文件系统的属信息
[root@localhost ~]# btrfs filesystem show --all-devices
#查看所有文件系统的信息
[root@localhost ~]# btrfs filesystem show --mounted
#查看以挂载的文件系统的信息

查看卷标:

[root@localhost ~]# btrfs filesystem label /dev/sdb

挂载文件系统:

[root@localhost ~]# mount -t btrfs /dev/sdb /mydata
[root@localhost ~]# mount -o compress=lzo /dev/sdb /mydata/
#使用压缩算法存放文件

调整文件系统大小

[root@localhost ~]# btrfs filesystem resize max /mydata/
#将文件系统大小调整至最大,也可使用+#G指明增加多大空间,但增加的孔家不能查过最大空间大小

[root@localhost ~]# btrfs filesystem resize -17G /mydata/
Resize '/mydata/' of '-17G'
[root@localhost ~]# btrfs filesystem resize -18G /mydata/
Resize '/mydata/' of '-18G'
ERROR: unable to resize '/mydata/' - No space left on device

[root@localhost ~]# btrfs filesystem show /mydata   
Total devices 2 FS bytes used 904.00KiB
devid    1 size 3.00GiB used 2.02GiB path /dev/sdb
devid    2 size 20.00GiB used 2.01GiB path /dev/sdc

#在这里我们可以看到在20G磁盘空间的情况下我们最多减小17G的空间大小,并且是作用在一个磁盘上。所以在此猜测,在每一块磁盘上都以一段空间存放其固有的信息。

添加磁盘

[root@localhost ~]# btrfs device add /dev/sdd /mydata
[root@localhost ~]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb         60G   18M   56G   1% /mydata
#此时文件系统大小以增大了20G

均衡文件系统

[root@localhost ~]# btrfs balance start /mydata/
Done, had to relocate 5 out of 5 chunks
#将文件均衡进新增加的磁盘中

改变元数据级别的组织形式: [root@localhost ~]# btrfs balance start -mconvert=raid5 /mydata Done, had to relocate 2 out of 3 chunks #注意:要有足够磁盘数量。

拆除硬盘:btrfs可联机拆除磁盘,它会自动在拆除是现将要拆除的磁盘中的文件转移至其他磁盘中,所以不会损坏数据。

[root@localhost ~]# btrfs device delete /dev/sdd /mydata
[root@localhost ~]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb         40G   18M   40G   1% /mydata
#此时文件系统已经减小了20G了。

创建子卷:

[root@localhost ~]# btrfs subvolume create /mydata/logs
Create subvolume '/mydata/logs'
[root@localhost ~]# btrfs subvolume list /mydata/
ID 263 gen 86 top level 5 path logs

挂载父卷时,子卷会自动挂载。现在如果只想挂载一个子卷。

[root@localhost ~]# mount -o subvol=logs /dev/sdc /mnt
#这是根据子卷名来挂载子卷。  我们亦可以基于子卷ID来挂载子卷。
[root@localhost ~]# btrfs subvolume list /mydata
ID 263 gen 91 top level 5 path logs
#获取子卷ID为263
[root@localhost ~]# mount -o subvolid=263 /dev/sdc /mnt
#利用子卷ID来挂载子卷。

删除子卷

[root@localhost ~]# btrfs subvolume delete /mydata/logs

创建子卷的快照:

子卷的快照必须要与子卷在同一父卷中。

[root@localhost ~]# btrfs subvolume snapshot /mydata/logs /mydata/logs_snopshot

对文件系统内的单个文件做快照:

[root@localhost mydata]# cp --reflink grub2.cfg grub2.cfg.2

实现btrfs和ext4文件系统之间的转换

[root@localhost ~]# btrfs-convert /dev/sdd1
#将ext4文件系统转换成btrfs文件系统
[root@localhost ~]# btrfs-convert -r /dev/sdd1
#将btrfs文件系统转换成ext4文件系统

原创文章,作者:21期-扬州-蓝,如若转载,请注明出处:http://www.178linux.com/24281

(0)
21期-扬州-蓝21期-扬州-蓝
上一篇 2016-07-16 22:28
下一篇 2016-07-16 22:28

相关推荐

  • MySQL系列之一键安装脚本—-单实例/多实例

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1440414       最近在搞MySQL,由于经常测试一些东西。因此,就写了一个一键安装脚本。 脚本用途: 用于在…

    Linux干货 2016-08-15
  • 第十四周作业

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; ]# iptables -P INPUT DROP #INPUT默认策略为DROP ]# iptables -P OUTPUT DROP…

    Linux干货 2017-04-12
  • 网络中多网卡和多ip中的高可用

    一、虚拟网卡实现一个网卡多个地址 1、单个网卡实现多个ipv4地址,只需要在该网卡的配置文件的目录新增网卡配置文件即可。进入网卡"eth0"的目录下 2、新增网卡配置文件"ifcfg-eth0:0"和"ifcfg-eth0:1" 3、关掉NetworkManager服务 4、重启网卡,让系统重读配置…

    Linux干货 2016-09-10
  • Dell R720 安装debian系统编译网卡驱动

    最近比较忙,视频也没怎么看,下面是之前工作中遇到的问题,事后做的记录,中间解决过程参考了网上的相关资料,现在一并贴出来。 需求:Dell R720 安装debian系统 环境 硬件:Dell R720  软件:系统有debian 7.0.0和debian 6.0.10 1. debian 7.0.0 : 集成了DELL PCRE H710 Mini…

    Linux干货 2015-08-04
  • 在CentOS 6上编译安装LAMP

    在CentOS 6上编译安装LAMP     在生产中如果需要使用较新的服务,而系统提供的rpm包又较老时该怎么办呢?其实应用程序的安装方式有多种,如:使用系统发行商提供rpm包或者下载源码包手动编译安装也是可以的。今天我们编译的服务不是一个单独的而是一套。这套黄金搭档从诞生之初到现在已经经过无数用户的验证,各大电商站点、门户网站、以及各…

    Linux干货 2017-04-23
  • 马哥教育网络班22期+第十二周课程练习

    1、请描述一次完整的http请求处理过程。    (1) 客户端与服务端通过TCP三次握手建立或处理连接:接收请求或拒绝请求    (2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程    (3) 处理请求:对请求报文进行解析,获取客户端请求…

    Linux干货 2016-12-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-16 22:43

    写的很好,排版也很漂亮,加油