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 的主要好處在于查找,插入和刪除操作都很高效??梢哉f 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 保存的內容不會被后續的寫操作所改變。

原創文章,作者:會飛的豬,如若轉載,請注明出處:http://www.www58058.com/11217

(0)
會飛的豬會飛的豬
上一篇 2016-01-19 20:59
下一篇 2016-01-21 14:03

相關推薦

  • 功能強大的Linux文本編輯器之Vim的使用

    VIM編輯器   Vim章節的內容:    使用vi和vim的三種主要模式    移動光標,進入插入模式    改變、刪除、復制文本    撤銷改變    搜索文檔    vim寄存器    可視化和多窗口 &…

    Linux干貨 2016-08-12
  • 學會在命令行中獲取幫助

    在命令行中獲取幫助是學習Linux必須get的一項技能,學會之后受益多多。  Linux中的命令有內部命令和外部命令之分,通常使用 type 命令來區分 除此之外還可以使用 enable 命令來查看內部命令 enable命令后的許多option可以對這些內部命令了解更多,比如: 想要知道內部命令有多少個 enable -a |wc -l 禁用某個內…

    2017-07-15
  • N25-第5周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行 [root@jizo ~]# grep -E '^[[:space:]]+.*' /boot/grub/gurb.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,…

    Linux干貨 2017-01-09
  • DNS中view的實現

    [root@localhost /var/named]# ll total 32 -rw-r–r–. 1 root ?root ??173 Jan 20 14:46 magedu.com.zone -rw-r–r–. 1 root ?root ??173 Jan 20 14:46 magedu.com.zone…

    2018-01-22
  • 2018/8/3作業

    問題: 在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。 groupadd g1         &…

    Linux干貨 2016-08-05
  • 目錄的三權限之——R,W,X之間的愛恨糾葛!

    目錄的三權限之——R,W,X之間的愛恨糾葛! 文件的權限我們一般都很容易了解,但是目錄的權限,我們可能很多人就容易含混不清了,而許多時候目錄的權限也是非常重要的。 因此我專門做了一個關于目錄其他用戶的權限實驗,以此來解開目錄權限的神秘面紗。在此我分別設定了三種情況,看看當某個目錄/testdir對其他用戶user1僅沒有R,W,X權限時,其他用戶對此目錄有什…

    Linux干貨 2016-08-08
欧美性久久久久