将具有3个活动磁盘的ZFS镜像转换为2 + 1个热备份

在使用ZFS和raid1安装Proxmox VE 3.4并使用三个磁盘后,我得到以下池:

root@pve:~# zpool status pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda3 ONLINE 0 0 0 sdb3 ONLINE 0 0 0 sdc3 ONLINE 0 0 0 

如果我正确理解安装,所有的数据将被镜像到三个磁盘上。 即使这会支持2个驱动器的同时出现故障,但我认为将所有内容写入到两个磁盘会有性能损失。 我觉得两个就够了。

如何转换sdc3作为热备份。 我希望它自动启动并在发生驱动器故障的情况下更换损坏的磁盘。

注意:在这种情况下使用热备用可能不是最好的主意。 请参阅下面的背后的理由,低于问题的答案。


问题的答案如下:

在减less池冗余之前,我强烈build议让一个完整的scrub运行,以确保所有设备正在运行,并且没有潜在的数据错误:

 # zpool scrub rpool ... wait for it to finish, check zpool status for the status of the scrub ... 

ZFS镜像允许添加和移除镜像面(称为附着和分离),因此释放sdc3非常简单:

 # zpool detach rpool sdc3 

然后您可以添加它作为备用。 您可能需要先标记清楚(否则ZFS可能会抱怨它是现有池的一部分):

 # zpool labelclear /dev/sdc3 

请注意,标签清除后,ZFS将不知道如何读取设备,因此这将有效地删除所有数据。 因此, 要小心上面的命令。

然后看看把它作为一个热备份来做什么,而不做任何改变:

 # zpool add -n rpool spare /dev/sdc3 

上面的结果应该是类似于的configuration:

  NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda3 ONLINE 0 0 0 sdb3 ONLINE 0 0 0 spares sdc3 AVAIL 

请注意,“备用”部分可能不会显示; 这里最重要的是不要在与mirror-0相同的级别添加另一个vdev。 换句话说, 下面的例子是错误的:

  NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda3 ONLINE 0 0 0 sdb3 ONLINE 0 0 0 sdc3 ONLINE 0 0 0 

一旦你满意的命令将做你想要的,删除-n来实现改变。 尤其是, 不要-f zpool addzpool add除非您完全确定要执行您想要的操作。

请注意,以上仅涉及将设备实际configuration为备用。 我不知道如何将其configuration为Proxmox VE上的备份和自动更换。


至于为什么这可能不是最好的主意:

请记住,热备份在需要时将需要重新启动器,并且在正常操作期间无法为任何读取请求提供服务,因此通过这样做实际上可以降低池的故障恢复能力,并可能降低读取性能。 目前,如果sd [abc] 3中的任何一个出现故障,您仍然有两个驱动器运行,提供冗余; 使用热备用configuration,如果sd [ab] 3中的任何一个出现故障,那么将只需要剩余的驱动器来支持完全重启到热备用sdc3上,而不会出错。 如果在重新启动到热备份的过程中遇到单function驱动器上的任何读取错误以使其更新,则会丢失数据。

假设HBA能够跟上负载,不pipe镜像中的设备数量如何,N路镜像都将具有单个驱动器的写入性能 ,因为在写入被认为完成之前都必须被更新,并且写入是在物理设备上并行执行的。 在阅读时,根据具体情况,您可以从一个驱动器的性能,到所有N驱动器的性能。

如果您的工作负载是同步写入重量,这是我所期望的最有可能导致写入性能争用的问题,请考虑添加一个好的SSD用作SLOG。 这应该会改善同步写入的写入性能。 如果你的大部分写操作是asynchronous的(通常是默认的,除了像NFS之类的东西),那么你就不会看到太多的差别,但是你也不会看到写有写的三向镜子对性能的影响只有一个驱动器的性能,直到你用完ARC RAM和一个双向镜像将不会更快; 如果是这种情况,请考虑为ZFS 添加更多的RAM以用作ARC。

在此设置中使用磁盘作为备用磁盘是一个坏主意:您将失去第三次读取磁盘的速度,在写入速度上几乎没有任何变化。 要理解的关键是写入是同时写入的,所以几乎没有任何一个3磁盘镜像和一个2磁盘镜像的减速。