2015年4月27日月曜日

独力で仮想化システムを作った学生

ちょっと前に書いたブログに若干の加筆と修正をしたものです。登場する人の現在の所属などは確認していないのでご注意ください。


2010年10月、情報処理学会のセミナーに参加してきました。

そこで、司会をしていた近山隆先生にご挨拶。

セミナーでは4つセッションがあったのですが、中でもLily VMという、筑波大の学生が作ったシステムが素晴らしい。あまり知られていないのが残念ですが、海外のカンファレンス(確かBSD関係の何か)で発表し、Best Student Awardをもらったそうなので、世界の記録には残ったそうです。

近山先生のこと

近山先生といっても分からない人が多いと思いますが、当時世界最高速のLisp処理系UTI Lispの作者です。UTI LispはUniversity of Tokyo Interactive Lispの略だったと思います。

UTI Lispは、近山先生の博士論文で、高度な最適化で有名です。もちろん完全アセンブリ言語(日立/富士通Mシリーズ用)。

当時、修士課程の学生だった私は、学内で独自に実装された貧弱なLisp 1.5レベルの処理系に嫌気が差していました。ガベージコレクタが実装されていなかったので、正確にはLisp 1.5以下です。

学会誌を見るとUTI Lispというのがあるらしい。しかも、その上では、尊敬する中島秀之先生の自信作Prolog/KRが動作するというのです。

幸い、学校のコンピュータは東大と同じ日立Mシリーズ、早速電話して(当時、インターネットはないも同然です)、オープンリールテープを送ってもらい、処理系をビルドしました。

修士論文が書けたのも、近山・中島、両先生のおかけです。

ちなみに、研究室の電話は市外ダイヤル直通通話が禁止されており、100番通話(オペレーター通話)を使いました。オペレーター通話は以下のように使います。

  1. 100番に電話
  2. オペレータに対して、通話したい電話番号を伝える
  3. オペレーターが電話してくれる
  4. 本来の目的である通話
  5. 電話を切る
  6. オペレーターから電話がかかってきて、料金が通知される
  7. その料金を経理に申告する

中島先生は修士2年生のときだったと思います、広島の学会で見つけて著書にサインをもらいました。

近山先生は、会う機会がなかったのですが、約30年ぶりに念願が叶い、大変嬉しく思っています。

Lily VMのこと

インテル/AMDのCPUアーキテクチャx86には仮想環境で使えない非特権命令が17あります。VMWareは、これらの命令を実行時に動的に変換します。動的変換はVMWareの重要な特許です。

一方、Amazon Web ServicesのEC2やSoftLayerなどのクラウドサービスで使われているXen(のPara Virtualization Mode)は仮想OSのソースコードを手作業で修正し仮想化します。手作業なので出来上がった仮想OSはI/Oも含めて実マシンとほぼ同じ速度で動作しますが、何しろ手作業なので時間がかかる。ちなみに、VMWareはI/O性能で実マシンに劣ります。

Lily VMは、コンパイラに手を入れて、コンパイル時に静的な命令変換を行います。詳しく聞けなかったのですが、おそらくコンパイラが参照する命令セットテーブルに手を入れるのでしょう。

これはなかなか素晴らしいアイデアだと思います。しかも作成したのが、筑波大学の3年生(当時)。日本にも、こういう素晴らしい学生がいるのですよ。

その後、SoftEtherの登大遊さんたちと一緒に研究と事業をしているそうです。

2015年4月15日水曜日

SoftLayerの管理コマンドをWindowsに導入するには

SoftLayerに限らず、パブリッククラウドのいいところは、全てがコマンドで管理できることです。GUIも便利なんですが、定型処理の繰り返しや、間違い防止にはやはりコマンドが便利です。

GUIで、クリックするところを1cm間違えたら[はい]と[いいえ]が逆になりますが、タイプするキーを間違えてもほとんどの場合は単にエラーになるだけです。

Microsoft Azureの管理は、単体のコマンドもありますが、PowerShellで行うのが一般的です。PowerShellはWindowsに標準搭載されている馴染み深いツールですし、そもそもMicrosoft AzureはWindowsのサポートを最優先で行ってくれます。

