参考文档:
ZFS源码:Github
ZFS部署文档:ZFS-WiKi、ZFS-freebsd
OpenZFS 是一个高级文件系统和卷管理器,最初是为 Solaris 开发的,现在由 OpenZFS 社区维护。
ZFS是一种先进的现代文件系统,是一个革命性的文件系统,它专门设计用于提供传统UNIX文件系统中不具备的功能,从根本上改变了文件系统的管理方式,具有目前市面上的其他任何文件系统所没有的功能和优点。ZFS最初是由Sun公司为Solaris 10操作系统开发的文件系统,被Sun称为是终极文件系统。为了便于将其移植到其他操作系统,ZFS作为OpenSolaris开源计划的一部分,于2005年11月发布,经历了10年的活跃开发。Oracle收购Sun之后,为了能够继续提供开源版本,原来负责开发ZFS文件系统的几个工程师建立了OpenZFS开源项目以提供开源版本的持续协作开发。
安装部署说明:# Getting Started
源码编译说明:# Building ZFS
由于在线安装相关版本过于陈旧,示例使用最新的zfs-2.1.4源码进行手动编译安装
yum install epel-release gcc make autoconf automake libtool rpm-build libtirpc-devel libblkid-devel libuuid-devel libudev-devel openssl-devel zlib-devel libaio-devel libattr-devel elfutils-libelf-devel kernel-devel-$(uname -r) python python2-devel python-setuptools python-cffi libffi-devel git ncompress libcurl-devel
yum install --enablerepo=epel python-packaging dkms
cd /opt/
wget https://github.com/openzfs/zfs/releases/download/zfs-2.1.4/zfs-2.1.4.tar.gz
tar -zxvf zfs-2.1.4.tar.gz
cd zfs-2.1.4
./autogen.sh
./configure
make rpm
yum install *.rpm -y
modprobe zfs
[root@node129 ~]# zfs version
zfs-2.1.4-1
zfs-kmod-2.1.4-1
sudo apt install build-essential autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev linux-headers-$(uname -r) python3 python3-dev python3-setuptools python3-cffi libffi-dev python3-packaging git libcurl4-openssl-dev
cd /opt/
wget https://github.com/openzfs/zfs/releases/download/zfs-2.1.4/zfs-2.1.4.tar.gz
tar -zxvf zfs-2.1.4.tar.gz
cd zfs-2.1.4
./autogen.sh
./configure
make deb
dpkg -i *.deb
modprobe zfs
示例使用CentOS7.6系统
zfs-release
包,安装完成之后,会生成yum源配置(/etc/yum.repos.d/zfs.repo
)和公共签名密钥(/etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
)zfs-rekease
包与系统版本相关,如示例为CentOS7.6系统,则对应包名为zfs-release.el7_6.noarch.rpmyum install https://zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
yum install -y epel-release
yum install -y kernel-devel
yum install -y zfs
示例使用Ubuntu16.04系统,基于Ubuntu系统下,ZFS默认集成在Linux内核包中,只需要安装ZFS应用程序即可
echo "deb http://archive.ubuntu.com/ubuntu xenial main universe" >> /etc/apt/sources.list
apt update
apt install zfsutils-linux
参考文档:
oracle-zfs
oracle-zpool
通用格式如下:
zpool create -f -m [pool-type] [pool-type] [spare log cache ]
/pool-name
注:一个raidzx存储池包括n个数据盘+m个校验盘(n+m太大会导致文件拆的很碎,官方建议n+m小于16),n通常建议是2的次方(如2/4/8),raidx存储池利用率=n/(n+m)
示例如下,使用10块磁盘创建raidz2存储池(8 + 2),配备一块热备盘
zpool create -f zfspool raidz2 /dev/mapper/mpathcu1 /dev/mapper/mpathbp1 /dev/mapper/mpathak1 /dev/mapper/mpathch1 /dev/mapper/mpathbc1 /dev/mapper/mpathaw1 /dev/mapper/mpathct1 /dev/mapper/mpathbo1 spare /dev/mapper/mpathcj1
zfs支持文件、块接口,默认为文件接口,如需创建块设备,可执行命令zfs create -V
通用格式如下:
zpool add -f [pool-type] [pool-type] [spare log cache ]
通用格式如下:
zpool destroy
注:如只需删除一个子空间,则执行zfs destroy
zpool replace
zpool remove
zpool list
zpool status
zfs get all
zfs get mountpoint
zpool scrub
zpool iostat [monitor-second]
monitor-second
为读写性能打印间隔,单位为秒问题说明
默认情况下,开启启动时,只有当检测到存在ZFS池的时候,才会加载zfs内核模块
解决措施
如需设置每次开机自动加载zfs模块,则添加配置如下即可
echo zfs >/etc/modules-load.d/zfs.conf
问题说明
实际使用过程中,4.14高内核版本与ZFS存在兼容性问题,通过FTP服务、HTTP服务读取ZFS存储大文件失败
解决措施
更新内核版本为3.10.0-1160.66.1.el7.x86_64解决