华为云计算 云知识 什么是ZFS
什么是ZFS

简介

ZFS是一个拥有逻辑卷管理功能的文件系统,最早源自于SUN为Solaris操作系统开发的文件系统。ZFS是一个具有高存储容量、文件系统与卷管理概念集成、崭新的磁盘逻辑结构的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS是一个使用CDDL许可证授权的开源项目。

编译和测试方式

1.选择操作环境

本文选用华为鲲鹏云服务ECS KC1实例做测试

2. 配置编译工具

1) 参考ZFS安装指导,安装依赖包。

yum install autoconf automake libtool rpm-build ksh -y

yum install zlib-devel libuuid-devel libattr-devel libblkid-devel libselinux-devel libgudev1-devel -y

yum install libacl-devel libaio-devel device-mapper-devel openssl-devel libtirpc-devel elfutils-libelf-devel -y

yum install kernel-devel -y

yum install epel-release -y

yum install python36 python36-devel python36-setuptools python36-cffi -y

2)     检查OS版本与kernel-devel是否一致。

uname -a

rpm -qa |grep kernel-devel

回显内容示例如下,关注加粗的内容。

[root@ecs-0001 ~]# uname -a

Linux ecs-0001 4.14.0-115.5.1.el7a.aarch64 #1 SMP Mon Feb 4 16:38:08 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux

[root@ecs-0001 ~]# rpm -qa |grep kernel-devel

kernel-devel-4.14.0-115.8.1.el7a.aarch64

3)如果检查发现kernel-devel版本高于当前OS版本,则需要升级操作系统内核。

yum upgrade kernel -y

reboot

4)重新检查版本是否一致。

uname -a

rpm -qa |grep kernel-devel

回显内容示例如下,关注加粗的内容。

[root@ecs-0001 ~]# uname -a

Linux ecs-0001 4.14.0-115.8.1.el7a.aarch64 #1 SMP Wed Jun 5 15:01:21 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux

[root@ecs-0001 ~]# rpm -qa |grep kernel-devel

kernel-devel-4.14.0-115.8.1.el7a.aarch64

3. 获取源代码

ZFS源码下载。

wget https://github.com/zfsonlinux/zfs/releases/download/zfs-0.8.1/zfs-0.8.1.tar.gz

4.配置编译环境

通过华为云发放的弹性 云服务器 默认已将GCC安装,无需单独安装配置。

5.编译源代码

tar -zxvf zfs-0.8.1.tar.gz

cd zfs-0.8.1

./configure --build=arm-linux

make -s -j$(nproc)

make install

6.测试已完成编译的软件

步骤一:加载ZFS内核模块

1)加载ZFS内核模块。

cd /usr/local/share/zfs/

./zfs.sh

2)检查ZFS相关内核模块是否加载成功。

lsmod |grep zfs

回显内容如下:

[root@ecs-0001 zfs]# lsmod |grep zfs

zfs                  3932160  20489422 

icp                   393216  16532263 zfs

zlua                  327680  15447843 zfs

zcommon             262144  14838387 zfs

zunicode              524288  14039163 zfs

znvpair               262144  13535480 zcommon,zfs

zavl                  262144  12979271 zfs

spl                   262144  11258883 znvpair,zcommon,zfs,icp,zavl

步骤二:创建ZFS文件系统

1)创建ZFS存储池。

“/dev/vdb”必须为未使用过的磁盘,以避免破坏该盘中的原有数据。

zpool create tank /dev/vdb

2)创建ZFS文件系统。

zfs create tank/test-zfs-01

3)通过"mount |grep test-zfs-01" 或 "df -h"查看文件系统是否挂载。

回显内容如下所示,关注加粗的内容。

[root@ecs-0001 zfs]# mount |grep test-zfs-01

tank/test-zfs-01 on /tank/test-zfs-01 type zfs (rw,xattr,noacl)

[root@ecs-0001 zfs]# df -h

Filesystem                 Size  Used Avail Use% Mounted on

devtmpfs                   6.7G     0  6.7G   0% /dev

tmpfs                      6.7G     0  6.7G   0% /dev/shm

tmpfs                      6.7G   21M  6.7G   1% /run

tmpfs                      6.7G     0  6.7G   0% /sys/fs/cgroup

/dev/vda2                   39G   20G   17G  56% /

/dev/vda1                 1022M  7.7M 1015M   1% /boot/efi

//192.168.1.244/FileShare  3.2G   76K  3.2G   1% /tmp/smb

tmpfs                      1.4G     0  1.4G   0% /run/user/0

tank                       9.3G  128K  9.3G   1% /tank

tank/test-zfs-01           9.3G  128K  9.3G   1% /tank/test-zfs-01

4)卸载ZFS文件系统。

zfs umount tank/test-zfs-01

5)通过"mount |grep test-zfs-01" 或 "df -h"查看文件系统是否卸载成功。

回显内容如下所示。

[root@ecs-0001 zfs]# df -h

Filesystem                 Size  Used Avail Use% Mounted on

devtmpfs                   6.7G     0  6.7G   0% /dev

tmpfs                      6.7G     0  6.7G   0% /dev/shm

tmpfs                      6.7G   21M  6.7G   1% /run

tmpfs                      6.7G     0  6.7G   0% /sys/fs/cgroup

/dev/vda2                   39G   20G   17G  56% /

/dev/vda1                 1022M  7.7M 1015M   1% /boot/efi

//192.168.1.244/FileShare  3.2G   76K  3.2G   1% /tmp/smb

tmpfs                      1.4G     0  1.4G   0% /run/user/0

tank                       9.3G  128K  9.3G   1% /tank

6)挂载ZFS文件系统。

zfs mount tank/test-zfs-01

7)     通过"mount |grep test-zfs-01" 或 "df -h"查看文件系统是否挂载成功。

已知问题汇总

问题描述:

configure时出现"“error: cannot guess build type; you must specify one”提示当前编译类型无法找到。

如下所示:

configure: error: cannot guess build type; you must specify one

问题原因:问题的原因是自带“config.guess”版本不匹配。

解决方法一:指定平台,手动编译

./configure --build=arm-linux

make -s -j$(nproc)

解决方法二:替换ZFS自带“config.guess”。

mv config/config.guess config/config.guess.bak

cp /usr/share/automake-1.13/config.guess config/

make -s -j$(nproc)

参考资料

ZFS:https://zfsonlinux.org/

ZFS wiki:https://github.com/zfsonlinux/zfs/wiki

上一篇:数据库需求调查分析的方法 下一篇:等保