设为首页 收藏本站
查看: 255|回复: 0

[经验分享] btrfs文件系统介绍

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-28 09:27:51 | 显示全部楼层 |阅读模式
btrfs 的特性
首先是扩展性 (scalability) 相关的特性。btrfs 最重要的设计目标是应对大型机器对文件系统的扩展性要求。 Extent,B-Tree 和动态 inode 创建等特性保证了 btrfs 在大型机器上仍有卓越的表现,其整体性能而不会随着系统容量的增加而降低。

其次是数据一致性 (data integrity) 相关的特性。系统面临不可预料的硬件故障,Btrfs 采用 COW 事务技术来保证文件系统的一致性。 btrfs 还支持 checksum,避免了 silent corrupt 的出现。而传统文件系统则无法做到这一点。

第三是和多设备管理相关的特性。 Btrfs 支持创建快照 (snapshot),和克隆 (clone) 。 btrfs 还能够方便的管理多个物理设备,使得传统的卷管理软件变得多余。

最后是其他难以归类的特性。这些特性都是比较先进的技术,能够显著提高文件系统的时间 / 空间性能,包括延迟分配,小文件的存储优化,目录索引等。


COW机制:
即每次写磁盘数据时,先将更新数据写入一个新的 block,当新数据写入成功之后,再更新相关的数据结构指向新 block 。


Subvolume:
Subvolume 是很优雅的一个概念。即把文件系统的一部分配置为一个完整的子文件系统,称之为 subvolume 。

采用 subvolume,一个大的文件系统可以被划分为多个子文件系统,这些子文件系统共享底层的设备空间,在需要磁盘空间时便从底层设备中分配,类似应用程序调用 malloc() 分配内存一样。可以称之为存储池。这种模型有很多优点,比如可以充分利用 disk 的带宽,可以简化磁盘空间的管理等。

所谓充分利用 disk 的带宽,指文件系统可以并行读写底层的多个 disk,这是因为每个文件系统都可以访问所有的 disk 。传统的文件系统不能共享底层的 disk 设备,无论是物理的还是逻辑的,因此无法做到并行读写。

所谓简化管理,是相对于 LVM 等卷管理软件而言。采用存储池模型,每个文件系统的大小都可以自动调节。而使用 LVM,如果一个文件系统的空间不够了,该文件系统并不能自动使用其他磁盘设备上的空闲空间,而必须使用 LVM 的管理命令手动调节。

Subvolume 可以作为根目录挂载到任意 mount 点。 subvolume 是非常有趣的一个特性,有很多应用。
假如管理员只希望某些用户访问文件系统的一部分,比如希望用户只能访问 /var/test/ 下面的所有内容,而不能访问 /var/ 下面其他的内容。那么便可以将 /var/test 做成一个 subvolume 。 /var/test 这个 subvolume 便是一个完整的文件系统,可以用 mount 命令挂载。比如挂载到 /test 目录下,给用户访问 /test 的权限,那么用户便只能访问 /var/test 下面的内容了。


快照和克隆:
快照是对文件系统某一时刻的完全备份。建立快照之后,对文件系统的修改不会影响快照中的内容。这是非常有用的一种技术。

比如数据库备份。假如在时间点 T1,管理员决定对数据库进行备份,那么他必须先停止数据库。备份文件是非常耗时的操作,假如在备份过程中某个应用程序修改了数据库的内容,那么将无法得到一个一致性的备份。因此在备份过程中数据库服务必须停止,对于某些关键应用这是不能允许的。

利用快照,管理员可以在时间点 T1 将数据库停止,对系统建立一个快照。这个过程一般只需要几秒钟,然后就可以立即重新恢复数据库服务。此后在任何时候,管理员都可以对快照的内容进行备份操作,而此时用户对数据库的修改不会影响快照中的内容。当备份完成,管理员便可以删除快照,释放磁盘空间。

快照一般是只读的,当系统支持可写快照,那么这种可写快照便被称为克隆。克隆技术也有很多应用。比如在一个系统中安装好基本的软件,然后为不同的用户做不同的克隆,每个用户使用自己的克隆而不会影响其他用户的磁盘空间。非常类似于虚拟机。

Btrfs 支持 snapshot 和 clone 。这个特性极大地增加了btrfs 的使用范围,用户不需要购买和安装昂贵并且使用复杂的卷管理软件。

btrfs 缺省情况下对 metadata 进行 RAID1 保护
前面已经提及 btrfs 将设备空间划分为 chunk,一些 chunk 被配置为 metadata,即只存储 metadata 。对于这类 chunk,btrfs 将 chunk 分成两个条带,写 metadata 的时候,会同时写入两个条带内,从而实现对 metadata 的保护。



