zfs 无需离线即可更改块大小

zfs 无需离线即可更改块大小

给定 FreeBSD 10 上的 raidz1 vdev,其配置如下:

root@gw:~ # zpool status
  pool: data
 state: ONLINE
status: One or more devices are configured to use a non-native block size.
        Expect reduced performance.
action: Replace affected devices with devices that support the
        configured block size, or migrate data to a properly configured
        pool.
  scan: resilvered 26.1G in 0h43m with 0 errors on Sat Dec 21 07:07:41 2013
config:

        NAME        STATE     READ WRITE CKSUM
        data        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            ada1    ONLINE       0     0     0  block size: 512B configured, 4096B native
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0  block size: 512B configured, 4096B native

errors: No known data errors

我想纠正块大小。是否可以在不关闭矿池的情况下更改块大小?我只是想知道这些是否是要执行的正确命令。我可以不问就尝试,但魔鬼从不睡觉……

zpool detach data ada1
zpool labelclear ada1
zpool attach data ada1

这是正确的做法吗?

更新-我尝试过的事情:

  • 可以使用“zpool remove”删除 ada1,然后清除并再次添加。但“zpool remove”不支持 raidz vdevs。

  • “zpool replace --f ada1” 可用于强制重建 ada1,就像它是一个新的设备一样,但 zpool 不允许(甚至不是强制的)对已经是活动设备一部分的设备执行此操作

我相信我可以通过以下方式实现这一目标:

  • 关闭系统
  • 删除 ada1 并彻底清除其上的数据
  • 放回 ada1
  • 启动系统
  • 然后发出“zpool replace data ada1”

这能行吗?但只有在完全关闭计算机后才行。:-(

答案1

我认为您正在寻找的命令是zpool offline这样的:

zpool offline data ada1
zpool labelclear ada1
zpool replace data ada1 ada1

最后一个replace可能不适用于指定第一个ada1。如果不起作用,请使用zpool listzdb获取磁盘 GUID。请参阅https://askubuntu.com/questions/305830/replacing-a-dead-disk-in-a-zpool

相关内容