Intel VROCでRead 約10,000MB/s達成

お客様からサーバーの注文があり、今回は初めてIntel VROCによるRAID5を組んでみました。

構成は以下の通り。

MB: Supermicro X12Dai-N6

CPU: Xeon Silver 4310 x 2個 (12C/24T, 2.1GHz, 11Mキャッシュ)

Memory: ECC 64GB (16GB x 4枚)

NVMe SSD: Western Digital Red SN700 4TB x 4枚 (M.2)

Intel VROC Premiumライセンスのハードウェアキーをマザーボードに挿すとVROCが使えるようになります。

VROCの特徴はざっと列挙すると以下の通り。

  • PCIeレーンを使ってNVMe SSDとCPUを直結するのでボトルネックが少ない
  • RAIDカードを別途用意する場合と比べて、比較的に安価
  • UEFIブート可能なRAIDボリュームが作成できる
  • 停電時の保護機能(RAIDカードのバックアップ用バッテリーに相当する設定が不要)

早速、BIOS画面でVROCのメニューを開きます。

(1)[Advanced] – [Chipset Configuration]
(2)North Bridge
(3)IIO Configuration
(4) Intel VMD Technology
(5) CPUを選択
(6) ストレージとCPUを紐付け

ここで、注意が必要なのですが、SSD4枚を2つのCPUに2枚ずつ分散してRIAD5を組むことは推奨されないようです(Manualで確認しました)。U.2インターフェイスが2ポートのNVMeケーブルを準備していたので、CPU1にU.2接続のSSD2枚、M.2接続のSSD2枚の組み合わせでRAID5を組みました。(下図のBlock Diagram参照) Block図を見れば分かりますが、NVMeもM.2も同じ4倍速でPCIeを使うので、U.2とM.2が1つのRAIDボリュームに混在しても速度的なバランスは問題ないはずです。尚、U.2ポートには M.2-> U.2 変換アダプタをかませており、4枚とも同じモデルのM.2のSSDを使っています。

X12Dai-N6のBlock Diagram
(7) ここまでくるとRAID構築のメニューが出現する
(8) All Intel VMD Controllers
(9) SSDが全て表示されることを確認
(10) 無事、RAID5が完成

あとは、Windows Server 2019をインストールしました。OSインストール時に Intel NVMe RAID ControllerドライバをSupermicroのサイトからダウンロードしてF6インストールをしないと、インストール先のストレージを認識しないので注意が必要です。(下図)

<Intel NVMe RAID Controller>

この後、ドメインコントローラー、SQLServer、ファイルサーバーの3つのHyper-Vゲストを突っ込んで稼働させました。この状態でCristalDiskMarkを実行したら、シーケンシャルReadはなかなか高速な結果が出ました。1週間が経過しましたが、特にトラブルもなくなかなか快適です。

このサーバーをミドルタワーケースで構築してお値段はWindows Serverインストールサービス、1年保守込みで約120万円前後です (OS代金別)。Dual CPUでメモリ64GB、ストレージは RAID5 10TBのフルSSDです。いかがですか? ご興味があれば問合せフォームからご連絡ください。

RTX1300入荷

RTX1300が入荷したので電源を入れてみました。

10GのサポートはSFP+ポートのみで、10GBase-Tのポートは1つもありませんでした。実売が14~15万円ぐらいということで、思ったよりも安い理由はこのあたりにあるんでしょうか。

LAN1の8ポートはすべて1000Base-Tのポートです。2つのSFP+ポートはLAN2とLAN3の排他利用ということを考慮すると、やはりLAN1に10GBase-Tを1つぐらいは欲しかったですね~。このあたりは残念。次のモデルでは2.5Gbps, 5Gbpsにも対応したマルチギガ対応10GBase-TポートをLAN1に1ポートぐらいは作って欲しいです。

SFP+は手持ちでFS.COMのモジュールがあったので挿してみました。NETGEARのAXM765互換品モジュール(30m用) です。ネット直販で1万5千円ぐらいだったかな。

LAN2に挿してみた。

