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檔案系統
使用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 刪除快照