我正在计划一个存储服务器,用户将在其中存储多达 20 TB 的数据。由于我在 Linux 上使用 ZFS 有一些很好的经验,我想使用它。但是,我知道数据量每年会增长 100 GB,因此在某些时候,我需要增加池大小。既然数据量这么大,恐怕要彻底销毁zpool再重新创建,会很麻烦;所以我想知道是否可以通过添加更多磁盘并保留现有磁盘来增加池容量。池至少是 RAIDZ-1。或者确实需要一个接一个地移除磁盘并用更大的磁盘替换它?不,我无法相信。比我的更大的服务器如何处理对更多存储容量日益增长的需求?
use*_*ser 12
基本上有两种增长 ZFS 池的方法。
这就是user1133275 在他们的回答中所建议的。它是通过zpool add
(与zpool create
指定存储的语法基本相同)完成的,并且它可以很好地完成它的工作。
ZFS 不会自动重新平衡您存储的数据,但它会开始将任何新数据写入新 vdev,直到新 vdev 与现有 vdev 的使用率大致相同。
将 vdev 添加到池后,如果不从头开始重新创建池,则基本上无法删除它。
池中的所有 vdev 都需要高于其各自的冗余阈值才能导入池。换句话说,每个 vdev 至少需要DEGRADED
为池运行。
这就是你在问题中讨论的内容。当您拥有满意的池布局时,这是增加 ZFS 池的正常方式。
要用新设备更换设备,新设备至少需要与旧设备一样大。
在操作上,您将新磁盘与旧磁盘连接起来,然后zpool replace
将旧磁盘与新磁盘连接起来。(这会创建一个临时replacing
设备,它成为旧磁盘和新磁盘的父设备;当重新同步完成时,该replacing
设备将从设备树中删除,看起来新设备一直在那里。)一旦重新同步完成,旧的可以从系统中删除磁盘。
一旦 vdev 中的所有磁盘都被更大的磁盘替换,您可以通过运行zpool online -e
或将autoexpand
属性设置为来扩展池on
(尽管我不会真正推荐后者;池扩展应该是一个有意识的决定)。
这基本上取决于你的游泳池。如前所述,拥有多个 vdev 的缺点是它们都需要具有功能性,因此通过添加 vdev,您实际上在某种意义上降低了安全裕度。不过,好处是零碎地种植游泳池要容易得多。就地更换设备基本上是相反的;您不需要保持尽可能多的 vdevs 正常运行,但逐步增长池并不容易。
对我来说,坦率地说,假设您正在使用旋转硬盘(因为这看起来像是大容量存储),对于单个 vdev 池来说,20 TB 仍然是完全合理的。我对你的情况的建议是获得 6 个 8 TB 类型的驱动器,并将它们设置在单个 raidz2 vdev 中。这样做可为您提供大约 32 TB 的净存储容量,从而为您提供大约 35% 的初始免费空间,并且能够在您的任何数据面临重大风险之前丢失任何两个驱动器。您还可以考虑运行 8 个 6 TB 驱动器,以获得大约 36 TB 的净存储容量,并且从 45% 的免费开始。(我认为 6-8 个驱动器对于 raidz1 来说稍微偏大一点,但对于 raidz2 来说没问题。)然后计划在 4-5 年的时间表(由于磨损)或池超过时更换这些驱动器大约 80% 已满(因为 ZFS 在具有良好的空间时会更快乐)。如果你的数字是准确的,你应该在池开始变满之前更换那些磨损严重的驱动器,同时仍然允许合理数量的存储需求意外增长。更换驱动器时,您可以根据当时的使用情况决定是对现有的池大小感到满意,还是希望获得更大的驱动器并扩展池。
除了上面优秀答案中的选项之外,很快就会有另一种选择。
OpenZFS 项目(Linux 上的 ZFS,FreeBSD 上的 ZFS)正在开发一项功能,允许向现有 RAID-Z 虚拟设备添加新的物理设备。例如,这将允许将 6 驱动器 RAID-Z2 vdev 扩展为 7 驱动器 RAID-Z2 vdev。这将在文件系统在线时发生,并且在扩展完成后将是可重复的(例如,7 驱动器 vdev ? 8 驱动器 vdev)。
截至 2020 年 9 月,此功能仍在开发中:https : //github.com/openzfs/zfs/pull/8853
在 zfs(以及 btrfs 和 lvm2)中添加空间很容易
zpool add $POOL mirror $A $B
Run Code Online (Sandbox Code Playgroud)
https://docs.oracle.com/cd/E53394_01/html/E54801/gayrd.html#scrolltoc
归档时间: |
|
查看次数: |
25207 次 |
最近记录: |