btrfs文件系統的簡單使用方法

簡單介紹btrfs文件系統的使用,包括創建、掛載、子卷的創建、掛載、快照、在線添加和移除物理設備、重新均衡數據


btrfs的特性:

    多塊磁盤支持:btrfs可由多個底層磁盤組成,支持RAID,可以聯機添加、移除、修改磁盤。

    寫時複製更新機制:複製、更新時直接替換指針,而非直接更新。

    數據和元數據校驗碼:checksum

    支持子卷

    快照

    透明壓縮功能


以Centos 7 系統爲例 ,首先在虛擬機上添加3塊大小爲10G的硬盤 /sdb、/sdc、/sdd

一、

1、文件系統的創建:

    命令格式介紹:mkfs.btrfs[選項]<設備>(<設備>…)

                        -b:字節數<大小> 指定文件系統的大小。默認整個設備空間。

                        -L:文件系統的標籤

                        -d:數據類型,可以是RAID(0、1、5、6、10)single

                        -m:元數據類型,可以是RAID(0、1、5、6、10)single

    開始創建:

        mkfs.btrfs -L "test" -d raid1 -m raid1 /dev/sdb /dev/sdc

圖片.png

我們用了兩塊磁盤 設置卷標爲 test、數據和元數據類型爲raid1 大小爲默認整個磁盤空間20G,但我們數據存儲用的是RAID1所以

如果掛載後應該是顯示可用空間爲10G,信息如上圖所示

 我們用命令:btrfs filesystem show  可以顯示所有的btrfs文件系統的屬性信息

圖片.png

我們還可以用命令:blkid /dev/sdb /dev/sdc命令來查看他們的信息

圖片.png

上圖中可以看書他們的UUID是相同的,因爲他們組成了一個文件系統,但是UUID_SUB是不同的


2、掛載文件系統根目錄下創建/testdata目錄,並將其掛載上去

圖片.png

用mount 查看掛載情況

圖片.png

顯示已經掛載成功,注意此時的/dev/sdb、/dev/sdc 組成一個文件系統,所以顯示哪個都是一樣的

進入cd /testdate/ 目錄我們就可以正常操作了,我們將 /boot/initramfs-3.10.0-693.el7.x86_64.img 複製到/testdate/目錄下名稱不變,並查看了當前目錄大小:爲28M

圖片.png

df -h查看分區使用情況:

圖片.png

顯示其大小爲10G


命令 umount /testdate 將其卸載


3、下面演示透明btrfs文件系統的透明壓縮功能,命令爲 mount -o compress=lzo /dev/sdb /testdata

圖片.png

4、更改文件系統大小命令格式爲: btrfs filesystem resize [devid:][+/-]<newsize>[kKmMgGtTpPeE]|[devid:]max <path>

現在我們將其大小減5G,命令爲 btrfs filesystem resize -5G /testdata

 然後查看其屬性信息

圖片.png

發現/dev/adb 空間由10G縮減到了5G

再用df -h 命令查看分區空間使用情況:

圖片.png

可用空間由10G縮減爲7.5G ,因爲是RAID1 減少了5G,空間就相當於縮減了2.5G

還可以用 btrfs filesystem resize max /testdata ,將其擴到最大

圖片.png


二、下面我們演示: 向btrfs文件系統,添加和移除底層磁盤設備 ,添加的dev/sdd,

然後更改數據的存儲方式爲RAID5試試效果,命令格式爲:

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

        添加、刪除、移除底層磁盤設備

1、我們添加/dev/sdd磁盤:

 這裏先用命令更改下btrfs文件數據的存儲格式:命令 btrfs balance start -dconvert=raid0 /testdata 將數據的存儲方式改爲raid0

圖片.png

   添加/dev/sdd

命令爲:btrfs device add /sdd /testdata /testdata

然後查看其屬性: 

圖片.png

現在testdata由三塊磁盤組成

但此時三塊磁盤存儲的數據不均衡,


3、btrfs balance命令格式:

    btrfs balance [options] <path>
        Balance chunks across the devices
    btrfs balance [start、pause、cancel、status]<path>
       開始、暫停、繼續、取消、平衡操作、查看狀態
我們開始平衡數據:

    btrfs balance start /testdata

圖片.png

這個操作會暫用資源,主要看數據量,現在數據均衡存儲在三塊盤上

如果要移除其中一塊盤,數據會自動移動到其他兩塊盤上,然後刪除,不需要人工轉移數據:

下面演示: btrfs device remove /dev/sdd /testdata

移除後我們查看/testdata中的數據並沒有丟失。

測試完後將其加回然後再做數據均衡 btrfs device add /dev/sdd /testdata;btrfs balance start /testdata


4、接下來演示數據和元數據的組織機制轉換

命令格式爲: btrfs balance start <-d -m -s><convert>=<[raid0,raid1,raid5...single]> <path>

我們將其數據和元數據的組織機制改爲:raid5

圖片.png

更改完成後:用命令 btrfs filesystem usage /testdata 查看詳細信息:

圖片.png

顯示已經改變


三、subvolume

1、創建子卷

查看子卷命令:btrfs subvolume list /testdata

創建格式:  btrfs subvolume <subcommand>

                                create [-i <qgroupid>] [<dest>/]<name>
                                創建子卷        
                                delete [options] <subvolume> [<subvolume>...]
                                刪除子卷

下面我們創建一個名爲volume1的子卷:

btrfs subvolume create /testdata/subvolume1

圖片.png

子卷創建成功,

查看子卷:btrfs subvolume list /testdata

圖片.png


因爲子卷在主卷當中所以掛載主卷就可以進入子卷,也可以單獨掛載子卷,

比如將子卷掛載到/mnt 目錄下

我們先卸載/testdata

然後掛子卷

umount /testdata

mount -o subvol=subvolume /dev/sdb /mnt   (掛載子卷的方法)

cd /mnt 進入/mnt

cp /etc/passwd ./ 複製文件到當前目錄下


將/dev/sdb 掛載 到/testdata 上去


5、給子卷創建快照

命令   btrfs subvolume snapshot /testdata/subvolume1 /testdata/subvolume1_snapshot (注意快照卷需要和其原卷在同一個文件系統上)

圖片.png

快照卷創建成功,更改快照原卷當中的文件,然後查看快照卷當中是否發生變化。


四、ext文件系統與btrfs文件系統的轉換

下面我們將/dev/sdd 從btrfs文件系統中刪掉然後格式化成ext4類型的文件系統

圖片.png

上圖以改爲ext4文件系統,下面進行轉換

轉換前我們對其進行卸載然後強制檢測:

圖片.png

上圖轉換成功,

blkid 查看格式:

圖片.png

轉換會原來的格式 :btrfs-convert -r /dev/sdd

圖片.png



完成。

寫的粗糙,,,,,



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章