ツールはMicrosoft Azureの管理ポータルサイトMicrosoft Azureのホームページから簡単にたどれますし(Microsoft Azureダウンロードサイト)、インストールも簡単です。

Amazon Web Servicesも、コマンドラインツールとPowerShellツールが「アマゾン ウェブ サービスのツール」として分かりやすい場所にあります。

ところが、IBMが提供するSoftLayerは、Python言語のインターフェースを使う関係で少々複雑です。

調べたら、Mitsu-Murakitaさんのブログ記事「SoftLayer Command Line Interface環境の導入」に詳しい手順が出ていました。この通りに設定すればうまくいきます。ありがとうございました。

ただし、ツールのバージョンが変わったのか、少し冗長な部分もあるので、整理したものを改めて書いてみたいと思います。

主な手順は以下の通りです。

  1. Pythonの導入
  2. SoftLayer管理ツールの導入
  3. SoftLayerを制御するAPIキーの取得
  4. SoftLayer管理ツールの初期化

順に設定していきましょう。

なお、Pythonは複数のバージョン系列があります。記事では2系で試していますが、私は3系で問題なくインストールできました。

また、ツール自体のバージョンもメジャーチェンジがあったようですので、ご注意ください。新版ではコマンド名もslからslcliに変わっています。

ブログ記事「SoftLayer API Python Client 4.0.0 でもう一度」によると、今のところ旧バージョンの方が一般的なようです。今回も、広く使われている旧版をインストールします。

 

1. Pythonの導入

  1. Pythonの公式サイトから[Downloads]-[Windows]を選択
  2. 適切なバージョンのPythonを選択
    今回は「Latest Python 3 Release - Python 3.4.3」を選びました。
  3. インストーラー付きのパッケージをダウンロードしてインストール
    今回は「Windows x86-64 MSI installer」ダウンロードしました。
    32ビット版OSの方は「Windows x86 installer」をどうぞ。
  4. インストールオプション[Add python.exe to Path]を有効化
    既定で無効になっている唯一のオプションです(一番下にあります)。
    このオプションを有効にすると、環境変数PATHの設定が不要になります。

Pythonは、バージョン2系の方が広く使われているそうですが、今後は3系に移行するということでした。SoftLayerのツールの制限については確認していませんが、どちらでも動くようです。

必要に応じて、環境変数PATHを変更します。インストール時に[Add python.exe to Path]を指定していれば、C:\Python34\;C:\Python34\Scripts が先頭に追加されるので何もしなくて構いません(Pythonバージョン3.4の場合)。

環境変数の設定は間違えやすいので、自信のない方は自動構成をおすすめします。

Windows Installerは、何度インストール作業を行っても問題ないようにできています。起動後、[Repair](修復)というオプションを選べば同じ構成で、[Change](変更)を選べば異なる構成で再インストールできます。

インストールが終わったら、pythonコマンドを実行して、プロンプト >>> が出てくれば成功です。終了ははCtrl-Zを入力するかexit()を実行します。

 

2. SoftLayer管理ツールの導入

SoftLayer管理ツールの導入には、以下の追加ファイルが必要です。

  1. setuptools (ez_setup.py)
  2. pip (get_pip.py)

wgetというツールを使えば、直接ファイルに保存できるのですが、以下の方法でも可能です。

  1. 上記のリンクにアクセスし、Pythonのスクリプトを表示
  2. [Ctrl-A]→[Ctrl-C]で全体をクリップボートに保存
  3. メモ帳を起動
  4. [Ctrl-V]でメモ帳に貼り付け
  5. 名前を付けて、適当な場所に保存
    この時「ファイルの種類」として「すべてのファイル」を選択してください。ファイル名は括弧内に示したとおり、ez_setup.pyとpip.pyです。拡張子も書いてください。 「すべてのファイル]を選択しないと「pip.py.txt」のようなファイルができてしまいます。
  6. ファイルの保存先フォルダーで、python ez_setup.pyを実行
    セットアップツール本体のダウンロードも行うため、少し時間がかかります。
  7. ファイルの保存先フォルダーで、python pip.pyを実行
    同じく少し時間がかかります。
  8. pip install softlayerを実行
    Pythonのインストールツールpipがインストールされたので、これを使ってSoftLayer管理ツールを導入します。

 

