感谢支持
我们一直在努力

Btrfs文件系统在CentOS中的应用

Btrfs作为Linux下一代文件系统与zfs有着许多相似的功能。


扩展性 (scalability) 相关的特性,btrfs 最重要的设计目标是应对大型机器对文件系统的扩展性要求。 Extent,B-Tree 和动态 inode 创建等特性保证了 btrfs 在大型机器上仍有卓越的表现,其整体性能而不会随着系统容量的增加而降低。


其次是数据一致性 (data integrity) 相关的特性。系统面临不可预料的硬件故障,Btrfs 采用 COW 事务技术来保证文件系统的一致性。


btrfs 还支持 checksum,避免了 silent corrupt 的出现。而传统文件系统则无法做到这一点。


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


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


btrfs 文件系统中所有的 metadata 都由 BTree 管理。使用 BTree 的主要好处在于查找,插入和删除操作都很高效。可以说 BTree 是 btrfs 的核心。


它的特性我已经download一篇官方的文档,以供参照


下面的操作是为了使CentOS能够方便使用btrfs


我的操作系统是centos6.2内核版本是2.6.32


yum install rpm-build fuse-devel libtool libtool-ltdl-devel boost-devel libedit-devel git e2fsprogs-devel


wget http://www.kernel.org/pub/linux/kernel/people/mason/btrfs/btrfs-progs-0.19.tar.gz


wget http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.14.tar.gz


tar xvzf  e2fsprogs-1.41.14.tar.gz


进入e2fsprogs-1.41.14目录后执行


/configure –prefix=/usr/local/e2fsprogs


make


make install


然后把uuid目录拷过去


cp -r lib/uuid/    /usr/include/  \\这一步是为下面编译准备uuid/uuid.h库的


ln -sv /lib/ln -s /lib/libuuid.so.1.3.0 /usr/lib/libuuid.so  \\这步是为了防止编译时报错can not find -luuid 这个错误的


tar xf btrfs-progs-0.19.tar.gz


cd btrfs-progs-0.19


在btrfsck.c中包含头文件stat.h 格式如下        \\这步是为了防止编译中报错


#including <sys/stat.h>


make


make install


试使用btrfs文件系统


关机添加一块新磁盘 系统默认识别为/dev/sdb


Centos默认将btrfs编译成模块,如果想使用需要事先加载



  1. [root@localhost ~]# modprobe btrfs 
  2.  
  3. [root@localhost ~]# lsmod |grep btrfs 
  4.  
  5. btrfs                 534417  0 
  6.  
  7. zlib_deflate           19141  1 btrfs 
  8.  
  9. lzo_decompress          2155  1 btrfs 
  10.  
  11. lzo_compress            1979  1 btrfs 
  12.  
  13. libcrc32c                841  1 btrfs 

分区 #fdisk /dev/sdb  建立一个分区1 使用默认的设置


格式化


#mkfs.btrfs /dev/sdb1



  1. [root@localhost ~]# btrfs-debug-tree /dev/sdb1 
  2.  
  3. root tree 
  4.  
  5. leaf 29364224 items 9 free space 2349 generation 7 owner 1 
  6.  
  7. fs uuid c6fab1d8-9a6c-47bb-86d9-55a7dac98bff 
  8.  
  9. chunk uuid a877c5ab-4296-4ff0-9f8e-9d6d26757a0a 
  10.  
  11.          item 0 key (EXTENT_TREE ROOT_ITEM 0) itemoff 3756 itemsize 239 
  12.  
  13.                    root data bytenr 29368320 level 0 dirid 0 refs 1 
  14.  
  15.          item 1 key (DEV_TREE ROOT_ITEM 0) itemoff 3517 itemsize 239 
  16.  
  17.                    root data bytenr 29372416 level 0 dirid 0 refs 1 
  18.  
  19.          item 2 key (FS_TREE INODE_REF 6) itemoff 3500 itemsize 17 
  20.  
  21.                    inode ref index 0 namelen 7 name: default 
  22.  
  23.          item 3 key (FS_TREE ROOT_ITEM 0) itemoff 3261 itemsize 239 
  24.  
  25.                    root data bytenr 29360128 level 0 dirid 256 refs 1 
  26.  
  27.          item 4 key (ROOT_TREE_DIR INODE_ITEM 0) itemoff 3101 itemsize 160 
  28.  
  29.                    inode generation 4 size 0 block group 0 mode 40555 links 1 
  30.  
  31.          item 5 key (ROOT_TREE_DIR INODE_REF 6) itemoff 3089 itemsize 12 
  32.  
  33.                    inode ref index 0 namelen 2 name: .. 
  34.  
  35.          item 6 key (ROOT_TREE_DIR DIR_ITEM 2378154706) itemoff 3052 itemsize 37 
  36.  
  37.                    location key (FS_TREE ROOT_ITEM 18446744073709551615) type 2 
  38.  
  39.                    namelen 7 datalen 0 name: default 
  40.  
  41.          item 7 key (CSUM_TREE ROOT_ITEM 0) itemoff 2813 itemsize 239 
  42.  
  43.                    root data bytenr 29376512 level 0 dirid 0 refs 1 
  44.  
  45.          item 8 key (DATA_RELOC_TREE ROOT_ITEM 0) itemoff 2574 itemsize 239 
  46.  
  47.                    root data bytenr 29380608 level 0 dirid 256 refs 1 
  48.  
  49. chunk tree 
  50.  
  51. leaf 20971520 items 6 free space 3283 generation 5 owner 3 
  52.  
  53. fs uuid c6fab1d8-9a6c-47bb-86d9-55a7dac98bff 

btrfs-debug-tree 这个命令能够显示各个 BTree 的变化情况,从而进一步理解每一个文件系统功能的内部实现细节


创建 Snapshot


下面的例子中,创建快照 snap1 时系统存在 2 个文件。创建快照之后,对 test1 的内容进行修改。再回到 snap1,打开 test1 文件,可以看到 test1 的内容依旧是之前的内容。



  1. #ls /Bfs 
  2.  test1 test2 
  3.  #vi test1 
  4.  this is a test 
  5.  #btrfsctl – s snap1 /Bfs 
  6. #vi test1 
  7.  Test1 is modified 
  8.  #cd /Bfs/snap1 
  9.  #cat test1 
  10.  this is a test 

可以从上面的例子看到,快照 snap1 保存的内容不会被后续的写操作所改变。

赞(0) 打赏
转载请注明出处:服务器评测 » Btrfs文件系统在CentOS中的应用
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