Linux学习笔记之Btrfs 文件系统
2024-09-04 13:02:25
0x00 btrfs文件系统简介
btrfs文件系统:技术预览版(Centos7)
Btrfs(B-tree、Butter FS、Better FS),GPL授权,Orale2007提出是想用来取代Ext文件系统
0x01 btrfs核心特性
# 1、多物理卷支持:支持将多个底层物理设备组织成同一个文件系统,类似VG,btrfs可由多个底层物理卷组成,支持RAID,以联机实现物理卷的"添加、移除、修改" # 2、写时复制更新机制(CoW):复制、更新及替换指针,而非"就地更新"
# 不修改文件时,复制的文件无文件内容,指针仍指向原文件的数据
# 修改文件时,不立即修改源文件,而是将源文件复制一份,对新生成的复制文件进行修改,然后把文件名指向新生成的复制文件,源文件保留,方便数据恢复.
# 写时复制特性(Cow)
# cp --reflink (只能在btrfs文件系统中使用) # 3、数据及元数据校验码机制:存储每个文件时,把文件的元数据的校验码和数据的校验码,通过文件的属性扩展保存下来.访问文件时,通过扫描校验码,可快速判断文件是否受损一旦受损,自动尝试修复极大保证数据的可靠性 # 4、支持子卷(sub_volume):在某卷上创建诸多子卷,每个子卷可以实现单独使用和挂载 # 5、快照:基于写时复制机制,比lvm的快照,增加了差异(增量)快照,可以对快照的进行快照.完成对快照后的文件改变进行再次快照. # 6、透明压缩机制:在这个分区上存储文件想节约空间,可以把任何数据流发往btrfs文件系统上,自动周期完成数据压缩存放,用户感知不到,读取时自动解压缩.但会消耗cpu的时钟周期
0x02 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]
最新文章
- JavaScript实现HTML5烟花特效
- java 动态创建数据库和动态连接数据库
- mod_slotmem mod_manager mod_proxy_cluster mod_advertise Permission denied
- JQuery UI进度条——Progressbar
- windows批处理研究_不断更新
- 【原创】bootstrap框架的学习 第五课
- java 操作 redis
- 整合spring+mybatis遇到的问题01
- (转)Java线程:新特征-线程池
- CNN详解
- python_5_模块
- Python内置函数(41)——max
- idea 2018.1 for mac破解激活方法---到2099
- 关于sqlserver数据库max()方法的使用
- java的TCP和UDP编程
- 九、uboot 代码流程分析---relloc_code
- 39)django-XSS 过滤
- DLL的Export和Import及extern ";C";
- Python代码规范与命名规则
- 微信小程序开发(request请求后台获取不到data)
热门文章
- 关于如何修改一张表中所有行与选定字段的同sql多行语句的添加方法
- Nginx 高级配置-状态页配置
- JS高阶---数据、变量、内存
- pydev离线安装及安装后eclipse中不显示解决办法
- ACE在Ubuntu下的安装和编译
- 安装Ruby 2.3.0
- SUSE12.2 编译usbutils
- Django单元测试总结
- 【C/C++开发】emplace_back() 和 push_back 的区别
- 《Linux就该这么学》培训笔记_ch04_Vim编辑器与Shell命令脚本