3. SoftLayerを制御するAPIキーの取得

SoftLayerの管理ポータルにアクセスし、APIキーを取得します。

  1. SoftLayerの管理ポータルにアクセスし、ログオン
  2. [Users]で、管理に使うユーザー名を書き留める
    SL123456形式のマスターユーザーでも、子ユーザーでも構いません。
  3. そのユーザーのリンクを選択
  4. [API Access Information]から[Authentication Key:]を書き留める
    (例: 7bf4b35eb105767c15.... という長い文字列)

SoftLayer-API

後述するように、実際にはAPIキーを知らなくても、ユーザー名とパスワードが分かっていれば構成は可能です。実際にはその方が便利でしょう。

 

4. SoftLayer管理ツールの初期化

以上で、slコマンドが使えるようになりました。最後に、SoftLayerのアクセス情報を登録して完了です。

赤字が入力文字、青字が説明文です。レイアウトの都合で、一部の文字を削除しています。

C:\> sl config setup            ←初期化コマンド
Username []: yokoyama ←ユーザー名(追加ユーザーでも可)
API Key or Password []:XXXXX ←APIキーまたはユーザーパスワード
Endpoint (public|private|custom): public ←後述
:..............:.............................................
:    Name : Value
:..............:.............................................
: Username : yokoyama
:      API Key : XXXXXXXXXXXXXXXXXXXXXXX
: Endpoint URL : https://api.softlayer.com/xmlrpc/v3.1/
:      Timeout : not set
:..............:.............................................
Are you sure you want to write settings to "C:\Users\yokoyama/.softlayer"? [Y/n]: y←情報の保存の可否
Configuration Updated Successfully

endpointは、APIアクセス用のURLで、以下の3つのいずれかを指定します。



  • public…インターネットなどのパブリックネットワークから利用する場合
  • private…SoftLayer内部のプライベートネットワークから利用する場合
  • custom…任意のURLを指定(使うことはあまりないでしょう)

構成情報は、ユーザープロファイルフォルダーに「.softlayer」という名前で保存されます。ピリオドで始まるファイル名は、UNIX系の作法に従った初期化ファイルです。


なお、初期化時にパスワードを指定した場合でも、保存されるのはAPIキーのみです。ユーザー名とパスワードを指定した時点で、SoftLayerにアクセスしてAPIキーを取得しているようです。


パスワードが保存されないのは安全でいいのですが、APIキーを使えばSoftLayerの管理作業が可能です。構成ファイルはプレーンテキストなので、セキュリティには十分注意してください。既定では、プロファイルフォルダーは本人しか読み取りの権限がありません。


たとえば、以下のコマンドはクラウド上の仮想マシン一覧を表示します。


sl vs list


 


終わりに


クラウドサービスが提供する仮想マシンは、必ずしも最安値ではありません。クラウドの価値は、単純な価格ではなく、必要な時にいくらでもリソースを追加でき、不要になったら解除できること、そして自動構成が可能なことです。そして、自動構成をするにはAPIやコマンドの利用が不可欠です。


また、パブリッククラウドクラウドの管理WebサイトのGUIはしばしば予告なく変わります。せっかく作った操作マニュアルがある日突然使えなくなったり、既定値が変わったりします。


その点、コマンドが変わることはあまりありませんし、APIの変更はもっと少ないでしょう。コマンドというと、熟練者が使うイメージが強いようですが、「見たまま打てば成功する」ので、実は初心者にも優しいインターフェースです。


GUIは「概念は分かっているけど、細かい手順は覚えていない」という方に適しています。一方、コマンドは「全てを理解して、覚えている」上級者に加えて「概念も手順も分かっていないけど、決められた仕事を遂行しなければならない」初級者にも向いています。


このように、コマンドというのは実は初級者から上級者まで(初級者と上級者に)優しいインターフェースなのです。


DSC00418M
▲猫といえばマウスですが、最近はキーボードも使います
(Ctrl-Alt-Delを押すのは無理なようです)

2015年4月11日土曜日

Microsoft MVPアワードの盾

