Raidzプールに新しいデバイスを追加したときに、ZFSが自動的にそれを行うべきだと思って間違えました。
:~# zpool status
pool: data
state: ONLINE
scan: resilvered 78,3G in 2h4m with 0 errors on Tue May 10 18:12:31 2016
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
c2t2d0 ONLINE 0 0 0
c2t3d0 ONLINE 0 0 0
c2t4d0 ONLINE 0 0 0
c2t5d0 ONLINE 0 0 0
c2t6d0 ONLINE 0 0 0
c2t7d0 ONLINE 0 0 0
c2t8d0 ONLINE 0 0 0
c2t9d0 ONLINE 0 0 0
c2t10d0 ONLINE 0 0 0
c2t11d0 ONLINE 0 0 0
c2t13d0 ONLINE 0 0 0
spares
c2t12d0 AVAIL
c2t14d0 AVAIL
C2t13d0はraidzプールにないと思いますよね?データプールからそれを削除する方法は?
助けてくれてありがとう。
できません。現在、シングルドライブvdevとしてプールにあります。 vdevをプールから削除することはできません。
それは悪いニュースです。
さらに悪いニュースは、raidz2-0
vdevとc2t13d0
vdevでRAID-0を効果的に使用できるようになったことです。これは良くない。それはdoubleplusungoodです。
オプションは次のとおりです。
どちらのオプションも適切ではありません。バックアップ/再作成/復元は長期的にはrightオプションですが、かなりのダウンタイムが必要です(これを回避する唯一の方法は、同じサイズ以上のzfs send
の2番目のプールを作成することです。それに)。
ところで、冗長性の欠如を修正するためにできることの1つは、ミラーをc2t13d0
vdevに接続することです。同じサイズのスペアの1つを使用するかもしれません。
次のようなものを使用します:
zpool attach data c2t13d0 anotherdisk
理想からはほど遠いですが、ミラーvdevでストライプ化されたRAIDZ2 vdevには冗長性があります(それでも嫌悪感はありますが、データを食い尽くすものではありません)。一方、シングルドライブでストライプ化されたRAIDZ2には信頼できる冗長性がありません(一部のデータシングルドライブvdevにのみ存在します。これは、常に最も価値があり、かけがえのないデータであることがわかります)。
それは最初のオプション(「それと一緒に暮らす」)をはるかに少なくします...少なくとも今のところは。長期的には、プールを再構築する必要があります。
Solarisのマニュアルページにアクセスできませんが、ZFS OnLinuxバージョンのzpool
のマニュアルページからの関連する抜粋です(強調のために太字で追加しています)。 Solarisのバージョンは同じか非常に似ている必要があります。
zpool attach [-f] [-o property=value] pool device new_device
New_deviceを既存のzpoolデバイスに接続します。 既存のデバイスをraidz構成の一部にすることはできません。デバイスが現在ミラーリングされた構成の一部ではない場合、デバイスは自動的にデバイスとnew_deviceの2面ミラーに変換されます。デバイスが2面ミラーの一部である場合、new_deviceをアタッチすると、3面ミラーが作成されます。いずれの場合も、new_deviceはすぐに再シルバー化を開始します。
そうです、プールは2つのvdev、ディスクc2t13d0とraidz2-0で構成されており、これらはストライプ化されています。
残念ながら、ZFSは(まだ)プールからvdevを削除する可能性を提供していません。したがって、唯一のオプションは、プールを破棄して再作成し、バックアップから復元することです。