Btrfs文件系統的管理和應用

    Btrfs(我們稱之為Butter FS或者B-tree FS)被稱為新一代的linux文件系統。一直以來,EXT文件系統以其卓越的穩定性成為linux標準的文件系統。但近年來,EXT3暴露出一些擴展性的問題(如單一文件大小限制、總文件系統大小限制等),于是便催生了EXT4。但同時,Btrfs向人們展現出諸多優秀的功能。目前很多廠商都投入到Btrfs文件系統的研發,諸多新的發行版也開始在新版本中支持此文件系統。

    一、btrfs文件系統的特性

      1、多物理卷支持:btrfs可以又多個底層物理卷組成,支持raid,可以聯機“添加”“刪除”“修改”;

      2、寫時復制更新機制(CoW):對數據的修改是遵循復制、修改和替換指針。當我們修改某文件時,不是直接修改源文件,而是先復制一份進行修改,修改完成后將源文件指針指向修改后的文件。

      3、數據及元數據校驗碼:存儲文件時會把數據和元數據的校驗碼通過文件某些擴展保存下來,在讀取文件時快速校驗文件是否損壞,如果損壞會自動嘗試修復文件。

      4、子卷(sub_volume):每個子卷可以單獨掛載。

      5、支持快照功能snapshot。

      6、透明壓縮:自動通過占用cpu時鐘周期的方式對數據自動進行壓縮,讀取的時候自動解壓縮。

    二、btrfs文件系統的管理

      btrfs在centos7以上版本中已經默認支持,對于7以下的版本,需要重新編譯及更新內核,并安裝相關的管理工具才可以使用。

      為了更好的演示btrfs文件系統的相關功能,我們使用centos7系統,并單獨添加一塊硬盤,并劃分三個獨立分區sdb1、sdb2、sdb3。

        blob.png

      1、創建btrfs

        使用mkfs.btrfs命令創建btrfs

        mkfs.btrfs [OPTIONS] '<device>' ['<device>'…]

            常用選項:

            -L|–label <name> 指明卷標

               -m|–metadata <profile> 指明元數據存放機制,Valid values                   are raid0, raid1, raid5, raid6, raid10, single or dup.

            -d|–data <type>指明數據存放機制,Valid values are raid0,                 raid1, raid5, raid6, raid10 or single.

            -O|–features <feature1>[,<feature2>…]文件系統特性開關

                      可以通過mkfs.btrfs -O list-all查看支持哪些特性

          我們將sdb1和sdb2作為底層卷一起創建卷標為mybtrfs的文件系統,且label被掛在sdb1上,大小為兩個分區大小之和。

 blob.png

        通過mount可以直接掛載使用該文件系統:

blob.png

        通過blkid查看兩個分區的文件系統信息:blob.png

        可以看到兩個分區的LABEL和UUID是一樣的,說明兩個分區屬于一個文件系統卷,但是子卷id是不一樣的。

        2、btrfs文件系統的查看和設置

         btrfs filesystem show 查看

            –mounted  查看所有掛載的btrfs

            –all-devices 查看所有的btrfs,默認。

         btrfs filesystem sync 將掛載的文件系統在內存中的數據同步到硬盤

         btrfs filesystem df /PATH 查看已掛載文件系統的數據及元數據使用率情況。

            btrfs filesystem label [<dev>|<mountpoint>] [<newlabel>] 

            查看或修改設備或掛載點的卷標

           btrfs filesystem resize resize [<devid>:]<size>[gkm]|[<devid>:]max <path> 調整文件系統大小

        下面演示的是先減少500m空間然后還原。

    blob.png

        

        3、btrfs設備的查看和設置

        btrfs device add [-Kf] <dev> [<dev>…] <path>

        將分區sdb3加入到文件系統中,可以看到剛加入時候顯示分區用量是0,             這是由于系統沒有做數據均衡(balance),如果分區原來有別的文件系            統,可以用-f參數強制加入。 

