系统基础之Btrfs文件系统详解

btrfs文件系统:技术预览版(centos7)

描述:

Btrfs(B-tree,Butter FS,Better fs),GPL授权,Orale,2007
写实复制特性(Cow)
    cp --reflink (只能在btrfs文件系统中使用)
想取代ext系统系统,
支持非常大文件,文件检查,快照,增量快照,快照单个文件,支持raid功能 lvm功能.
已经有企业在生产环境中使用btrfs

核心特性:

  • 1.多物理卷支持:
    支持将多个底层物理设备组织成同一个文件系统,类似物理卷,,btrfs可由多个底层物理卷组成,支持RAID,以联机实现物理卷的"添加,移除,修改"

  • 2写时复制更新机制(CoW):复制,更新及替换指针,而非"就地更新"

不修改文件时,复制的文件无文件内容,指针仍指向原文件的数据
修改文件时,不立即修改源文件,会对目标文件进行备份,对备份文件进行修改,把文件名指向,由源文件改为备份文件,源数据保留,方便数据恢复.
  • 3.数据及元数据校验码机制:
    存储每个文件时,把文件的元数据的校验码和数据的校验码,通过文件的属性拓展保存下来.访问文件时,通过扫描校验码,可快速判断文件是否受损.一旦受损,自动尝试修复.极大保证数据的可靠性

  • 4.支持子卷(sub_volume):
    在某卷上创建诸多子卷,每个子卷可以实现单独使用和挂载

  • 5.快照:
    基于写时复制机制,比lvm的快照,增加了差异(增量)快照,可以对快照的进行快照.完成对快照后的文件改变进行再次快照.

  • 6透明压缩机制:
    在这个分区上存储文件,,想节约空间,可以把任何数据流发往btrfs文件系统上,自动通过某些占据cpu的时钟周期完成数据压缩存放,用户不知道.读取时自动解压缩.但消耗cpu的时钟周期.

使用:

1.创建btrfs文件系统

mkfs.btrfs命令:
    mkfs.btrfs [OPTINOS] 
    -L 'LABEL':指明卷标
    -d <type> :指明数据存储类型
        raid0,raid0,raid5,raid6,raid10,single
    -m <profilr>:指明元数据存储机制(底层物理存储设备空间够用)
        raid0,raid0,raid5,raid6,raid10,single(单个文件) or dup(冗余)
    -O <feature>:在格式化,指明其他特性
        -O list-all:列出支持的所有feature:

创建意义:基于分区,btrfs文件系统既然支持raid0,raid0,raid5,raid6,raid10 ,把btrfs创建在不同磁盘不同分区有意义吗?
不打算使用raid0,raid0,raid5,raid6,raid10具有冗余能力的磁盘io能力外,可以简单使用多个磁盘组合起来成为一个大分区使用,那么在不同磁盘不同分区创建并无意义.

btrfs filesystem命令:
show:
sync:
df:查看
defragmenting:
resize:
label:指明或显示卷标

管理物理卷(btrfs处于使用挂载状态)
1.添加新的物理卷
dtrfs device
dtrfs device add /dev/sd# /mntdate
2.把原有的数据均衡到新的物理卷
btrfs-balance:start(开始),cancel(暂停),resume(继续),status(状态)
btrfs balance start /mydate

3.移除物理卷
btrfs文件系统移除物理卷,会在操作前,自动移走要移除物理卷里的数据,可直接执行移除命令.

btrfs divice delete
btrfs divice delete /devsdb /mydate

需要改数据的raid级别
btrfs balance start -mconvert=raid5 /mntdate
创建子卷
btrfs subvolume create /挂载点/子卷名

实战:
1.创建

[root@w7 ~]# mkfs.btrfs -L btrfs /dev/sde /dev/sdf (磁盘不分区,直接格式化)
[root@w7 ~]# btrfs filesystem show  查看btrfs
Label: 'btrfs'  uuid: c1e91916-3ab1-40a5-a1b4-b41c11abfbfd
    Total devices 2 FS bytes used 112.00KiB
    devid    1 size 20.00GiB used 2.03GiB path /dev/sde
    devid    2 size 20.00GiB used 2.01GiB path /dev/sdf
btrfs-progs v3.19.1
[root@w7 ~]# blkid /dev/sde   两个磁盘UUID一样
/dev/sde: LABEL="btrfs" UUID="c1e91916-3ab1-40a5-a1b4-b41c11abfbfd" UUID_SUB="a7cd116c-fa7d-44f8-9763-892f2c9549d3" TYPE="btrfs" 
[root@w7 ~]# blkid /dev/sdf   两个磁盘UUID一样
/dev/sdf: LABEL="btrfs" UUID="c1e91916-3ab1-40a5-a1b4-b41c11abfbfd" UUID_SUB="53bcfb31-fe56-4cdb-a987-ac9a9d7b41fd" TYPE="btrfs" 
[root@w7 ~]# mkdir /mntdate
[root@w7 ~]# mount -t btrfs /dev/sde /mntdate/   使用两个磁盘中的任何一个

2.缩减

mount /dev/sde /mntdate/                缩减必须在挂载的情况下
btrfs filesystem show /mntdate             查看btrfs的磁盘情况
btrfs filesystem resize -10G /mntdate    减10G
btrfs filesystem show /mntdate            查看btrfs的磁盘情况,并没有更改        
btrfs filesystem df /mntdate            查看btrfs的各磁盘情况,并没有更改
df -h                                    看当前系统下的挂载磁盘情况,查看btrfs的整体磁盘大小 变30G

