在 Linux 上使用 yum 設置 ZFS
我是一名 Fedora Linux 用戶,我每天都會運行 yum upgrade
。雖然這個習慣使我能夠運行所有最新的軟體(Fedora 的四個基礎之一的 「First」 ,它也做到了),但它也會提醒 ZFS 存儲平台和新內核之間的不兼容性。
作為一名開發者,有時我需要最新的 ZFS 分支的新特性。例如,ZFS 2.0.0 包含了一個令人興奮的新功能,它大大提高了 ZVOL 同步性能,這對我這個 KVM 用戶來說至關重要。但這意味著,如果我想使用 2.0.0 分支,我必須自己構建 ZFS。
起初,我只是在每次內核更新後從它的 Git 倉庫中手動編譯 ZFS。如果我忘記了,ZFS 就會在下次啟動時無法被識別。幸運的是,我很快就學會了如何為 ZFS 設置動態內核模塊支持 (DKMS)。然而,這個解決方案並不完美。首先,它沒有利用強大的 yum 系統,而這個系統可以幫助解決依賴關係和升級。此外,使用 yum
在你自己的包和上游包之間進行切換是非常容易的。
在本文中,我將演示如何設置 yum
倉庫來打包 ZFS。這個方案有兩個步驟:
- 從 ZFS 的 Git 倉庫中創建 RPM 包。
- 建立一個
yum
倉庫來託管這些包。
創建 RPM 包
要創建 RPM 包,你需要安裝 RPM 工具鏈。yum
提供了一個組來捆綁安裝這些工具:
sudo dnf group install 'C Development Tools and Libraries' 'RPM Development Tools'
安裝完這些之後,你必須從 ZFS Git 倉庫中安裝構建 ZFS 所需的所有包。這些包屬於三個組:
- Autotools,用於從平台配置中生成構建文件。
- 用於構建 ZFS 內核和用戶態工具的庫。
- 構建 RPM 包的庫。
sudo dnf install libtool autoconf automake gettext createrepo
libuuid-devel libblkid-devel openssl-devel libtirpc-devel
lz4-devel libzstd-devel zlib-devel
kernel-devel elfutils-libelf-devel
libaio-devel libattr-devel libudev-devel
python3-devel libffi-devel
現在你已經準備好創建你自己的包了。
構建 OpenZFS
OpenZFS 提供了優秀的基礎設施。要構建它:
- 用
git
克隆倉庫,並切換到你希望使用的分支/標籤。 - 運行 Autotools 生成一個 makefile。
- 運行
make rpm
,如果一切正常,RPM 文件將被放置在build
文件夾中。
$ git clone --branch=zfs-2.0.0-rc3 <https://github.com/openzfs/zfs.git> zfs
$ cd zfs
$ ./autogen.sh
$ ./configure
$ make rpm
建立一個 yum 倉庫
在 yum
中,倉庫是一個伺服器或本地路徑,包括元數據和 RPM 文件。用戶設置一個 INI 配置文件,yum
命令會自動解析元數據並下載相應的軟體包。
Fedora 提供了 createrepo
工具來設置 yum
倉庫。首先,創建倉庫,並將 ZFS 文件夾中的所有 RPM 文件複製到倉庫中。然後運行 createrepo --update
將所有的包加入到元數據中。
$ sudo mkdir -p /var/lib/zfs.repo
$ sudo createrepo /var/lib/zfs.repo
$ sudo cp *.rpm /var/lib/zfs.repo/
$ sudo createrepo --update /var/lib/zfs.repo
在 /etc/yum.repos.d
中創建一個新的配置文件來包含倉庫路徑:
$ echo
"[zfs-local]\nname=ZFS Local\nbaseurl=file:///var/lib/zfs.repo\nenabled=1\ngpgcheck=0" |
sudo tee /etc/yum.repos.d/zfs-local.repo
$ sudo dnf --repo=zfs-local list available --refresh
終於完成了!你已經有了一個可以使用的 yum
倉庫和 ZFS 包。現在你只需要安裝它們。
$ sudo dnf install zfs
$ sudo /sbin/modprobe zfs
運行 sudo zfs version
來查看你的用戶態和內核工具的版本。恭喜!你擁有了 Fedora 中的 ZFS。
via: https://opensource.com/article/20/10/zfs-dnf
作者:Sheng Mao 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive