How to install ZFS on CentOS 7.3
Hello internet,
ZFS is an advanced filesystem originally developed by Sun. It has a ton of advantages, including a built in volume manager, compression live snapshots etc. It's been ported to FreeBSD and Linux.
1. These are my notes on how I got it installed on CentOS 7.3:
cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
2. Install the ZFS repository package for CentOS 7.3:
yum -y install http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm
3. Update your /etc/yum.repos.d/zfs.repo:
We want to install the kABI recommended packages so ZFS won't have to be rebuilt every time the kernel is updated.
To do this, we need to edit the /etc/yum.repos.d/zfs.repo and disable the [zfs] repository and enable the [zfs-kmod].
When done the first two sections of your file should look like this:
[zfs]
name=ZFS on Linux for EL7 - dkms
baseurl=http://download.zfsonlinux.org/epel/7.3/$basearch/
enabled=0
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.3/kmod/$basearch/
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
4. Install ZFS:
yum -y install zfs
5. Reboot your system:
reboot now
6. Check to see that the ZFS module is already loaded using lsmod | grep -i zfs
:
You should get something like this:
zfs 2709477 0
zunicode 331170 1 zfs
zavl 15236 1 zfs
zcommon 55411 1 zfs
znvpair 93227 2 zfs,zcommon
spl 92225 3 zfs,zcommon,znvpair
Note: If you don't get the above output, load the module manually with: modprobe zfs
7. Create a fake device:
Let's create a loop device to use it as a dedicated hard drive for our testing - we'll make it small, only 2GB and name it zfs01.img:
cd /root
truncate -s 2G zfs01.img
8. Create a ZFS pool using our fake dedicated drive:
zpool create my-zfs-pool /root/zfs01.img
The above command has zero output. However, a lot was done - the file was formatted and mounted as /my-zfs-pool.
Check this by running df -hT
:
df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 80G 1.3G 79G 2% /
devtmpfs devtmpfs 991M 0 991M 0% /dev
tmpfs tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs tmpfs 1001M 8.3M 993M 1% /run
tmpfs tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs tmpfs 201M 0 201M 0% /run/user/0
my-zfs-pool zfs 2.0G 0 2.0G 0% /my-zfs-pool
Impressive isn't it?
9. Make sure it starts after you reboot your system:
Load the systemd presets for ZFS so that we enable all services - this will make the mounts persist after rebooting:
systemctl preset zfs-import-cache zfs-import-scan zfs-mount zfs-share zfs-zed zfs.target
Reboot the system to test this:
reboot now
After reboot:
Filesystem Type Size Used Avail Use% Mounted on
my-zfs-pool zfs 2.0G 0 2.0G 0% /my-zfs-pool
All done!