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文件系統
使用btrfs filesystem show這個命令來查看一下系統中的使用btrfs的分區
將創建好的文件系統掛載的/mydata目錄
mount -t btrfs /dev/sdb /mydata
讓數據已透明壓縮的方式存儲到此文件系統中
mount -o compress=lzo /dev/sdb /mydata/
縮減文件系統的大小
btrfs filesystem resize -10G /mydata
添加新的磁盤到文件系統中
btrfs device add /dev/sdd /mydata
我們可以將原有數據均衡到三塊磁盤中
btrfs balance start /mydata
當我們需要縮減存儲空間時,可以使用命令直接移除磁盤,被移除的磁盤中的數據會自動同步到其它的磁盤上面
btrfs filesystemd del /dev/sdb /mydata
更能文件系統默認的存儲方式
首先我們先來查看一下文件系統的的基本信息
這裏我們可以看到數據是以single單文件格式存儲的
元數據是以RAID1方式存儲的
下面我們將存儲方式全部更改爲RAID5級別
將第二塊磁盤重新添加進來
btrfs device add /dev/sdb /mydata
btrfs balance start -dconvert=raid5 /mydata
btrfs balance start -mconvert=raid5 /mydata
注意我們在修改raid級別時,要確保底層硬盤的數量能夠組成相應的raid級別
創建子卷
我們在/mydata文件系統下創建兩個子卷test跟test2,並將test單獨掛載到/mnt目錄下
btrfs subvolume create /mydata/test
btrfs subvolume create /mydata/test2
btrfs subvolume list /mydata
我們複製一個文件到test子卷掛載的目錄中,然後掛載/mydata進行驗證一下
如果想要刪除子卷的話只需要使用下面的命令即可
btrfs subvolume delete /mydata/test2
爲子卷創建快照
btrfs subvolume snapshot /mydata/test /mydata/test_snap
爲了驗證我們在test目錄中任意創建一個文件,然後切換到快照中發現新創建的文件不存在即快照創建成功
當我們不需要快照時可以使用一下命令進行快照的刪除
btrfs subvolume delete /mydata/test_sanp 刪除快照