Microsoft MVPアワード受賞 (Directory Services)」でお伝えしたとおり、今年もmicrosoft MVPをいただくことができました。

先日、記念の盾(の部品)が届きました。

初期の頃は、毎回記念の盾が届いたんですが、複数年受賞者から「でかくて邪魔」という声が上がり、現在のようなリング形式になりました(写真左)。

写真を見ていただくと分かるように、「5 Years」のリングと「10 Years」のリングの間は3つしかありません。

追加リングが導入されたタイミングで、5年以上の人に対しては一律「5 Years」が送られたためです。

リングの加工精度は非常に低く、がたがたしています。もうちょっときれいにならないかと思います。同じ型を使っているのではないのでしょうか?

ピンバッジの色も昨年とは違います。今年の方が渋くていい感じですが、ここまで色が違っていいものでしょうか。

DSC02024M
▲左が盾、右は賞状

DSC02024M-2
▲ほとんど見えていないのがIDカード、右下にあるのがピンバッジ

DSC02024M-3
▲盾はクリスタルガラスで撮影者泣かせ、リングは不揃いです

2015年4月8日水曜日

マンガ「Steves」

ビッグコミックスペリオール(小学館)で「Steves」というマンガが連載されています。

スティーブ・ジョブズとステーブ・ウォズニアックの若い頃を描いた物語です。そこにビル・ゲイツが登場して、なかなか面白い展開になっています。

このマンガ、かなりよく調べてあって、多くの伏線が仕込んであります。

たとえば、ビル・ゲイツの「ホビイストへの公開状」が、結構早い時期に書き込まれてたのは(それも説明なしに、背景として)、マニア心をくすぐります。

「ホビイストへの公開状」については、富田倫夫氏の「パソコン創世記」が一番いい資料だと思います。

第2部 第5章人ひとりのコンピュータは大型の亜流にあらず
1980 もう1人の電子少年の復活「
ホビイストへの公開状

今週は、スティーブ・ジョブズがビル・ゲイツに「(カリフォルニアのいい天気が嫌なら)シアトルにでも引っ越せばいい」と言います。ビル・ゲイツはシアトル出身で、マイクロソフトも後にシアトル近郊に拠点を移すのですが、この時点ではハーバード大学(ボストン近郊、MITの隣にあります)を中退し、アルバカーキーで創業したことしか記述されていません。

Steves」の面白いところは、スティーブ・ジョブズの嫌な面をきちんと(比較的好意的に)書いているところです。もちろんウォズニアックのお人好しの面もきちんと描かれています。

当然、ビル・ゲイツも嫌なやつですし、(マイクロソフト共同創業者の)ポール・アレンはいい人になってます。

ただ、現在発売中の第16話は少し違和感がありました。

Apple IIは整数Basicしか持たないが、マイクロソフトのBasicは、ビジネスに不可欠な浮動小数点数を扱える。

浮動小数点数はビジネス分野には使えません。桁落ちを起こすため、お金の計算は固定小数点数をつかうのが常識です。しかし、Apple IIのBasicもマイクロソフトのBasicも、お金の計算に十分な桁数は、簡単には処理できませんでした。

追加の説明が必要な部分もあります。

ビジネスの中心は東海岸に決まっている

今の人は、西海岸がITの中心だと思っているでしょうが、HPがコンピュータに本格参入し、サン・マイクロシステムズやアップルが大きくなるまで、ITビジネスの中心は東海岸でした。

コンピュータ業界の(当時の)巨人IBMの本社はニューヨーク、2位のDEC(デジタルイクイップメント)はボストン郊外、UNIXを生み出したベル研究所はニューヨーク郊外のニュージャージーが主な拠点です。分散型のウィンドウシステムを実用化したのはMIT(マサチューセッツ工科大学)で、こちらもボストン郊外にあります。

西海岸には、HP(ヒューレットパッカード)とスタンフォード大学、そしてイーサネットやマウスを発明したゼロックスのパロ・アルト研究所があり、決して劣っているわけではありませんが、やはり主流は東海岸だったのです。

いずれにしても、このマンガ、本当によくできていておすすめです。バックナンバーがWebで公開されているので、ぜひ読んでみてください。

ビッグコミックスペリオール発「スティーブス公式無料配信サイト」SteveS