blob.png

        btrfs device delete <dev> [<dev>…] <path>

        刪除一個設備,刪除是要保證文件系統容量大于文件總大小,系統會自動            將要刪除設備中的文件移動到其他設備中。

        btrfs device scan [(–all-devices|-d)|<device> [<device>…]]

        掃描btrfs文件系統設備

        btrfs device stats [-z] <path>|<device>

        查看文件系統I/O狀態

        4、btrfs數據均衡

        對于新加入的底層設備,可以通過balance子命令進行將數據均衡到各個設備中。    

        btrfs balance start <path>開始數據均衡

        blob.png

        btrfs balance pause <path>暫停數據均衡,在數據量大且系統繁忙時

        btrfs balance resume <path>繼續暫停的數據均衡

        btrfs balance cancle <path>取消在進行的或暫停的數據均衡

        btrfs balance status <path>查看正在進行或暫停的數據均衡狀態

        通過balance子命令,還可以對數據和元數據的存放機制進行調整

        btrfs balance -dconvert={raid#,single}調整數據存放機制

        btrfs balance -mconvert={raid#,dup,single}調整元數據存放機制

        5、btrfs子卷(sub_volume)管理

        子卷(subvolume)是Btrfs的一個內部概念,每一個子卷構成一個子卷樹。子卷相當于一個子文件系統,子卷中存儲著在文件的元數據信息。這點需要區別于目錄。通過subvolume子命令,可以創建、刪除、查看子卷及快照卷

        btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

        創建子卷,如果dest不指定就指子卷會被創建在當前目錄中

        btrfs subvolume delete [options] <subvolume> [<subvolume>…]

        刪除子卷

        btrfs subvolume list [options] [-G [+|-]value] [-C [+|-]value] [–sort=gen,ogen,rootid,path] <path>查看子卷 

        -G +表示>=,-表示<=,不標注表示=

        blob.png

        創建新的子卷后,如果父卷已經掛載,子卷會自動掛載。如果要單獨掛載子卷,需要先卸載附卷。

        blob.png

        快照(Snapshots)其實就是一種特殊的子卷, 它能記錄下在創建它的那一刻,它所在的父子卷(parent subvolume)的所有內容。 如果想要創建一個文件或系統的備份, 那么就可以通過創建快照來快速實現。

        btrfs subvolume snapshot [-r] <source> <dest>|[<dest>/]<name>

        創建快照卷

        

blob.png

        可以看到快照卷創建完成后自動完成了對于源目錄的備份,當前文件系統有兩個子卷


blob.png

        btrfs subvolume show <subvol-path>查看子卷的詳細信息

        6、將其他文件系統轉換為btrfs

        卸載掛載的文件系統

        強制檢查文件系統 fsck -f dev

        使用btrfs-convert dev裝換

        查看是否轉換成功并掛載看是否正常

        可以使用btrfs-convert -r dev回滾

        blob.png

        

         可以看到轉換后文件系統可以正常掛載且原來文件都保持正常。

      btrfs文件系統目前已經得到了各大linux發行版的支持,雖然目前或者將來很久一段時間EXT文件系統仍然是linux文件系統的主流。但是一個事物必定有自己的生命周期,讓我們對btrfs拭目以待。

            




原創文章,作者:frameboy,如若轉載,請注明出處:http://www.www58058.com/11476

(0)
frameboyframeboy
上一篇 2016-02-14 09:46
下一篇 2016-02-14 09:49

相關推薦

  • http和apache服務器

    超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。 http/1.1 :1997年1月 引入了持久連接(persistent connection) , tcp連接默認不關閉,可以被多個請…

    2017-12-05
  • 馬哥教育網絡班21期+第1周課程練習

    1.描述計算機的組成及其功能。   計算機主要由運算器,控制器,存儲器,輸入設備,輸出設備組成   運算器用來做計算,用來做二進制運算(加法運算)和邏輯運算   控制器用來控制計算機各部件之間的協調,例如運算器想做運算從哪里讀入加數和被加數,寄存在哪里   存儲器分為內存儲器和外存儲器,用來存放數據 內存儲器用于存放計…

    Linux干貨 2016-07-12
  • Yacc 與 Lex 快速入門(詞法分析和語法分析)

    Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 讓我們從 Lex 開始吧。 Lex Lex 是一種生成掃描器的工具。掃描器是一種識別文本中的詞匯模式的程序。 這些詞匯模式(或者常規表達式)在一種特殊的句子結構中定義,這個我們一會兒就要討論。 一種匹配的常規表達式可能會包含相關的動作…

    Linux干貨 2015-06-08
  • Linux磁盤和文件系統管理

    Linux磁盤和文件系統管理 linux磁盤管理 一、Linux設備類型     硬盤有機械硬盤(HDD)和固態硬盤(SSD)之分。機械硬盤即是傳統普通硬盤,主要由:盤片,磁頭,盤片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等     幾個部分組成。  &nbs…

    Linux干貨 2016-04-11
  • 如何新增加磁盤分區掛載

    新增磁盤和分區掛載我們先要了解fdisk的參數以及菜單的操作說明,下面是fdisk的參數說明: ?fdisk參數說明: m :顯示菜單和幫助信息 a :活動分區標記/引導分區 d :刪除分區 l :顯示分區類型 n :新建分區 p :顯示分區信息 q :退出不保存 t :設置分區號 v :進行分區檢查 w :保存修改 x :擴展應用,高級功能 1 ?查看磁盤…

    Linux干貨 2018-03-26
  • linux的管道命令和用戶管理命令

    1、列出當前系統上的所有已經登錄的用戶的用戶名 [root@localhost home]# who | cut -d” ” -f1 | uniq root test root 2、取出最后登錄到當前系統的用戶相關信息 [root@localhost home]# who | tail -1 root pts/3 2017-07-16 19:38 (192.…

    Linux干貨 2017-07-17

評論列表(1條)

  • stanley
    stanley 2016-02-14 09:48

    已置頂

欧美性久久久久