Linux學習筆記之Btrfs 文件系統


0x00 btrfs文件系統簡介 

btrfs文件系統:技術預覽版(Centos7)
Btrfs(B-tree、Butter FS、Better FS),GPL授權,Orale2007提出是想用來取代Ext文件系統

 

0x01 btrfs核心特性

#  1、多物理卷支持:支持將多個底層物理設備組織成同一個文件系統,類似VG,btrfs可由多個底層物理卷組成,支持RAID,以聯機實現物理卷的"添加、移除、修改"

#  2、寫時復制更新機制(CoW):復制、更新及替換指針,而非"就地更新"
#    不修改文件時,復制的文件無文件內容,指針仍指向原文件的數據
#    修改文件時,不立即修改源文件,而是將源文件復制一份,對新生成的復制文件進行修改,然后把文件名指向新生成的復制文件,源文件保留,方便數據恢復.
#    寫時復制特性(Cow)
#    cp --reflink (只能在btrfs文件系統中使用)

#  3、數據及元數據校驗碼機制:存儲每個文件時,把文件的元數據的校驗碼和數據的校驗碼,通過文件的屬性擴展保存下來.訪問文件時,通過掃描校驗碼,可快速判斷文件是否受損一旦受損,自動嘗試修復極大保證數據的可靠性

#  4、支持子卷(sub_volume):在某卷上創建諸多子卷,每個子卷可以實現單獨使用和掛載

#  5、快照:基於寫時復制機制,比lvm的快照,增加了差異(增量)快照,可以對快照的進行快照.完成對快照后的文件改變進行再次快照.

#  6、透明壓縮機制:在這個分區上存儲文件想節約空間,可以把任何數據流發往btrfs文件系統上,自動周期完成數據壓縮存放,用戶感知不到,讀取時自動解壓縮.但會消耗cpu的時鍾周期

 

0x02 btrfs文件系統使用

卷創建

#  mkfs.btrfs [options] <device> [<device>...]
  -L 'Label'  設置卷標

  -d <data-profile>  指明數據存儲類型{raid0,raid1,raid5,raid6,raid10, single(單文件), dup(冗余)}

  -m<metadata-profile>  指明元數據存儲類型{raid0,raid1,raid5,raid6,raid10, single, dup}

  -O<feature>  在格式化時指明開啟的特性

  -O list-all  列出所有支持的feature

 

屬性查看

#  btrfs filesystem show 此處命令在下面的btrfs中有
  列出當前文件系統中的btrfs,並顯示信息
  加上<DEVICE>將顯示指定設備的信息

 

掛載

#  mount [–t btrfs] /dev/sdb MOUNT_POINT
  -t可選可不選
  以 /dev/sdb 做btrfs系統示例

 

透明壓縮機制

解釋:在寫入時自動壓縮, 讀取時自動解壓; [un]compress過程對用戶隱藏
    # mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
    lzo、zlib壓縮算法

#btrfs命令、子命令、子子命令:
  # btrfs filesystem
    show  查看所有btrfs系統信息
    df <MOUNT_POINT>  查看已掛載具體空間使用情況
   resize<MOUNT_POINT>  聯機/在線更改大小,減小容量 修改有風險, 操作需謹慎

  # btrfs device
    btrfs device add <NEW_DEVCIE> <MOUNT_POINT>添加一個磁盤到掛載點
    btrfs device delete <OLD_DEVCIE> <MOUNT_POINT>刪除一個磁盤到掛載點

  # btrfs-balance 均衡負載
    btrfs balance start <MOUNT_POINT> 開始均衡負載過程
    state 查看均衡進度
    pause 暫停
    resume 繼續
    cancel 取消
  負載均衡將會消耗很大一部分的系統性能, 僅建議在不忙時操作; 可使用pause暫停;
  # btrfs balance start -mconvert=<profile> <MOUNT_POINT> 修改raid級別
    <profile>:raid0, raid1, raid10, raid5, raid6, dup,single
    -dconvert 數據區 data blocks
    -mconvert 元數據區 metadata chunks
    -sconvert 系統區 system chunks (requires -f)

# btrfs-subvolume 子卷
  掛載子卷:
    mount -o subvol=' ' /dev/DEVICE MOUNT_POIN
    #先查看待掛載的subvolume的id
    # btrfs subvolume list /mnt/btrf
      ID 256 gen 9 top level 5 path su
      或者通過路徑掛載也可以
  list   顯示所有子卷
  create 創建子卷
  delete 刪除子卷
  注意:delete子卷不會真正刪除物理卷上的數據, 如需要可使用-c
  snapshot
  # btrfs subvolume snapshot /MOUNT_POINT/SUB /MOUNT_POINT/SUB_snapsho

  #btrfs-convert 轉換其他格式到btrfs
  btrfs-convert </dev/DEVICE> 轉換其他fs到btrfs
    -r 回滾到原來的fs
  命令注意:
  btrfs命令操作對象為掛載后的掛載點,操作非設備文件/dev/sd[a-z]

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM