首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZFS自动替换不可用驱动器

ZFS自动替换不可用驱动器
EN

Ask Ubuntu用户
提问于 2016-07-19 23:23:00
回答 1查看 1.1K关注 0票数 0

我在vm中设置了fallowing测试池:

代码语言:javascript
复制
    NAME        STATE     READ WRITE CKSUM
    pool        DEGRADED     0     0     0
      mirror-0  DEGRADED     0     0     0
        sdb     ONLINE       0     0     0
        sdc     ONLINE       0     0     0
    spares
      sdd       AVAIL

我试图测试替换zfs池中自动不可用的驱动器的能力。例如,如果由于某种原因,驱动器被从系统中移除,则备用潜水可以在驱动器移除时立即取代其位置。我已经配置了一个spare驱动器,从我所做的阅读来看,我的理解是这应该能实现我的目标。我还将autoreplace标志设置为on,让zfs在检测到任何坏驱动器时替换它。当从vm中删除驱动器时,比如sdb,并重新检查zfs的状态,它看起来就像融合:

代码语言:javascript
复制
    NAME        STATE     READ WRITE CKSUM
    pool        DEGRADED     0     0     0
      mirror-0  DEGRADED     0     0     0
        sdb     UNAVAIL      0     0     0
        sdc     ONLINE       0     0     0
    spares
      sdd       AVAIL

sdb设备不可用,但永远不会被备用设备所取代。有什么办法能让我的用例起作用吗?

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2016-07-22 00:09:00

Intro

首先,对于任何在Ubuntu16.04上有相同问题的人来说,它目前是一个持续的错误,据我所知,到目前为止,它还没有修复。您可以访问github会话这里来查看我所引用的bug。其次,我写这篇文章是作为一个热心的和中级的linux用户,我不是一个开发人员,或目前工作的linux作为一个职业。话虽如此,我还是会尽我所能提供我在这个问题上找到的信息。

问题:

zfsonlinux包中内置的热备用功能目前不像手册页中所述的那样工作。zpool手册页:

代码语言:javascript
复制
Hot Spares
   ZFS allows devices to be associated with pools as "hot spares".
   These devices are not actively used in the pool, but when an active
   device fails, it is automatically replaced by a hot spare.

注意:冷备用(未自动替换)功能正在工作,但只在由mirrors或任何raidz's组成的配置中工作。如果您有类似于休闲的配置:

代码语言:javascript
复制
NAME      STATE     READ WRITE CKSUM
pool      ONLINE       0     0     0
  sdb     ONLINE       0     0     0
  sdc     ONLINE       0     0     0
spares
  sdd     AVAIL

当驱动器发生故障时,由于pool I/O is currently suspended错误,您将无法用备用设备替换它。

尝试解决方案:

下面列出了我尝试过的解决方案,结果如下:

  1. ZFS自动替换:根据zpool手册页和我对它的理解,autoreplace功能不是用备用设备替换损坏的驱动器,而是用在其位置找到的任何新设备替换损坏的驱动器本身。zpool手册页:如果设置为"on",任何新设备(与以前属于该池的设备位于同一物理位置)都会自动格式化和替换。autoreplace很好,但为了实现热备用的功能,我不认为它是必要的。除了通过手册页,我无法确认这一点,因为我无法得到空闲的工作。
  2. ZED.rc:我后来在关于github的对话中发现,需要在zed.rc中设置ZED_SPARE_ON_CHECKSUM_ERRORSZED_SPARE_ON_IO_ERRORS标志。正如@ based 121391在回答这个帖子时说的,zed服务/守护进程决定了池的状态,以及根据这个状态需要做什么。通过运行zpool events,您可以在工作中看到zed.d。在设置标志、重新启动和重新配置一个新的池以以防万一之后,我对热备用的测试又出现了负值。
  3. ZED.d脚本:在@Michael rling的评论中,他提到了一些与ZED一起打包的脚本,这些脚本是为了帮助解决热备用场景而编写的。我确实找到了位于/etc/zfs/zed.d中的脚本。您可以在github页面这里上查看这些脚本。据我对zed.d的理解,当事件被触发时,ZED守护进程将根据其状态运行其中一个脚本。尽管如此,我确实尝试手动运行io-spare.shchecksum-spare.sh,从它们执行所用的时间以及池的未更改状态来判断,它们似乎没有正确运行。也许这是这个问题的潜在来源。

我的计划

对于ZFS的Ubuntu16.04用户,据我所知,目前似乎没有解决这个问题的办法。我计划继续使用ZFS来配置mirroredraidz(RAID5),这取决于我在测试中获得的性能。(镜像将更快,但我希望看到raidz的速度)一个热备用将增加这两种信任的冗余,但不幸的是,我们将不得不等到zfsonlinux项目的进一步开发。V

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

https://askubuntu.com/questions/800660

复制
相关文章

相似问题

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