btrfs文件系統簡介

在Linux操作系統中,有許多文件系統,例如常見的ext3、ext4、xfs等,考慮到這些文件系統的限制,一種全新的文件系統被設計出來——btrfs

一、btrfs文件系統簡介

btrfs通常解釋爲b-tree filesystem、better filesystem等,目標是用來解決 ext3文件系統的一些缺陷,例如單一文件系統的限制、總文件系統的限制。btrfs加入了一些核心特性:

核心特性:
    1、可由底層多個物理捲進行支持
    2、數據存儲形式支持RAID,同時在聯機的情況下進行“添加硬盤”、“移除硬盤”、“修改文件系統的大小”
    3、支持寫時複製更新機制,即當我們修改文件時,btrfs先複製一份原文件,對新文件進行修改,結束時,原文件名指向新文件。
    4、快照,支持卷的快照和快照的快照
    5、透明壓縮,即當文件系統存儲文件時,文件系統會自動將文件進行壓縮再存儲,當提取時,文件系統自動進行解壓縮,但是用戶看不到此過程。
    6、子卷和校驗碼

二、btrfs文件系統的創建

工具:
1、redhat 7以上默認支持btrfs文件系統,7以下,需要重新編譯內核。
2、/dev/sdb 、/dev/sdc、/dev/sdd 二塊20G硬盤,一塊10G

 #mkfs.btrfs -L 'test'  /dev/sd[b-c]       ==>對前2塊硬盤進行格式化
 #btrfs filesystem show                    ==>查看所有的btrfs文件系統
   Label: 'test'  uuid: 8631412e-772e-4099-873b-e9ac9da80e54
        Total devices 2 FS bytes used 112.00KiB
        devid    1 size 20.00GiB used 2.03GiB path /dev/sdb
        devid    2 size 20.00GiB used 2.01GiB path /dev/sdc

  Btrfs v3.12
#mount   /dev/sdb  /mydata     ==>掛載文件系統,2塊盤只需掛載一個即可,因爲都是btrfs 。/mydata是自己所創建
#btrfs   filesystem  df   /mydata   ==> 查看掛載的文件系統具體內容
  Data, RAID0: total=2.00GiB, used=768.00KiB
  Data, single: total=8.00MiB, used=0.00
  System, RAID1: total=8.00MiB, used=16.00KiB
  System, single: total=4.00MiB, used=0.00
  Metadata, RAID1: total=1.00GiB, used=112.00KiB
  Metadata, single: total=8.00MiB, used=0.00
  可以看出數據和原數據的組織方式

當我們需要使用btrfs的透明壓縮時

#mount -o compress={ lzo | zlib }  /dev/sdb  MOUNT_POINT
壓縮格式有lzo和zlib

當我們需要對文件系統的大小進行變化時,我們可以用

btrfs filesystem resize [+|-]#G  MOUNT_POINT  ==>調節大小
btrfs filesystem resize max    MOUNT_POINT ==>調整爲邏輯最大

調節後,可以使用df -h進行查看
當我們需要添加新磁盤時

btrfs device add  【option】/dev/sdd  /mydata    ==>在原文件里加入新的設備,option可使用-f進行強制添加

添加新的硬盤後,若想進行硬盤間的數據平衡

開始數據平衡:
    #btrfs balance start   MOUNT_POINT  
執行數據平衡中,查看數據狀態:
    #btrfs balance status  MOUNT_POINT
數據平衡中若要暫停:
    #btrfs balance pause MOUNT_POINT
數據平衡暫停後要重新開啓:
    #btrfs balance resume MOUNT_POINT

若想重新改變數據和原數據的組織方式,可使用命令

btrfs  balance start  -dconvert=raid2 MOUNT_POINT
          ===>修改數據的組織方式爲raid2
btrfs  balance start  -mconvert=raid2 MOUNT_POINT
          ===>修改原數據的組織方式爲raid2
  
 PS:此處需注意,RAID類型和其需要的硬盤數,例如RAID5,需要最少3塊硬盤,否則會報錯。

當我們要移除設備時

btrfs device delete DEVICE_NAME   MOUNT_POINT
  ==> 從文件系統中移除設備,可使用`df -h`查看

三、子卷的管理

創建子卷

btrfs subvolume  create  MOUNT_POINT/sub_name 
      ===> 自動在父卷的掛載目錄下創建一個子卷目錄,名爲su b_name
btrfs subvolume  list  MOUNT_POINT 
      ==>列出掛載的文件系統下的子卷

掛載子卷

mount  -o  subvol=子卷名  /dev/sdb   /mnt
        ==> /dev/sdb中的子卷"xx"掛載到/mnt目錄中
PS:當掛載父卷時,子卷默認被掛載;若只想掛載子卷,則使用

查看子卷和刪除

btrfs subvolume show /mnt 
       ==>查看子卷的信息
btrfs subvolume delete  MOUNT_POINT/sub_name
      ==>刪除子卷

快照的創建和刪除

btrfs  subvolume  snapshot  /MOUNT_POINT/snap_name
         ==> 創建快照
btrfs subvolume delete /MOUNT_POINT/DIR_snap
        ==>刪除快照

四、格式的轉換

ext4文件系統如何轉換爲btrfs?,如何轉回來?
此處對已經移除的硬盤進行操作,命令

btrfs-convert  DEVICE_1
         ==>轉換爲btrfs
btrfs-convert -r  DEVICE_1
        ==>轉換回來

如圖所示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章