centos做网站服务器,想做网站选什么专业,搜索引擎平台有哪些软件,百度搜索引擎的使用方法一、前言 参考文档#xff1a; ZFS源码#xff1a;Github ZFS部署文档#xff1a;ZFS-WiKi、ZFS-freebsd OpenZFS 是一个高级文件系统和卷管理器#xff0c;最初是为 Solaris 开发的#xff0c;现在由 OpenZFS 社区维护。
1、简介
ZFS是一种先进的现代文件系统#xff…一、前言 参考文档 ZFS源码Github ZFS部署文档ZFS-WiKi、ZFS-freebsd OpenZFS 是一个高级文件系统和卷管理器最初是为 Solaris 开发的现在由 OpenZFS 社区维护。
1、简介
ZFS是一种先进的现代文件系统是一个革命性的文件系统它专门设计用于提供传统UNIX文件系统中不具备的功能从根本上改变了文件系统的管理方式具有目前市面上的其他任何文件系统所没有的功能和优点。ZFS最初是由Sun公司为Solaris 10操作系统开发的文件系统被Sun称为是终极文件系统。为了便于将其移植到其他操作系统ZFS作为OpenSolaris开源计划的一部分于2005年11月发布经历了10年的活跃开发。Oracle收购Sun之后为了能够继续提供开源版本原来负责开发ZFS文件系统的几个工程师建立了OpenZFS开源项目以提供开源版本的持续协作开发。
2、常用术语
Pool存储驱动器的逻辑分组它是ZFS的基本构建块从这里将存储空间分配给数据集。DatasetsZFS文件系统的组件即文件系统、克隆、快照和卷被称为数据集。Mirror一个虚拟设备存储相同的两个或两个以上的磁盘上的数据副本在一个磁盘失败的情况下,相同的数据是可以用其他磁盘上的镜子。Resilvering在恢复设备时将数据从一个磁盘复制到另一个磁盘的过程。Scrub擦除用于一致性检验在ZFS像在其他文件系统如何使用fsck。
二、安装说明 安装部署说明# Getting Started 源码编译说明# Building ZFS 1、源码编译
由于在线安装相关版本过于陈旧示例使用最新的zfs-2.1.4源码进行手动编译安装
1.1、CentOS
安装依赖
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 --enablerepoepel python-packaging dkms编译rpm包 下载zfs-2.1.4.tar.gz源码包执行rpm编译操作
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安装rpm包 安装编译好的rpm包手动加载zfs内核模块
yum install *.rpm -y
modprobe zfs查看当前版本信息
[rootnode129 ~]# zfs version
zfs-2.1.4-1
zfs-kmod-2.1.4-11.2、Ubuntu
安装依赖
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编译deb包 下载zfs-2.1.4.tar.gz源码包执行deb编译操作
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安装deb包 安装编译好的deb包手动加载zfs内核模块
dpkg -i *.deb
modprobe zfs2、在线安装
2.1、CentOS
示例使用CentOS7.6系统
安装zfs-release包 为简化安装步骤官方提供了一个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.rpm
yum install https://zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux安装ZFS相关软件包
yum install -y epel-release
yum install -y kernel-devel
yum install -y zfs2.2、Ubuntu
示例使用Ubuntu16.04系统基于Ubuntu系统下ZFS默认集成在Linux内核包中只需要安装ZFS应用程序即可
更新在线源
echo deb http://archive.ubuntu.com/ubuntu xenial main universe /etc/apt/sources.list
apt update安装ZFS应用程序
apt install zfsutils-linux三、部署说明 参考文档 oracle-zfs oracle-zpool 1、存储池管理
1.1、创建存储池
通用格式如下
zpool create -f -m mount-path pool-name [pool-type] disk [pool-type] disk [spare disk log disk cache disk]-f 可选参数表示强制创建可避免EFI label error错误-m 可选参数后接存储池挂载路径mount-path默认不指定时挂载路径为/pool-namepool-name 表示为存储池名称pool-type 表示为存储池类型默认不指定时为raidz可选参数raidz、raidz1、raidz2、raidz3、mirrorraidz 类似raid0无冗余raidz1 类似raid5可容忍一块磁盘损坏至少需要三个磁盘其中一个磁盘用于奇偶校验raidz2 类似raid6可容忍两块磁盘损坏至少需要四个磁盘其中两个磁盘用于奇偶校验raidz3 类似raid7可容忍三块硬盘损坏至少需要五个磁盘其中三个磁盘用于奇偶校验mirror 类似raid1或raid10同一个镜像组可以容忍一半的磁盘损坏disk 表示组成存储池的磁盘列表可以为磁盘名称如sdb、磁盘完整路径如/dev/sdb、磁盘id可通过/dev/disk/by-id/查询如ata-ST6000NM0115-1YZ110_ZAD1DR7M为避免因磁盘盘符漂移导致zpool无法恢复此处建议使用磁盘id方式指定spare : 可选参数后接磁盘列表表示热备盘当raid组出现磁盘故障则会启用热备盘进行数据恢复log 可选参数后接磁盘列表表示日志盘日志盘可以做成镜像用于数据冗余可以使用独立的SSD作为日志盘使用多块SSD时日志信息会平均分散到所有SSD内可以提升同步写入性能如资料库cache 可选参数后接磁盘列表表示缓存盘缓存盘不可以做成镜像但缓存盘只会存储额外的现有数据副本并不会导致数据丢失可以加速数据读取性能
注一个raidzx存储池包括n个数据盘m个校验盘nm太大会导致文件拆的很碎官方建议nm小于16n通常建议是2的次方如2/4/8raidx存储池利用率n/(nm)
示例如下使用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/mpathcj1zfs支持文件、块接口默认为文件接口如需创建块设备可执行命令zfs create -V volume-size pool-name/volume-name
1.2、扩展存储池
通用格式如下
zpool add -f pool-name [pool-type] disk [pool-type] disk [spare disk log disk cache disk]1.3、删除存储池
通用格式如下
zpool destroy pool-name注如只需删除一个子空间则执行zfs destroy pool-name/dataset-name
1.4、存储池故障处理
替换存储池故障盘 zpool replace pool-bane disk-old disk-new移除存储池磁盘zpool remove pool-name disk-name 注此处只能移除未被使用的热备盘、日志盘及缓存盘
1.5、存储池状态查询
查看当前存储池列表信息zpool list查看当前存储池状态信息zpool status查看具体存储池参数配置zfs get all pool-name查看具体存储池挂载路径zfs get mountpoint pool-name校验具体存储池写入数据zpool scrub pool-name动态监控存储池读写性能zpool iostat pool-name [monitor-second] 注monitor-second为读写性能打印间隔单位为秒
四、QA
1、内核模块加载 问题说明 默认情况下开启启动时只有当检测到存在ZFS池的时候才会加载zfs内核模块 解决措施 如需设置每次开机自动加载zfs模块则添加配置如下即可
echo zfs /etc/modules-load.d/zfs.conf2、内核版本选择 问题说明 实际使用过程中4.14高内核版本与ZFS存在兼容性问题通过FTP服务、HTTP服务读取ZFS存储大文件失败 解决措施 更新内核版本为3.10.0-1160.66.1.el7.x86_64解决