更改 ZFS 磁盘引用以使用 GPTID 而不是 GEOM 名称?

更改 ZFS 磁盘引用以使用 GPTID 而不是 GEOM 名称?

我在一台小型的 HP ProLiant MicroServer 上构建了一个 FreeNAS 设备。

存储方面,我使用 RAIDZ1 创建了一个 3 磁盘 ZFS 池。一开始我使用的是 3 个小磁盘,后来我逐渐熟悉了 FreeNAS,但最终决定用它来替换我的家用 NAS。

因此我购买了新的 2 TB 磁盘,并一次将每个磁盘替换为更大的磁盘,让池在每次替换后重新镀银。

通过 GUI 创建的原始池使用 GPTID 引用。zpool status将显示类似以下内容:

  pool: vol2
 state: ONLINE
  scan: none requested
config:

        NAME                                          STATE     READ WRITE CKSUM
        vol2                                          ONLINE       0     0     0
          gptid/96857d85-6c2f-11e3-9387-78acc0f794bd  ONLINE       0     0     0

当我用 替换池中的磁盘时zpool replace,我最终使用了 GEOM 名称(安达) 来代替。说实话,我发现这种方式更加简单和直观。

但使用 GEOM 名称引用磁盘似乎存在驱动器在重新启动时被重新标记的风险,令人困惑的 ZFS并可能在此过程中损坏您的 ZFS 池。

我认为我可以“离线”每个磁盘并zpool replace使用它们的 GPTID 将其替换为,我认为这将需要重新镀银,从而在进行此操作时将我的数据置于风险之中。

但是,我似乎找不到我的“ada”磁盘的任何 GPTID。ls /dev/gptid仅列出我的第四个且当前未使用的磁盘。glabel list返回相同的磁盘/GPTID 和各种 FreeNAS 分区。

  • 用 GPTID 替换引用的 GEOM 名称是否真的有意义?
  • glabel list为什么我看不到新磁盘的 GPTID?在分配 GPTID 并返回其名称之前,我需要做些什么吗?
  • 有没有更安全的方法,不需要重新镀银?

谢谢!

答案1

•用 GPTID 替换引用的 GEOM 名称是否真的有意义?

GEOM 名称由控制器插槽生成,因此如果您交换磁盘连接器,其 GEOM 名称也会交换。GPTID 名称基于磁盘序列号,并且到处都相同。

•为什么我看不到新磁盘的 GPTID?在分配 GPTID 并且 glabel 列表返回其名称之前,我需要做些什么吗?

当磁盘被一个 id(在您的情况下是 zpool 中的 GEOM)使用时,其他 id(包括 GPTID)将被阻止。因此,当您从 zpool 中分离磁盘或将其脱机时 - /dev/gptid 中将显示缺失的 gptid

•有没有更安全的方法,不需要重新镀银?

唯一的方法是分离磁盘,然后使用另一个名称将其重新连接到池中。重新同步并不像您想象的那么危险,因为它只是一个镜像验证和同步的过程。它只复制不同步的数据,因此您只会冒着在磁盘分离和重新连接之间所做的更改的风险。

答案2

ZFS 的设计目标是确保数据有效性:它不会传输损坏的数据,但如果无法生成正确的数据(可配置的默认行为),则不会传输任何数据。只要能找到池磁盘,移动池磁盘就不会使 ZFS 感到困惑。 此链接,(部分为德语)非常有用。这只是一个不完整的提示 - 可以这样考虑。

相关内容