web-dev-qa-db-ja.com

zfsはオフラインにならずにブロックサイズを変更します

この設定でFreeBSD10のraidz1vdevが与えられた場合:

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

それは正しい方法ですか?

更新-私が試したこと:

  • 「zpoolremove」を使用してada1を削除してから、クリアして再度追加することができます。ただし、「zpoolremove」はraidzvdevsをサポートしていません。

  • 「zpoolreplace--f ada1」を使用して、新しいデバイスのようにada1を強制的に再構築できますが、zpoolは、すでにアクティブなデバイスの一部であるデバイスに対して、これを(強制的にではなくても)許可しません。

私はこれを次の方法で達成できると信じています。

  • システムをシャットダウンします
  • ada1を削除し、そのデータを完全に消去します
  • ada1を元に戻す
  • システムを起動します
  • 次に、「zpool replacedataada1」を発行します

これはうまくいくでしょうか?しかし、コンピュータを完全にシャットダウンした後でのみ。 :-(

1
nagylzs

あなたが探しているコマンドはzpool offlineだと思います。

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

その最後のreplaceは、最初のada1を指定しても機能しない可能性があります。そうでない場合は、zpool listまたはzdbを使用してディスクGUIDを取得します。 https://askubuntu.com/questions/305830/replacing-a-dead-disk-in-a-zpool を参照してください

1
longneck