Btrfs -- B-Tree File System 下一代磁盘文件系统介绍 王坤山 淘宝技术

Download Report

Transcript Btrfs -- B-Tree File System 下一代磁盘文件系统介绍 王坤山 淘宝技术

Btrfs -- B-Tree File System
下一代磁盘文件系统介绍
王坤山
淘宝技术研发部核心系统研发组
什么是文件系统
●
存储文件的空间
●
文件
●
●
目录
●
●
由字节构成的数据
目录可以包含其他文件
和其他目录
管理文件的增、删、
读、写、访问权限
什么是文件系统( 2 )
●
●
●
对于磁盘文件系统:
物理位置和逻辑文件
间的映射
管理磁盘空间
磁盘
什么是文件系统( 3 )
●
●
限制
问题
●
最大磁盘大小
●
速度需求的增加
●
最多文件个数
●
空间需求的增加
●
最大文件大小
●
应用特征
存储效率
●
●
●
大文件 / 小文件
访问效率
●
目录中大量文件
–
–
●
如:大量小文件
大量文本文件
安全性、稳定性
–
故障恢复
举例
●
●
FAT
●
EXT3
●
单向链表存储
●
日志( journal )
●
碎片 / 性能瓶颈
●
快速故障恢复
EXT2
●
多级索引存储
–
–
更快随机访问
索引仍需线性查找
●
EXT4
●
extent
●
大文件的存储
新型文件系统
●
ZFS
●
●
LogFS
●
●
实现了写时复制、快照,支持大存储量
为 Flash 存储器(如 u 盘、 SSD )优化。
ReiserFS
●
●
为大量的小文件优化。
btrfs
●
...
Btrfs -- B-Tree File System
●
支持更大的存储量
●
卷最大 16EB 、单个文件最大 16EB
–
–
●
BTree :更快的目录查找速度
●
●
ext4 单个文件最大 16TB.
ext3 卷最大 32TB, 单文件最大 2TB
更好地处理大量文件的情形
更高效的存储
●
COW ( Copy On Write )
●
extent 适合大文件存储
Btrfs -- B-Tree File System (2)
●
多设备支持
●
●
通过多设备,增加存储容量,以及安全性
快照
●
保存整个文件系统某一时刻所有文件
●
无需占用额外空间(!!)
●
更快,更方便的备份 / 回复
Btrfs -- B-Tree File System (3)
●
文件压缩
●
●
校验和
●
●
对于文本文件:节省空间
检测损坏
在线 fsck (文件系统检查)、碎片整理
●
减少下线时间
BTRFS 的使用
用户态工具
文件系统的创建、挂载、卸载
子卷、快照的建立、删除
跨设备格局的建立、添加设备、删除设备
创建文件系统
●
又称:格式化
[root@localhost ~]# fdisk -l
Device Boot
Start
End
/dev/sda1 *
2
4569
Blocks Id System
36692460
7 HPFS/NTFS
/dev/sda2
4570
4633
512000 83 Linux
/dev/sda3
4633
12282
61440000 83 Linux
/dev/sda4
12282
19453
57595904
/dev/sda5
Solaris
12282
13327
8388608 82 Linux swap /
/dev/sda6
13327
19453
49205248 83 Linux
5 Extended
创建文件系统( 2 )
●
在 /dev/sda6 分区上创建 btrfs 文件系统
mkfs.btrfs /dev/sda6
挂载文件系统
●
挂载点的概念
挂载点
挂载文件系统( 2 )
●
mount /dev/sda6 /mnt/btr1
/
mnt
btr1
/dev/sda6
/dev/sda6
使用、卸载文件系统
●
在 mount /dev/sda6 /mnt/btr1 之后
●
/mnt/btr1 目录上挂载了文件系统
●
umount /dev/sda6
●
或 umount /mnt/btr1
子卷的概念
●
●
子卷就像目录
●
可以包含文件、目录
●
可以像目录一样创建
●
没有 ` 格式化子卷 '
子卷没有 ` 包含 ' 关系
共享
节点
卷 ( 文件系统)
默认子卷
子卷 2
子卷 3
子卷的创建 / 使用 / 删除
●
btrfs subvolume create /mnt/btr1/foo
●
类比 mkdir /mnt/btr1/foo
●
子卷的路径是 foo
●
/mnt/btr1/foo/aaa/bbb/ccc
●
●
btrfs subvolume delete /mnt/btr1/foo
●
●
类比 rmdir /mnt/btr1/foo
默认子卷 /mnt/btr1
快照的概念
●
完整备份
●
访问、恢复
●
●
经常的、高频的操作
全盘复制?不好
●
cp -r
●
btrfs 的快照
●
快照是一个子卷
●
复制另一个子卷
●
共享大部分内容
●
写时复制( COW )
快照图示
原始子卷
1
1
1
1
1
1
1
1
快照图示 2
原始子卷
快照
1
2
1
1
2
1
2
1
1
写时复制( COW )图示
原始子卷
快照
1
2
1
1
2
1
1
2
1
2
创建快照
●
btrfs subvolume snapshot /mnt/btr1/foo /mnt/btr1/bar
●
类比 :cp -r /mnt/btr1/foo /mnt/btr1/bar
●
要求: /mnt/btr1/foo 必须是子卷,不能是普通目录
●
/mnt/btr1 本身也是子卷(默认子卷),可以快照
●
注:快照一旦创建,就是一个普通的子卷
Questions / Answers
●
●
Btrfs 特性
●
支持更大的存储空间 ; 更高效的小文件、大文件存储
●
快照、写时复制
命令行工具使用
●
mkfs
●
子卷操作、快照操作