Btrfs文件系統

一:概述

    1.1簡介

        Btrfs被稱為是下一代Linux文件系統。通常念成 Butter FS,Better FS 或B-tree FS。它采用了很多先進的文件系統設計,不僅解決了 ext2/3的擴展性問題,支持寫時拷貝(copy-on-write),支持高效的snapshot和clone,使用b-tree作為存儲的數據結構。讓人們看到了下一代文件系統所具有的許多其他特性。

    1.2原理及特性
    擴展性相關特性
        B-Tree:btrfs文件系統中所有的metadata都由BTree管理。使用 BTree 的主要好處在于查找,插入和刪除操作都很高效。
        基于Extent的文件存儲:Extent就是一些連續的block,一個extent由起始的block加上長度進行指定,故Extent 能有效地減少元數據開銷。
        動態inode分配:每一個inode只是BTree中的一個節點,用戶可以無限制地任意插入新的inode,其物理存儲位置是動態分配的。所以btrfs沒有對文件個數的限制。
        SSD優化支持:Btrfs文件系統針對SSD的分布寫操作技術特性做優化,不僅能提高SSD的使用壽命,而且能提高讀寫性能。
    數據一致性相關特性
        COW(copy-on-write):即每次寫磁盤數據時,先將更新數據寫入一個新的“塊”,當新數據寫入成功之后,再更新相關的數據結構指向新 “塊”。
        Checksum技術:保證了數據的可靠性,避免silent corruption現象。因硬件原因,從磁盤上讀出的數據會出錯,而且這樣的錯誤是不會被上層軟件所察覺。解決這個問題的方法是保存數據的校驗和,在讀取數據后檢查校驗和。如果不符合,便知道數據出現了錯誤。
    多設備管理特性
        Subvolume(子卷管理):采用subvolume技術,可以將一個大的文件系統可以被劃分為多個子文件系統,這些子文件系統共享底層的設備空間,在需要磁盤空間時便從底層設備中分配。
        Snapshot(快照管理):快照是對文件系統某一時刻的完全備份。建立快照之后,對文件系統的修改不會影響快照中的內容。
        軟件RAID:基于多物理磁盤設備的前提條件下,Btrfs對metadata及date支持軟件RAID技術,使其數據安全性及冗余性更高。默認情況下對metadata實施RAID1。

二:命令指令

    2.1操作系統環境&軟件版本信息

