btrfs文件系統
一、Btrfs(B-tree,butter FS,better FS)
btrfs是centos7默認支持的文件系統,btrfs有着ext系列文件系統之外的衆多功能,可是說功能非常強大:
特性
1、 支持跨物理設備(磁盤及分區)創建,數據和元數據分別支持RAID,可在線添加、移除、修改等操作
其支持諸多RAID,譬如數據支持raid0,raid1 raid5,raid6,raid10,single
元數據支持raid0, raid1, raid5, raid6, raid10, single or dup
2、寫時複製功能:其不在原處修改,而是將文件複製一份後對副本修改,
3、數據及元數據校驗機制:它自身攜帶有checksum校驗碼,以確保數據的準確性
4、子卷:文件系統中可創建子卷,子卷可以實現文件系統獨立的功能
5、快照:btrfs支持快照功能,以實現數據的備份與訪問
6、透明壓縮:數據保存在硬盤中不是原來的格式保存,而是壓縮後保存
當然,這樣在讀寫文件時,也增加了系統的壓力,繁忙讀寫操作慎用
2、3可實現防刪除功能
二、btrfs文件系統創建
mkfs.btrfs 命令
-L “label” 指定卷標
-d|--data <type>:指定數據時如何誇設備存儲的
<type>:raid0,raid1 raid5,raid6,raid10,single
-m|--metadata <profile> 指定元數據是如何誇設備存儲的
<type>: raid0, raid1, raid5, raid6, raid10, single or dup
dup類型是把數據再次備份一份類似於RAID1
-s|--sectorsize <size>
-n|--nodesize <size>
-U|--uuid <UUID>
-f |--force 強制寫入磁盤一個以存在分區的磁盤中,默認情況下btrfs不會向以有分區的磁盤上寫數據
-O <feature> 指定其他特性
-O list-all
三、btrfs是管理btrfs文件系統的命令,其支持衆多的子命令
btrfs-subvolume, btrfs-filesystem,
btrfs-balance, btrfs-device, btrfs-scrub, btrfs-check,
btrfs-rescue, btrfs-restore, btrfs-inspect-internal, btrfs-send,
btrfs-receive, btrfs-quota, btrfs-qgroup, btrfs-replace,
btrfs支持子命令嵌套習慣,以下將是btrfs的子命令嵌套格式
btrfs filesystem
show --mountd |--all-devices|<path>|<uuid>|<device>|<label>
可查看掛載了的設備|所有設備|指定路徑下的設備|指定UUID的設備|指定設備名設備|指定卷標的設備
resize [<devid>:]<size>[gkm]|[<devid>:]max <path>
Resize a filesystem identified by <path> for the underlying device devid online.
支持在線調整btrfs的大小 也可調整到最大(類似lvm邏輯卷的功能)
將大小減小5G顯示如下,修改是應對其掛載點操作
label [<dev>|<mountpoint>] [<newlabel>]
Show or update the label of a filesystem.顯示或更新文件系統的卷標
顯示系統中所有btrfs文件系統
也可以指定文件系統譬如
對設備的操作
btrfs device 命令:在線增添、刪除、替換設備
add增添設備 [-Kf] <dev> [<dev>...] <path>
delete刪除設備
scan掃描設備
ready將所有的設備調整爲掛載狀態
stats打印指定或所有的IO設備的狀態
將/dev/sde 添加至myfs中其大小變爲60G
btrfs balance {start|stop|pause|cancel|resume|status} [option]<path>系統的均衡操作
將當前文件系統的數據組成類型轉化爲其他的類型(raid的各種類型),即重建數據chunk類型
start
-d <filters>修改數據的組成格式
-m<filters>修改元數據的組成格式
-s <filters> 修改系統數據的組成格式
-f 強制轉換數據的組成格式
實際生產中數據量很大,需要在空閒時調整,在調整過程中可能需要以下參數控制轉換過程
stop <path> 停止轉換
pause <path> 暫停轉換
cancel <path> 取消轉換
resume <path>繼續轉換
status <path>顯示轉換狀態
<filter> convert 轉換
btrfs balance start –dconvert=raid5 /media
將myfs文件系統數據的的raid調整爲raid5如下,調整raid時要遵循raid規則調整,譬如raid5至少要3塊設備等,也可以調整元數據raid級別
btrfs subvolume 控制系統創建/列出/顯示子卷和快照卷
訪問子卷可通過兩種方法:1、通過父卷訪問2、通過掛載點訪問
create [-i <qgroupid>] <name><dest> //在dest中創建子卷 ,delete 刪除子卷
list<path>列出子卷
-p 打印父卷ID
-a打印所有的子卷信息,區分不同的親疏關心
-g輸出子卷的宗代信息
-o輸出指定路徑的子卷
-u輸出子卷的uuid信息
-q輸出父卷的uuid
-s系統中的快照卷將被打印
-r系統中的只讀卷將被打印
snapshot [-r] <source> <dest>|<name> //創建一個可寫或只讀的快照卷
find-new <subvolume> <last_gen> //列出最近改變過的子卷信息
show<path>顯示指定路徑的子卷信息
例如:創建子卷myfs_sub
卸載父卷,以子卷掛載,格式如下
在父卷時創建的文件重新掛載子卷時,仍然存在
子卷的刪除
快照卷的實現
注意:
當將多個物理設備製作成一個btrfs文件系統時,對其中一個設備的查看、掛載即是對整個文件系統的操作。
當對一個擁有子卷的文件系統操作時,對父卷掛載時,其子卷也將掛載,卸載亦然
當子卷掛載時,其父卷將不能掛載
當製作snapshot卷時,必須將快照卷建立在同一個父卷中!
當進行raid轉換,或刪除設備時,要遵循raid級別,一般不要強制操作
當掛載後,一般對掛載點操作!
兩外重要的一點是子卷不是目錄,而可以當做單獨的一個文件系統來使用,例如掛載、卸載等!