そんでもって、早速、TELNETで確認。リビジョンは以下の通り。

LAN2のステータス確認してみたら、10GBASE-Rとの表示。見た目は問題はなさそうです。ポート番号はPORT9の表示ですね。

10GBase-Tのインターフェイスを持つファイルサーバーと10Gbpsで問題なく通信できました。今回はSFP+モジュールがNETGEARの互換品しか手持ちになかったのですが、汎用タイプのものを使った方が安心かも。

このRTX1300はマルチギガに対応しているらしいですが、マルチ(10Gbps, 5Gbps, 2.5Gbps, 1Gbps)に対応するSFP+モジュールって非常に少ないです。テストで使った10GBase-TのSFP+モジュールもCat5eケーブルで接続すると5Gbpsではなく1GBpsで接続されてしまいます。

マルチギガに対応するSFP+モジュールをヤマハさんはリリースする気はないんですかねぇ? SFP+モジュールがオプションで発売されていないようですし、SFP+モジュールのコンパチリストが欲しいですね。

マルチギガ対応ルーターといいつつも実質は10Gインターフェイスを持つスイッチと10Gbpsで通信させ、スイッチ側でマルチギガに対応するモデルを選択することになるのでしょう。

あと、光回線も10Gタイプに契約を切り替えないとこのルーターを買う意味はあまりないのですが、弊社はまだNTTもAuも10G回線のエリア対象外なんですよね・・・。

C#でIEYASU APIを使う

クラウド勤怠管理のHARMOS勤怠(旧称:IEYASU)にはRESTのAPIが用意されています。

今回、顧客案件でこの IEYASU API をC#から扱う機会があったので、そのメモです。

HttpClientを使ってもできると思いますが、今回はRestSharpを使いました。

開発環境は Visual Studio 2019です。

準備

まずは、API KEYを管理用WEB画面で取得しておきます。

尚、API KEYの有効期限は3か月です。更新忘れがないように注意が必要です。

次にVisual Studioに移動し、NuGetを使ってRestSharpをインストールします。

あと、Jsonを扱うのでシリアライズを使うとスマートです。以下のようにコード内でusingディレクティブを追加しておきます。

using RestSharp;
using System.Text.Json;

GET

ユーザー一覧や打刻データの POST や GETにはTokenが必要になりますので、ここでは認証用Tokenの取得をやってみます。AddHeaderメソッドを使い、さきほど発行しておいた API KEY をHeaderに埋め込めばOKです。

string url = "https://ieyasu.co/api/<company_code>/v1";            
RestClient client = new RestClient(url);

string api = "/authentication/token";            
RestRequest request = new RestRequest(api);            
request.AddHeader("Authorization", "Basic <api key>");  //APIキーでBasic認証
request.Method = Method.Get;
RestResponse response = await client.GetAsync(request);
MessageBox.Show(response.Content);

これでTokenが含まれたJsonを取得できます。

尚、<company_code>の部分はハーモス勤怠の契約時にもらった会社コードに置き換えます。

POST

ここではPOSTの簡単な例として打刻登録を扱います。

打刻の仕様は https://ieyasu.co/docs/api.html#/paths/~1stamp_logs/post に記載されていますが、

user_id と stamp_type が必須項目です。 stamp_type は 出勤の場合が1で、退勤が2です。

ここではuserをつかさどるUserDataクラスを作ります。

    class UserData
    {
        [JsonPropertyName("user_id")] public int UserID { get; set; }
        [JsonPropertyName("stamp_type")] public int StampType { get; set; }
    }

user_id も stamp_type も ingeger型です。

UserDataのインスタンスを作成するときは以下のようになります。

このコードで jsonStr には {“user_id”:5,”stamp_type”:1} が入ります。

UserData user = new UserData();
user.UserID = 5;  //user_id
user.StampType = 1;  //出勤
string jsonStr = JsonSerializer.Serialize(user);

あとはRestSharpを使ってPOSTを実行します。TokenはAddHeaderメソッドを使い、Headerとして追加しておきます。

