Linux中國

使用 mergefs 增加虛擬存儲

如果你想在一個媒體項目中用到了多個磁碟或分區,不想丟失任何現有數據,但又想將所有文件都存放在一個驅動器下,該怎麼辦?這時,mergefs 就能派上用場!

mergerfs 是一個聯合文件系統,旨在簡化存儲和管理眾多商業存儲設備上的文件。

你需要從他們的 GitHub 頁面獲取最新的 RPM。Fedora 的版本名稱中帶有 「fc」 和版本號。例如,這是 Fedora 31 的版本: mergerfs-2.29.0-1.fc31.x86_64.rpm

安裝和配置 mergefs

使用 sudo 安裝已下載的 mergefs 軟體包:

$ sudo dnf install mergerfs-2.29.0-1.fc31.x86_64.rpm

現在,你可以將多個磁碟掛載為一個驅動器。如果你有一台媒體伺服器,並且希望所有媒體文件都顯示在一個地方,這將很方便。如果將新文件上傳到系統,那麼可以將它們複製到 mergefs 目錄,mergefs 會自動將它們複製具有足夠可用空間的磁碟上。

這是使你更容易理解的例子:

$ df -hT | grep disk
/dev/sdb1      ext4      23M  386K 21M 2% /disk1
/dev/sdc1      ext4      44M  1.1M 40M 3% /disk2

$ ls -l /disk1/Videos/
total 1
-rw-r--r--. 1 curt curt 0 Mar 8 17:17 Our Wedding.mkv

$ ls -l /disk2/Videos/
total 2
-rw-r--r--. 1 curt curt 0 Mar 8 17:17 Baby's first Xmas.mkv
-rw-rw-r--. 1 curt curt 0 Mar 8 17:21 Halloween hijinks.mkv

在此例中掛載了兩塊磁碟,分別為 disk1disk2。兩個驅動器都有一個包含文件的 Videos 目錄。

現在,我們將使用 mergefs 掛載這些驅動器,使它們看起來像一個更大的驅動器。

$ sudo mergerfs -o defaults,allow_other,use_ino,category.create=mfs,moveonenospc=true,minfreespace=1M /disk1:/disk2 /media

mergefs 手冊頁非常龐雜,因此我們將說明上面提到的選項。

  • defaults:除非指定,否則將使用默認設置。
  • allow_other:允許 sudoroot 以外的用戶查看文件系統
  • use_ino:讓 mergefs 提供文件/目錄 inode 而不是 libfuse。雖然不是默認值,但建議你啟用它,以便鏈接的文件共享相同的 inode 值。
  • category.create=mfs:根據可用空間在驅動器間傳播文件。
  • moveonenospc=true:如果啟用,那麼如果寫入失敗,將進行掃描以查找具有最大可用空間的驅動器。
  • minfreespace=1M:最小使用空間值。
  • disk1:第一塊硬碟。
  • disk2:第二塊硬碟。
  • /media:掛載驅動器的目錄。

看起來是這樣的:

$ df -hT | grep disk
/dev/sdb1  ext4           23M      386K 21M 2% /disk1
/dev/sdc1  ext4           44M      1.1M 40M 3% /disk2

$ df -hT | grep media
1:2        fuse.mergerfs  66M      1.4M 60M 3% /media

你可以看到現在 mergefs 掛載顯示的總容量為 66M,這是兩塊硬碟的總容量。

繼續示例:

有一個叫 Baby's second Xmas.mkv 的 30M 視頻。讓我們將其複製到用 mergerfs 掛載的 /media 文件夾中。

$ ls -lh "Baby's second Xmas.mkv"
-rw-rw-r--. 1 curt curt 30M Apr 20 08:45 Baby's second Xmas.mkv
$ cp "Baby's second Xmas.mkv" /media/Videos/

這是最終結果:

$ df -hT | grep disk
/dev/sdb1  ext4          23M 386K 21M 2% /disk1
/dev/sdc1  ext4          44M 31M 9.8M 76% /disk2

$ df -hT | grep media
1:2        fuse.mergerfs 66M 31M 30M 51% /media

從磁碟空間利用率中可以看到,因為 disk1 沒有足夠的可用空間,所以 mergefs 自動將文件複製到 disk2

這是所有文件詳情:

$ ls -l /disk1/Videos/
total 1
-rw-r--r--. 1 curt curt 0 Mar 8 17:17 Our Wedding.mkv

$ ls -l /disk2/Videos/
total 30003
-rw-r--r--. 1 curt curt 0 Mar 8 17:17 Baby's first Xmas.mkv
-rw-rw-r--. 1 curt curt 30720000 Apr 20 08:47 Baby's second Xmas.mkv
-rw-rw-r--. 1 curt curt 0 Mar 8 17:21 Halloween hijinks.mkv

$ ls -l /media/Videos/
total 30004
-rw-r--r--. 1 curt curt 0 Mar 8 17:17 Baby's first Xmas.mkv
-rw-rw-r--. 1 curt curt 30720000 Apr 20 08:47 Baby's second Xmas.mkv
-rw-rw-r--. 1 curt curt 0 Mar 8 17:21 Halloween hijinks.mkv
-rw-r--r--. 1 curt curt 0 Mar 8 17:17 Our Wedding.mkv

當你將文件複製到 mergefs 掛載點時,它將始終將文件複製到有足夠可用空間的硬碟上。如果池中的所有驅動器都沒有足夠的可用空間,那麼你將無法複製它們。

via: https://fedoramagazine.org/using-mergerfs-to-increase-your-virtual-storage/

作者:Curt Warfield 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國