NVMeにkvmの仮想ディスク(qcow2)を配置してみる


NVMeに興味がわいたので、家のサーバで動かしているKVMの仮想マシンの仮想ディスク(qcow2)をNVMe上に移動してみた。

購入編

まずはNVMeをPCに増設するところから。
使ってるマザーボードはこれ。CPUはAMD RYZENの1700。



下記のNVMeを増設することに。
Crucial SSD M.2 1000GB P1シリーズ Type2280 PCIe3.0x4 NVMe CT1000P1SSD8JP




これが増設するブツである。このサイズで1TBなんだからすごい。
本製品は5年保証がついており、上面のシールがはがれてないことが条件。
条件なのだが、そんなこととは知らず、買ったヒートシンクが普通にシールで張り付けるタイプだったので、貼ってしまうと剥がすときにシールが破けちゃう可能性が高い。

こういうタイプだとシールも剥がれないので良いらしい。


まぁ、しゃーないから貼ってしまう。

設置編

あとは増設して終わりー!と思っていたが、そうは問屋が卸さなかった。
マザーボードにNVMeを差して固定しようとしたら、マザーボードから浮かせて固定するための台座が見つからない!
NVMeには付属しておらず、マザーボードの付属品として付いてるらしいのだが、マザーボードのネジが見つからず…。

どうしよう…と思ったが、台座は2㎜のネジだということなので、たまたま家にあった下記のM2の小ねじとナットを組み合わせて、仮の台座を作成して固定。
上側をネジとナットで挟んで、下側にも入り込みすぎないようナットを噛まして固定。
下記が出来上がり。

仮想ディスク移動編

NVMeにファイルシステムを作成する。とりあえずbtrfsにしてみた。
NVMeに既存のkvmのqcow2を移動して、元々の仮想ディスクを仮想マシンから削除後、移動した仮想ディスクを接続しなおす。

パフォーマンス計測

  • Windows計測結果
    まずはWindows10の仮想マシン上でCrystalDiskMarkを実行した結果。
    仮想ディスクはVirtIOのドライバで稼働させている。

    NVMeのスペックより高い性能が出ているww
    ハイパーバイザー上のメモリにキャッシュが乗るので、物理アクセスより速い結果が出ているものと思われる。

  • Linux計測結果
    Linuxの仮想マシン(Centos7)でのhdparmの実行結果はこちら。
    こちらも同じくVirtIOのドライバで稼働させている。
    [root@bnk ~]# hdparm -t /dev/mapper/centos-root
    /dev/mapper/centos-root:
    Timing buffered disk reads: 2238 MB in 3.00 seconds = 745.84 MB/sec
    

    一発目の実行結果なので、あまりキャッシュの影響はないと思われる。
    2回目以降はハイパーバイザー上のメモリにキャッシュが乗ってどんどん速くなってしまう。

 体感

Windows10の仮想マシンだと、HDDで動かしていた時は詰まる感じがあったが、NVMeでは詰まりが感じられず、ストレスなく使える。
明確に差が出るのが起動時で、10~20秒ほどかかっていたのが、1~4秒程度でログイン画面が表示されるレベルになった。

NVMeを使うメリットとは

2.5inchサイズのSSDだと、インターフェースであるSATA3の上限6gbpsの影響もあり、一般的に600MB/sが上限と言われているが、今回のNVMeだとシーケンシャル読込速度 最大2000MB/秒、書込速度 最大1700MB/秒の速度が出るため、ディスクのアクセスがボトルネックとなる処理に対してメリットがあると思われる。

エンタープライズ製品だと、ピュアストレージのこれとかHPのnimbleストレージとかこの辺がNVMeを使用しているので、DBのパフォーマンスが悪いとかIOが欲しいといった用途にはこれらの製品を検討してみると良いと思われる。当然高いけどねww

そこまで要らんけど、ちょっと安定的に使いたいサーバで、ディスクの冗長性も欲しいといった場合は、AMDのThreadripperシリーズでNVMeによるRAID1、10が組めるらしいので、CPUのスレッドも稼げるしその辺を検討してみるといいかも。


コメント

このブログの人気の投稿

ヤマダ電機の安心会員住所変更をした

JP1の定義をドキュメント化するjp1ajs2.jobdocが超便利

curlでADのドメインユーザーでプロキシを超える