2015年4月6日月曜日

SoftLayerとワトソン君

IBMが提供するIaaSサービス「SoftLayer」は、ベアメタルサーバーを時間単位で使用できることや、データセンター間のプライベートネットワークが追加料金なしで使用できることですが、ほぼリアルタイムのサポートにも注目したいところです。

たいていの問題は無償サービスチケットの範囲で多くの問題が迅速に解決されますし、チケットの使用は極めて簡単でカジュアルです。また、チャットサービスによるリアルタイムサポートも優秀です。

特に、チャットサービスはほとんど待たされることもなく、大変快適です。ちょっと心配なのは、このまま利用者が増えてくるとサポート要員の手が回らないのじゃないかということです。

考えられる選択氏は3つあります。

  1. サポートが不要なほど品質を上げる
  2. サポート要員を増やす
  3. サポートを自動化する

品質向上は、コストを上げる要因にもなるので、使用料金が上がったり、IBMの利益率を圧迫する可能性があります。一定の利益を確保するのはサービス継続に必要なことなので、ある程度は儲けてもらわないとこちらも困ります。

サポート要員の増加は誰でも思いつくことですが限度があります。「この調子で利用者が増えれば、世界のITエンジニアの全員がSoftLayerのサポート担当者にある」みたいなことになってしまいます。

かつて、電話網が発達していった頃「このまま電話が普及すると全米の国民が交換手にならないといけない」と言われたそうです。

実際には、自動交換機の発明により交換手は増えるどころか減っています。もっとも「電話番号を入力する」というのは、本来交換手の仕事だったので、ある意味「世界中の人が交換手になった」とも言えます。

1970年代は「このままだと世界中の人が全員プログラマになっても...」などと言われていましたが、実際はソフトウェア開発ツールの発達で、ITエンジニアに対するプログラマの比率はむしろ下がっています(昔はシステム管理専門の人など、ほとんどいませんでした)。

ただし、普通の営業担当者がExcelマクロを自在に使いこなしているのを見ると、ある意味「全員プログラマ」かもしれません。

クラウドサービスは、従来IT担当者が行っていたシステム構築をエンドユーザーが行うという意味で自動化とも言えますが、「全員がIT担当者になった」とも言えます。

サポート問題の解決も「全員がサポート担当者になる」可能性があります。でも、現在のサポートエンジニアと同じスキルを誰もが身に付けるのは無理です。

そこで「サポートの自動化」が必要になります。サポートエンジニアが参照している「ナレッジベース」を、エンドユーザーが簡単に使えるようにするわけです。

1950年代に始まった人工知能は、1970年代に一定の成果を上げ、1980年代に実用技術に発展しています。そこで分かったことは「専門知識ほど扱うのが容易である」ということです。対象領域(ドメイン)を狭く絞れば、自然言語(人間の話す言葉)でのやりとりも可能になりました。

近年は、検索エンジンと組み合わせることで、より高い精度を実現していいます。IBMの研究プロジェクトの成果「ワトソン」は、米国のクイズ番組「Jeopardy!」に参加し、人間に勝利しました。

クイズ番組は対象ドメインが広いように見えて、実は「文章化された知識」という狭い領域しか扱っていません。

そう考えると、SoftLayerのチャットサポートを、ワトソンである程度置き換えることは十分可能ではないかと予想しています。少なくとも一次サポートには有効ななずです。

ところで「ワトソン」の名前は、IBMの実質的な創業者トーマス・ワトソン・シニアと、コンピュータ事業に参入を決めたトーマス・ワトソン・ジュニア、そしてその名を冠したIBMの研究所の名前に由来するのだと思います。

一方、古いWindowsユーザーにとって「ワトソン」といえば「ワトソン博士」の方が有名かもしれません。「ワトソン博士」の由来はシャーロック・ホームズの助手の名前で、そのココロは「(ホームズに)ヒントを提供するが、問題は解決しないから」だそうです。

データ伝送分野ではもう1人有名な「ワトソン」がいます。ベルが電話の実験に成功したときの言葉「ワトソン君、用事がある、ちょっと来てくれたまえ ("Mr. Watson! Come here; I want to see you!")」で有名な人です。偶然なことに、彼も「トーマス・ワトソン」だそうです(Thomas A. Watson)。

