Linux初學之btrfs文件系統及磁盤配額

btrfsnode

Technical Preview, 技術預覽版linux

BtrFS(B-tree文件系統,又稱爲Butter FS或Better FS),2007由oracle開源後,獲得了IBM、intel等廠商的大力支持,其目標計劃是替代linux目前的ext3/4,成爲下一代linux標準的文件系統。服務器

btrfs的特性:oracle

1.可擴展性:ide

1) ext系列文件系統使用塊位圖來保存每一個塊空閒與否的信息(每一個塊用一個位來表示是否空閒),當容量擴展時,塊位圖所佔的空間會線性的增長,試想一下若是快位圖變得很大時,那麼查找空閒塊就須要大量的時間;BtrFS管理磁盤空間的最小單位是extent,一個extent由一組連續的block組成,extent由extent樹進行管理,所以相比ext系列10個塊須要10個bit來表示,btrfs只須要一個extent就能夠,所以減小了元數據的量。對於大文件,extent表現出更加優異的管理性能。佈局


2) ext系統inode是預分配的且大小固定,好比,100G的分區中,inode table只能存放131072個inode,意味着不可能建立131072個文件;同時, inode分配太小,容易致使磁盤空間沒法充分利用,過大,容易形成磁盤空間浪費;btrfs爲了解決這個問題,使用了動態分配inode,以下圖,每一個inode只是FS tree中的一個節點,用戶能夠無限制地任意插入新的inode,其物理存儲位置是動態分配的,因此沒有對文件個數的限制。性能


2.多物理卷支持:spa

btrfs能夠跨越多個物理磁盤設備,動態的增長/減小設備來達到擴容/縮容的目的,技術上還支持(raid0、raid一、raid五、raid10等特性),以及聯機「添加」、「移除」以及「修改」指針

3.寫時複製更新機制(CoW):對象

複製、更新及替換指針,而非「就地」更新;btrfs的數據一致性是經過COW(Copy On Write)事務來保證的,所謂COW,即每次寫磁盤數據時,先當前塊數據複製到一個新塊,而後在新塊上進行更新寫入,當新塊寫入完成時,只需將原來指向舊塊的指針指向新塊。


4.數據及元數據校驗碼:checksum

btrfs的另外一特色是使用checksum來保證數據的可靠性,假設從磁盤讀取一個塊數據,能夠經過比較其checksum來判斷數據是否完整,其餘文件系統在文件系統級別上是沒法得知數據是否損壞的;同時因爲checksum數據存儲在checksum樹的節點上,與塊數據是分開管理的,這樣的好處是能避免checksum和數據保存在同一個塊的時候,文件系統上層獲取了一個錯誤位置的塊時無從得知(由於checksum只計算塊數據是否完整而不是數據應該存在哪一個塊,只要塊內數據並沒有損壞,checksum永遠都是正確的)


5.子卷:sub_volume

在一個文件系統(或邏輯卷)上建立子卷,並無層級限制,而且全部卷的空間大小都是能夠動態調整的。其應用場景是能夠爲每一個用戶分配一個單獨隔離的卷空間,來達到權限控制和配額管理的目的。


6.快照:支持快照的快照


7.透明壓縮,隱形壓縮:


mkfs.btrfs

選項:

-L|--label <name>:爲即將建立的btrfs文件系統指定卷標

-d|--data <type>:爲數據存儲指定類型;能夠選擇的類型有:raid0, raid1, raid5, raid6, raid10 or single

-m|--metadata <profile>:指定元數據的存儲方式;能夠選擇的類型有:raid0, raid1, raid5, raid6, raid10, single or dup

-O|--features <feature1>[,<feature2>...]:指定btrfs文件系統的特性,若是想要查看哪些特性,可使用命令:mkfs.btrfs -O list-all


能夠用支持btrfs文件系統的mount命令中使用下列方式開啓透明壓縮功能:

mount -o compress={lzo|zlib} DEVICE MOUNT_POINT


btrfs

btrfs - control a btrfs filesystem

btrfs <command> [<args>]


btrfs filesystem show

查看btrfs文件系統的詳細屬性;


btrfs filesystem df MOUNT_POINT

查看文件系統的掛載和使用狀況

例:btrfs filesystem df /mnt/btrfs/


在線修改文件系統大小:

btrfs filesystem resize {+|-}SIZE[KkMmGgTtPpEe] MOUNT_POINT 


例:btrfs filesystem resize -15G /mnt/btrfs/

btrfs filesystem resize +5G /mnt/btrfs/

btrfs filesystem resize max /mnt/btrfs/


向btrfs文件系統中添加或刪除設備

btrfs device

btrfs device add [options] <device> [<device>...] <path>

      向文件系統中添加一個新設備

    btrfs device delete <device> [<device>...] <path>

      從文件系統中刪除一個設備



