DIY NAS系列08 — ZFS 卷管理

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 共享

用一杯咖啡支持我们,每一篇 [技术博文] 都经过我们实操,并非从网上一味的copy,期间花费了大量的心思,希望能够帮忙到您。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