交換機は英語でswitchですし、コンピュータはスイッチング素子を使って作られています。電子交換機とコンピュータの構造はほぼ同じだということを考えると面白いワトソンつながりです。

ワトソン博士
▲「ワトソン博士」の構成画面(Windows XP)
Windows 3.1時代は、もっと「ワトソン博士」らしい画面だった

2015年4月2日木曜日

Windows Server 2012 R2のデュアルパリティ (RAID 6)

Windows Server 2012から実装された「記憶域プール」や「重複除去」、「ファイルサーバーリソースマネージャ」などを組み合わせると、下手なストレージ製品よりも高機能なものができます。iSCSIターゲットサーバーも、マルチパスをサポートしていますし、スケールアウトファイルサーバーは、従来できなかった透過フェールオーバーを実現し、障害が発生してもネットワークの切断なしに別サーバーにフェールオーバーします。

記憶域プールには、もちろんRAID機能が含まれます。最近の流行は「2台壊れても大丈夫」というものです。同時に購入したディスクが同時に壊れることはしばしばあるためです。

Windows Server 2012 R2は「デュアルパリティ」を構成でき、最小限の物理ディスクで2台以下の障害に対応できます。

「デュアルパリティ」は「RAID 6と同じ」と説明されていますが、RAID 6は標準化されておらず、ベンダーごとに若干の差があります。

通常、RAID 6はパリティを2つ使うため、ディスク本数をn本とすると (n-2)本のデータを格納できるはずです。しかし、実際には(n-3)本のデータしか保存できません。

これは、パリティとして3台分のディスクを使うためです。

プレビュー版のWindows Server 2012 R2ではこのあたりの機能にバグがあり、混乱していました。現在でも、一部に誤解を招きそうな表記があります。

また、データディスクとしては4台必要です。これは、ディスクを2つのグループに分けて別々にパリティ計算行うためです。2つのグループに分けることで並列計算処理が可能になり、パフォーマンスを向上させているようです。

詳しくは、以下のドキュメントを参照してください。

Windows Server 2012 R2
記憶域スペースのアーキテクチャーと設計・管理のベストプラクティス

また、うまく説明したブログも発見したので紹介しておきます。

Windows Server 2012 R2 のデュアルパリティは、ストライプあたり3つのパリティストライプが存在

まとめると、Windows Server 2012 R2の「デュアルパリティ」は、

  • パリティとして合計3台分のディスクを使う
  • データ保存ディスクは最低4台(2台+2台)以上必要
  • したがって、デュアルパリティ戦隊としては7台以上必要

となります。

このあたりの内容は1日の教育コース「Windows Server で構築する高機能ストレージサーバー」で扱っています。

ところが、大変申し訳ないことに、テキストでRAID 6の説明の一部にバグがあり、混乱させてしまっています(5台で構成できると書いてありますが、前述の通り7台必要です)。

既に受講していただいた方には大変申し訳ありませんでした。深くお詫び申し上げます。

2015年4月1日水曜日

Microsoft MVPアワード受賞 (Directory Services)


今年も、Microsoft MVPアワードをいただきました。分野は相変わらずDirectory Servicesです。12回目の受賞のようですね(よく覚えていない)。【追記:13回目のはずです】

最近は、純粋なDirectory Servicesの記事はほとんど書いていませんし、AD FSもAzure Active Directoryもまったく触っていませんが、ハイブリッドクラウド時代を迎えて、Active Directoryドメインサービスを改めて訴求して欲しいということのようです。

そういえば、WAN回線が高速化し、サイトを分割しない実装も増えました。しかし、Azure上にドメインコントローラーを配置した場合は、回線の遅延の他、ネットワークトラフィックを考慮して(何しろ課金対象ですから)サイトの重要性が高まっています。

AD FSもRODCも、元はクラウドを考慮したシステムではないのですが、結果的にクラウドで便利に使える機能となりました。

本格的なハイブリッドクラウド時代を迎えて、こうした基礎的なことを改めて伝えていければと思います。

MVP_Logo_Horizontal_Preferred_Cyan300_RGB_300ppi