自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux那個很強大、卻被懷疑不太穩(wěn)定的文件系統(tǒng)就它了?btrfs文件系統(tǒng)兩種功能初探

系統(tǒng) Linux
雖然 Btrfs 具有一些先進的功能和特性,但它仍然是一種相對較新的文件系統(tǒng),可能存在一些穩(wěn)定性和兼容性問題。

網(wǎng)友在上文熱議的btrfs的種種不良印象,跟我之前使用中似乎不一樣,我覺得btrfs有很多亮點、很強大,它是近些年推出的優(yōu)秀的文件系統(tǒng)。SUSE 的開發(fā)者曾為 Linux 6.0 內(nèi)核更新了 Btrfs 文件系統(tǒng),使得工作負載的吞吐量提高了 3 倍。而 Linux 6.3 內(nèi)核中包含了Btrfs的大量更新和性能優(yōu)化 ,據(jù)說最高可以提升 10 倍。

本文和大家一起探索下btrfs的部分功能。

Btrfs(B-tree File System)是一種開源的文件系統(tǒng),最初由 Oracle 開發(fā),并于 2009 年首次發(fā)布。它是一種支持寫入時復制(COW,copy on write)的文件系統(tǒng),被廣泛運用于各種 Linux 操作系統(tǒng)之中,目標是取代 ext3 文件系統(tǒng),改善 ext3 的限制。

雖然 Btrfs 已經(jīng)得到了廣泛的應用和支持,但目前并沒有任何主流的 Linux 發(fā)行版將其作為默認文件系統(tǒng)。一些 Linux 發(fā)行版已經(jīng)將 Btrfs 作為可選的文件系統(tǒng)提供給用戶,例如 Fedora、Ubuntu、openSUSE、Debian 等。這些發(fā)行版通常會在安裝過程中提供選擇 Btrfs 作為文件系統(tǒng)的選項,或者在系統(tǒng)安裝后通過命令行或圖形界面工具進行轉(zhuǎn)換。

需要注意的是,雖然 Btrfs 具有一些先進的功能和特性,但它仍然是一種相對較新的文件系統(tǒng),可能存在一些穩(wěn)定性和兼容性問題。因此,在選擇使用 Btrfs 作為文件系統(tǒng)時,建議您仔細評估其優(yōu)缺點,并根據(jù)自己的需求和風險承受能力做出選擇。以下為演練操作,建議在虛擬機環(huán)境下演練。

環(huán)境說明

由于btrfs的一些功能在不同版本推出,所以這里有必要先聲明所用的btrfs環(huán)境信息。

  • 系統(tǒng)為Ubuntu 22.04 64位(Btrfs在Centos7、Deepin等發(fā)行版也支持)。
  • btrfs版本 btrfs-progs v5.16.2。
  • 現(xiàn)有存儲設備情況
# ls /dev/sd*
sda   sda1  sdb   sdc  
#

其中 /dev/sdb 和 /dev/sdc 是2塊均為2T的物理硬盤,未格式化。將用于創(chuàng)建btrfs文件系統(tǒng)。

以下是基于 /dev/sdb和/dev/sdc 硬盤創(chuàng)建支持快照、數(shù)據(jù)壓縮、只讀文件系統(tǒng)等特性的 Btrfs 文件系統(tǒng)的步驟:

(1) 確保系統(tǒng)中安裝了 Btrfs 工具:

# sudo apt update
# sudo apt install btrfs-progs
# sudo btrfs --version
btrfs-progs v5.16.2

(2) 查詢當前有哪些btrfs分區(qū):

# sudo btrfs filesystem show

由于未建立任何btrfs分區(qū),所以顯示為空。

(3) 創(chuàng)建 Btrfs 文件系統(tǒng):

# sudo mkfs.btrfs -m raid1 /dev/sdb /dev/sdc

上述命令將使用 RAID1 模式創(chuàng)建一個 Btrfs 文件系統(tǒng),其中 /dev/sdb 和 /dev/sdc 是使用的兩塊物理硬盤。

查看創(chuàng)建的btrfs:

# sudo btrfs filesystem show
Label: none  uuid: 3b9d76ac-c675-404e-8f99-e13d5420eb0c
        Total devices 2 FS bytes used 256.00KiB
        devid    1 size 2.00TiB used 1.02GiB path /dev/sdb
        devid    2 size 2.00TiB used 1.01GiB path /dev/sdc

