Install ZFS on Oracle Linux 8

之前都是在FreeBSD使用ZFS磁區,嘗過ZFS的甜頭後當然就想在Linux OS試試看瞜,小編這次就在Oracle Linux上安裝ZFS套件,安裝過程其實不複雜,快來了解一下。

[範例情境]
作業系統:Oracle Linux 8.5
ZFS套件:openzfs 2.0.7-1

[安裝步驟]
01、選擇一般核心版本開機

02、檢查UEK版本核心套件版本
rpm -qa | grep kernel

03、移除uek核心
yum remove kernel-uek-5.4.17-2136.300.7.el8uek.x86_64

※補充說明:由於openzfs不支援uek核心,因此將uek核心移除,避免開機時誤選

04、檢查剩餘核心套件是否還有UEK版本
rpm -qa | grep kernel

05、更新開機選單
grub2-mkconfig -o /boot/grub2/grub.cfg

06、重新開機
reboot

07、安裝zfs套件安裝來源
dnf install -y https://zfsonlinux.org/epel/zfs-release.el8_5.noarch.rpm

08、匯入金鑰
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux

09、安裝EPEL
dnf install -y oracle-epel-release-el8

10、安裝核心套件
dnf install -y kernel-devel

11、停用zfs傳統套件
dnf config-manager –disable zfs

12、切換到zfs-kmod套件
dnf config-manager –enable zfs-kmod

13、安裝zfs
dnf install zfs

14、設定ZFS模組載入
echo zfs >/etc/modules-load.d/zfs.conf

15、手動載入ZFS模組
/sbin/modprobe zfs

16、查看ZFS磁區
zfs list

17、查看硬碟列表
fdisk -l

18、將/dev/sdb建立成zfs磁區並啟動壓縮功能
zpool create -f -o ashift=12 local-SSD /dev/sdb
zfs set compression=lz4 local-SSD
df -h

19、查看ZFS磁區
zfs list

20、查看ZFS套件版本
cat /sys/module/zfs/version

[安裝自動快照套件]
01、安裝文字模式下載軟體
dnf install -y wget

02、安裝軟體編譯套件
dnf install -y gcc automake autoconf libtool make

03、下載zfs-auto-snapshot套件
wget https://github.com/zfsonlinux/zfs-auto-snapshot/archive/upstream/1.2.4.tar.gz

04、解壓縮zfs-auto-snapshot套件
tar zxvf 1.2.4.tar.gz

05、安裝zfs-auto-snapshot套件
cd zfs-auto-snapshot-upstream-1.2.4
make install

06、查看軟體執行檔路徑
whereis zfs-auto-snapshot

07、手動建立ZFS磁區快照
/usr/local/sbin/zfs-auto-snapshot -q -g –label=frequent –keep=24 //

08、查看ZFS磁區快照狀態
zfs list -t snapshot

09、還原快照
(a)、查看快照狀態
zfs list -t snapshot

(b)、還原快照(最新的快照)
zfs rollback ssd@zfs-auto-snap_frequent-2022-03-23-0538

(C)、還原其他快照(並非最新的快照)
zfs rollback ssd@zfs-auto-snap_frequent-2022-03-23-0537 -r

補充說明:跨越最新的快照,必須使用「-r」參數進行「刪除跨越快照」的動作

10、刪除快照
(a)、刪除指定快照
zfs list -t snapshot

sudo zfs destroy ssd@zfs-auto-snap_frequent-2022-03-23-0335
zfs list -t snapshot

(b)、刪除所有快照
zfs list -t snapshot
sudo zfs list -H -o name -t snapshot | xargs -n1 zfs destroy
zfs list -t snapshot

補充說明:強制刪除所有快照語法
sudo zfs list -H -o name -t snapshot | xargs -n1 zfs destroy -R

11、建立排程自動快照
vi /etc/cron.d/zfs-auto-snapshot

檔案內容如下所示:
PATH=”/usr/bin:/bin:/usr/sbin:/sbin”
*/5 * * * * root /usr/local/sbin/zfs-auto-snapshot -q -g –label=frequent –keep=24 //

00 * * * * root /usr/local/sbin/zfs-auto-snapshot -q -g –label=hourly –keep=24 //
59 23 * * * root /usr/local/sbin/zfs-auto-snapshot -q -g –label=daily –keep=14 //
59 23 * * 0 root /usr/local/sbin/zfs-auto-snapshot -q -g –label=weekly –keep=4 //
00 00 1 * * root /usr/local/sbin/zfs-auto-snapshot -q -g –label=monthly –keep=18 //

12、透過zfs clone複製特定快照掛載使用
(a)、查看現有的快照
zfs list -t snapshot

(b)、選定特定快照進行複製掛載
zfs clone ssd@zfs-auto-snap_frequent-2022-03-23-0430 ssd/new

(c)、查看磁區狀態
df -h

(d)、卸除掛載
zfs destroy ssd/new

※補充說明:
(1)、zfs clone語法格式
zfs clone [快照名稱] ssd/[自訂掛載名稱]

(2)、ssd為原本zfs的磁區名稱

13、啟動去除重複資料(dedup)功能
(a)、查詢ZFS磁區列表
zpool list

(b)、查詢ZFS磁區的dedup功能狀態
zfs get dedup ssd

(c)、設定ZFS磁區啟用dedup功能
zfs set dedup=on ssd

(d)、檢查ZFS磁區的dedup功能狀態
zfs get dedup ssd

14、檢查ZFS空間狀態
zpool get capacity,size,health,fragmentation

補充說明:
capacity:使用量
size:空間總量
health:健康狀態
fragmentation:空間破碎狀態

15、zfs-auto-snapshot參數說明
範例語法:
/usr/local/sbin/zfs-auto-snapshot –prefix=”zfs-test” -q -g –keep=24 //

參數說明:
(a)、「–prefix=”zfs-test”」
取代原本預設的”zfs-auto-snap”快照名稱
ssd@zfs-test_weekly-2022-03-23-0720

(b)、「-q
安靜模式,不顯示任何訊息

(c)、「-g」
將記錄寫入syslog,log預設路徑「/var/log/messages」

(d)、「–label=weekly
自訂快照標籤名稱,會顯示在快照命名的日期之前
ssd@zfs-auto-snap_weekly-2022-03-23-0720

(e)、「//
不指定zfs磁區,全面進行快照。
如需指定zfs磁區則使用下列語法:
/usr/local/sbin/zfs-auto-snapshot –prefix=”zfs-test” -q -g –keep=24 ssd