溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

發(fā)布時(shí)間:2020-07-13 08:16:03 來(lái)源:網(wǎng)絡(luò) 閱讀:1937 作者:liruitmac 欄目:關(guān)系型數(shù)據(jù)庫(kù)

btrfs文件系統(tǒng):
      Btrfs(B-tree 檔案系統(tǒng), 通常念成 Butter FS,Better FS 或 Btree FS),采用 GPL 授權(quán),是由 Oracle 于 2007 年宣布并進(jìn)行中的支持寫入 時(shí)復(fù)制(COW)的文件系統(tǒng)。目標(biāo)是取代 Linux 目前的 ext3 文 件系統(tǒng),改善 ext3 的限制,特別是單個(gè)文件的大小,總文件系統(tǒng)大小或文件檢查和加入 ext3 未支持的功能,如可寫快照(writable snapshots)、快照的快照 (snapshots of snapshots)、內(nèi)建磁盤陣列(RAID),以及子卷 (subvolumes)。Btrfs 也宣稱專注于“容錯(cuò)、修復(fù)及易于管理”。

     核心特性:
          多物理卷支持:btrfs可由多個(gè)底層物理卷組成;支持RAID,以聯(lián)機(jī)“添加”、“移除”,“修改”;
          寫時(shí)復(fù)制更新機(jī)制(CoW): 所謂 COW,即每次寫磁盤數(shù)據(jù)時(shí),先將更新數(shù)據(jù)寫入一個(gè)新的 block,當(dāng)新數(shù)據(jù)寫入成功之后,再更新相關(guān)的數(shù)據(jù)結(jié)構(gòu)指向新 block 。復(fù)制、更新及替換指針,而非“就地”更新;
          數(shù)據(jù)及元數(shù)據(jù)校驗(yàn)碼(checksum):btrfs在讀取數(shù)據(jù)的同時(shí)會(huì)讀取其相應(yīng)的 checksum 。如果最終從磁盤讀取出來(lái)的數(shù)據(jù)和 checksum 不相同,btrfs 會(huì)首先嘗試讀取數(shù)據(jù)的鏡像備份,如果數(shù)據(jù)沒有鏡像備份,btrfs 將返回錯(cuò)誤。寫入磁盤數(shù)據(jù)之前,btrfs 計(jì)算數(shù)據(jù)的 checksum 。然后將 checksum 和數(shù)據(jù)同時(shí)寫入磁盤。
          子卷:Subvolume 是很優(yōu)雅的一個(gè)概念。即把文件系統(tǒng)的一部分配置為一個(gè)完整的子文件系統(tǒng),稱之為 subvolume 。

采用 subvolume,一個(gè)大的文件系統(tǒng)可以被劃分為多個(gè)子文件系統(tǒng),這些子文件系統(tǒng)共享底層的設(shè)備空間,在需要磁盤空間時(shí)便從底層設(shè)備中分配,類似應(yīng)用程序調(diào)用 malloc() 分配內(nèi)存一樣??梢苑Q之為存儲(chǔ)池。這種模型有很多優(yōu)點(diǎn),比如可以充分利用 disk 的帶寬,可以簡(jiǎn)化磁盤空間的管理等

          快照:支持快照的快照;
          透明壓縮:就是用戶調(diào)用數(shù)據(jù)的過(guò)程其實(shí)是一個(gè)解壓縮的過(guò)程,但是這個(gè)過(guò)程,對(duì)用戶來(lái)說(shuō)是透明的,是自動(dòng)進(jìn)行的。

    多設(shè)備管理:Btrfs 支持動(dòng)態(tài)添加設(shè)備。用戶在系統(tǒng)中增加新的磁盤之后,可以使用 btrfs 的命令將該設(shè)備添加到文件系統(tǒng)中。為了靈活利用設(shè)備空間,Btrfs 將磁盤空間劃分為多個(gè) chunk 。每個(gè) chunk 可以使用不同的磁盤空間分配策略。比如某些 chunk 只存放 metadata,某些 chunk 只存放數(shù)據(jù)。一些 chunk 可以配置為 mirror,而另一些 chunk 則可以配置為 stripe 。這為用戶提供了非常靈活的配置可能性。

     文件系統(tǒng)創(chuàng)建: 
                mkfs.btrfs
               -L 'LABEL':建立卷標(biāo)。
               -d <type>: raid0, raid1, raid5, raid6, raid10, single指明確文件系統(tǒng)的類型
               -m <profile>: raid0, raid1, raid5, raid6, raid10, single, dup指明類型
               -O <feature>指明格式化是,啟動(dòng)的特性
                    -O list-all: 列出支持的所有feature;

