Centos7上安装ZFS

原创
01/17 17:35
阅读数 748

一、查看Centos7的版本

# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

二、添加对应的ZFS安装包资源

# rpm -ivh http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm

三、安装ZFS

ZFS模块可以通过两种方式加载到内核,DKMS和kABI。

它们之间的区别是:

  • 基于DKMS安装ZFS模块,然后由于某种原因更新了操作系统的内核,则必须再次重新编译ZFS内核模块,否则它将无法工作。
  • 基于kABI安装ZFS模块,如果更新操作系统的内核,则不需要重新编译。

在本文中,将基于kABI安装ZFS内核模块。

3.1 在CentOS 7上安装ZFS存储库时,默认情况下会启用基于DKMS的存储库。 因此,必须禁用基于DKMS的存储库并启用基于kABI的存储库。

要禁用基于DKMS的ZFS存储库并启用基于kABI的ZFS存储库,编辑ZFS的yum配置文件

# vim /etc/yum.repos.d/zfs.repo

[zfs]
name=ZFS on Linux for EL7 - dkms
baseurl=http://download.zfsonlinux.org/epel/7.6/$basearch/
# enabled=1
enabled=0   # 关闭DKMS安装
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux

[zfs-kmod]
name=ZFS on Linux for EL7 - kmod
baseurl=http://download.zfsonlinux.org/epel/7.6/kmod/$basearch/
# enabled=0
enabled=1     # 启用kABI安装
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux

3.2 安装zfs

# yum install zfs

重启服务器

3.3 检查zfs模块

3.3.1 系统重启后,检查内核中是否加载了zfs

# lsmod |grep zfs
zfs                  3564425  4
zunicode              331170  1 zfs
zavl                   15236  1 zfs
icp                   270148  1 zfs
zcommon                73440  1 zfs
znvpair                89131  2 zfs,zcommon
spl                   102412  4 icp,zfs,zcommon,znvpair

3.3.2 如果没有看到任何输出,则内核没有加载ZFS模块。 在这种情况下,请运行以下命令以手动加载ZFS内核模块。

# modprobe zfs

现在再次运行 lsmod | grep zfs,你应该看到内核中加载的zfs模块

3.3.3 添加系统重启自动加载zfs模块

在/etc/sysconfig/modules添加文件

# vim zfs

#!/bin/sh
/sbin/modinfo -F filename zfs > /dev/null 2>&1
if [ $? -eq 0 ]; then
     /sbin/modprobe zfs
fi

# chmod 755 zfs

注:

zfs 0.7.12之后版本中zfs模块启动时没有加载

This seems to be missing from newer versions of ZFS, from a 0.7.12 system:

# cat /usr/lib/systemd/system/zfs-import-scan.service
[Unit]
Description=Import ZFS pools by device scanning
DefaultDependencies=no
Requires=systemd-udev-settle.service
After=systemd-udev-settle.service
After=cryptsetup.target
Before=dracut-mount.service
Before=zfs-import.target
ConditionPathExists=!/etc/zfs/zpool.cache

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/sbin/modprobe zfs
ExecStart=/sbin/zpool import -aN -o cachefile=none

[Install]
WantedBy=zfs-import.target

On a 0.8.2 system:

# cat /usr/lib/systemd/system/zfs-import-scan.service
[Unit]
Description=Import ZFS pools by device scanning
Documentation=man:zpool(8)
DefaultDependencies=no
Requires=systemd-udev-settle.service
After=systemd-udev-settle.service
After=cryptsetup.target
Before=zfs-import.target
ConditionPathExists=!/etc/zfs/zpool.cache

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/zpool import -aN -o cachefile=none

[Install]
WantedBy=zfs-import.target

因此zfs 0.8.2 版本之后需要修改/usr/lib/systemd/system/zfs-import-scan.service,添加ExecStartPre=/sbin/modprobe zfs。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部