使用不同大小的磁盘升级ZFS池大小


2

我目前有一个设置,我使用旧桌面作为媒体服务器,但我没有容错,并且那里的媒体数量太大,我无法合理地支持它。我不是非常担心在发生驱动器故障的情况下丢失它,因为它只是电影和电视节目之类的(其中很多我仍然有DVD,打包在某处),但我正在升级我的系统我想在这里添加一些容错。

目前,我有1TB,2TB和3TB驱动器,可能使用大约5.5TB,我想我将再购买两个4TB驱动器并设置一个4TB x 4TB x 3TB RAIDZ阵列。

我的问题是:

  1. 我的理解是,对于像这样的异构磁盘阵列,池大小将限制为最小磁盘的大小,这意味着我将看到一个3 x 3 x 3 TB RAIDZ,具有6TB可用空间和2TB非 - 容忍空间 - 这是真的吗?*
  2. 假设#1为真,当我最终需要更多空间时,如果我向阵列添加一个4TB或6TB驱动器,将池扩展为4 x 4 x 4 TB阵列是否是一件简单的事情,或者我是在升级阵列时需要找一个存放6TB数据的地方?

* 2TB的非容错空间并不是什么大不了的事,因为我计划在2TB左右预留“需要适当备份的东西”(个人照片,电脑快照等),我会反映到剩下的2TB磁盘和第二个2TB外置硬盘,我将保留在其他地方。

Answers:


3

目前,我有1TB,2TB和3TB驱动器,可能使用大约5.5TB,我想我将再购买两个4TB驱动器并设置一个4TB x 4TB x 3TB RAIDZ阵列。

对于4 TB驱动器,您不应该关注单冗余RAIDZ。我推荐RAIDZ2,因为它可以提供额外的保护,以防一个驱动器以某种方式损坏或以其他方式产生问题。

请记住,消费者驱动器通常规定每读取10 ^ 14位的一个故障扇区的URE速率。1 TB(硬盘驱动器制造商terabyte,即)是10 ^ 12字节或接近10 ^ 13位,给予或采取少量更改。您想到的阵列的完整读取通道在统计上可能会遇到问题,而在实践中,读取问题往往会分批发展。

我不确定你为什么建议使用RAIDZ2。如果我使用RAIDZ1而不是使用RAID,我是否更有可能同时开发两个驱动器故障?我想要对我的系统的容错进行一些改进。只有一个地方不存在任何不可恢复的东西,因此RAID阵列只是方便的问题。

RAIDZ1使用单个磁盘在vdev中提供冗余,而RAIDZ2使用两个(以及一些更复杂的计算,但无论如何您都不太可能受到RAIDZ计算的吞吐量限制)。第二个冗余磁盘的好处是在第一个冗余磁盘发生故障或以其他方式变得不可用时。只有一个磁盘的冗余,任何其他错误现在都很重要。使用4 + 4 + 3 TB,您有11 TB的原始存储空间,最初可能需要读取6 TB才能重建丢失的磁盘(一旦将3 TB驱动器升级到4 TB驱动器并扩展池,则需要8 TB匹配)。对于数量级的估计,它很好地舍入到10 ^ 13和10 ^ 14位之间。从统计数据来看,您在重新同步期间遇到不可恢复的读取错误的概率为50%到100%当使用具有该数量级大小的阵列的单个冗余时。当然,你可能运气好,但它突然意味着你在驱动器出现故障时几乎没有任何保护。

我的理解是,对于像这样的异构磁盘阵列,池大小将限制为最小磁盘的大小,这意味着我将看到一个3 x 3 x 3 TB RAIDZ,具有6TB可用空间和2TB非 - 容忍空间 - 这是真的吗?

几乎。ZFS会将vdev限制为最小组成设备的大小,因此您可以获得由3 TB设备组成的三设备RAIDZ vdev的有效容量,因此可以使用6 TB的用户可访问存储(提供或获取元数据)。剩余的2 TB原始存储空间被浪费; 即使没有冗余,它也无法使用。(它们将显示在EXPANDSZ列中zpool list,但它们未被使用。)

使用4 TB驱动器更换3 TB驱动器并展开vdev(两者都是ZFS中的联机操作)后,池可以使用额外的存储空间。

很多方法可以解决这个问题 - 例如,您可以将驱动器分区为ZFS提供三个3 TB设备和两个1 TB(两个4 TB驱动器的其余部分)设备 - 但这会使您的设置变得非常复杂,并且不太可能以你的计划方式工作。我强烈建议不要这样做。

ZFS不会将2 TB的非容错空间备份到脱机磁盘,如果不清楚则不好意思。我建议我通过正常的磁盘同步操作来支持它rsync