string url = "https://ieyasu.co/api/<company_code>/v1";            
RestClient client = new RestClient(url);

string api = "/stamp_logs";
RestRequest req = new RestRequest(api);
req.AddHeader("Authorization", "Token <token>");   //<token>はBasic認証で取得しておく
req.AddJsonBody(jsonStr);    //Jsonの文字列はAddJsonBodyに放り込む
req.Method = Method.Post;
RestResponse response = await client.PostAsync(req);

これでスマホで出勤ボタンをタッチしたのと同じ効果が得られます。

以上です。

10G対応VPNルーター RTX1300

2022年の秋にYAMAHAから10GbE対応のVPNルーターが発売されるらしい。

10G対応のVPNルーターの選択肢が増えることはいいことですね。YAMAHAでは初の10G対応VPNルーターです。詳細は不明ですが、LAN3の1個だけ10Gというのはやめてほしいですね。できればLAN1も4ポートぐらいを、しかもマルチギガ対応で作ってほしい。マルチじゃないと2.5Gのポートと接続すると2.5Gではなく1Gでリンクされてしまうので。欲を言えばPoE給電ポートも1、2個ぐらいは欲しい。

しかし、Auひかり10Gとかコミュファ10GのようにWAN環境も10Gのサービスが出てきているので、中小企業向けのVPNルーターとしては大きな選択肢になるのではないでしょうか。

あと、型番の名前が少し気になります。

大昔(2004年)にRTX1500という機種が初代のRTX1000の次ぐらいにリリースされています。このままRTX1300、RTX1400と型番が上がっていったら、そのあとの型番はどうなるのでしょう? RTX1600になるのかな? 余計なお世話か。

RTX1500はショートパケットの処理が当時としては秀逸でした。FTP転送などで威力を発揮して、重宝したものです。Dynamic Traffic Controlが登場したのもこの機種ぐらいからだったでしょうか。実売価格も15万円前後だったと記憶しています。企業の支店用としてはちょっと高価なルーターでしたね。

RTX1500の定価が198,000円だったのですが、RTX1300は価格はいくらで発売されるのでしょうか? 構成次第でしょうけど、20万円を切ってくれると支店用としても提案しやすいですね。

SMARTalkサービスの新規受付終了

自社オフィスではPanasonicのおたっくす(KX-PZ910DL)を使っているのですが、この機種には「外で通話」というIP電話へ転送する機能があります。楽天モバイルのSMARTalkサービスというIP電話サービスと連携し、スマホのIP電話アプリで受信する分にはIP電話機同士と同じ扱いになって転送料金が無料になるというものです。

このSMARTalkですが、新規受付はすでに2年前から停止していました。しかし、おたっくす向けにPanasonic経由であればまだ新規受付が可能でしたが、このPanasonic経由もいつの間にか新規受付が終了していました。(2021/12/15終了)

楽天モバイルはSIMの0円プランもなくなりましたし、SMARTalkもサービスそのものがなくなるのは時間の問題かもしれません。050で始まるIP電話番号が無料でもらえて便利だったのですが・・・。

海外ロケーションと日付フォーマット dd/MM/yyyy

先日、ヨーロッパからの案件でXamarin Androidの開発をしていたときのこと。SQLServerへの日付型のデータで更新エラーが発生するという連絡をクライアントから受けたのですが、こちらでは何度やっても正常に動く。開発環境はすべてEnglish(UK)のOSでそろえているので言語環境も違いはないはず。違うのはロケーション、つまりタイムゾーンだけ。

詳細に調査したところ、System.Data.SqlClientを使ってSQLServerから日付データを取得するとき、AndroidOSが自動判別したタイムゾーンに応じて日付フォーマットが変化することが分かりました。どおりで日本だとエラーにならないわけです。

SQLServerで日付型のデータを保存するとき、既定では、

English(UK) : dd/MM/yyyy  -- 保存NG
English(US) : MM/dd/yyyy  -- 保存OK
Japanese    : yyyy/MM/dd  -- 保存OK

となっています。なので、以下のようなDateTime型カラムを更新するSQLはエラーになります。

