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
下一篇 2016-02-14

相關推薦

  • 15-2用戶系統資源配額

    用戶資源系統配額 在系統中,允許系統用戶使用存儲空間,但是不能限制的讓用戶隨意使用存儲空間,對用戶存儲空間的設定就是用戶資源系統配額。 下面以/home 為例,通常如果系統中有一定的用戶,會把用戶的家目錄作為一個單獨的分區,從而實現更好的管理。下面具體講解如何把用戶家目錄從根系統分區分離出來進行磁盤配額。 1、拿出一個未使用的分區,把用戶家目錄的數據拷貝到新…

    Linux干貨 2016-12-02
  • CentOS 6開機啟動流程實驗篇

    CentOS 6開機啟動流程實驗篇 centos 系統的啟動流程 grub 破壞Linux的核心文件再修復體驗系統啟動流程 CentOS 6開機啟動的具體詳情請參見理論篇! 了解了系統啟動的基本流程,以下我們通過“破壞式實驗”,即破壞系統啟動過程中的一些關鍵環節,使系統無法啟動,然后我們再通過修復這些文件使得系統正常重啟,進而體驗Linux系統的啟動流程,這…

    Linux干貨 2016-09-19
  • vim shell 練習作業題

    vim練習題 1. 復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符   :%s/^[[:blank:]]\+//g 【注意要把/etc/profile復制到/tmp下,cp  /etc/profile  /tmp(盡量不要修改原文件)】 2. 復制/etc/rc.d…

    2017-08-07
  • 網絡概念簡述和Linux網絡管理命令

    網絡概念簡述和Linux網絡管理命令 1. 網絡分類 我們通常接觸到的網絡通常是廣域網、局域網 局域網(Local Area Network,LAN)是指在某一區域內由多臺計算機互聯成的計算機組。 廣域網(Wide Area Network,WAN):網絡跨越國界、洲界,甚至全球范圍。  因特網(Internet)是世界范圍內最大的廣域網。 2. …

    Linux干貨 2016-04-19
  • Linux基礎知識之文本查找和正則表達式擴展正則表達式

    1.什么是正則表達式?      正則表達式就是處理字符串的方法,它是以行為單位來進行字符串的處理行為,正則表達式通過一些特殊符號的復制,讓用戶可以輕易達到查找、刪除、替換某些特定字符串的處理程序。      正則表達式基本上是一種“表示法”,只要工具程序支持這種表示法,那么該工作程序就可以用來作為…

    Linux干貨 2016-08-10
  • N25期–第十周作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 啟動過程 (PC架構)    POST –> Boot Sequence(BIOS) –> Boot Loader (MBR)–>GRUB—> Kernel(ramdisk) –> ro…

    Linux干貨 2017-03-13

評論列表(1條)

  • stanley
    stanley 2016-02-14 09:48

    已置頂

欧美性久久久久