1. 程式人生 > >btrfs檔案系統詳解及使用

btrfs檔案系統詳解及使用

btrfs檔案系統的核心特性

       多物理卷支援:btrfs可由多個底層物理卷組成;支援RAID,以聯機“新增”、移除,修改;

       寫時複製更新機制(CoW):複製、更新及替換指標,而非就地更新;

             修改一個檔案,不知直接修改原始檔,而是將檔案先複製一份,對目標新複製的檔案進行修改,然後將檔名本來是指向原來的檔案空間轉而轉向新空間

       資料及元資料效驗碼:chechsum

       子卷:sub_volume

       快照:支援快照的快照;

       透明壓縮;自動在儲存時實現壓縮,讀取時自動解壓縮

常用命令:

檔案系統建立:

       mkfs.btrfs

           -L 'LABEL'

           -d <type>:raid0,raid1,raid5,raid6,radi10,single

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

屬性檢視:

       btrfs filesystem show

掛載檔案系統:

       mont -t btrfs  /dev/sdb/  MOUNT_POINT

透明壓縮機制:

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

擴充套件檔案系統:

       btrfs  filesystem  resize max /mydata

新增新的磁碟到檔案系統中

        btrfs  device add  /dev/sdd /mydata

 刪除檔案系統中的磁碟:

        btrfs  device delete  /dev/sdd  /mydata

在我們生產環境中可以使用多塊硬碟直接用btrfs檔案系統組合成RAID來使用


示例:接下來我們來演示一下用btrfs檔案系統三塊磁碟組成一個RAID組來使用

先在虛擬機器中新增三塊磁碟大小分別是20G的磁碟,/sdb,/sdc,/sdd

然後將sdb與sdc建立成btrfs檔案系統

image.png


使用btrfs filesystem show這個命令來檢視一下系統中的使用btrfs的分割槽

image.png

將建立好的檔案系統掛載的/mydata目錄

mount  -t  btrfs  /dev/sdb  /mydata

讓資料已透明壓縮的方式儲存到此檔案系統中

mount -o compress=lzo /dev/sdb  /mydata/

縮減檔案系統的大小

btrfs filesystem resize -10G  /mydata

image.png

新增新的磁碟到檔案系統中

btrfs  device add  /dev/sdd  /mydata

image.png

我們可以將原有資料均衡到三塊磁碟中

btrfs balance start  /mydata

當我們需要縮減儲存空間時,可以使用命令直接移除磁碟,被移除的磁碟中的資料會自動同步到其它的磁碟上面

btrfs filesystemd del  /dev/sdb  /mydata

image.png

更能檔案系統預設的儲存方式

首先我們先來檢視一下檔案系統的的基本資訊

這裡我們可以看到資料是以single單檔案格式儲存的

元資料是以RAID1方式儲存的

下面我們將儲存方式全部更改為RAID5級別

image.png

將第二塊磁碟重新新增進來

btrfs device add /dev/sdb  /mydata

btrfs balance start -dconvert=raid5  /mydata

btrfs balance start -mconvert=raid5  /mydata

image.png

注意我們在修改raid級別時,要確保底層硬碟的數量能夠組成相應的raid級別


建立子卷

我們在/mydata檔案系統下建立兩個子卷test跟test2,並將test單獨掛載到/mnt目錄下

btrfs  subvolume create  /mydata/test

btrfs  subvolume create  /mydata/test2

btrfs  subvolume list /mydata

image.png

我們複製一個檔案到test子卷掛載的目錄中,然後掛載/mydata進行驗證一下

image.png

如果想要刪除子卷的話只需要使用下面的命令即可

btrfs  subvolume  delete  /mydata/test2


為子卷建立快照

btrfs subvolume snapshot  /mydata/test   /mydata/test_snap

image.png

為了驗證我們在test目錄中任意建立一個檔案,然後切換到快照中發現新建立的檔案不存在即快照建立成功

image.png

當我們不需要快照時可以使用一下命令進行快照的刪除

btrfs  subvolume delete /mydata/test_sanp 刪除快照