这意味着ZFS不知道那些2 x 1TB,并且您正在该空间中创建一些其他文件系统。是的,你可以做到这一点,但同样,它会严重地使你的设置变得复杂,坦率地说,看起来收益很少。

假设#1为真,当我最终需要更多空间时,如果我向阵列添加一个4TB或6TB驱动器,将池扩展为4 x 4 x 4 TB阵列是否是一件简单的事情,或者我是在升级阵列时需要找一个存放6TB数据的地方?

如上所述,如果您通过逐步替换设备来实现ZFS vdev和池,则可以将其作为在线操作。(然而,它不可能缩小ZFS池或vdev。)然而,您不能将其他设备添加到现有的vdev(例如您正在创建的三设备RAIDZ vdev); 必须将全新的vdev添加到池中,然后在池中的两个vdev之间对稍后写入的数据进行条带化。每个vdev都有自己的冗余要求,但它们可以共享热备件。您也无法从vdev中删除设备,但镜像除外(其中删除设备只会降低特定镜像vdev的冗余级别,并且不会影响用户可访问的存储空间量),并且您无法删除vdevs从游泳池。执行后者的唯一方法(并且因此,修复某些池配置失败的唯一方法)是重新创建池并从旧池传输数据,可能通过备份,

2TB的非容错空间并不是什么大不了的事,因为我计划在2TB左右预留“需要适当备份的东西”(个人照片,计算机快照等),我将镜像到剩下的2TB磁盘和第二个2TB外置硬盘,我将保留在其他地方。

ZFS冗余并非真正设计用于大多数离线的异地备份驱动器用例。我在一个深度讨论这个问题,ZFS镜像中的一个驱动器主要是离线工作吗?,但它的面包和黄油是,最好使用zfs send/ zfs receive复制ZFS文件系统的内容(包括快照和其他rsync常规),或者如果你不关心快照,则比在大多数情况下使用镜像更好-offline设置。

如果我使用一半磁盘来容错,我不妨使用传统的离线备份。

这无疑取决于你的情况。您在不同情况下的恢复要求是什么时候?RAID是关于正常运行时间和恢复时间,而不是关于保护数据; 无论如何你还需要备份


ZFS不会将2 TB的非容错空间备份到脱机磁盘,如果不清楚则不好意思。我建议我通过正常的磁盘同步操作来支持它rsync
保罗

我不确定你为什么建议使用RAIDZ2。如果我使用RAIDZ1而不是使用RAID,我是否更有可能同时开发两个驱动器故障?我想要对我的系统的容错进行一些改进。只有一个地方不存在任何不可恢复的东西,因此RAID阵列只是方便的问题。如果我使用一半磁盘来容错,我不妨使用传统的离线备份。
保罗

1
@Paul:在重建故障驱动器时,必须读取所有驱动器中的所有数据。这会增加磁盘上的压力(特别是如果它们通常处于空闲状态)并因此导致另一个驱动器发生故障的可能性。此外,在读取所有数据时,您可能会从其中一个没有第二个磁盘的磁盘获得URE来补偿,这意味着文件可能会损坏/丢失。第三,磁盘越大,漏洞窗口就越长,不仅仅是针对这些问题,还有磁盘或系统可能出现的任何问题(断电等)。
user121391 2016年

@Paul对不起,我误解了你的问题(我的第一个答案是关于一个死驱动器的RAIDZ1的可靠性)。要回答这个问题:在这种情况下,Z1比基本vdev更可靠,而一切正常,但是在一个磁盘死亡后,你进一步腐败的可能性实际上会增加。
user121391 2016年

1
是关于RAIDZ1与无关的新问题。
保罗

1

我的理解是,对于像这样的异构磁盘阵列,池大小将限制为最小磁盘的大小,这意味着我将看到一个3 x 3 x 3 TB RAIDZ,具有6TB可用空间和2TB非 - 容忍空间 - 这是真的吗?*

是。

假设#1为真,当我最终需要更多空间时,如果我向阵列添加一个4TB或6TB驱动器,将池扩展为4 x 4 x 4 TB阵列是否是一件简单的事情,或者我是在升级阵列时需要找一个存放6TB数据的地方?

是的,这是可能的。

您可以通过一个,你的容量将等于最小磁盘目前在虚拟设备使用替代Z1 / Z2 / Z3 VDEV一个内部的所有磁盘(也可以设置属性autoexpandon做到这一点自动,而不是手动) 。

另一方面,您无法在不完全破坏和重新创建池的情况下将任何驱动器添加(而不是替换)到现有Z1 / Z2 / Z3 vdev(在此过程中丢失所有数据)。在镜像和基本vdev上,您可以添加更多驱动器来创建2镜像,3镜像,4镜像等,但这只会增加可靠性,而不是可用的大小。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.