3.btrfs管理及應用

來源:互聯網
上載者:User

標籤:btrfs

btrfs簡介:

Btrfs(通常念成Butter FS),由Oracle於2007年宣布並進行中的COW(copy-on-write式)檔案系統。目標是取代Linux目前的ext3檔案系統,改善ext3的限制,特別是單一檔案大小的限制,總檔案系統大小限制以及加入檔案校正和特性。加入目前ext3/4未支援的一些功能,例如可寫的磁碟快照(snapshots),以及支援遞迴的快照(snapshotsof snapshots),內建磁碟陣列(RAID)支援,支援子卷(Subvolumes)的概念,允許線上調整檔案系統大小。

 

btrfs特性:

擴充性 (scalability) 相關的特性,btrfs 最重要的設計目標是應對大型主機器對檔案系統的擴充性要求。 Extent,B-Tree和動態 inode 建立等特性保證了 btrfs 在大型主機器上仍有卓越的表現,其整體效能而不會隨著系統容量的增加而降低。

其次是資料一致性 (dataintegrity) 相關的特性。系統面臨不可預料的硬體故障,Btrfs 採用 COW 事務技術來保證檔案系統的一致性。 btrfs 還支援 checksum,避免了 silent corrupt 的出現。而傳統檔案系統則無法做到這一點。

第三是和多裝置管理相關的特性。 Btrfs 支援建立快照 (snapshot),和複製 (clone) 。 btrfs 還能夠方便的管理多個物理裝置,使得傳統的卷管理軟體變得多餘。

最後是其他難以歸類的特性。這些特性都是比較先進的技術,能夠顯著提高檔案系統的時間 / 空間效能,包括延遲分配,小檔案的儲存最佳化,目錄索引等。

 

Btrfs使用方法:

 

建立檔案系統

mkfs.btrfs 命令建立一個 btrfs 格式的檔案系統。可以用如下命令在裝置 sda5 上建立一個 btrfs 檔案系統,並將其掛載到 /btrfsdisk 目錄下:

 #mkfs.btrfs /dev/sda5

 #mkdir /btrfsdisk

 #mount – t btrfs /dev/sda5 /btrfsdisk

 

這樣一個 Btrfs 就在裝置 sda5 上建立好了。值得一提的是在這種預設情況下,即使只有一個裝置,Btrfs 也會對 metadata 進行冗餘保護。如果有多個裝置,那麼可以在建立檔案系統的時候進行 RAID 設定。詳細資料請參見後續的介紹。

這裡介紹其他幾個 mkfs.btrfs 的參數。

Nodesize 和 leafsize 用來設定 btrfs 內部 BTree 節點的大小,預設為一個 page 大小。但使用者也可以使用更大的節點,以便增加 fanout,減小樹的高度,當然這隻適合非常大的檔案系統。

Alloc-start 參數用來指定檔案系統在磁碟裝置上的起始地址。這使得使用者可以方便的預留磁碟前面的一些特殊空間。

Byte-count 參數設定檔案系統的大小,使用者可以只使用裝置的一部分空間,當空間不足時再增加檔案系統大小。

修改檔案系統的大小

當檔案系統建立好之後,可以修改檔案系統的大小。 /dev/sda5 掛載到了 /btrfsdisk 下,大小為 800M 。假如希望只使用其中的 500M,則需要減小當前檔案系統的大小,這可以通過如下命令實現:

#df

 Filesystem  1K-blocks     Used      Available   Use%  Mounted on

 /dev/sda1   101086        19000       76867         20%    /boot

 /dev/sda5   811248         32       811216         1%    /btrfsdisk

 #btrfsctl – r -300M /btrfsdisk

 #df

 Filesystem 1K-blocks      Used      Available   Use%  Mounted on

 /dev/sda1   101086        19000       76867         20%    /boot

 /dev/sda5   504148         32       504106         1%    /btrfsdisk

 

同樣的,可以使用 btrfsctl 命令增加檔案系統的大小。

