btrfs文件系統管理及應用

btrfs文件系統

Btrfs(一般念成ButterFS),由Oracle2007年宣佈並進行中的COW(copy-on-write)文件系統。目標是取代Linux目前的ext3文件系統,改善ext3的限制,特別是單一文件大小的限制,總文件系統大小限制以及加入文件校驗和特性。加入目前ext3/4未支持的一些功能,例如可寫的磁盤快照(snapshots),以及支持遞歸的快照(snapshots of snapshots),內建磁盤陣列(RAID)支持,支持子卷(Subvolumes)的概念,容許在線調整文件系統大小node

核心特性:ide

1)多物理卷支持:btrfs可由多個底層物理卷組成;支持RAID,以聯機「添加」、「移除」,「修改」;ui

2)寫時複製更新機制(CoW):複製、更新及替換指針,而非「就地」更新;(寫時複製:就是在修改或者加入內容時,不在原文件中修改,而是複製一份到新空間進行操做,完成後文件名指向新的空間)spa

   3)數據及元數據校驗碼:checksum3d

   4)子卷:sub_volume指針

   (5)快照:支持快照的快照;htm

   6)透明壓縮:blog

   (7Btrfs 還可以方便的管理多個物理設備,使得傳統的卷管理軟件變得多餘。遞歸

 

btrfs文件系統在CentOS中沒有,須要從新編譯和更新內核,或者使用CentOS7進行操做:get

btrfs文件系統的建立:

     mkfs.btrfs

       -L 'LABEL' 指明卷標

        -d <type>: raid0,raid1, raid5, raid6, raid10, single,指明數據存放時的類型

        -m <profile>: raid0,raid1, raid5, raid6, raid10, single, dup

            指明元數據的存放格式

         -O <feature>(開啓指定的特性)

         -O list-all: 列出支持的全部feature(特性)

掛載文件系統:    

    btrfs filesystem show [--mounted|--all-devices|<path>|<uuid>|<device>|<label>]

    btrfs filesystem show :查看btrfs文件系統的信息,默認所有的btrfs信息還能夠指定

                上面的選項來進行

        子命令還有df resize等

    btrfs filesystem還有其餘選項可使用,若是想了解更多使用 man 8 btrfs filesystem

    查看就能夠了

    btrfs  還有子命令:filesystem, device, balance, subvolume

    btrfs device add /dev/sdd :增長一個設備到btrfs系統中

    btrfs device delete /dev/sdd mydata/:移除設備

    btrfs balance [...] :實現均衡操做的,就是你新加入一個硬盤,把之前的硬盤中的數據平分到新的設備中

    btrfs subvolume [create|delete|list|...] :建立和管理子卷的

  透明壓縮機制:就是掛載後,在裏面存放的文件都是壓縮後的

mount -o compress={lzo|zlib} DEVICE MOUNT_POINT

       



下面以CentOS7爲例,演示一下從頭開始構建btrfs:

   如下操做在VM虛擬機中的CentOS7中操做的,如使用的版本不一樣,僅供參考

    一、首先加幾個虛擬硬盤進來

         在VM主頁中點擊「編輯此虛擬機」,而後在彈出的窗口中點擊「添加」,

         而後選擇硬盤,後面根據提示作就好了,添加三塊虛擬硬盤,大小爲20G,

         添加完成後,啓動虛擬機就好了

    二、而後建立btrfs

        a、首先使用 fdisk -l 查看下硬盤是否正常加載,

        wKioL1XhndXR-61jAAKJca8EuRA044.jpg

        /dev/sdb,/dev/sdc,/dev/sdd,這三個設備是咱們新添加的硬盤,

        /dev/sda這個是原有硬盤

        b、而後使用 mkfs.btrfs 命令把/dev/sdb,/dev/sdc這兩個設備建立成btrfs

       wKioL1Xhn5aishWtAAEtVWYAGxc175.jpg

            這就算建立成功了,使用btrfs filesystem show 命令查看下

            wKiom1XhojvQ97VXAADjOuAW1Ww249.jpg

            

        c、掛載

          建立mydata/目錄,並掛載,查看(因截圖太大,就直接把信息複製上來了)

          [root@localhost ~]# mount -t btrfs /dev/sdb mydata/

          [root@localhost ~]# mount

          proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

               ...

           /dev/sdb on /root/mydata type btrfs(rw,relatime,seclabel,space_cache)

           看到上面的字段就能夠看到,掛載成功了,進入mydata目錄就能夠在裏面進行

           操做了

           d、調整文件系統的大小

            先查看下

            wKiom1XhrOvAMuqOAAEK3Ue5jZ0846.jpg

            使用命令btrfs filesystem resize -10G mydata/ 給文件系統減小並查看

            wKioL1Xhr7SzCxmWAAErxsDyaY8009.jpg

            能夠看到size變成30G了,說明操做成功了

            也可使用df -lh進行查看

            wKiom1XhrjCA7iodAAFLQgEXQpU584.jpg
              擴大文件系統的操做和減小同樣,

            使用命令btrfs filesystem resize +5G  mydata/ ,在這裏就不演示了

            e、增長設備到剛建立的btrfs中

               使用命令btrfs device add /dev/sdd,並查看

            wKiom1XhsIuxQyBNAAFzgb-nUPs985.jpg

             要使用btrfs的均衡分配,須要先打開balance功能

            使用btrfs balance start mydata/

            wKioL1XhtByChfFWAABefrCV4Xo890.jpg

            btrfs balance還有其餘子命令,若是使用到的話,

            使用man btrfs-balance查看便可

            移除設備,使用btrfs device delete /dev/sdd mydata/

            wKioL1XhtYHDbPN_AAFs8w0QQ_w548.jpg

            能夠看到移除成功了,從新加進來

       指定元數據的存儲格式, btrfs balance start -mconvert=raid5 mydata/

       指定數據的存儲格式, btrfs balance start -dconvert=raid5 mydata/

       wKiom1XhtrXzhw7tAACvEHmvo-E623.jpg

       可是你要肯定你的btrfs裏有三塊硬盤,要否則改不成raid5,會報錯的,

       f、建立子卷

        使用btrfs subvolume create mydata/logs 建立一個叫logs的子卷

        使用btrfs subvolume list mydata/ 查看btrfs中的全部子卷的列表信息

        wKioL1Xhuyzh2QXNAACsQLHRSIY352.jpg

        掛載子卷,若是掛載的是父卷,裏面的子卷都會被掛載,

        若是隻想掛載子卷不掛載父卷,

        首先把父卷卸載,而後使用mount -o subvol=logs /dev/sdb /mnt掛載子卷,

        而後複製進去一個文件,檢測下可否正常使用

       wKioL1XhvTqhGAANAAC0E2I6Vb0849.jpg

       能查看出來,證實能夠正常訪問

       把子卷卸載,掛載父卷看是否能正常訪問

       wKioL1Xhvq6i-fkbAAB6aUAmtCk883.jpg

        能查看到,證實能正常訪問

        btrfs subvolume delete mydata/logs 刪除子卷的命令

       建立快照btrfs subvolume snapshot mydata/logs mydata/logs2

           wKioL1XhwUOCbDpxAAGJpU6c5J0799.jpg

相關文章
相關標籤/搜索