# cat /proc/version
Linux version 3.10.0-327.13.1.el7.x86_64 (builder@kbuilder.dev.centos.org) 
(gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Mar 31 16:04:38 UTC 2016

# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)     #Minimal

# btrfs version
btrfs-progs v3.19.1

# mkfs.btrfs -V
mkfs.btrfs, part of btrfs-progs v3.19.1

    2.2安裝
        Centos_7.2系統默認集成Btrfs及相關工具

    2.3命令說明

mkfs.btrfs [options] <device> [<device>...]            #用于創建Btrfs文件系統
常用選項:
    -d PROFILE    #data存儲級別:raid0, raid1, raid5, raid6, raid10, dup or single
    -f    #強制覆蓋已存在的文件系統
    -L LABEL    #設置磁盤卷表
    -m PROFILE    #metadata存儲級別:raid0, raid1, raid5, raid6, raid10, dup or single
    -n SIZE    #設置nodesize大小
    -O LIST    #設置或者羅列文件系統特性
    -U UUID    #指定UUID設備號
btrfs <command> [<args>]            #對Btrfs文件系統進行管理及控制
常用子命令:
    balance    #磁盤數據分布平衡操作
    check    #btrfs磁盤掃描&校驗
    device    #磁盤物理設備管理及控制
    filesystem    #文件系統的信息查詢及修改
    subvolume    #子卷管理&快照管理
btrfs-convert    #將ext2文件系統轉換成btrfs文件系統
常用選項:
        -r    #將btrfs文件系統還原回ext2文件系統

三:使用教程

    前期準備工作:為虛擬機添加4塊磁盤

新建位圖圖像.bmp

# fdisk -l
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdd: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sde: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000187db
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048     3123199     1048576   82  Linux swap / Solaris
/dev/sda3         3123200    83886079    40381440   83  Linux

    3.1創建btrfs文件系統

# mkfs.btrfs -L mybtrfs -d raid5 -m raid5 /dev/sdb /dev/sdc /dev/sdd 
btrfs-progs v3.19.1
See http://btrfs.wiki.kernel.org for more information.

Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
Turning ON incompat feature 'raid56': raid56 extended format
Turning ON incompat feature 'skinny-metadata': reduced-size metadata extent refs
adding device /dev/sdc id 2
adding device /dev/sdd id 3
fs created label mybtrfs on /dev/sdb
    nodesize 16384 leafsize 16384 sectorsize 4096 size 6.00GiB

創建btrfs文件系統,指定卷標為 mybtrfs,并指定matadata與data數據存儲級別為raid5(PS:需要3盤磁盤支持,raid10需要4塊,raid1&raid0需要2塊)

    3.2查看btrfs文件系統相關信息

# btrfs filesystem show
Label: 'mybtrfs'  uuid: b8557848-3dde-41b7-8025-056e8e7d2938
    Total devices 3 FS bytes used 112.00KiB
    devid    1 size 2.00GiB used 437.50MiB path /dev/sdb
    devid    2 size 2.00GiB used 417.50MiB path /dev/sdc
    devid    3 size 2.00GiB used 417.50MiB path /dev/sdd

# blkid /dev/sdb /dev/sdc /dev/sdd
/dev/sdb: LABEL="mybtrfs" UUID="b8557848-3dde-41b7-8025-056e8e7d2938" UUID_SUB="ba10169d-0487-41cd-a27c-0c4f3c175be3" TYPE="btrfs" 
/dev/sdc: LABEL="mybtrfs" UUID="b8557848-3dde-41b7-8025-056e8e7d2938" UUID_SUB="666ffc52-9c45-40e5-aaf9-869746ae5d7c" TYPE="btrfs" 
/dev/sdd: LABEL="mybtrfs" UUID="b8557848-3dde-41b7-8025-056e8e7d2938" UUID_SUB="d2927b8d-ac87-4191-8edf-c19658b67245" TYPE="btrfs"

    3.3掛載并使用btrfs文件系統

# mount -t btrfs LABEL=mybtrfs /mnt
# mount -t btrfs -o SSD LABEL=mybtrfs /mnt    #SSD 優化選項
# mount
/dev/sdb on /mnt type btrfs (rw,relatime,seclabel,space_cache)
# umount /mnt/

    3.4掛載設備磁盤空間的增加及減少(邏輯空間的收縮及擴張)

# btrfs filesystem resize -1G /mnt    #掛載空間縮小1G空間
Resize '/mnt' of '-1G'
# df -Th
/dev/sdb       btrfs     5.0G   17M  4.2G   1% /mnt

# btrfs filesystem resize max /mnt    #空間增長還原至邏輯空間最大值
Resize '/mnt' of 'max'
# df -Th
/dev/sdb       btrfs     6.0G   17M  5.2G   1% /mnt

    3.5磁盤空間的增加及減少(物理磁盤設備的增加及減少)

# btrfs device add /dev/sde /mnt    #添加新物理磁盤到現有btrfs文件系統中

# btrfs filesystem show
Label: 'mybtrfs'  uuid: b8557848-3dde-41b7-8025-056e8e7d2938
    Total devices 4 FS bytes used 256.00KiB
    devid    1 size 2.00GiB used 437.50MiB path /dev/sdb
    devid    2 size 2.00GiB used 417.50MiB path /dev/sdc
    devid    3 size 2.00GiB used 417.50MiB path /dev/sdd
    devid    4 size 2.00GiB used 0.00B path /dev/sde

# btrfs balance start /mnt    #新添加進的磁盤空間利用率為0,為使數據平均分布在各個磁盤,使用balance子命令平衡數據分布
Done, had to relocate 6 out of 6 chunks
# btrfs filesystem show
Label: 'mybtrfs'  uuid: b8557848-3dde-41b7-8025-056e8e7d2938
    Total devices 4 FS bytes used 384.00KiB
    devid    1 size 2.00GiB used 416.00MiB path /dev/sdb
    devid    2 size 2.00GiB used 416.00MiB path /dev/sdc
    devid    3 size 2.00GiB used 416.00MiB path /dev/sdd
    devid    4 size 2.00GiB used 416.00MiB path /dev/sde

# btrfs device delete /dev/sde /mnt    #刪除新物理磁盤到現有btrfs文件系統中
# btrfs filesystem show
Label: 'mybtrfs'  uuid: b8557848-3dde-41b7-8025-056e8e7d2938
    Total devices 3 FS bytes used 320.00KiB
    devid    1 size 2.00GiB used 480.00MiB path /dev/sdb
    devid    2 size 2.00GiB used 480.00MiB path /dev/sdc
    devid    3 size 2.00GiB used 480.00MiB path /dev/sdd
#PS:刪除物理磁盤時,切記要檢查原btrfs文件系統中文件總容量大小。確保
# (磁盤刪除前磁盤空間總容量) - (磁盤刪除后磁盤空間總容量) > (磁盤刪除前磁盤文件總容量)

    3.6子卷創建管理&快照管理

btrfs子卷即可理解成linux文件系統"根"目錄及下掛節點目錄,可以把btrfs子卷與根的概念理解成獨立的文件目錄系統結構。

“根”節點即是btrfs磁盤系統最上層掛載點,下掛文件目錄節點既可理解成是btrfs子卷。

子卷可以被單獨掛載使用,但是如果上級目錄或頂層節點被掛載使用后,其子卷自動被掛載。

btrfs快照功能實則是子卷管理的一種衍生應用,即對需快照文件夾創建一個具備映射功能的子卷

# btrfs subvolume create /mnt/test_sub    #創建子卷,該子卷可獨立掛載在其他目錄節點上
Create subvolume '/mnt/test_sub'

# ll /mnt/
total 0
drwxr-xr-x. 1 root root 0 Apr 15 14:58 test_sub

# btrfs subvolume delete /mnt/test_sub    #刪除子卷
# ll /mnt/    #原文件系統文件列表
total 4
-rw-r--r--. 1 root root 501 Apr 15 15:06 fstab

# btrfs subvolume snapshot /mnt /mnt/snapshot_dir/    #創建/mnt文件夾的快照文件夾/mnt/snapshot_dir/
Create a snapshot of '/mnt' in '/mnt/snapshot_dir'    #可通過修改/mnt/fstab文件查看快照功能的實現

# btrfs subvolume delete snapshot_dir    #刪除快照

    3.7btrfs & ext2fs 格式轉換

# btrfs-convert /dev/sda3    #ext2 --> btrfs
# btrfs-convert -r /dev/sda3    #btrfs --> ext2


四:項目拓展

    編撰ing~~~

原創文章,作者:蘇門答臘,如若轉載,請注明出處:http://www.www58058.com/14770

(0)
蘇門答臘蘇門答臘
上一篇 2016-04-19 11:37
下一篇 2016-04-19 15:10

相關推薦

  • Linux中的網絡功能概念介紹(一)

      在操作系統中,進程之間的通信是用ipc(內存基本通信)以及內存共享shm來實現本地的通信,那么如果跨主機間通信或者說是不同之間的主機用rpc(遠程過程調用)以及socket套接字,用一個主機在socket中寫數據,另一個主機在socket之間讀數據,以實現進程通信的最終目的。   在網絡功能出現之前,基本都是用電話…

    Linux干貨 2016-11-23
  • SELinux

    軟件的安全性 提高軟件的安全性 選擇安全系數較高的系統 提高現有系統的安全性 計算機的安全等級 D:最低的安全級別,提供最少的安全防護,系統訪問無限制。DOS C:訪問控制的權限,能夠實現可控的安全防護,個人賬戶管理,審計和資源隔離 Unix Linux windowNT B:支持多級安全,通過硬件對安全數據進行保護 A:最高級別,提供驗證設計,要求數據從生…

    Linux干貨 2017-05-21
  • 用戶相關文件簡介

    2016/10/23 總結關于用戶和組相關的配置文件 Linux系統主要有4個文件與用戶和組的配置有關, 主要為/etc/passwd  /etc/shadow   /etc/group  /etc/gshadow 首先來解釋一下什么是用戶,什么是組 用戶:      管理員用戶&nbsp…

    Linux干貨 2016-10-24
  • 磁盤管理

      磁盤管理是一項計算機使用時的常規任務,它是以一組磁盤管理應用程序的形式提供給用戶的,它們位于"計算機管理"控制臺中.它包括查錯程序和磁盤碎片整理程序以及磁盤整理程序。   一磁盤分區     1為什么要分區?     ?優化I…

    Linux干貨 2016-09-02
  • grep常見應用實例

      在我們實際應用中,正則表達式的應用是非常廣泛的,今天我就大家分享幾個比較常見的正則表達式的應用實例,不周之處,還望高人多多指點!   一:使用正則表達式搜索郵箱地址 二:使用正則表達式搜索手機號 三:使用正則表達式搜索身份證號 四:使用正則表達式取網絡配置文件中的IP地址的過程解析   一:使用正則表達式搜索郵箱地址: [r…

    系統運維 2016-08-08
  • RAID簡述和Linux軟RAID配置

    RAID簡述和Linux軟RAID配置 PS:僅為課程練習,原理和配置可能有誤,僅供參考,謝謝; 1.RAID功能簡述     RAID,全稱(Redundant Arrays of Inexpensive Disk或Redundant Arrays of Independent Disk),現在一般多用于后面那個稱呼,獨立磁盤冗余陣列。RAID的基礎概念大…

    Linux干貨 2016-07-17
欧美性久久久久