(4) 掛載 Btrfs 文件系統(tǒng):

# sudo mount /dev/sdb /mnt/

上述命令將 Btrfs 文件系統(tǒng)(設備路徑 /dev/sdb)掛載到 /mnt 目錄。以上改成使用

# sudo mount /dev/sdc /mnt/

的結(jié)果一樣的,在btrfs的體系下,btrfs的成員存儲設備每個都可以作為同等地位的掛載來源。所以用兩塊硬盤中的任意一塊的地址都可以。

使用 df 查看最新的文件系統(tǒng)情況:

# df -lh 

可看到/mnt對應的空間容量有4TB:

# mount /dev/sdb  /mnt
# df -lh
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           546M  1.3M  545M   1% /run
/dev/sda1       2.0T  9.7G  1.9T   1% /
tmpfs           2.7G  4.0K  2.7G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           546M   76K  546M   1% /run/user/1000
/dev/sdb        4.0T  4.0M  4.0T   1% /mnt

配置 Btrfs 文件系統(tǒng)的子卷:

# sudo btrfs subvolume create /mnt/@home
# sudo btrfs subvolume create /mnt/@snapshots
# sudo btrfs subvolume create /mnt/@backup

上述命令創(chuàng)建了三個子卷:@home、@snapshots 和 @backup。您可以根據(jù)需要創(chuàng)建更多的子卷。@符號后的是子卷名稱。三個子卷在文件系統(tǒng)目錄下。

(6) 配置子卷的屬性:

# sudo btrfs property set /mnt/@home compression lzo
# sudo btrfs property set /mnt/@snapshots ro true

上述命令將 @home 子卷的壓縮算法設置為 lzo,并將 @snapshots 子卷設置為只讀,由于作為快照用途,為了保護快照不被篡改可以設置快照子卷為只讀這個功能在防止勒索病毒破壞的情況下非常有用)。

目前不建議馬上執(zhí)行上面第2句命令。如果你已執(zhí)行,可繼續(xù)執(zhí)行下面命令將其設置為可讀寫

# sudo btrfs property set /mnt/@snapshots ro false

既然有set,就有g(shù)et,我們要查看btrfs的子卷的屬性,則只需將set改為get,

# sudo btrfs property get /mnt/@snapshots 

輸出顯式了該子卷當前的屬性:
ro=false

就獲取到了子卷 @snapshots 的狀態(tài),目前為可讀寫權(quán)限。

關(guān)于btrfs的peroperty支持哪些參數(shù),可在閑時進一步閱讀btrfs子卷的 property 支持的參數(shù)列表,官網(wǎng)文檔鏈接[1]我們繼續(xù)測試btrfs的 快照功能。

(7) 啟用 Btrfs 文件系統(tǒng)的快照功能:

快照簡單的來說就是一個子卷,它使用 Btrfs 的 COW 功能與其他子卷共享其數(shù)據(jù)和元數(shù)據(jù)。

快照占用的空間將隨著原始子卷或快照本身(如果它是可寫的)的數(shù)據(jù)變化而增加。子卷中已添加/修改的文件和已刪除的文件仍然存在于快照中。這是一種方便的增量備份方式,快照 home-2023-12-04-1 生成后發(fā)生的任何文件變化,就被作為下一次快照home-2023-12-04-2需要保存的增量數(shù)據(jù),如此不斷增量備份。下面對此加以演示說明:

# sudo btrfs subvolumn snapshot /mnt/\@home  /mnt/\@snapshots/home-2023-12-04-1

上述命令創(chuàng)建了 @home 子卷的快照,位置在日期名稱的路徑下。此時/mnt/\@home 目錄內(nèi)沒有任何文件,所以快照 /mnt/\@snapshots/home-2023-12-04-1 里也沒有任何文件。

然后復制 /etc/fstab文件到 子卷 @home 里:

# cp /etc/fstab  /mnt/\@home

再快照為 /mnt/\@snapshots/home-2023-12-04-2:

# sudo btrfs subvolumn snapshot /mnt/\@home  /mnt/\@snapshots/home-2023-12-04-2

