ZFS 卷简介
ZFS 一个强大的文件系统,除了提供文件级别的存储服务,还能作为块设备提供存储服务,这就是我们所称的 ZFS 卷(ZFS Volume)。ZFS 卷,也被称作 ZVOL,是一种模拟块设备的数据集。ZVOL 可以被操作系统识别并视为一种物理磁盘,这使得您可以在 ZVOL 上创建文件系统,甚至可以在其上安装操作系统。
和普通的文件系统数据集一样,ZVOL 继承了父数据集的所有属性,包括压缩,预读取,以及重复数据删除等。除此之外,ZVOL 还有一些额外的特性。例如,您可以为 ZVOL 设置一个可选的块大小,这对于某些需要特定块大小的应用(如数据库)非常有用。而对于一些需要磁盘镜像或虚拟磁盘的应用,如虚拟机或 Docker 容器,ZVOL 更是一个理想的选择。
ZVOL 的创建非常简单,仅需执行一行命令。比如,我们要在存储池 mypool
中创建一个名为 myvolume
的 ZVOL,命令如下:
zfs create -V 10G mypool/myvolume
上述命令中的 -V
选项指定了 ZVOL 的大小,上例中为 10 GB。在创建 ZVOL 后,它将在/dev/zvol 路径下出现,您可以像使用其他块设备一样使用它。
通过 ZFS 提供的卷,我们能够更好地控制块存储,并利用 ZFS 的强大功能,如快照、压缩和重复数据删除等。而这些功能在传统的块设备中往往无法得到。这就是 ZFS 卷为什么如此强大且独特的原因。
在接下来的文章中,我们将深入探讨如何管理 ZFS 卷,以及它在不同场景下的应用。
ZFS 卷
在 ZFS 上创建卷主要提供给虚拟机等使用。
# 创建卷
[root@localhost SSD]# zfs create -V 1G SSD/myvolume
# 查看卷信息,这里可以看到SSD/myvolume占用了1.03G空间。
[root@localhost SSD]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
SSD 1.03G 3.52T 35.9K /SSD
SSD/myvolume 1.03G 3.52T 19.2K -
[root@localhost SSD]# zfs list SSD/myvolume
NAME USED AVAIL REFER MOUNTPOINT
SSD/myvolume 1.03G 3.52T 19.2K -
# 删除卷
[root@localhost SSD]# zfs destroy SSD/myvolume
[root@localhost SSD]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
SSD 237K 3.52T 35.9K /SSD
# 使用 ZFS 卷
# ZFS 卷是块设备,使用前需要用文件系统对其进行格式化。例如,您可以使用 ext4 文件系统格式化 ZFS 卷并将其挂载以使用此存储。
[root@localhost /]# mkfs.ext4 /dev/zvol/SSD/myvolume
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: b7f5c9fd-a702-422d-ae79-35f366191a39
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
# 创建挂载点
[root@localhost /]# mkdir /mnt/myvolume
# 挂载,这样就可以正常使用了
[root@localhost /]# mount /dev/zvol/SSD/myvolume /mnt/myvolume/
[root@localhost /]# df -lh
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 8.8M 3.1G 1% /run
/dev/mapper/rl-root 70G 3.7G 67G 6% /
/dev/sdb2 1014M 303M 712M 30% /boot
/dev/sdb1 599M 7.0M 592M 2% /boot/efi
/dev/mapper/rl-home 145G 1.1G 144G 1% /home
tmpfs 1.6G 4.0K 1.6G 1% /run/user/0
SSD 3.6T 128K 3.6T 1% /SSD
SSD/my_clone 3.6T 128K 3.6T 1% /SSD/my_clone
/dev/zd0 974M 24K 907M 1% /mnt/myvolume
[root@localhost /]# echo "1234" > /mnt/myvolume/1.txt
[root@localhost /]# ls -l /mnt/myvolume/
total 20
-rw-r--r-- 1 root root 5 Jun 15 21:22 1.txt
drwx------ 2 root root 16384 Jun 15 21:19 lost+found
写在最后
在本篇文章中,我们深入了解了 ZFS 卷(ZVOL)的概念和功能,并学习了如何创建和使用 ZVOL。ZFS 卷是一种强大的工具,它既能作为普通的块设备使用,又具有 ZFS 提供的强大特性,如压缩、预读取和重复数据删除等。对于需要特定块大小的应用,如数据库,或需要磁盘镜像的应用,如虚拟机或 Docker 容器,ZVOL 提供了一个理想的解决方案。
在下一篇文章中,我们将探讨如何使用 ZFS 配置 NFS 共享。NFS(网络文件系统)是一种分布式文件系统协议,它允许网络中的计算机共享其文件系统。通过将 ZFS 和 NFS 结合使用,我们不仅可以提供高效、可靠的存储服务,还可以在网络中共享这些服务。我们将会探讨 ZFS 如何实现这种集成,并学习如何配置和使用 ZFS 提供的 NFS 共享。
下篇预告: DIY NAS系列09 — ZFS 配置 NFS 共享