首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >兹普尔出口到底是做什么的?

兹普尔出口到底是做什么的?
EN

Unix & Linux用户
提问于 2020-12-15 19:02:15
回答 1查看 5.6K关注 0票数 5

在阅读了关于zpool export in man zpool的一节之后,我有点担心:

从系统导出给定的池。所有设备都被标记为导出,但仍被其他子系统考虑使用。只要存在足够数量的设备,设备就可以在系统之间移动(即使是具有不同功能的设备)并导入。

“但仍在被其他子系统使用”意味着什么?“只要有足够数量的设备存在”意味着什么?

背景:

我有一个相当复杂的备份脚本,它基于ZFS快照将生产服务器上的VM存储复制到备用服务器(准确地说,它是一个由主机和VM中的各种脚本组成的系统,它们一起工作以冻结VM中的文件系统,获取ZFS快照,解冻VM中的文件系统,并将快照复制到备用服务器上)。这部分很有魅力。

但实际上,除了复制之外,我还需要一种备份。也就是说,我想将VM存储备份到磁盘上,然后我可以将它从连接到的盒中删除,并将其安全地存储在另一个位置。

我已经仔细考虑了最佳的方法,并得出了以下的想法:

  • 在备用服务器中,安装一个SATA / SAS HDD托盘,这样我就可以在那里插入和拔出HDD(或者使用它现有的托盘之一连接到它的背板上)。
  • 在备用服务器上,插入一个新的HDD,并生成一个新的ZPOOL,其中只有一个VDEV,它只包含该HDD。
  • 除了已经复制到的ZPOOL之外,让生产服务器将其VM存储复制到新的ZPOOL。
  • 复制之后,导出新的ZPOOL,拔出新的HDD,并将其存储在一个安全的地方。**
  • 在备用服务器上,插入另一个表示ZPOOL的新HDD,并重复前两个步骤。****
  • 等等..。(例如,每日将目前附加到备用服务器的HDD替换为另一台,或使用7个HDD,每周轮换一次,等等)。

**这是我感到不舒服的一步(在阅读了上述一节之后)。一方面,在导出ZPOOL (其唯一的设备)之后移除HDD应该没有问题,因为文件系统在导出之前会被卸载(因此会被刷新)。另一方面,手册上说,即使在导出池之后,这个HDD仍将“被其他子系统考虑使用”,这使我认为在这种情况下删除它是个坏主意。

因此,我想知道这句话到底意味着什么,以及如何使HDD不再被其他子系统考虑使用。

*我知道我必须为此付出一些努力。其计划是创建一个脚本和一个适当的udev规则,让备用服务器在插入硬盘时识别并导入现有的ZPOOL ( HDD将通过SATA-3或SAS12g直接连接,而不是通过USB)。但这不是这个问题的一部分。

概括地说:

zpool export到底是做什么的,或者换句话说,我需要执行哪些步骤,然后才能安全地移除作为ZPOOL中唯一的设备的HDD,在ZPOOL导出之后?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-12-16 08:11:20

我所做的事情与您所描述的类似,我认为您在使用zpool导出时可能有点混在一起。

从系统中移除整个池..。快照之类的。这不是你想要的。

要做你想做的事情,第一步就是了解我们要处理的是哪种类型的聚水池。特别是,您可能需要一个简单的镜像池。至少有三个驱动器。

在我的例子中,我有一个有3面镜子的聚光池。当我想把数据放在离地保存时,我“离线”了我想要离开的驱动器,然后从数组中删除它。这看起来像是:

代码语言:javascript
复制
      pool: pool_09
 state: ONLINE
  scan: resilvered 1000G in 2h15m with 0 errors on Sun Nov 22 19:49:53 2020

config:

        NAME                         STATE     READ WRITE CKSUM
        pool_09                      ONLINE       0     0     0
          mirror-0                   ONLINE       0     0     0
            c0t5000C500B0BCFB13d0    ONLINE       0     0     0
            c0t5000C500B0889E5Bd0    ONLINE       0     0     0
            c0t5000C500B09F0C54d0    ONLINE       0     0     0
        logs
          mirror-1                   ONLINE       0     0     0
            c0t5F8DB4C095690612d0s3  ONLINE       0     0     0
            c0t5F8DB4C095691282d0s3  ONLINE       0     0     0


      # zpool offline  pool_09 c0t5000C500B0BCFB13d0

这将使池中有两个镜像驱动器,这样我仍然可以承受本地故障。对我来说,我不把驱动器导入另一个系统,但我不明白为什么你不能。我只是把我的驱动器带到另一栋大楼。

当我准备重新同步镜像时,我将删除的驱动器放回数组中,并“联机”它:

代码语言:javascript
复制
zpool online pool_09 c0t5000C500B0BCFB13d0

ZFS会在联机后自动重新启动驱动器,然后您可以重复这个过程。

我不认为你想用一堆旋转的驱动器来做这个。我甚至不确定那会不会奏效。我想如果你有10倍镜像集什么的话。请记住,删除的驱动器(S)离开阵列的时间越长,重新获得银牌所需的时间就越长。

另一种选择是创建另一个池,zfs将所有数据发送给它,然后导出该池并将其带离站点。我没那么做,但应该管用.不过,可能要慢很多。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/624612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档