此時查看新快照內(nèi)的文件情況:

# ls  /mnt/\@snapshots/home-2023-12-04-2

結(jié)果顯示有個 fstab 文件。而老快照仍沒有文件。

# ls  /mnt/\@snapshots/home-2023-12-04-1

說明 兩個快照確實是不同時刻的文件系統(tǒng)快照,效果符合預期。

現(xiàn)在,您已經(jīng)成功創(chuàng)建了一個支持快照、數(shù)據(jù)壓縮和只讀等特性的 Btrfs 文件系統(tǒng)。您可以根據(jù)需要在子卷中存儲不同類型的數(shù)據(jù),并使用 Btrfs 的管理命令進行管理和操作。

(8) 卸載 Btrfs 文件系統(tǒng):

# sudo umount /dev/sdb 

或:

# sudo umount /dev/sdc

上述命令將 Btrfs 文件系統(tǒng)從掛載的 /mnt 目錄卸載。之所以能用 sdb和sdc 都能卸載,道理跟第4. 掛載 Btrfs 文件系統(tǒng)掛載時用這兩個一樣。以上改成使用:

# sudo umount /mnt

也是同樣效果。這與linux系統(tǒng)格式的文件系統(tǒng)的卸載是同樣道理。

一個心照不宣的秘密,其實你可以更自由地給 子卷名起名:

最后不得不提到一個你可能一直覺得不爽的點:為什么btrfs子卷名稱前面要以@開始?如果訪問btrfs的子卷的時候每次都得用反斜杠轉(zhuǎn)義后才能訪問路徑(shell里不寫轉(zhuǎn)義@的形式還會報錯提示說路徑不存在),覺得很麻煩吧?但似乎網(wǎng)上很多教程都會以@作為快照名稱開頭?

其實你在第5. 配置 Btrfs 文件系統(tǒng)的子卷時,也可以省略@,那么子卷的名稱就是home,snapshot 等,后續(xù)的命令中也就不帶@范圍子卷。

之所以 btrfs 的很多教程里都會用@ 作為子卷名稱開頭,是約定俗成,為了表示與普通目錄名稱產(chǎn)生視覺區(qū)別,僅此而已( 假設 /mnt/目錄下 既有子卷名、又有普通目錄名的時候,就難以區(qū)分哪個是子卷)。

本文就最近熱議的分區(qū)話題,評論區(qū)提到的btrfs的一些實例演示。希望對未接觸過btrfs使用的小伙伴有所幫助。

參考資料:[1]btrfs子卷的 property 支持的參數(shù)列表,官網(wǎng)文檔鏈接: https://btrfs.readthedocs.io/en/latest/btrfs-property.html

轉(zhuǎn)載自微信公眾號【深入理解Linux】,二維碼如下

責任編輯:趙寧寧 來源: 深入理解Linux
相關(guān)推薦

2009-12-14 13:14:57

2021-05-31 06:10:14

Btrfs文件系統(tǒng)Linux

2020-01-15 09:10:13

LinuxWindowsmacOS

2020-07-22 14:53:06

Linux系統(tǒng)虛擬文件

2009-08-27 12:00:45

ibmdwLinux

2011-01-13 14:10:30

Linux文件系統(tǒng)

2014-03-20 15:59:11

OpenSUSE 13Btrfs文件系統(tǒng)

2022-05-11 17:21:05

Btrfs文件系統(tǒng)Fedora

2011-08-10 09:25:16

BtrfsFedora 16

2021-06-06 16:55:22

Linux文件系統(tǒng)

2021-04-12 05:44:44

Linux文件系統(tǒng)

2021-06-08 07:48:27

Linux文件系統(tǒng)

2011-06-27 10:17:15

EXT4 Btrfs

2018-08-24 10:10:25

Linux文件系統(tǒng)技術(shù)

2019-09-20 10:04:45

Linux系統(tǒng)虛擬文件

2021-05-27 15:03:01

Fedora ClouBtrfs文件系統(tǒng)

2021-05-31 07:50:59

Linux文件系統(tǒng)

2023-07-13 23:35:06

系統(tǒng)Linux

2011-01-13 13:18:38

Linux網(wǎng)絡文件

2021-11-01 13:38:55

Linux文件系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號