btrfs支持压缩
比如一个文件不经过压缩的情况下需要 100 次磁盘 IO 。但花费少量 CPU 时间进行压缩后,只需要 10 次磁盘 IO 就可以将压缩后的文件写入磁盘。在这种情况下,IO 效率反而提高了。当然,这取决于压缩率。目前 btrfs 采用 zlib 提供的 DEFALTE/INFLATE 算法进行压缩和解压。在将来,btrfs 应该可以支持更多的压缩算法,满足不同用户的不同需求。



具体的操作命令:

  • 创建及挂载

fdisk /dev/sdb           # fdisk命令添加个新的分区
mkfs.btrfs /dev/sdb1 -L "test"
         -LLabel   #设置卷标
         -d<type>: raid0, raid1, raid5, raid6, raid10, single
         -m<profile>: raid0, raid1, raid5, raid6, raid10, single, dup
         -O<feature>
                   -Olist-all: 列出支持的所有feature;
挂载文件系统:
         mkdir/btrfsdisk
         格式:mount -t btrfs /dev/sdb MOUNT_POINT
         mount-t btrfs /dev/sdb1 /btrfsdisk/
透明压缩机制:
         格式:mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
         mount-o compress=zlib /dev/sdb1 /btrfsdisk

补充:
# 使用命令将ext4分区转换为btrfs文件系统,使用这种方法还可以将系统回滚到ext格式,且分区中的数据保持原样。
将ext类型转为btrfs文件系统: btrfs-convert /dev/sd*
如果需要回滚到ext,只要执行btrfs-convert -r /dev/sd*
btrfs常用的几个子命令如下:
子命令功能
filesystem                管理一个btrfs文件系统,包括标签设置/同步等等
[filesystem]balance  Balance btrfs filesystem chunks across singleor several devices.
device                       Manage devices managed by btrfs, includingadd/delete/scan and so on.
subvolume                Create/delete/list/manage btrfs subvolume.

filesystem
属性查看:
         格式:btrfsfilesystem show[--mounted|--all-devices|<path>|<uuid>|<device>|<label>]
         btrfsfilesystem show
         btrfsfilesystem show -d           # 显示详细情况
修改卷标:
         格式:btrfsfilesystem label[<dev>|<mount_point>] [newlabel]
         btrfsfilesystem label /btrfsdisk "BTRFS"
查看使用率:(data、medata、system等等)
         格式:df<path> [<path>...]
         btrfsfilesystem df /btrfsdisk/
在线磁盘整理:
         格式:btrfs filesystemdefragment [options] <file>|<dir> [<file>|<dir>...]
         btrfsfilesystem defragment /btrfsdisk/sub1
调整大小resize:
         格式:btrfs filesystem resize [<devid>:]<size>[gkm]|[<devid>:]max<path>
                  # 可以使用btrfs filesystemshow 命令查看到uuid
balance
在设备之间平衡数据块:
         格式: [filesystem] balance start [options] <path>
         btrfsfilesystem balance start -v /btrfsdisk/
         Options:
                   -d[filters]
                            acton data chunks
                   -m[filters]
                            acton metadata chunks
                   -s[filters]
                            acton system chunks (only under -f)
                   -v   be verbose
                   -f   force reducing of metadata integrity
查看数据块平衡的状态信息:
         格式:btrfs [filesystem] balance status [-v] <path>
         btrfsfilesystem balance status /btrfsdisk/

device
添加设备到btrfs文件系统:
         格式:btrfs device add [-Kf] <dev> [<dev>...] <path>
         btrfsdevice add -f /dev/sdb2 /btrfsdisk/
删除设备从指定的btrfs文件系统:
         格式:btrfs device delete <dev> [<dev>...] <path>
         btrfsdevice del /dev/sdb2 /dev/sdb3 /btrfsdisk/
扫描btrfs文件系统:
         格式:btfrs device scan [device]
         btrfsdevice scan /dev/sdb1

subvolume
创建子卷:
         格式:btrfs subvolume create <dest/name>
         btrfssubvolume create /btrfsdisk/SB2
删除子卷:
         格式:btrfssubvolume delete <dest/name>
         btrfssubvolume delete /btrfsdisk/SB3
列出有哪些子卷:
         格式:btrfssubvolume list <path>
         btrfssubvolume list /btrfsdisk
显示子卷详情:
         格式:btrfssubvolume show <path>
         btrfssubvolume show /btrfsdisk/SB1

snapshot
创建快照
         例:btrfssubvolume snapshot -r /btrfsdisk/sub2 /btrfsdisk/sub1/snap2


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119770-1-1.html 上篇帖子: DNS基本工作原理,及正反解析,主从同步,子域授权和视图 下篇帖子: Linux用户及权限管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表