ZFS 将卷管理器和文件系统与几个高级特性结合在一起。
在本文中,我们将对 ZFS 进行高级介绍,解释如何在 linux 上安装 ZFS、创建 ZFS 池以及几个 ZFS zpool 命令。
以下是 ZFS 文件系统的一些特性:
防止数据损坏
支持高存储容量
高效的数据压缩
拍摄文件系统的快照
写时复制克隆
RAID Z 支持
完整性检查
自动修复和支持原生 NFSV4 ACL
这最初是由 Sun Microsystems 为 Solaris 平台开发的。2010 年,Oracle 收购了 Sun 微系统,并在 ZFS 文件系统上做了很多改进。
ZFS 最近在 Linux 上变得流行起来,因为它变得更加稳定。
Linux 端口上的 ZFS 由劳伦斯利弗莫尔国家实验室 (LLNL) 生产。
Linux 上的 ZFS 是一个内核模块,您可以下载、编译和安装。您不必修补或重新编译内核。
您可以从此处下载适用于您各自操作系统发行版的源代码包。
2. 在 Linux 上安装 ZFS在本文中,我们将在 CentOS 服务器上安装 ZFS。但是,下面提到的 zfs 命令对于 Linux 发行版上的几乎所有发行版都是相同的,除了安装部分。
执行以下 yum 命令在 Redhat/CentOS 上安装 ZFS。
# yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum localinstall --nogpgcheck # yum install kernel-devel zfs请确保满足所有依赖项。安装通常失败的依赖项之一是安装 GCC 编译器的要求。在这种情况下,请在安装 ZFS 之前安装 GCC 编译器。
确保 ZFS 模块已加载我们 lsmod 命令,如下所示:
#lsmod | grep zfs zfs 1188621 0 zcommon 45591 1 zfs znvpair 81046 2 zfs,zcommon zavl 6900 1 zfs zunicode 323051 1 zfs spl 264548 5 zfs、zcommon、znvpair、zavl、zunicode在相关的说明中,您可能想阅读有关如何创建Linux 可加载内核模块的基础知识。
我们在此服务器上添加了一些磁盘(/dev/sdb 到 /dev/sdf)来测试 ZFS 功能。
# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Jul 15 15:52 /dev/sda brw-rw----. 1 root disk 8, 1 Jul 15 15:52 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 15 15:52 /dev/sda2 brw-rw----. 1 root disk 8, 3 Jul 15 15:52 /dev/sda3 brw-rw----. 1 root disk 8, 16 Jul 16 10:57 /dev/sdb brw-rw----. 1 root disk 8, 32 Jul 16 10:57 /dev/sdc brw-rw----. 1 root disk 8, 48 Jul 16 10:58 /dev/sdd brw-rw----. 1 root disk 8, 64 Jul 16 11:27 /dev/sde brw-rw----. 1 root disk 8, 80 Jul 16 11:27 /dev/sdf 3. 创建一个 zpoolZpool 命令用于配置 ZFS 中的存储池。存储池是为 zfs 数据集提供物理存储和数据复制的设备集合。
下面创建一个 zpool。
# zpool create -f mypool raidz sdb sdc sdd sde sdf在上面的例子中:
create 代表创建一个新池。
-f 选项是忽略磁盘分区标签,因为这些是新磁盘
raidz 是突袭级别。RAIDZ 只不过是 RAID-5 的变体,它允许更好地分配奇偶校验并消除“RAID-5”写入漏洞(断电后数据和奇偶校验不一致)。
raidz 组可以具有单、双或部落奇偶校验,这意味着它可以分别承受一个、两个或三个故障而不会丢失任何数据。数据和奇偶校验在 raidz 组内的所有磁盘上进行条带化。
接下来,验证我们刚刚创建的 zpool 的状态。
# zpool status pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 sdf ONLINE 0 0 0 errors: No known data errors创建池后,如果您执行 df –h,您将看到新创建的池自动安装在挂载点上。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vglocal-rootlv 14G 2.4G 11G 18% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 504M 46M 433M 10% /boot mypool 3.9G 0 3.9G 0% /mypool 4.创建镜像池要创建镜像池,请使用带有以下选项的 zpool create 命令。
如果特定镜像组中的任何磁盘发生故障,则另一个磁盘仍然保存数据。一旦更换了故障磁盘,内容就会被镜像回(也称为重新同步)到新更换的磁盘。
# zpool create -f mypool mirror sdb sdc mirror sdd sde接下来,验证我们刚刚创建的镜像 zpool 的状态:
# zpool status -v pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 errors: No known data errors 5. Zpool 导入导出在某些情况下,您可能需要在系统之间迁移 zfs 池。
ZFS 通过从一个系统导出池并将其导入另一个系统来实现这一点。
要导出任何池,请使用 zpool export 命令,并且 zpool import 命令用于导入池,如以下示例所示:
# zpool export mypool # zpool import mypool 6. 查看 ZFS Pool 的 I/O 统计信息要查看 zpool I/O 统计信息,请使用 zpool iostat 命令,如下所示:
# zpool iostat -v mypool capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- mypool 147K 4.95G 0 0 33 252 mirror 54K 3.97G 0 0 10 84 sdb - - 0 0 536 612 sdc - - 0 0 282 612 mirror 93K 1008M 0 0 23 168 sdd - - 0 0 288 696 sde - - 0 0 294 696 ---------- ----- ----- ----- ----- ----- ----- 7. 删除 ZFS 池要销毁池,请使用 zpool destroy 命令,如下所示:
# zpool destroy mypool 8. 更换 ZFS 池中损坏的磁盘要在发生故障或损坏后更换磁盘,请使用以下命令:
# zpool replace mypool sde sdf 9. 用新磁盘扩展 ZFS 池要通过添加新磁盘来扩展 zpool,请使用 zpool 命令,如下所示:
# zpool add -f mypool sde 10. 将备用磁盘添加到 ZFS 池您还可以使用以下命令将备用磁盘添加到 zfs 池,方法是将备用设备添加到 zfs 池。
故障磁盘由备用设备自动替换,管理员可以在以后更换故障磁盘。
请注意,您还可以在多个 ZFS 池之间共享备用设备。
# zpool add -f mypool spare sde在本文的下一部分中,我们将解释如何使用 ZFS 池来创建 ZFS 文件系统、挂载 ZFS 文件系统以及从命令行对其进行操作。
推荐

华为开发者空间发布
让每位开发者拥有一台云主机
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
Linux 镜像服务 IMS