Skip to main content

SSD(NVMe) 使用、RedundancyFactor2の 4ノードAHV構成でのご相談です。
ReplicationFactor2のコンテナ上で仮想マシンを動かしています。

 

異なるノード上の2本のSSDが「同時に」壊れたと仮定して、
運悪く壊れたSSD上にデータを配置している仮想マシンがいた場合は
その仮想マシンのデータはロストしてしまうのでしょうか。

 

仮定の話だとしても、同時にSSD2本障害という天文学的な確率の話で申し訳ありません・・

 

「ReplicationFactor2でデータが守られています」以外にも安心材料がありましたら教えてください。
お客様の質問にうまく答えられなかったので、こちらで質問させていただきました。

@kei-54835 さん、お疲れ様です。

実際に「データがロストするのか」という観点で言えば、ご認識のとおり、故障した異なるノードのSSDに配置されたデータブロックはロストしている可能性が高いと思います。
(ただしご認識の通り、そのような確率自体がどれほどあるかという話になりますので、あくまでもそのような事象が発生した場合の話であり、頻繁に起きるものではないという理解です)

Nutanixの場合、仮想ディスク単位ではなくデータブロック単位でクラスター内の各ノードに分散されるため、特定の仮想マシンのすべてのデータが一度にロストするわけではありません。

以前にこの動作を検証した際、異なる2ノードのSSDで同時障害を発生させると、一部のVMがI/O処理を継続できなくなりましたが、そのVMを再起動すると何事もなかったかのようにOSが起動しました。おそらくOS部分のデータは障害が発生したSSDには載っていなかったのではないかと思います。

したがって、SSDの故障によって失われるデータはあくまでもブロック単位であり、そのブロックを読み込まない限り、仮想マシンとしては動作が継続できることを確認しています。

OSから見ると、バッドセクタが発生して一部の領域が読み取れなくなっているようなイメージになると思います。そのため、OSより上位のレイヤーでカバーできれば、継続動作自体は可能であると考えられます。


takhagiさん

ありがとうございます。

仮想マシンファイルがそのままSSDに保存されているわけではないので、影響を受けるとしても一部のブロックということですね。重要なデータが載っていなければ、仮想マシンへの影響はさらに少ないはずと。

 

そもそも同時に複数ディスク障害というところが、仮定にしても無理があると思うのですが(心配しすぎですね)、経験談交えて教えて頂きありがとうございました!


横から失礼します。
VM観点では一部のデータブロックがロストするという点についてはその通りなのですが、影響度合いに関しては個人的にもう少し重めにとらえています。

VM単位ではわずかなデータブロックでも、クラスタ全体で見たときに4ノードクラスタの場合はSSDサイズの3分の1(数百GB~数TB)のデータロスになっている場合もあり得ります。


重要なデータが載っていなければ影響はないのですが、逆に重要なブロックがやられてしまうとOS起動不可になる可能性もあります。

仮にOSが起動できたとしても、FSCKが必要な状況となり、一部のデータ破損や消失によりアプリケーションの動作やデータ整合性に問題が出る可能性もあります。
VDIなどであれば、OS起動できればいったん復旧とすることも可能かと思いますが、ミッションクリティカルなアプリケーションの場合はきちんとアプリ側での整合性チェックをしたり、場合によってはバックアップからリストアするような対処も必要になるかと思います。

 

そもそも同時に複数ディスク障害というところが、仮定にしても無理があると思うのですが(心配しすぎですね)

 

こちらに関しても個人的には油断は禁物と考えています。

たしかにSSDはHDDと比べて障害率が低いことが知られていますが、HDDと異なる形で2重障害を引きやすい側面もあります。

主な理由は以下の三つです。

①HDDよりも障害予兆検知がしにくい

②書き込み寿命がある

③高耐久ゆえにFWバグが放置されやすい

細かな説明は割愛しますが、SSD書き込み耐性観点で適切なサイジングができていない場合や、長期間SSD FWの更新ができていない場合など、実際に2重障害につながるケースはありますので、複数ディスク障害を予防できる適切な導入・運用が重要です。


Let me try to explain this e bit further. When using RF1 (Replication Factor 2) for data all extends (bits of data with a size of 1MB) are writen on the local drives of the host where the Virtual machines is running (Datga Locality) the is a copy of the extend writen on 1 of the other disks in the cluster (creating the RF2). When a disk goes down the extends on that disks are recreated (from the other copy in the cluster) on the remaining disks. (healing). When that is done the RF2 is restored. During this healing process a second disk cannot go down, then you will have data loss. When the healing is done, another disk can go down again. (I created a post about this: https://next.nutanix.com/community-blog-154/honey-i-shrunk-my-cluster-multiple-nodes-down-in-rf2-41359)

 

But if you want to handle the second drive failure during healing process you must create an Redundancy Factor 3 cluster with Replication Factor 3 storage containers. This has a minimum of 5 nodes in a cluster. 

 

In production environments I do not see a lot of RF3 clusters. Only with large clusters (lets say 16 nodes or more) I see this kind of setups. To get you some more information, I've deployed hundreds of clusters from small to large and I never ever had to deal with 2 disks down at the same time in an RF2 cluster. 


Reply