掛載文件系統(tǒng):
               mount -t btrfs /dev/sdb MOUNT_POINT

          透明壓縮機(jī)制:
               mount -o compress={lzo|zlib} DEVICE MOUNT_POINT

   一下是btrfs filesystem子命令的用法:        

 btrfs filesystem show:顯示詳細(xì)信息

       btrfs filesystem show --mounted:顯示已經(jīng)掛載的文件系統(tǒng)的詳細(xì)信息

       btrfs filesystem show --all-device:顯示所有文件系統(tǒng)的詳細(xì)信息

       btrfs filesystem show /PATH:    顯示指定的文件系統(tǒng)的詳細(xì)

    btrfs filesystem label:顯示文件系統(tǒng)的label

    btrfs filesystem resize:縮減或者增大文件系統(tǒng)的容量

    btrfs filesystem df:顯示已經(jīng)掛載的文件系統(tǒng)的信息

    btrfs filesystem sync同步操作

接下來(lái)我們來(lái)操作操作吧如下圖所示范:

     1.mkfs.btrfs -L mydata /dev/sdb /dev/sdc:就是把sdb和sdc兩塊硬盤格式化成以卷標(biāo)為mydata的文件系統(tǒng)

      2.mount /dev/sdb 或者/dev/sdc都可以掛載 

      3.btrfs filesystem df /mnt 可以看到掛載文件系統(tǒng)的詳細(xì)信息

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

       接著我們用blkid命令分別查看一下/dev/sdc和/dev/sdb

從下圖中我們可以發(fā)現(xiàn)他們的UUID都是一樣的,但是子UUID是不一樣的,因此它是支持多卷的。

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

        btrfs filesystem resize -10G /MYDATA   df -lh 通過(guò)這兩個(gè)命令可以看到Btree系統(tǒng)的size減小到30G了

        btrfs filesystem resize  +10G /MYDATA  df -lh 然后我給加回到40G了 

如下圖:

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

  現(xiàn)在我們?cè)谡J(rèn)識(shí)認(rèn)識(shí)btrfs device 下面的子命令吧:

btrfs device add <device> <path>:添加設(shè)備

btrfs device delete <device> <path>:從文件系統(tǒng)中移除或者去除設(shè)備

btrfs device ready <device>:

btrfs device stats [-z] <path>|<device>:

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

     從上面的執(zhí)行結(jié)果中,可以看到新增加的/dev/sdd的利用率是0,怎么樣均衡的分布,接下來(lái)我們就用到btrfs balance 的子命令了:

btrfs balance  start:開始均衡文件系統(tǒng)

btrfs balance start <path> -d<filters>convert:修改數(shù)據(jù)的組織機(jī)制,即raid級(jí)別

btrfs balance start <path> -m<filters>convert修改元數(shù)據(jù)的組織機(jī)制,即raid級(jí)別

btrfs balance start <path> -s<filters>convert:修改系統(tǒng)的組織機(jī)制,即raid級(jí)別

btrfs balance pause<path>:停止

btrfs balance cancel<path>取消

btrfs balance resume<path>繼續(xù)

btrfs balance status   <path>查看均衡狀態(tài)

     下圖給出了均衡的過(guò)程

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

     從下圖我們可以看出我們移除一個(gè)設(shè)備后,其之前的Btree系統(tǒng)里面的內(nèi)容還可以查看,說(shuō)明Btree可以自動(dòng)的將卸載設(shè)備的文件保存到其他的地方。

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

btrfs文件系統(tǒng)的簡(jiǎn)介和用法


      從上圖可以看到我們可以改變Btree文件系統(tǒng)或者里面存儲(chǔ)的數(shù)據(jù)和元數(shù)據(jù)的raid級(jí)別。
如果我們想把Btree文件系統(tǒng)進(jìn)行子卷操作的話,有一下命令可以供我們選擇使用:

btrfs  subvolume create <name>:創(chuàng)建子卷

btrfs  subvolume  delete <subvloume>刪除子卷

btrfs  subvolume   list:列出所有子卷

btrfs  subvolume snapshot <source> <dest> | <name>:創(chuàng)建快照

btrfs  subvolume  get-default<path>:默認(rèn)卷

btrfs  subvolume set-default<path>:設(shè)置默認(rèn)卷

btrfs  subvolume show:用來(lái)查看子卷的詳細(xì)信息

在創(chuàng)建子卷的過(guò)程中,如果父卷掛載了,則表示子卷也掛載完畢,如果想單獨(dú)掛載,那么就得先卸載父卷

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

     下圖是掛載子卷的過(guò)程:

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

     以下是創(chuàng)建快照的過(guò)程:

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

btrfs文件系統(tǒng)的簡(jiǎn)介和用法

         以上的這些簡(jiǎn)介都是一個(gè)初學(xué)者的淺薄認(rèn)知,如有不適當(dāng)?shù)牡胤?,歡迎指正和修改。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI