簡介
ZFS是一個擁有邏輯卷管理功能的文件系統(tǒng),最早源自于SUN為Solaris操作系統(tǒng)開發(fā)的文件系統(tǒng)。ZFS是一個具有高存儲容量、文件系統(tǒng)與卷管理概念集成、嶄新的磁盤邏輯結(jié)構(gòu)的輕量級文件系統(tǒng),同時也是一個便捷的存儲池管理系統(tǒng)。ZFS是一個使用CDDL 許可證 授權(quán)的開源項目。
編譯和測試方式
1.選擇操作環(huán)境
本文選用華為鯤鵬云服務(wù)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
回顯內(nèi)容示例如下,關(guān)注加粗的內(nèi)容。
[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)如果檢查發(fā)現(xiàn)kernel-devel版本高于當前OS版本,則需要升級操作系統(tǒng)內(nèi)核。
yum upgrade kernel -y
reboot
4)重新檢查版本是否一致。
uname -a
rpm -qa |grep kernel-devel
回顯內(nèi)容示例如下,關(guān)注加粗的內(nèi)容。
[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.配置編譯環(huán)境
通過華為云發(fā)放的彈性 云服務(wù)器 默認已將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內(nèi)核模塊
1)加載ZFS內(nèi)核模塊。
cd /usr/local/share/zfs/
./zfs.sh
2)檢查ZFS相關(guān)內(nèi)核模塊是否加載成功。
lsmod |grep zfs
回顯內(nèi)容如下:
[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
步驟二:創(chuàng)建ZFS文件系統(tǒng)
1)創(chuàng)建ZFS存儲池。
“/dev/vdb”必須為未使用過的磁盤,以避免破壞該盤中的原有數(shù)據(jù)。
zpool create tank /dev/vdb
2)創(chuàng)建ZFS文件系統(tǒng)。
zfs create tank/test-zfs-01
3)通過"mount |grep test-zfs-01" 或 "df -h"查看文件系統(tǒng)是否掛載。
回顯內(nèi)容如下所示,關(guān)注加粗的內(nèi)容。
[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文件系統(tǒng)。
zfs umount tank/test-zfs-01
5)通過"mount |grep test-zfs-01" 或 "df -h"查看文件系統(tǒng)是否卸載成功。
回顯內(nèi)容如下所示。
[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文件系統(tǒng)。
zfs mount tank/test-zfs-01
7) 通過"mount |grep test-zfs-01" 或 "df -h"查看文件系統(tǒng)是否掛載成功。
已知問題匯總
問題描述:
configure時出現(xiàn)"“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