btrfs基础
btrfs文件系统简介
btrfs文件系统:技术预览版(Centos7)
Btrfs(B-tree、Butter FS、Better FS),GPL授权,Orale2007提出是想用来取代Ext文件系统
核心特性:
1、多物理卷支持:支持将多个底层物理设备组织成同一个文件系统,类似VG,btrfs可由多个底层物理卷组成,支持RAID,以联机实现物理卷的"添加、移除、修改"
2、写时复制更新机制(CoW):复制、更新及替换指针,而非"就地更新"
不修改文件时,复制的文件无文件内容,指针仍指向原文件的数据
修改文件时,不立即修改源文件,而是将源文件复制一份,对新生成的复制文件进行修改,然后把文件名指向新生成的复制文件,源文件保留,方便数据恢复.
写时复制特性(Cow)
cp --reflink (只能在btrfs文件系统中使用)
3、数据及元数据校验码机制:存储每个文件时,把文件的元数据的校验码和数据的校验码,通过文件的属性扩展保存下来.访问文件时,通过扫描校验码,可快速判断文件是否受损一旦受损,自动尝试修复极大保证数据的可靠性
4、支持子卷(sub_volume):在某卷上创建诸多子卷,每个子卷可以实现单独使用和挂载
5、快照:基于写时复制机制,比lvm的快照,增加了差异(增量)快照,可以对快照的进行快照.完成对快照后的文件改变进行再次快照.
6、透明压缩机制:在这个分区上存储文件想节约空间,可以把任何数据流发往btrfs文件系统上,自动周期完成数据压缩存放,用户感知不到,读取时自动解压缩.但会消耗cpu的时钟周期
btrfs文件系统使用:
卷创建:
mkfs.btrfs [options] <device> [<device>...]
-L 'Label' 设置卷标
-d <data-profile> 指明数据存储类型{raid0,raid1,raid5,raid6,raid10, single(单文件), dup(冗余)}
-m<metadata-profile> 指明元数据存储类型{raid0,raid1,raid5,raid6,raid10, single, dup}
-O<feature> 在格式化时指明开启的特性
-O list-all 列出所有支持的feature
属性查看:
btrfs filesystem show 此处命令在下面的btrfs中有
列出当前文件系统中的btrfs,并显示信息
加上<DEVICE>将显示指定设备的信息
挂载:
mount [–t btrfs] /dev/sdb MOUNT_POINT
-t可选可不选
以 /dev/sdb 做btrfs系统示例
透明压缩机制:
解释:在写入时自动压缩, 读取时自动解压; [un]compress过程对用户隐藏
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
lzo、zlib压缩算法
btrfs命令、子命令、子子命令:
btrfs filesystem
show 查看所有btrfs系统信息
df <MOUNT_POINT> 查看已挂载具体空间使用情况
resize<MOUNT_POINT> 联机/在线更改大小,减小容量 修改有风险, 操作需谨慎
btrfs device
btrfs device add <NEW_DEVCIE> <MOUNT_POINT>添加一个磁盘到挂载点
btrfs device delete <OLD_DEVCIE> <MOUNT_POINT>删除一个磁盘到挂载点
btrfs-balance 均衡负载
btrfs balance start <MOUNT_POINT> 开始均衡负载过程
state 查看均衡进度
pause 暂停
resume 继续
cancel 取消
负载均衡将会消耗很大一部分的系统性能, 仅建议在不忙时操作; 可使用pause暂停;
btrfs balance start -mconvert=<profile> <MOUNT_POINT> 修改raid级别
<profile>:raid0, raid1, raid10, raid5, raid6, dup,single
-dconvert 数据区 data blocks
-mconvert 元数据区 metadata chunks
-sconvert 系统区 system chunks (requires -f)
btrfs-subvolume 子卷
挂载子卷:
mount -o subvol=' ' /dev/DEVICE MOUNT_POIN
#先查看待挂载的subvolume的id
# btrfs subvolume list /mnt/btrf
ID 256 gen 9 top level 5 path su
或者通过路径挂载也可以
list 显示所有子卷
create 创建子卷
delete 删除子卷
注意:delete子卷不会真正删除物理卷上的数据, 如需要可使用-c
snapshot
btrfs subvolume snapshot /MOUNT_POINT/SUB /MOUNT_POINT/SUB_snapsho
btrfs-convert 转换其他格式到btrfs
btrfs-convert </dev/DEVICE> 转换其他fs到btrfs
-r 回滚到原来的fs
命令注意:
btrfs命令操作对象为挂载后的挂载点,操作非设备文件/dev/sd[a-z]
btrfs基础的更多相关文章
- Linux基础介绍【第九篇】
服务器添加3块磁盘的体系结构 [root@oldboylinux test]# free -m total used free shared buffers cached M ...
- docker基础入门之二
一.docker文件系统: linuxFS包括boot file system 和 root file system boot file system (bootfs),包含bootloader和ke ...
- Linux文件管理浅析(一) _磁盘管理基础
本文主要讨论一些磁盘管理相关的基本概念,同时也是这一系列文章的第一篇,就是下图中的最下一层的一部分. 在Linux中,SATA/USB/SCSI接口都是使用SCSI模块实现的,所以使用这些接口的硬盘在 ...
- 存储那些事儿(五):BTRFS文件系统之Btree结构详解
Btree数据结构可以说是BTRFS文件系统的基础.它提供了一个通用的方式去存储不同的数据类型.它仅仅存储3个数据类型:key, item和block header. btrfs_header的定义如 ...
- OpenStack实践系列①openstack简介及基础环境部署
OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...
- Ceph基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...
- Docker容器学习梳理 - 基础知识(1)
Docker是PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源.Docker是通过内核虚拟化技 ...
- Hadoop学习之路(六)HDFS基础
HDFS前言 HDFS:Hadoop Distributed File System ,Hadoop分布式文件系统,主要用来解决海量数据的存储问题 设计思想 1.分散均匀存储 dfs.blocksiz ...
- Ceph 基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...
随机推荐
- Windows 由于无法验证发布者,windows阻止控件安装怎么办
1 打开Internet选项 2 下载未签名的ACTIVEX控件-设为启动
- 从头认识java-15.1 填充容器(1)-利用Collection构造器的方式
这一章节我们来介绍一下填充容器. 就像数组一样,Arrays.fill是填充方法,在容器里面也有. 1.Collections.nCopies 这种方法是生成某种类型多少个对象,然后我们能够把他放到容 ...
- struts2前端页面读取Clob/BLOB
在通过Struts2标签显示对象的Clob属性值的时候.显示的并非CLOB或者BLOB的内容,而是显示的toString方法的值 比如我在实体中的注解为: @Lob @Column(name = &q ...
- Chrome 消息机制
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59 阅读:1560 评论:0 收藏:0 ...
- Android自定义用户控件简单范例(二)
对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应 ...
- windows下安装MySQL-python遇到的问题
执行安装命令 pip install MySQL-python 一.执行时会报一个错误 error: Microsoft Visual C++ 9.0 is required (Unable to f ...
- 使用JDBC处理MySQL大文本和大数据
LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. ...
- vuejs 中如何优雅的获取 Input 值
http://www.sunzhongwei.com/how-to-get-input-value-in-vuejs
- java 锁机制(synchronized 与 Lock)
在java中,解决同步问题,很多时候都会使用到synchronized和Lock,这两者都是在多线程并发时候常使用的锁机制. synchronized是java中的一个关键字,也就是说是java内置的 ...
- jmeter关联、下载文件、简单压测
关联 一.什么是关联 关联是请求与请求之间存在数据依赖关系,需要从上一个请求获取下一个请求需要回传回去的数据. 简单地说就是在测试过程中有些数据的值会经常发生变化,要获取并使用这些数据,把这个动态的信 ...