【问题标题】:Removing disk from zfs pool permanently从 zfs 池中永久删除磁盘
【发布时间】:2017-04-04 12:21:36
【问题描述】:

我尝试通过 ZIL 向 zpool 添加 SSD,但我犯了一个错误。

我期待.. zpool 添加区域日志 c0t1d0
但我做到了... zpool add zone c0t1d0

我尝试执行区域删除、分离、离线命令,但失败了。
如何在 zpool 中移除 SSD 而不会丢失数据?

$ zpool status
pool: zones
state: ONLINE
scan : non requested
config:
   NAME          STATE     READ  WRITE CKSUM
   zones          ONLINE      0      0      0
       c0t0d0     ONLINE      0      0      0
       c0t1d0     ONLINE      0      0      0


$ zpool iostat -v               
capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
zones        280G   109G     40    139  1.28M  13.7M  
     c0t0d0  263G  15.3G     39     35  1.25M  2.61M  
     c0t1d0 17.6G  93.4G      0    104  20.9K  11.1M
----------  -----  -----  -----  -----  -----  -----

【问题讨论】:

  • 只是来自无知者的额外建议!丹,在从池中删除驱动器后运行另一个实用程序,将文件(再次)复制到池中的新位置并同时删除间接映射,这不是一个相当简单的补充吗? - 是的,复制两次,但这将是从驱动器中复制数据,移除驱动器,然后再次将数据复制回池中的“逻辑等价物”,但是自动完成而不是手动完成,并且是加载的实用解决方案 -驱动器也是如此。 - 只是一个想法!
  • @user10209401 我想你的意思是把这个贴在我下面的回答下面:)。不幸的是,这并不是那么简单,因为 ZFS 还必须遍历整个池元数据树并重写所有指向旧数据的位置(在快照、重复数据删除表等中)。使用间接映射,ZFS 发现给定块指针中列出的设备丢失并查阅映射,这更容易实现。

标签: zfs


【解决方案1】:

更新:ZoL 0.8.0 版本将包含此功能。

@user121391 是正确的,今天这是不可能的,除非通过 send/recv 存储迁移。

然而,有一个由 Matt Ahrens(OpenZFS 社区负责人)开发的新功能即将登陆 master 分支,并最终会进入其他平台(FreeBSD / Linux / macOS / 等)。这是pull request on Github的链接。

集成后,您将能够在任何顶级 vdev 上运行 zpool remove,这会将其存储迁移到池中的不同设备,并将从旧位置到新位置的间接映射添加到新位置。如果您要删除的 vdev 已经充满了数据,那就不好了(因为对任何数据的访问都必须通过间接映射),但它的设计非常适合您正在谈论的用例(您很快就注意到了配置错误)。

【讨论】:

【解决方案2】:

不幸的是,你将不得不摧毁并重新创造。您可以使用zfs send/recv 迁移所有数据,同时保留所有快照、元数据等,并且复制速度比普通cp 更快。

【讨论】:

    猜你喜欢
    • 2019-01-26
    • 2020-01-03
    • 2019-06-10
    • 1970-01-01
    • 2021-10-20
    • 2014-01-17
    • 2020-04-26
    • 2019-02-08
    • 2016-02-20
    相关资源
    最近更新 更多