3.扩展(必须在物理磁盘的空间范围内,如想继续扩大,需添加新的物理卷)

[root@w7 ~]#mount /dev/sde /mntdate/ 操作必须在挂载的情况下
[root@w7 ~]#btrfs filesystem show /mntdate 查看btrfs的磁盘情况
[root@w7 ~]# btrfs filesystem resize +5G /mntdate
Resize '/mntdate' of '+5G'
[root@w7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 59G 1.8G 57G 3% /
devtmpfs 480M 0 480M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 483M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 111M 87M 57% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sde 35G 18M 28G 1% /mntdate

[root@w7 ~]# btrfs filesystem resize max /mntdate 直接调整为最大
Resize '/mntdate' of 'max'
[root@w7 ~]# df -h 查看文件系统的空间大小为40
Filesystem Size Used Avail Use% Mounted on
/dev/sde 40G 18M 38G 1% /mntdate

4.添加新的物理卷
dtrfs device
dtrfs device add /dev/sd# /mntdate

[root@w7 ~]# btrfs device add /dev/sdb /mntdate
/dev/sdb appears to contain a partition table (dos).
Use the -f option to force overwrite.
[root@w7 ~]# btrfs device add -f /dev/sdb /mntdate
[root@w7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 59G 1.8G 57G 3% /
devtmpfs 480M 0 480M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 483M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 111M 87M 57% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sde 120G 18M 56G 1% /mntdate

2.原有数据均衡到新的物理卷
[root@w7 ~]# btrfs balance start /mntdate
Done, had to relocate 5 out of 5 chunks
[root@w7 ~]# btrfs filesystem show
Label: 'btrfs' uuid: c1e91916-3ab1-40a5-a1b4-b41c11abfbfd
Total devices 3 FS bytes used 1.13MiB
devid 1 size 20.00GiB used 1.03GiB path /dev/sde
devid 2 size 20.00GiB used 2.00GiB path /dev/sdf
devid 3 size 80.00GiB used 2.03GiB path /dev/sdb

btrfs-progs v3.19.1

3.移除物理卷
[root@w7 ~]# btrfs filesystem show
Label: 'btrfs' uuid: c1e91916-3ab1-40a5-a1b4-b41c11abfbfd
Total devices 3 FS bytes used 1.13MiB
devid 1 size 20.00GiB used 1.03GiB path /dev/sde
devid 2 size 20.00GiB used 2.00GiB path /dev/sdf
devid 3 size 80.00GiB used 2.03GiB path /dev/sdb
btrfs-progs v3.19.1
[root@w7 ~]# btrfs device delete /dev/sdb /mntdate 移除物理卷
[root@w7 ~]# btrfs filesystem show
Label: 'btrfs' uuid: c1e91916-3ab1-40a5-a1b4-b41c11abfbfd
Total devices 2 FS bytes used 1.45MiB
devid 1 size 20.00GiB used 1.28GiB path /dev/sde
devid 2 size 20.00GiB used 1.28GiB path /dev/sdf
btrfs-progs v3.19.1

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

(1)
上一篇 2016-09-21 13:26
下一篇 2016-09-21 14:03

相关推荐

  • Linux的SOCKET编程详解

    1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal) UNIX system V有:消息(message)、共享存储区…

    Linux干货 2015-04-10
  • linux进程及作业管理

    linux进程及作业管理 cpu指令权限等级: 特权级也叫hierarchical protection domains, 有的也叫用户态. 是一种用来保护数据和阻止恶意行为的机制. 电脑操作系统提供不同权限访问级别的资源. 特权级分为四级, 特权级0,1,2,3. 在windows中只使用特权级0和特权级3, 特权最高的是特权级0, 可以直接操作硬件, 如…

    Linux干货 2016-09-19
  • 第一次写的linux脚本

    刚开始学的时候,都是一些基本的命令,总是无法把它们联系到一块去,现在刚开始接触脚本,顿时感觉压力好大,基础命令如果记不牢,很有可能就挂了,下面我把近几天学习的一些脚本命令及练习拿来分享一下,供大家参考,同时加深我的记忆。 首先是写脚本的格式,我这里用vim编辑器来写的脚本,因为它的色彩非常明艳,易于区分。基本格式如下: #!/bin/bash 第一行一般为调…

    Linux干货 2017-08-05
  • X-Y Problem

    X-Y Problem 对于X-Y Problem的意思如下: 1)有人想解决问题X2)他觉得Y可能是解决X问题的方法3)但是他不知道Y应该怎么做4)于是他去问别人Y应该怎么做? 简而言之,没有去问怎么解决问题X,而是去问解决方案Y应该怎么去实现和操作。于是乎: 1)热心的人们帮助并告诉这个人Y应该怎么搞,但是大家都觉得Y这个方案有点怪异。2)在经过大量地讨…

    Linux干货 2016-08-15
  • 加密与CA

    一次加密通讯流程: 1、生成数据 2、用单向加密数据生成特征码 3、用自己的私钥加密特征码放在数据后面 4、生成临时会话密钥加密特征码和数据 5、用对方的公钥加密临时密钥 2、私有CA 构建私有CA     1、生成私钥     2、自签署证书 给节点发放证书     …

    Linux干货 2017-02-13
  • 文件属性、文件管理命令及glob 博客作业—-21期网络班第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。    cp  mv  rm      命令格式:      cp [options] … SOURCE DEST    …

    Linux干货 2016-07-16