ZFS文件系统介绍 - 文件系统

ZFS 文件系统构建于存储池上。文件系统可以动态创建和销毁,而不需要分配或格式化任何底层磁盘空间。

创建ZFS文件系统

创建存储池时若没有通过-m选项指定挂装点,则默认会将池子挂载到/poolname这个目录下,比如前文例子中的池子自动挂载到/reservoir,而且ZFS会在开机时自动挂载池子。

在池子中创建新的ZFS文件系统

zfs create pool-name/[filesystem-name/]filesystem-name

pool-name为新创建ZFS文件系统要驻留其中的池子,路径中最后的filesystem-name为要创建的ZFS文件系统,ZFS文件系统为分层结构,新创建的文件系统可能居于其他文件系统的层次之下,但前提是这里提到的其他文件系统必须是已经存在的,无法一次递归创建多个ZFS文件系统。

比如在池子reservoir上创建文件系统data

zfs create reservoir/data

如果文件系统创建成功,ZFS会自动挂载该文件系统。此处新创建的文件系统挂载于/reservoir/data

也可以在创建文件系统时指定挂载点

zfs create -o mountpoint=/mnt/data reservoir/data

zfs list

NAME            USED AVAIL  REFER MOUNTPOINT
reservoir       146K 1.94G  30K   /reservoir
reservoir/data  30K  1.94G  30K   /mnt/data

销毁ZFS文件系统

使用zfs destroy命令来销毁 ZFS 文件系统,销毁的文件系统将自动取消挂载,并取消共享。

zfs destroy reservoir/data

重命名ZFS文件系统

使用zfs rename命令不但可以重命名zfs文件系统,而且可以重定位文件系统所在的层级

重命名文件系统

zfs rename reservoir/data reservoir/data_new

zfs list NAME                 USED  AVAIL  REFER  MOUNTPOINT

reservoir            144K  1.94G    30K  /reservoir
reservoir/data_new    30K  1.94G    30K  /mnt/data
可以看到虽然文件系统的名字变化了,但其挂载点仍然未变,以下命令改变文件系统的挂载点

zfs set mountpoint=/mnt/data_new reservoir/data_new

zfs list NAME                 USED  AVAIL  REFER  MOUNTPOINT

reservoir            146K  1.94G    30K  /reservoir
reservoir/data_new    30K  1.94G    30K  /mnt/data_new

重命名并重定位zfs文件系统层级

zfs create reservoir/somefs

zfs rename reservoir/data_new reservoir/somefs/data

zfs list NAME                  USED AVAIL REFER MOUNTPOINT

reservoir             184K 1.94G   31K /reservoir
reservoir/somefs      60K 1.94G   30K /reservoir/somefs
reservoir/somefs/data 30K 1.94G   30K /mnt/data_new

共享ZFS文件系统

ZFS支持两种共享方式发布ZFS文件系统,NFS和SAMBA

NFS方式发布ZFS文件系统
首先ZFS所在的主机要安装nfs服务器,debian系统可以安装包nfs-kernel-server

设置ZFS文件系统NFS共享

zfs set sharenfs=on reservoir/somefs/data

zfs get sharenfs reservoir/somefs/data NAME                  PROPERTY VALUE SOURCE

reservoir/somefs/data sharenfs on    local

对外共享的目录即该文件系统挂载的目录/mnt/data_new

从其他主机访问该文件系统

mount -t nfs4 ip:/mnt/data_new /mnt/data_new

取消NFS共享

zfs set sharenfs=off reservoir/somefs/data

SAMBA方式发布ZFS文件系统

zfsonlinux有sharesmb属性,但当前实现尚不支持直接以samba方式发布ZFS文件系统,但仍然可以以传统的方式对ZFS文件系统设置smaba共享。