このIOが遅いというのが嫌で仕方がないので、家で使えるレベルでの最速のストレージを求めて今までいろいろなことを試してきましたが、そのあれこれを雑然と書きたくなったので書いてみます。あくまでも家で使うレベルの話であり、業務でやるなら各ベンダから出ているオールフラッシュストレージをサポート付きで購入してください。
階層化ストレージ
今でこそSSDは容量も増え価格も下がりましたが、2017年位までは500GB以上のSSDとなるとなかなかの価格でした。そのため、それまではHDDのみの構成でしたが、128GB-256GBが手頃になり始めた2016年位に階層化ストレージとしEnhance-IOを入れてみました。ただ、メインストレージには日々(使用領域をほぼ舐める)バックアップが入ってしまうため、サイズの小さいキャッシュだとHOTなデータが流れてしまう事が多く、ヒットレシオは30%くらいでした。
その後、ES3000v2というエンタープライズなPCI-E SSDが数枚手に入ったのでこれを VMware上の仮想マシンクローニングを高速化するためにライトバックキャッシュにしたかったのですが、ライトバックキャッシュとして使おうとするとhioドライバ (Fusion IOのドライバ名を真似している)の上がってくるタイミングとudevがenhance-ioのキャッシュセットを組み立てるタイミング、fstabをもとにOSがディスクをマウントするタイミングなどが合わず、ライトバックキャッシュとして使うとファイルシステムが壊れるという事態が起きました。
また、常にFPGAを全力で動かすことによりレイテンシを削減しているため、省電力機能といったものがなくカード自体が非常に発熱します。拡張カード周辺はかなり強い風量で空気を循環させないと、複数枚刺したときにOver Temperatureのログ出力とサーマルスロットリングを受ける状態でした。室温が常に18度というような環境であればいいのかもしれませんが、人が生きる環境だと春以降温度が上がるため厳しいです。
確かに性能はnvmeがなかった当時としてはかなり高かったかもしれませんが、発熱量とドライバと消費電力量的にちょっと使いにくいのでどうにかしたい思いが強くなりました…。ドライバについては、Debianでも問題なくソースからドライバをコンパイルすることによって動きましたが…。
そしてちょっと前に、3.2TBのSSDが数本手に入ったので50TBのディスクの前段キャッシュにしようとしたのですが、ここであることにハマりました。キャッシュのメタデータ保持に4Kページ使用時でSSDの容量の0.1%程度のサイズのメモリを消費するのですが、RAID5などでまとめた実効9TBのSSDとなると、メタデータのために9GBのRAMが必要になります。RAM自体の空きはあったはずなのですが、メタデータが巨大になると、それをメモリ上に展開するのに非常に時間がかかるようになり、起動時のキャッシュの組み上げ時にランダムにカーネルが刺さってpoweroffもできなくなることがありました(つまり電ぷち)。
検証の結果、WBで使う場合にはキャッシュサイズが大体2TBを超えてくるとfstabではなく自分のスクリプトでマウント(及び付随するサービスの起動)をどうにかする必要が出てきて、またSRPのようなブロックデバイスアクセスだとそもそも思ったようなキャッシュの動きをしてくれなかったので、最終的に諦めました。NFSだったらまたキャッシュのヒットも違ったのかもしれませんが、あまり大きすぎるサイズのキャッシュが来ることを想定していないようでした。もっと前に検証で気がつけた部分もあるのですが、いざそのときにならないとわからない部分もあるのです…。
bcacheも試したのですが、こちらは思ったほどいい動きをしませんでした。
結局
SSDだけでも結構な容量なので、検証に使うSSDなLUNと、データ保存に使うHDDのLUNを分けることにしました。HDDのLUNでもストレージサーバ側のメモリキャッシュが効くので、データがホットな分にはHDDでも十分なのですが、VMのクローニング時には読みと書き込みが1つのLUNに同時に走るので、接続が全二重なSAS-HDD(NL-SASですが)といえどバックの性能差が顕著に出ます。
SSDはベンチマーク的に良かったSmartArray P420にキャッシュとキャパシタをつみHW-RAIDにしました。P420もHPE以外のマシンで使おうとするといろいろ苦労がありましたが…。経験的にエンタープライズクラスのSSD(IntelのDC3610とかMicronのM5000DCとか)は壊れたことがないので、おそらくフラッシュメモリ部分の劣化が来ることはないと思うのですが、過去にコンシューマSSDでコントローラー側の故障と思われる原因でSSDが見えなくなったことが何度かあるのでRAID5を選択しました。ただ、パリティでSSDの3TBが持っていかれるというのがなかなか気分としてつらいです。RAID0でも良かったのではと思わなくもないですが…。
ストレージマシンにメモリマシマシ
これは手っ取り早く効果が出ます。特にメモリがある程度大きいマシンで、ストレージ以外に仕事をさせない前提なら/etc/sysctl.confで
vm.dirty_background_ratio = 35
vm.dirty_ratio = 90
とメモリの90%位を書き込みバッファにしてしまうとわかりやすく速くなります。ストレージサーバだけで128GB位メモリを持っているとほぼオンメモリで動く上に、VM上でごちゃごちゃ書き込んだとしても最終的にXFSの遅延書き込みによりシーケンシャルになるので、SSDにも優しいです。多分。当然、突然のシャットダウン時にデータを損失する可能性はありますが、全損してもデータ自体は違う筐体から最短1日前に戻せるのでそれは許容しようかと思いました。崩れても誰にも怒られないので、それよりは性能を重視したいです。(ただし何かあったときに誰の助けも受けられないので血を吐きながら泣いて復旧作業をしなければならない)
ストレージ接続
現状Infiniband+SRPを超えるものが見つかりません。非公式ながらESXi6.5でもSRPは動きますが、Mellanoxのディスコン扱いがひどいのでなにか別の手段を探そうとしているのですが、結局これを超えられません。助けて…
8GFCのIOPS性能に夢を見た時期もありましたが、FCターゲットをLinux上に作ろうとするとHBAをイニシエーターからターゲットモードに変更するという手間や、苦労して作った割に10G iSCSI/NFSのほうが総合的に性能が良かったりFCターゲットは負荷をかけると刺さったりしたので、FCターゲットはベンダから買うものであって作るものではないと実感しました。SCSTのFCターゲットは試していないのですが、もしかしたらこっちはLIO/targetcliの環境で起きたようなことはなかったかもしれません…が、もうスイッチ含めて手放してしまったので検証できません。
いくら10G-iSCSIでも、レイテンシやIOPS的にSRPのそれには追いつきません。SRPの代替としてはほぼ同じ原理のiSERがありますが、40G Etherを入れて初めてIBのSRPと渡り合えるレベルなので、それ以下の25GbEなどではせっかく環境を揃えても純粋なストレージインターコネクトとしてはデグレになってしまいます。
100G EtherのスイッチとNICが手に入ればいいのですが、HCAが3000円で買える上にRDMAできっちり40Gbpsが出るIBに比べると、いま時点のパフォーマンス観点からの選択肢としてはIBに歩があります。ただ、IB自体が特に仮想化ではディスコンの流れをたどっている部分があるので、あまりこれにベッタリするのもやめたいのですが…移住先がない…。
どの程度の性能かというと、1ホスト1LUNで160kIOPSの性能が出せ、帯域面では3.3GB/s程度出ます。ほぼストレージサーバーのメモリへの読み書き速度ですが、VMホストから見てもIOPSのカウンタは回っているためVM内のメモリ書き込みではなく、しっかりとHCA経由でIOがやり取りされています。
デュアルポート接続なのでもう少し帯域を出せないかと思いましたが、そもそもPCI-Eの2.0のx8が500MB*8レーン=4GB/sであり、IBの8b/10bエンコードを考えると4GBの80%なので3.3GB/sというのはほぼ理論値でした。1HCA/DP構成ではなく1ポートHCA*2の接続にするか、PCI-E 3.0対応のCX-3以降に置き換えればPCI-Eの帯域が倍になるのでもう少し出ると思うのですが、未検証です。複数HCAのIO分散は気になるのでいつか試してみたいです。
まとめ
・ストレージを強くしたいならbcacheやeioなどの階層化ストレージに夢を見ずにフルSSDやnvme構成にするのが一番シンプルで速い
・それ以上を求めるなら多少の耐障害性を落としてもメモリを許されるだけ乗せるしかない
・IB+SRPは間違いなく速いが、いろいろノウハウがいるうえに仮想化周りではIB自体が鎮火しているので今からIBに投資するのはやめたほうがいい
・NFS over RDMAとか今からIBで再流行しないかな…だめかな…
・vSANは…うん、それもまた人生だね!
今の流れとしては分散型のスケールアウトストレージ+賢いローカルキャッシュというものがイケてる構成ですが、主に電力事情で動かせるマシンが限られてくると1つのマシンをいかに強くできるかというスケールアップ型になってしまいます。
この構成だとストレージの冗長構成が取れず/取ろうとすると非常に厳しく、何かしらでストレージが不意にクラッシュすると即死ですが、これはこれで普段切り分けしやすいという点で使いやすい面もあります。
スケールアウト型を車で例えるとトルクベクタリングなど次世代の仕組みを組み込んだ車ですが、SRPなどはシンプルに基礎を抑えていて低回転域から高回転域まできっちりトルクの出る大排気量車のようなものです。それぞれにいい悪いはあるのですが、後者は時代の流れによりディスコンなのが悲しいです。
無限に電気を使えれば無限にマシンを増やしてスケールアウト型のストレージなどにも手を出したいのですが現実は厳しいです。
完全に趣味の話でした。おしまい。
[ コメントを書く ] ( 617 回表示 ) | このエントリーのURL | ( 3 / 1548 ) | ツイート
かなり更新をサボっていたので久々の更新です。Confluenceもメモ書きとして契約してしまっているのでこのブログをどうしようか悩んでいるのでいるのですが、しばらくは生かしておこうかと思います。さて、ちょっと前に秋葉原で捨て値で売っていたFortigate 40Cをいくつか買ってみたのですが、ACが付いてこなかったためつくってみました。
まず、このコネクタの名称の知識がなく調べる手がかりがなかったので、Googleの画像検索やら各レセプタの形状や名称一覧などを大量に調べました。その結果、どうやらMolex 5557の4.2ミリピッチというコネクタがそれっぽいようでした。
コネクタやコンタクトピンについては、千石通商などに売っているようなのですが、SonicwallのAP(TZ-100)にも同型のコネクタが使われていて、そのACで基本的な動作確認が出来てしまったので「急ぎでもないし、より安価なモノタロウで何か買うついでにいつか買おう」と放置していました。(ちなみに買った時点ではぎりぎりライセンスが生きていたのでOSのアップグレードが出来ました。) そして先日、諸々を買う機会があったのでついでに興味本位で買ってみました。
今回買ったコネクタとコンタクトピンは以下の二つです。
Molex 5557コネクタ 5557-02R-210
https://www.monotaro.com/p/0856/1585/
コンタクトピン 5556T3L
https://www.monotaro.com/p/7593/9272/
コネクタについてはより安いこっちでもよかった気がします。
https://www.monotaro.com/p/0856/1472/
とりあえずコネクタだけ形状が合うか確認しましたが、これであっているようでした。
次に、起動できるACの極性を確認しましたが、爪がある方が+でその下がーになっているようです。
極性が分かったのでピンをかしめていこうとしたのですが、専用の圧着機がないとつらいです。最終的にニッパーでかしめる技術を習得しましたが、何回かピンからケーブルがすっぽ抜けてブチ切れそうになったので、今回はやりませんでしたがハンダで軽くとめておくのが確実な気がします。(圧着とは…)
絶縁のために(ビニールテープが見つからなかったので)養生テープで根本を軽く巻いたのですが、これが失敗でした。ただでさえコネクタの奥までピンを押し込むのが大変なのですが、このテープのせいで余計やりづらくなりました。電子工作になれている人やもっと几帳面な人であればこんなことをしないと思いますが、動けばいいだろ位な雑な気持ちでやった結果、無駄な苦労をしました。
なんとかピンを奥まで押し込んでピンがロックされたことを確認したので、ちゃんとコネクタ内部のピン同士が接触していること、逆接になって爆発しないことを祈りながらACに繋いでみました。
すると、電源の容量不足やピンの接触が甘いといったこともなく、爆発せずに無事起動してきました。コネクタからピンのすっぽ抜け防止に紫外線硬化樹脂などで後ろを固めるのがよりよいと思いましたが、必要な物を買うと割と高くなるうえに買っても使うことは多くなさそうなので今回は見送りました。
作った感想ですが、コンタクトピンの圧着器を持っていないのであればおすすめしません。その辺の工具で済ませようとすると器用さというかコツが必要です。ラジオペンチやニッパーで代用は可能ですが、慣れるまでピンを4本無駄にしました。また、AC自体はオークションなどで1000円前後で売っているので、必要であればこっちを買うべきです。
ただ、自分のようにジャンクでAC無しのFGをいくつか拾って、しかもACをいくつか欲しいけどACが本体より高いし12VのACは大量に余っているので自作したい、という貧乏な考えがあるのであれば作るというのも一つの手ではあります。
しかし、カシメが不十分でケーブルがすっぽ抜けたりピンがしっかり奥まで入っていないためケーブルを動かすと接触不良で電源が落ちる、という事が起こるので(実際に起きて作り直した)、作ったとしても精々検証用にとどめておくのをおすすめします。
ちなみに、このFGはFlets網内のv6折返しのテストに使おうと思っていたのですが、FortiOS 5.2だとIPv6の自動設定にDHCP6-PDやSLAACが使えず、かつNP6を搭載していないためv6の通信がCPU処理になってしまい残念なことになった(LAN内のv6NAT通信で200MbpsくらいでCPUが張り付く)ので、v6関係は諦めVDOMが使えた頃の軽量な4.0MR3に戻しました。v6のSNATができたのは良かったのですが…残念。
[ コメントを書く ] ( 808 回表示 ) | このエントリーのURL | ( 3.1 / 1418 ) | ツイート
最近はRAIDカードの検証などであれこれしていたのですが、その際にPCI-E 3.0でリンクでき、かつ自由に再起動できる遊んでいる資材が、自分の環境にはもらったGA-X79-UD-5とHPのML350pGen8しかありませんでした。
しかし、ML3530pはサーバにありがちな再起動に2分3分かかるのが苦痛なのと、物理的なアクセス(積んでいる場所)の制限によりカードの差し替えがつらいと言う問題があり、GA-X79-UD5に関しては10G+FCoEなCNAなカードや、ほぼ全てのRAIDカードなどのオプションROMを持った拡張カードを挿すとPOSTしなくなるという問題がありました。
なので、そろそろたたき台の板を更新しても良いかなと色々見ていたところ、謎のHUANAN X79というMBがオークションでXeon 2660v1とRegECCなDDR3メモリ4GBx4がついて2万円だったので、怖い物見たさと知的好奇心で買ってしまいました。そのメモを色々雑に書いておきます。
更新する先が2011v1と言うのも残念ですが、DDR3メモリやらなんやらが余っているのでDDR4に移行できないという…。
べつに宣伝をするわけではないので、気になった人は各々探してみてください。
余談ですが、最初HUMANと読みましたがHUANANなので検索するときは注意してください。
内容物
SATAケーブル、IOシールド、マニュアル、ドライバCD、Xeon 2660v1とRegECCなDDR3メモリ4GBx4、そして何故か親切にもCPUのサーマルグリスがついてきました。使いませんでしたが。
Xeon 2660v1はどうやら正規品らしいです。CPU-ZやSR0KKというSスペックを信じる限りは…。
メモリは、サーバでよく見るSamsungのDDR3 RDIMMでした。壊れていたら文句を言おうかと思ったのですが、Memtest86を2周してしまったので諦めます。
マニュアルはフロントパネル用ピンヘッダの配置と、OSへのドライバインストールなどをさらっと書いた程度の物(中国語)であり、Supermicroのような細かい接続ブロックダイアグラムは一切ありませんでした。
外見
リア端子は必要最低限、基板は割と堅い構成に見えます。
オンボードに謎のm-SATAコネクタがあるのですが、WifiなどのPCI-Eカードが刺さるのか、mSATAを使った場合オンボードのSATA3ポートのどちらかと排他になるのか、その後ろにあるジャンパピンは何なのか、どこにも何も書いてないので謎です。
起動できるCPUについて
XeonのES品・QS品、V1/V2何でもいけました。
確認した限りの最大構成では、興味本位で買った12コアの2696v2のES品と、メモリも16GBのDDR3-1333Rx4の64GBまで確認しました。
X79で何故RDIMMがいけるのか謎で仕方がありませんが、CPU側にメモリコントローラを搭載しているからなのか、Welcome to ようこそ謎チャイニーズテクノロジーなのかはわかりません。
実はUD-5もv1のXeonに関してはES/製品版が起動できるのですが、RDIMMは認識できません。 このX79でもi7の3900/4900系を載せたら多分RDIMMは動かない気がしますが、未確認です。
その他
BIOSのリビジョンは4.6.5で、最終更新はこの記事を書いた時点で半年前の10月でした。
X79にしては息が長い気がしますが、公式製品ページが見つからないためBIOSのアップデートがどこから手に入るのかは謎です。
CPUのヒートシンクにはZalman FX70と言う物を利用しました。
まあじゃんぱらでたまたま安いのが見つかったのでこれにしたのですが、中々に芸術点が高い作りをしています。芸術的な作りが故に、持ち上げるときに左手小指と右手親指の2回指を切っているので、扱うときは気をつけましょう。
グラボはかれこれ長く使っている(500円で数枚買った)Matrox G550のPCI-E x1版を使って検証しました。どうせリモート(RDP/IP-KVM/SSH)で作業してしまうので起動画面さえ見えればいいと言う割り切りさえすれば、貴重なx8やx16レーンを使わずに普段余るx1にグラフィックを回せるので、この手のマザボ使用時の検証用途には安く手に入ればおすすめです。
ただしWDMなグラフィックドライバが出ていないのでWin8以降はドライバがあたりません。Win8以降は標準ドライバでそれなりに動きますが、間違えてメイン機で使おうとすると大変なことに…。
まとめ
謎なMBですが、オンボードデバイスが必要最低限になっているためか、カードとの相性もなく癖のない動きをしています。が、信頼できるかというと怪しいので、目の届く範囲外での使用は避けたい気もします。
しかし、良いか悪いかは別として、ES品が動いてしまい、かつ余ってる/割と安価に買えるRDIMMも使えると言う魅力もあるので、一概にダメとも言えないのが悩ましいところです。
なので、物好きな人が、知的好奇心を満たすために自己責任で試す分にはいいと思います。
以上です。
[ 2 コメント ] ( 2712 回表示 ) | このエントリーのURL | ( 3 / 1856 ) | ツイート
自分は1-2世代前の安くなった中古のスマホを買って適当なSIMを挿して使っているのですが、去年の2月くらいに買ったSOL25 (Xperia Z2)が車に轢かれて死にました。手元に来て享年1年でした。
顛末としては、
雨が降っていたので、出ようとしたバスに駆け乗る→帰宅→1時間後、直前まであったスマホがないことに気がつく→Ggoogleのデバイスマネージャからもオフライン→駅前の交番までいき、遺失物届け出がないか確認→遺失物には来てないのでとりあえず紛失届を出す→帰り際、ちらっと見たら道端に転がっている見覚えのあるフォルム→死体発見→5分前に出した紛失届を取り下げ
といった感じでした。 割と気に入っていたのにあまりにも悲しい別れでした。まあ、盗まれてデータ抜かれるよりはマシなので見つかってまだ良かったというべきでしょうか…
発見当初は電源も入らない状態だったので、とりあえずUQMobileのSIMとマイクロSDを摘出したところ、マイクロSDは生きていたのですが、SIMはマイクロSIMが刺さる機種が手元になかったので生死が不明でした。
手元のゴミ箱を漁ったところ、4000円だったのでとりあえず買ったSHL24が見つかったので、SIMを切って差し込み、動くかどうかだけみてみました。
結果は、APN設定は必要でしたが、SIM自体はそのまま動いたので、しばらく代替としてSHL24を使う事にしたのですが、さすがに今となってはちょっと動作が厳しいです。
その後、Zeonfone GoとButterfly 3(HTV31)を入手したのですが、ZenfoneはSIMサイズがマイクロなので 再度変換が必要になり、HTV31はVoLTE対応のSIMが必要(手持ちの物は非対応)になったので、どちらを使うにしてもそのままでは使えないのでしばらくはSHL24にルーターになってもらう必要がありそうです。。
Xperia Z2の方は、バッテリへのダメージに依る爆発におびえながら、しばらく電源に繋いでいたところ電源は入るようになったので、いくつか欲しいデータがあったので何とか取得できないかあれこれしました。幸い?カスタムファームを入れていたので電源+VolDownでTWRPのリカバリシェルに入り、ADBドライバが通じたので何とかデータをサルベージで来ました。
まあ、画面が見えないので多分リカバリシェルが立ち上がってるだろう、なのですが。。ちなみにリカバリ画面だとMHLケーブルを繋いでも何も出力されません。こういった事態に備えて何かしらの方法でリモート接続を出来るようにしておいても良いかもしれませんね…。
閑話休題、最近のUltrabookのような薄型PCだとUSBポートが枯渇したり有線イーサネットポートが無かったりして不便なので、秋葉原PCネット地下の何とも怪しげなUSB3.0+GibE搭載ハブ?ハブ付きNIC?を買ってみました。
前情報は何もありませんでしたが、開けてみるとKY-688というモデルで、中身はVIAのスイッチチップ+Realtek RTL8153という当たり障りのない構成でした。
ネットワークパフォーマンス的には、iperfで940Mbps/上り下りが出て、USB3.0のスピードも200MB/s程度まで出ることは確認しましたが、手元にそれ以上速いデバイスがないのでどこで飽和するかは謎です。
Surface3ProとL2的に繋がっているVM(AX3650S-48T4XW経由で10Gスイッチ接続)との計測結果です。
$ iperf -c Surface3Pro -i 10 -t 60
------------------------------------------------------------
Client connecting to Surface3Pro, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.20.1.66 port 60313 connected with 172.20.1.211 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec
[ 3] 10.0-20.0 sec 1.10 GBytes 941 Mbits/sec
[ 3] 20.0-30.0 sec 1.10 GBytes 941 Mbits/sec
[ 3] 30.0-40.0 sec 1.10 GBytes 941 Mbits/sec
[ 3] 40.0-50.0 sec 1.10 GBytes 941 Mbits/sec
[ 3] 50.0-60.0 sec 1.09 GBytes 935 Mbits/sec
[ 3] 0.0-60.0 sec 6.57 GBytes 940 Mbits/sec
クライアントとサーバを逆転しても変わらないので逆は省略
RTL8153チップは最近のLinuxカーネルやWindows10ならそのまま認識できるので、軽作業用途には癖が無くておすすめです。ヘビーユースに耐えられるかは謎ですが。
以上です。
[ コメントを書く ] ( 772 回表示 ) | このエントリーのURL | ( 3 / 1634 ) | ツイート
社内で自宅に構成したNutanix CEのデモを行ったところ、好感触だったのでとりあえずシングルノードで構成して触ってもらうことにしました。 しかし、あいてるHWがリース切れでもらってきたML380G7だったため、ドハマりする結果になりました…。なんとか原因がわかったので後世のためにバッドノウハウを残します。
余談:導入のいきさつ
未だに後進的な開発方法を行っていたのでどうにかしたいと思ってはいたのですが、インフラに詳しい人がほぼいないうえ、自分もかかり切りになるわけにはいかない状況で(あと一々VM作成依頼とか受けたくない)、誰でも必要なときにVMを作れるNutanix CEは非常に良いソリューションでした。
ちなみに過去に開放するサーバのハイパーバイザを検討した結果:
VMware→vCenterServerがないのでクローンとか作るのが厳しいし、そのたびに一から作るのはあまりに効率が悪いので没 (出来なくはないけどSSHでログインしてvmkfstools 使えとかvmxファイルいじれとか非インフラの人にはもっと厳しい)
Linux KVM→同上 (そもそもアプリ開発チームにKVM使ったことある人いないのでは…)
HyperV→まあ妥当かなと思っていたけど社内にライセンスが2008R2Stdしかないのでメモリ32GB制限とRDP接続数制限…
もちろん、それぞれ良いところはあるのですが、どれもある程度のナレッジが必要なので、あまり深く考えずに使う、というのはちょっと厳しいかなと思いました。
なので、ちょっと暇が出来たので「とりあえず箱は用意したから好きに使っていいよ、ただし冗長性はないからいつ吹っ飛ぶか分からないから、必要なデータはgitデーモンなりSVNなりあとで本番仮想機の上に作るのでそっちに退避してね」というスタンスでNutanix CEを入れようとしたのですが…
構成
ハードウェア構成
筐体 HP Proliant ML380G7
ストレージコントローラ P410i (1G-FBWC付き)
ディスク構成 2.5インチSAS 300GB*8
CPU Xeon X5680*2
メモリ 48GB
OSバージョン
ce-2017.02.23-stable.img.gz
ディスクが8本あるのに全て300GBというNutanix CEのHDD500GB要件を満たさないため、「じゃあ全てRAID5でくっつけて一つにするか!」という安易な発想から、サポート外構成のディスク構成をとりました。ただ、SSDがないため、SSDだけは買ってもらい、HDDを一つ抜いてSSDに交換したので以下のようなディスク構成になりました。
Array A 300*7 RAID5 1.8TiB
Array B 240GB * 1 RAID0
USBにce-2017.02.23-stableを焼き、起動までは良かったのですが…
ハマり1 ディスクがSSDとして認識されない
みんなのハマりポイントなので情報は沢山ありました。SmartArrayはSSDとして認識するのですが、何故かOSにはそれを見せないようです。
echo 0 > /sys/block/【SSD】/queue/rotational
にてインストーラはごまかせました
ハマり2 CVM再起動後ストレージプールが死ぬ
CVM起動後、PrismからみるとArray Aも何故かSSDと認識され、おかしいなーと思いCVMを再起動したところ、ストレージプールへ一切の書き込みが出来なくなりました。
家に帰ってからも手持ちのP410コントローラを使い
Array A 1TB SATA HDD*2 RAID0
Array B 240GB SATA SSD * 1 RAID0
構成で同様のことを行ったのですが、やはり死にました。
余談ですがSmartArray P410がX79などのMBで起動しなかったため、メモリとコア数に余裕のある(Xeon L5640/6コア)懐かしのX58を引き出しました…。
原因
長時間の手探りの調査のあと、原因はSmartArrayで定義されたディスクが、ディスクのシリアルの代わりにコントローラのシリアルを返すことだと判明しました。
[root@NTNX-71f86937-A ~]# smartctl -a /dev/sda
=== START OF INFORMATION SECTION ===
Vendor: HP
Product: LOGICAL VOLUME
Revision: 6.64
User Capacity: 240,021,504,000 bytes [240 GB]
Logical block size: 512 bytes
Rotation Rate: 15000 rpm
Logical Unit id: 0x600508b1001cb8ae0693a3fdcc1e17ca
Serial number: PACCRID11320BPR <========これ
Device type: disk
Local Time is: Thu Mar 9 14:24:53 2017 PST
SMART support is: Unavailable - device lacks SMART capability.
=== START OF READ SMART DATA SECTION ===
Error Counter logging not supported
Device does not support Self Test logging
[root@NTNX-71f86937-A ~]# smartctl -a /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.26-1.el7.nutanix.20170222.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke,www.smartmontools.org
=== START OF INFORMATION SECTION ===
Vendor: HP
Product: LOGICAL VOLUME
Revision: 6.64
User Capacity: 2,000,342,441,984 bytes [2.00 TB]
Logical block size: 512 bytes
Rotation Rate: 15000 rpm
Logical Unit id: 0x600508b1001cec93d95097d47affa22f
Serial number: PACCRID11320BPR <========これ
Device type: disk
Local Time is: Thu Mar 9 14:24:56 2017 PST
SMART support is: Unavailable - device lacks SMART capability.
=== START OF READ SMART DATA SECTION ===
Error Counter logging not supported
Device does not support Self Test logging
[root@NTNX-71f86937-A ~]#hpacucli ctrl slot=1 show
Smart Array P410 in Slot 1
Bus Interface: PCI
Slot: 1
Serial Number: PACCRID11320BPR <========これ
…
このシリアルがCVMの初期設定時にxmlに書かれるのですが、このシリアルをCVMの中でマウントポイントとして使っているため、同じシリアルがあると二重マウントになりどちらかがアクセスできなくなります。
[root@NTNX-d16bad23-A ~]# virsh dumpxml NTNX-d16bad23-A-CVM
(省略)
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/disk/by-id/scsi-3600508b1001cec93d95097d47affa22f'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<serial>PACCRID11320BPR</serial> <========これ
<wwn>600508b1001cec93</wwn>
<vendor>ATA</vendor>
<product>LOGICAL VOLUME</product>
<alias name='scsi0-0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/disk/by-id/scsi-3600508b1001cb8ae0693a3fdcc1e17ca'/>
<backingStore/>
<target dev='sdb' bus='scsi'/>
<serial>PACCRID11320BPR</serial> <========これ
<wwn>600508b1001cb8ae</wwn>
<vendor>ATA</vendor>
<product>LOGICAL VOLUME</product>
<alias name='scsi0-0-0-1'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
CVM上のマウントポイントは以下のようになります。
nutanix@NTNX-71f86937-A-CVM:172.20.1.114:~$ mount
(省略)
/dev/sdb1 on /home/nutanix/data/stargate-storage/disks/PACCRID11320BPR type ext4 (rw,nosuid,noatime,data=ordered,nodiscard,nodelalloc,init_itable=30)
/dev/sda4 on /home/nutanix/data/stargate-storage/disks/PACCRID11320BPR type ext4 (rw,nosuid,noatime,data=ordered,nodiscard,nodelalloc,init_itable=30)
none on /dev/cgroup type cgroup (rw,cpu,cpuacct,memory,freezer,net_cls)
この結果から、1つのSmartArrayコントローラ上で論理ディスクを2つ以上作ると死ぬ事が確定したので、これを回避する必要があります。どうにかコントローラからエクスポートするシリアルを変更できないか、CVM構成後にディスク情報を変えられないか調べたのですが、時間の無駄でした。
この記事を書きながらふと「ではlibvirt向けのxmlを書き出すところでstartctrlからの情報ではなくその都度ランダムに生成するようにすれば、あるいは…」とも思いましたが気力が尽きました。
対処法
今回の対処としては、光学ドライブに2.5インチのディスクをマウントする12.5mm厚のダミーマウンタを買い、SSDはAHCIに見せることにしました。
どうでも良いですが、ML380の光学ドライブを交換したあとにディスクの後ろに付いているスペーサに気がつきました。
めんどくさいのでそのままです。窪んでます。雑い。
ハマり3 何故かSmartArrayの通常ディスクがSSDとして認識されてしまう
かくして、マウントポイントが被る問題は対処できたのですが、今度は何故か何度CVMを作り直しても、通常のHDDがSSDとして認識されてしまいました。
これが今回の大きなハマりポイントでした。
Prismやnclからみても、HDDであるべきストレージがSSDと認識されてしまいます。もちろん、ホスト上の/sys/~/rotationalは1を返しています。1.5TのSSDが本当にあったら良かったんですが、残念ながらHDDです。
まあそのままでも動くので、階層化が全く機能しなくなるけどもう良いかなと心が折れかけていましたが、原因が見つかりました。
原因
Nutanix CEにinstallで入ると、インストールスクリプトの中でどのディスクがSSDであるかをhclリストの中から探し、その中になければ今回SSDとして認識されたディスク(cat /sys/~/rotational 0として認識したディスク)を/home/install/phx_iso/phoenix/hcl.jsonの中に追記し、それをCVMに渡すようです。
CVMは、起動時にそのjsonを元に、今アタッチされているディスクのうちどれがSSDかを確認するようです。アタッチされているディスクの情報は、libvirtのxmlに書かれたProduct名(今回は<product>LOGICAL VOLUME</product>と言う値)がCVMに渡るようです。
さて、この/home/install/phx_iso/phoenix/hcl.jsonですが、再インストールのためにrootで./cleanup.sh を行っても初期の状態には戻らないため、過去にecho 0 >/sys~をやって過去にSSDとして認識されてしまうと、そのディスクがずっとSSDとして残り続けるようです。これが原因でした。
対処法
/home/install/phx_iso/phoenix/hcl.jsonを編集し、該当行を消し、CVMを作り直します。もしくはもう一度USBメモリを作り直し、初期の状態にもどします。
今回は下記の行をまるっと削除し、再度installでログインしてCVMを作り直しました。
{
"nand_type": "MLC",
"capacity_gb": 240.02150400000002,
"interface": "SATA600",
"data": "true",
"last_edit": 1489090465,
"manufacturer": "Community Edition",
"boot": "true",
"model_string": "LOGICAL VOLUME",
"approved_by": "Nutanix, CE",
"model": "LOGICAL VOLUME",
"metadata": "true"
}
その後、無事にHDDとして認識されました。
まとめ
サポート外構成は、やめようね!!!
何故サポートしないか、それにはちゃんとした理由があると実感しました。つらかった…
少なくとも、NutanixにP410以前のSmartArrayカードはサポートされていないので使うべきではありません。特に1つのコントローラで2つ以上の論理ドライブを作成する場合は確実に死にます。
MegaRAIDカードの場合は、インストールスクリプト中でmegacliであれこれしてシリアルを抜き出しているようなので、それぞれのディスクをRAID0で見せる場合は大丈夫な気がしますが、複数のディスクでRAID5などを作成した場合は分かりません。
SmartArrayも、P420以降に関しては、ファームバージョン7くらいからHBAモードがあるのは確認しましたが、HBAモード時にディスクのSerialをどう返すかは未確認です。
しかしながら、このほぼ情報がないトラブルのおかげでずいぶんとnutanixがインストール時に何をするかを深いところまでみられたので、勉強にはなりました。あとncliやhpacucliも初めて使いましたが調査の段階で何度も様々なコマンドを打ったので、だいぶ慣れました。
多分運用が始まるとそれはそれで問題が出るので、何かあればまた記事にしようと思います。
[ 1 コメント ] ( 1613 回表示 ) | このエントリーのURL | ( 3 / 1578 ) | ツイート
<<最初へ <戻る | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 進む> 最後へ>>