您好,登錄后才能下訂單哦!
btrfs文件系統:
Btrfs(B-tree 檔案系統, 通常念成 Butter FS,Better FS 或 Btree FS),采用 GPL 授權,是由 Oracle 于 2007 年宣布并進行中的支持寫入 時復制(COW)的文件系統。目標是取代 Linux 目前的 ext3 文 件系統,改善 ext3 的限制,特別是單個文件的大小,總文件系統大小或文件檢查和加入 ext3 未支持的功能,如可寫快照(writable snapshots)、快照的快照 (snapshots of snapshots)、內建磁盤陣列(RAID),以及子卷 (subvolumes)。Btrfs 也宣稱專注于“容錯、修復及易于管理”。
核心特性:
多物理卷支持:btrfs可由多個底層物理卷組成;支持RAID,以聯機“添加”、“移除”,“修改”;
寫時復制更新機制(CoW): 所謂 COW,即每次寫磁盤數據時,先將更新數據寫入一個新的 block,當新數據寫入成功之后,再更新相關的數據結構指向新 block 。復制、更新及替換指針,而非“就地”更新;
數據及元數據校驗碼(checksum):btrfs在讀取數據的同時會讀取其相應的 checksum 。如果最終從磁盤讀取出來的數據和 checksum 不相同,btrfs 會首先嘗試讀取數據的鏡像備份,如果數據沒有鏡像備份,btrfs 將返回錯誤。寫入磁盤數據之前,btrfs 計算數據的 checksum 。然后將 checksum 和數據同時寫入磁盤。
子卷:Subvolume 是很優雅的一個概念。即把文件系統的一部分配置為一個完整的子文件系統,稱之為 subvolume 。
采用 subvolume,一個大的文件系統可以被劃分為多個子文件系統,這些子文件系統共享底層的設備空間,在需要磁盤空間時便從底層設備中分配,類似應用程序調用 malloc() 分配內存一樣。可以稱之為存儲池。這種模型有很多優點,比如可以充分利用 disk 的帶寬,可以簡化磁盤空間的管理等
快照:支持快照的快照;
透明壓縮:就是用戶調用數據的過程其實是一個解壓縮的過程,但是這個過程,對用戶來說是透明的,是自動進行的。
多設備管理:Btrfs 支持動態添加設備。用戶在系統中增加新的磁盤之后,可以使用 btrfs 的命令將該設備添加到文件系統中。為了靈活利用設備空間,Btrfs 將磁盤空間劃分為多個 chunk 。每個 chunk 可以使用不同的磁盤空間分配策略。比如某些 chunk 只存放 metadata,某些 chunk 只存放數據。一些 chunk 可以配置為 mirror,而另一些 chunk 則可以配置為 stripe 。這為用戶提供了非常靈活的配置可能性。
文件系統創建:
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;
掛載文件系統:
mount -t btrfs /dev/sdb MOUNT_POINT
透明壓縮機制:
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
一下是btrfs filesystem子命令的用法:
btrfs filesystem show:顯示詳細信息
btrfs filesystem show --mounted:顯示已經掛載的文件系統的詳細信息
btrfs filesystem show --all-device:顯示所有文件系統的詳細信息
btrfs filesystem show /PATH: 顯示指定的文件系統的詳細
btrfs filesystem label:顯示文件系統的label
btrfs filesystem resize:縮減或者增大文件系統的容量
btrfs filesystem df:顯示已經掛載的文件系統的信息
btrfs filesystem sync同步操作
接下來我們來操作操作吧如下圖所示范:
1.mkfs.btrfs -L mydata /dev/sdb /dev/sdc:就是把sdb和sdc兩塊硬盤格式化成以卷標為mydata的文件系統
2.mount /dev/sdb 或者/dev/sdc都可以掛載
3.btrfs filesystem df /mnt 可以看到掛載文件系統的詳細信息
接著我們用blkid命令分別查看一下/dev/sdc和/dev/sdb
從下圖中我們可以發現他們的UUID都是一樣的,但是子UUID是不一樣的,因此它是支持多卷的。
btrfs filesystem resize -10G /MYDATA df -lh 通過這兩個命令可以看到Btree系統的size減小到30G了
btrfs filesystem resize +10G /MYDATA df -lh 然后我給加回到40G了
如下圖:
現在我們在認識認識btrfs device 下面的子命令吧:
btrfs device add <device> <path>:添加設備
btrfs device delete <device> <path>:從文件系統中移除或者去除設備
btrfs device ready <device>:
btrfs device stats [-z] <path>|<device>:
從上面的執行結果中,可以看到新增加的/dev/sdd的利用率是0,怎么樣均衡的分布,接下來我們就用到btrfs balance 的子命令了:
btrfs balance start:開始均衡文件系統
btrfs balance start <path> -d<filters>convert:修改數據的組織機制,即raid級別
btrfs balance start <path> -m<filters>convert修改元數據的組織機制,即raid級別
btrfs balance start <path> -s<filters>convert:修改系統的組織機制,即raid級別
btrfs balance pause<path>:停止
btrfs balance cancel<path>取消
btrfs balance resume<path>繼續
btrfs balance status <path>查看均衡狀態
下圖給出了均衡的過程
從下圖我們可以看出我們移除一個設備后,其之前的Btree系統里面的內容還可以查看,說明Btree可以自動的將卸載設備的文件保存到其他的地方。
從上圖可以看到我們可以改變Btree文件系統或者里面存儲的數據和元數據的raid級別。
如果我們想把Btree文件系統進行子卷操作的話,有一下命令可以供我們選擇使用:
btrfs subvolume create <name>:創建子卷
btrfs subvolume delete <subvloume>刪除子卷
btrfs subvolume list:列出所有子卷
btrfs subvolume snapshot <source> <dest> | <name>:創建快照
btrfs subvolume get-default<path>:默認卷
btrfs subvolume set-default<path>:設置默認卷
btrfs subvolume show:用來查看子卷的詳細信息
在創建子卷的過程中,如果父卷掛載了,則表示子卷也掛載完畢,如果想單獨掛載,那么就得先卸載父卷
下圖是掛載子卷的過程:
以下是創建快照的過程:
以上的這些簡介都是一個初學者的淺薄認知,如有不適當的地方,歡迎指正和修改。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。