建立 Snapshot

下面的例子中,建立快照 snap1 時系統存在 2 個檔案。建立快照之後,對 test1 的內容進行修改。再回到 snap1,開啟 test1 檔案,可以看到 test1 的內容依舊是之前的內容。

#ls /btrfsdisk

 test1 test2

 #vi test1

 This is a test

 #btrfsctl – s snap1 /btrfsdisk

 #vi test1

 Test1 is modified

 #cd /btrfsdisk/snap1

 #cat test1

 This is a test

 

可以從上面的例子看到,快照 snap1 儲存的內容不會被後續的寫操作所改變。

建立 subvolume

使用 btrfs 命令,使用者可以方便的建立 subvolume 。假設 /btrfsdisk 已經掛載到了 btrfs 檔案系統,則使用者可以在這個檔案系統內建立新的 subvolume 。比如建立一個 /sub1 的 subvolume,並將 sub1 掛載到 /mnt/test 下:

#mkdir /mnt/test

 #btrfsctl – S sub1 /btrfsdisk

 #mount – t btrfs – o subvol=sub1 /dev/sda5/mnt/test

 

Subvolme 可以方便管理員在檔案系統上建立不同用途的子檔案系統,並對其進行一些特殊的配置,比如有些目錄下的檔案關注節約磁碟空間,因此需要開啟壓縮,或者配置不同的 RAID 策略等。目前 btrfs 尚處於開發階段,建立的 subvolme 和 snapshot 還無法刪除。此外針對 subvolume 的磁碟 quota 功能也未能實現。但隨著 btrfs 的不斷成熟,這些功能必然將會進一步完善。

建立 RAID

mkfs 的時候,可以指定多個裝置,並配置 RAID 。下面的命令示範了如何使用 mkfs.btrfs 配置 RAID1 。 Sda6 和 sda7 可以配置為 RAID1,即 mirror 。使用者可以選擇將資料配置為 RAID1,也可以選擇將中繼資料配置為 RAID1 。

將資料配置為 RAID1,可以使用 mkfs.btrfs 的 -d 參數。如下所示:

#mkfs.btrfs – draid1 /dev/sda6 /dev/sda7

 #mount – t btrfs /dev/sda6 /btrfsdisk

 

添加新裝置

當裝置的空間快被使用完的時候,使用者可以使用 btrfs-vol 命令為檔案系統添加新的磁碟裝置,從而增加儲存空間。下面的命令向 /btrfsdisk 檔案系統增加一個裝置 /sda8

#btrfs-vol – a/dev/sda8 /btrfsdisk

 

SSD 支援

使用者可以使用 mount 參數開啟 btrfs 針對 SSD 的最佳化。命令如下:

#mount – t btrfs– o SSD /dev/sda5 /btrfsdisk

 

開啟壓縮功能

使用者可以使用 mount 參數開啟壓縮功能。命令如下:

#mount – t btrfs– o compress /dev/sda5 /btrfsdisk

 

同步檔案系統

為了提高效率,btrfs 的 IO 操作由一些核心線程非同步處理。這使得使用者對檔案的操作並不會立即反應到磁碟上。你可以做一個實驗,在 btrfs 上建立一個檔案後,稍等 5 到 10 秒將系統電源切斷,再次重啟後,建立的檔案並沒有出現。

對於多數應用這並不是問題,但有些時候使用者希望 IO 操作立即執行,此時就需要對檔案系統進行同步。下面的 btrfs 命令用來同步檔案系統:

#btrfsctl – c/btrfsdisk

 

Debug 功能

Btrfs 提供了一定的 debug 功能,對於想瞭解 Btrfs 內部實現原理的讀者,debug 將是你最喜歡的工具。這裡簡單介紹一下 debug 功能的命令使用。

下面的命令將裝置 sda5 上的 btrfs 檔案系統中的中繼資料列印到螢幕上。

#btrfs-debug-tree/dev/sda5

 

 


3.btrfs管理及應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.