平衡數據:

    btrfs balance start [options] <path>

      開啓跨設備的chunk的數據平衡

      -mconvert={radi0|raid1|raid5|radi10|raid6|single|dup}

      改變元數據的數據平衡佈局方式

    例:btrfs balance start -mconvert=raid5 /mnt/btrfs/


      -dconvert={radi0|raid1|raid5|radi10|raid6|single}

      改變數據的數據平衡佈局方式

例:btrfs balance start -dconvert=raid6 /mnt/btrfs/


    btrfs balance pause <path>

      暫停數據平衡

    btrfs balance cancel <path>

      取消正在進行的或已經暫停的數據平衡

    btrfs balance resume <path>

      恢復被打斷的數據平衡

    btrfs balance status [-v] <path>

      顯示正在進行的或已經暫停的數據平衡的狀態信息


子卷管理:

btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

    建立子卷

  例:btrfs subvolume create /mnt/btrfs/mysub1/


  btrfs subvolume delete [options] <subvolume> [<subvolume>...]

    刪除子卷

    例:btrfs subvolume delete /mnt/btrfs/mysub1/


  btrfs subvolume show <subvol-path>

  顯示子卷的信息

  例:btrfs subvolume show /mnt/btrfs/mysub1/



子卷相似於ext文件系統中的將其餘分區掛載到根目錄下的某個空閒子目錄的操做;


快照:

btrfs subvolume snapshot [-r] [-i <qgroupid>] <source> <dest>|[<dest>/]<name>

    建立指定子卷的快照卷


例:btrfs subvolume snapshot /mnt/btrfs/mysub1/ /mnt/btrfs/snap_mysub1


將btrfs和ext系列進行轉換:

btrfs-convert

btrfs-convert - convert from ext2/3/4 filesystem to btrfs or rollback

btrfs-convert [options] <device>


將文件系統從ext轉換爲btrfs:

~]# btrfs-convert /dev/sdb1


注意:/dev/sdb1分區,應該事先格式化爲ext系列文件系統;


將文件系統從btrfs回滾到ext

~]# btrfs-convert -r /dev/sdb1

磁盤配額:

  文件服務器:共享存儲空間,用戶隨時存儲數據

  FTP

  SMB

  網盤


磁盤配額主要針對這類文件服務器進行用戶的磁盤空間使用限制而提出的。


磁盤配額的設定對象:

  可以實施讀寫操做的塊設備

  要有正確的文件系統

 

 磁盤配額主要限制哪些對象的訪問行爲

   1.用戶

    爲指定的用戶限制磁盤使用量

      磁盤空間(塊)一個block的限制,表明1KB存儲空間

      inode


   2.組

     限制指定組中全部成員的磁盤使用量的總和


 磁盤配額的類型:

  soft limit:軟限制

    當用戶的使用量達到了軟配額限制,將會啓動寬限期倒計時,在寬限期到期以前,用戶能夠 正常使用剩餘的配額,當寬限期歸零時,用戶將不能使用磁盤空間,除非將數據進行清理,低於軟限制,然後能夠繼續使用磁盤空間;

  hard limit :硬限制

     用戶所可以使用磁盤空間的真正上限


  通常來說,軟限制的數值低於硬限制

  默認的寬限期爲7天


  須要一個用戶記錄和組磁盤使用量和配額量的數據文件

  aquota.user

  aquota.group

  若是想要讓分區或卷支持磁盤配額的設定,須要單獨的掛載選項支持;

   usrquota   grpquota


  1.# mount -o usrquota   grpquota  DEVICE MOUNT_POINT

  2./etc/fstab

   # /DEVICE MOUNT_POINT FSTYPE defaults,usrquota   grpquota 0 0

quotacheck

   quotacheck - scan a filesystem for disk usage, create, check and repair quota files

   選項

    -v, --verbose:顯示整個操做過程的詳細信息

    -u,--user:建立,檢測和修復用戶配額文件

    -g,--group:建立,檢測和修復組配額文件

    -c,--create files:通過檢測若是沒有用戶配置文件和或組配額文件,就按照用戶給定的選項來進行文件的額建立

    -a,--all:全部的在/etc/fstab文件中包含了與配額有關的掛載選項的設備上,是否有對應選項的配額文件


  用於編寫配額內容的命令:

    edquota

      -u,--user:編寫用戶配額,默認功能

      -g,--group:編寫組配額 

      -t,--edit-period:設置超出軟限制的寬限期,默認七天,能夠選擇以秒,分,時,天爲時間單位


  使配額功能生效

   quotaon:開啓 

   quotaoff:關閉


     quotaon /dev/sdd1


  查看配額的使用狀況

   quota


   repquota(管理員專用)彙總文件系統的使用狀況



   注意:root不受磁盤限制

相關文章
相關標籤/搜索