--エラーになる
INSERT INTO T_TEST (InputDate) VALUES ('30/06/2022') 

「out-of-range value」というエラーを吐き出して、30月6日なんて日付はだめだよと怒られます。グローバルなアプリを開発する際は文化の違いを意識して作らなければいけませんね。対策は、DMYオプションを宣言して、

--エラーにならない
SET DATEFORMAT DMY
INSERT INTO T_TEST (InputDate) VALUES ('30/06/2022')

としてSQLServer側に欧州フォーマットでの処理をお願いするか、プログラム側で常にyyyy/MM/ddにフォーマット変換してからSQLServerに渡すことを習慣づけるかのどちらかですね。

面倒でも後者の方がバグは発生しにくいかもしれません。

Action PackのAzure特典

弊社はソフトウェア開発会社なのでMicrosoft Partner NetworkのAction Packに加入してお得にMSDNとOffice365を利用しています。その他の特典にAzureの特典があり、月間11,500円分が無料で使えることは知っていましたが手をつけていませんでした。

今回はAzure特典をアクティベートしてみます。

(1) パートナーセンターのポータルで特典の中からMicrosoft Azureを選択し、Office365の管理者ユーザーを割り当てます。

このあと、支払に使うクレジットの入力を済ませるとすぐに利用できます。手続き自体は割と簡単です。

(2) Azureのポータルに誘導され、しばらくするとサブスクリプションに「Microsoft Partner Network」が追加されており、「クレジットが¥11,500 残っています」という表示が出ました。これがAction Packの特典として毎月適用されます。

期限のある無料試用版と比べると大きな特典です。

無線LANアクセスポイントが品薄

小規模店舗向けの無線LANアクセスポイントの注文があったのですが、なんか法人用アクセスポイントが品薄の状態が続いているみたいですね。高値で仕入れてしまいました。

Meraki GoもAruba Instant onも在庫が少ないみたい。

コロナと半導体不足の影響なのかな?

Google Playも

続々とローバル企業がロシアでの経済活動を停止していますが、GoogleはロシアでのGoogle Playの課金ができなくなったとのことです。

大手クレジットカードやGooglePay などがロシアで使えないようになったという報道がありましたが、Google Playも使えなくなったということですね。決済手段の穴がどんどん塞がれていきますね。

Windows11 リリース

本日(2021-10-05)、Windows11がリリースされました。早速、MSDNからWindows11のISOファイルをダウンロードして、Windows Server 2019のHyper-Vにクリーンインストールしてみました。

しかし、仮想マシンを作成してインストーラを起動すると早速、「インストール要件を満たしていません」というエラーが発生しました。調べてみると、Windows11からTPMというセキュリティモジュールを有効にすることが必須になったようです。

これで普通にインストールできます。インストール手順はWindows10とほとんど変わりません。

デザインはというと、スタートボタンは伝統的に左下の位置だったものが真ん中に移動しました。タスクバーやスタートメニューも真ん中で固定ですね。

このWindows11ですが、パッとみた感じでは「Macっぽい」というのが感想です。設定のナビゲーションの動きや構成はiOSのようなデザインです。

チェックボックスもスイッチにデザイン変更され、スマホみたいなデザインに。

また、OneDriveとの親和性が高まり、「フォト」はOneDriveと連動してアルバムを作れるようになっていたりして、Googleフォトみたいに動画や写真が「フォト」を介して他のデバイスと共有できるようになっています。

スマホをデスクトップOSにしたような感じですが、ちょっと触った感じでは分かりやすくて個人的には好印象です。他のOSのいいところを取り入れていくことは、いいことなのではないでしょうか。

あと、Windowsガシェットという名前でかつて存在し、いつの間にか廃止されていたウィジット機能が復活していました。

ウィジット専用のメニューで独立しているので、他のアプリや機能の邪魔にならないのでいいのではないでしょうか。

さらにTeamsのアイコンがタスクバーに最初から入っていたり、時代を反映していますね。

以上、ぱっと見は使いやすそうで好印象でした。