2009年12月25日金曜日

CactiからWindowsの情報を、ありものだけでグラフ化してみる

cacti のグラフが美しいので、普段やらないWindowsのSNMPから情報をグラフ化してみた。
 
 


なんかcactiはネットワーク機器とLinuxを見るような印象だったが、有りものだけでWindowsの情報を結構取れる。
実際どのくらいとれるのか紹介しとこう。
 



Windows側で仕込み


Cactiたっぷり情報取るには、標準のSNMPに加えてサードパーティ製のSNMPプロバイダを入れるといい。


 

有料版・無料版とあって、無料版ではCPU,メモリと論理HDDなどのパフォーマンスカウンタの情報を取ってくれる。
 

mibで見るとこんな感じ、これは頼もしそうな項目。。
 
[caption id="attachment_1625" align="alignnone" width="515" caption="画像:mibブラウザより"]画像:mibブラウザより[/caption]
 

有料のはほとんどのパフォーマンスカウンタオブジェクトに対応している、開発しんどいし買ってもいいくらい。
 
インストール要件は簡単、Windows標準のSNMPさえ入れておけばOK。
サーバ側の準備はこれでOK。
 
 



CactiにWindows用のテンプレートを追加


まあ色々あるけど、とりあえず良い感じなのを2つ。
 

さっきの「SNMP Informant」で追加されたMIBをゴリゴリ取ってくるテンプレート。

※最後の方の発言からZIPをダウンロードしよう。
 

特定プロセスのCPU・メモリ使用量をグラフ化する、まあおまけで。

 


これらを添付の手順に沿ってサーバにUP&インストール。
データクエリはサーバの "(cactiパス)/resource/snmp_queries" に、テンプレートはCactiの管理画面から入れよう。
Cactiの準備もこれでOK。
 
 


じゃあWindowsの状態をグラフにする


ここまでの準備を元にホストテンプレート、デバイス追加してデータクエリを軸に「Create New graph」するという作業になるけど割愛。
ではありものをぺたぺた貼って、このくらいグラフ化出来るよというSSをどうぞ。
 

でっかいので注意してくださいねー
 
[caption id="attachment_1626" align="alignnone" width="150" caption="画像:大きさ注意グラフ(627 × 9067)"]画像:大きさ注意グラフ(627 × 9067)[/caption]
 

結構とれてるでしょ?今回SSの相手は『WindowsServer2008R2 x64』だったが、2003(確認済)や2000(らしい)もOKだ。
 
 


Cactiでカスタマイズは結構ややこしいのだが、手軽にこれだけの情報がとれるといいね。
 

2009年12月22日火曜日

VMWare ESXi はメモリが足りないと動かない

タイトルまま。
 
 

メモリを1GBしか積んでいないPCでVMWあれESXi4(メモリ要件2GB以上)を動かそうとしたら動かなかった。
 

インストーラが駄目だったので、「まあインストール時のチェックのみだろう、何とか回避してやろう」ト思い、DDで起動イメージをUSBメモリに突っ込んでみたが同じことだった。
結局『not enough memory』 って言われて止まっちゃう。
 
 

ホラ物理的な性能要件なんて、Windowsのインストーラみたいにさあ、テキトーにオプション渡せばスキップ出来ると思うじゃん、それが甘かったみたいで。
起動時のデバッグログをみると物理メモリのアドレスを直接何かしようとしてるみたいで、そりゃあしかたないかなと思ったもんだ。
 

しかしこの辺の融通の利かなさに、VMWare ESXi にはかえってハイパーバイザとしての職人魂を感じたね。
 

「うちは明石のタコ以外使わねえよ!」みたいな、安売りしないというか。
ちょっと違うかもしれないが...
 

はいはい、メモリ買ってやるから働いてね。
 
 

2009年12月14日月曜日

WindowsServerのサービスをSNMPで監視する

Windowsには標準でSNMPサービスが付いている、それを利用して特定のサービスが起動しているかどうかをチェックしよう。
 
 


タスクスケジューラは外部監視しかない


まず何故にいきなりSNMPで監視なのか、に触れておく。
 

私はよく定期的なサービスの監視を仕込んだりする、前に書いたASP.NETアプリケーションプールの監視もそうだった。
 

だがつい最近、タスクスケジューラが止まってるという馬鹿げた自体が発生した、これが止まると内部監視がほとんど止まるじゃないか!
原因とかはとりあえず後だ、こいつを見張るにはどうしたらいい?
 
 

内部監視であれば一定時間...1時間毎とかに生存をメールで通知するか?馬鹿な。止まった時にならない鈴に意味は無い。「そういえばしばらく通知が来ていない?」なんてトリガは存在してはならない。
常駐プロセスか?まずそれが止まるかもしれんだろうが。
選択は自ずと外部監視に限られる。
 
 


外部というとWMIで見る...135番ポートほかを開けるか?悪くはないんだが130番台にいい思い出をもつ管理者はいないのではないか、出来れば空けたくないだろう。
 

そこでSNMPを調べてみた、WMI関連のポートを開放するよりマシだろう。
結論を言って置けば、サービスの監視は可能だ、ただちょっと嫌な仕様だ
 
 


WindowsServerのSNMPの紹介


WindowsServerでSNMPを使うのは簡単だ、コンポーネントの追加とか機能の追加と呼ばれているやり方でセットアップしてやるといい。
 

[caption id="attachment_1616" align="alignnone" width="476" caption="画像:SNMPのRead許可"]画像:SNMPのRead許可[/caption]
 


トラップが送りたければ 『evntwin.exe』 などを立ち上げて通知したいイベントを設定しよう。
 
[caption id="attachment_1617" align="alignnone" width="618" caption="画像:evntwin.exeの設定例"]画像:evntwin.exeの設定例[/caption]
 

詳しくはやってないが、eventcreate.exe で動作確認をしてみた。ちゃんとトラップきてるでしょ?
 
[caption id="attachment_1618" align="alignnone" width="655" caption="画像:トラップテスト"]画像:トラップテスト[/caption]
 


SNMPの標準的なトラフィック取得、ホストステータス取得は出来るから、Cactiでパフォーマンスをグラフ化するなり、トラップでNagiosのパッシブチェックからアラートするなりしたらいい。
 
 

SNMPで取れるWindowsサービスの内容


ではSNMPクライアントから確認できるWindowsサービスについて。
 

WindowsのSNMPをセットアップすると、%SYSTEMROOT%System32\ の下あたりにMIBがいっぱいできる、その中のLanManager用のMIBにWindowsサービスの情報がある。
ファイル名は『lmmib2.mib』だ。
 

その中から svSvcName を取ってみよう、
 

svSvcName.6.83.101.114.118.101.114 Server OctetString
svSvcName.8.72.84.84.80.32.83.83.76 HTTP SSL OctetString
svSvcName.9.69.118.101.110.116.32.76.111.103 Event Log OctetString
--snip--
svSvcName.14.73.80.83.69.67.32.83.101.114.118.105.99.101.115 IPSEC Services OctetString
svSvcName.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114 Task Scheduler OctetString
svSvcName.15.82.101.109.111.116.101.32.82.101.103.105.115.116.114.121 Remote Registry OctetString
svSvcName.15.83.101.99.111.110.100.97.114.121.32.76.111.103.111.110 Secondary Logon OctetString
svSvcName.16.67.111.109.112.117.116.101.114.32.66.114.111.119.115.101.114 Computer Browser OctetString
svSvcName.16.72.101.108.112.32.97.110.100.32.83.117.112.112.111.114.116 Help and Support OctetString
--snip--
svSvcName.37.65.112.112.108.105.99.97.116.105.111.110.32.69.120.112.101.114.105.101.110.99.101.32.76.111.111.107.117.112.32.83.101.114.118.105.99.101 Application Experience Lookup Service OctetString
svSvcName.40.87.105.110.72.84.84.80.32.87.101.98.32.80.114.111.120.121.32.65.117.116.111.45.68.105.115.99.111.118.101.114.121.32.83.101.114.118.105.99.101 WinHTTP Web Proxy Auto-Discovery Service OctetString

 

Windowsで使われているサービスがずらずらと出てきたろう、その中で Task Scheduler のステータスを取るとしたら『svSvcOperatingState』を参照する。
 

svSvcOperatingState.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114 active Integer
 

ほれ、アクティブだ。起動しているってことだ。
 
 


『svSvcName.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114』 がなんでイコール『Task Scheduler』やねんと思うかもしれないが、それはOctetStringだからだ。
 

数字の最初の14は文字列長を表し、このあと14バイトの文字ですよーというのを表している。
そこから続く『84.97.115.107.32.83.99.104.101.100.117.108.101.114』はASCIIコードで変換してくれ...
 

ほら『Task Scheduler』になった、なったろ?
 
 



じゃあサービスの監視をしましょう


さて、サービス状態と思われる、『svSvcOperatingState』の取りうる値はこうだ。
 

svSvcOperatingState OBJECT-TYPE
SYNTAX
INTEGER {
active(1),
continue-pending(2),
pause-pending(3),
paused(4)
}

 


これの変化を取ればいいと思うじゃん、普通にscコマンドとかだとこのまま1-4のステータス取れるし。
1なら正常、2-4は異常として管理したい、したいんだけど。。。
 
 


それがさあ、サービス止めると消えちゃうんだよねこのオブジェクト。
このOID叩いても、何も帰ってこないというかそんなOID見つからないって言われるんだ、冗談きついぜ。
 

当然『svSvcName』のほうも空っぽさ、仕方ないからステータスがUNKNOWNならサービスが止まっているという情けない監視になっちゃう。
 

この仕様はいただけない、いただけないよMicrosoft。改善提案はどこに出したらいいんだい?
それともLanMagnagerではそうするって決まってたのかしら、それはちょっと。。。
 
 



まあ当初の目的は達成されました、この仕組みで立派にWindowsサービスの監視はできますと。
多少不本意ですがUNKNOWN拾ってアラート上げましょう。
追記:サービスの状態が変更されてからSNMPで取れる値が変化するまで2-3分かかる、監視対象によっては少しネックか。
 

まあどうしても外部から見たいのって、タスクスケジューラとファイアーウォールくらいかな。
 
 




追記:
「.1.3.6.1.4.1.119.2.2.4.4.16.2.2.1.2.1.2」なら全サービスが登録されている事を発見、こっちがいいのかも知れない。
だがOIDがサービス名に依存してないので、構成変わるとOIDも変わりそうでこまる。
むむ。。
 
 

2009年12月10日木曜日

地球温暖化とCO2に関係があろうがなかろうが、グリーンIT戦線に異常は全くな い

前々から各所でいわれているとおり、CO2で地球が温暖化しているという話はでっち上げだよねというお話が最近とくに活発なようだ。
 
だとすれば排出権購入は小遣いを配り歩いているようなもので、完全に確証も無いのになにやってんの(そもそも排出権てナニよ)。と憤ったりもするわけだがそれはまた、別のお話。
 
 

巷にあふれる温暖化対策などはだいたいエコという概念に集約される、エコね、エコがインチキなの?
化石燃料もったいないという意味ではエコはインチキじゃあないと思う、それは節約しよう是非。
 
 

さてグリーンIT、エコ的なものと混同されがちな(と私は思う)グリーンITは似ているようで異なる。
エコがなにやら色々なものを含有した得体の知れない概念に育ってしまったのと違い、グリーンITの実現により目指すものはただ1つ、TCO削減だ。
 

使う機器を減らし、さらにそれぞれの消費電力を減らしていくことで支出をおさえる。
「グリーンIT=環境保護」は桶屋が儲かる的な発想でしかなく、どこまで行っても企業の都合のはずだ。
 

グリーンITで環境問題に取り組むと本気でいう企業はなんかイヤだし、グリーンIT興味ないっていう所はコスト管理がずさんなのかなと思う。
ああ、宣伝目的で「グリーンIT=環境保護」のイメージを利用するのは全然OKだとおもいます、むしろしましょう。表現単位がCO2削減量だといつまで使えるか分からないですけど。
 
 

例外一点。グリーンIT向けの機器を作る側にとっては商売道具ですね。すごくいい技術の使い方だと思います。
 
 


温暖化が、CO2が、たとえインチキで嘘っぱちだとしても、グリーンITを一緒にしないでねという事を言っておきたかった。
 

2009年12月8日火曜日

PowershellでWassrの発言を取得(RSS)してはてなダイアリーに投稿する

というスクリプトを書いた、wassr結構早くログ消えちゃうみたいだしね。
ちょっと乱暴かつ適当な切り貼りをしたんだけど、元がどこだったか。。MSのサイトは結構みたな。
 

仕組み的には自分の発言のRSSを取ってきて、メールにしてはてなダイアリーに投稿する、というもの。
RSSでは20件しか取れないのでヘビー発言ラー向けではないが。
 

とりあえず成功してるもよう⇒http://d.hatena.ne.jp/sawano_hat/
 
 

これをWindowsのタスクに登録して、12時の鐘と同時に起動すればOKさ。
 

[sourcecode language='sh']
# wassr timeline sender
# 2009/12/07

[String]$wassrapi = "http://api.wassr.jp/statuses/user_timeline.rss"
[String]$wassrid = "自分のID"

[String]$smtp = "送信に使うsmtpサーバ"
[String]$port = "smtpポート"
[String]$to = "はてなのメール投稿用アドレス"
[String]$from = "wassr2hatena@example.com"
[String]$user = "SMTP認証ユーザー"
[String]$pass = "SMTP認証パスワード"


# HTTPリクエスト
$webReq = [Net.HttpWebRequest]::Create($wassrapi + "?id=" + $wassrid)
$webRes = $webReq.GetResponse()
$sr = New-Object IO.StreamReader($webRes.GetResponseStream(), $webRes.ContentEncoding)

# レスポンスのRSSをXML型の変数に
[xml]$content = $sr.ReadToEnd()


# 読み込みクローズ
$sr.Close()
$webRes.Close()

# 昨日の日付作成
[DateTime]$yesterday = (get-date).adddays(-1)
$body = "http://wassr.jp/" + $wassrid + "`n`n"

# RSSから発言単位でFroeach
foreach ($item in $content.rss.channel.item){

# 発言の日時を取得
$itemdate = [DateTime]$item.pubDate

# 発言の日時と昨日の日付を比較して、等しければメールボディに
if ($itemdate.Date -eq $yesterday.Date) {
$body = $body + ":[" + $item.link + ":title=" + $itemdate.DateTime + "]:"
$body = $body + $item.title + "`n"
$body = $body + "`n"
}
}

#サブジェクト作成
[String]$subject = "Wassr " + [String]$yesterday.Year + "/" + [String]$yesterday.Month + "/" + [String]$yesterday.Day + " の発言"

#メール準備
$mail = New-Object Net.Mail.MailMessage($from, $to)
$mail.Subject = $subject
$mail.Body = $body
$mail.SubjectEncoding = [Text.Encoding]::GetEncoding("ISO-2022-JP")
$mail.BodyEncoding = [Text.Encoding]::GetEncoding("ISO-2022-JP")

#メール投稿
$sc = New-Object Net.Mail.SmtpClient($smtp)
$sc.port = $port
$sc.Credentials = New-Object Net.NetworkCredential($user, $pass)
$sc.Send($mail)
$mail.Dispose()
[/sourcecode]
 
 

はてなほったらかしだったんで、とりあえず役目ができてよかったよかった。
 



追記:折角だから日付のところをリンクにしよう。
修正した。

2009年12月7日月曜日

rlwrap、リードラインラッパーでtelnetやsqlplusに編集・ヒストリを

普段からbashとか、普通に便利なシェルに慣れていると、BackSpace利かないとか、カーソルでヒストリ出てこないとかでちょっと困る。
 
 

例えばtelnetでメールしたいとき。
(※telnetのオプション次第でラインモードいけたような気もするが、覚えてないや。)
 


# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 sawalin01.sawano.local ESMTP Sendmail 8.13.8/8.13.8; Mon, 7 Dec 2009 00:20:05 +0900
ehk^H^H^H ←★バックスペースで消そうとする。
500 5.5.1 Command unrecognized: ""hk
^[[A^[[A ←★カーソル上でヒストリ出そうとする。

 
 

ほかにもsqlplusでOracleの管理したいとき。
 


SQL> show alll
SP2-0158: unknown SHOW option "alll"
SQL> ^[[A ←★カーソル上でヒストリ出そうとする。

(ノ^皿^)ノ彡┻━┻
 
 

こういう時にリードラインラッパーのrlwrapを使うとちょっと楽になる。
 

rlwrap経由でtelnetとかsqlplusを起動すれば、普段はキャラクタ単位でガンガン通信しようとするのを、行単位で送ってくれるようにしてくれる。
ついでにコマンド履歴をホームディレクトリにテキストで保存してくれるので、コマンドログも取れるしヒストリも使えるということのようだ。
 

こんな感じで起動すると、それだけでOK。
rlwrap sqlplus /nolog
一行入力するまで送信を待ってくれるので、BackSpaceで修正できるし、カーソル上で直前の入力内容を呼び出せる。
 
 

配布もとはこちらさん。
http://utopia.knoware.nl/~hlub/uck/rlwrap/
 

使っていこう、telnetにはどうするか考え中だけど、sqlplusにはエイリアスしちゃう。
ちなみにcentosでインストールするには、readline-devel が必要だったよ。
 
 

追記:virsh で使うのもいいな。

2009年12月4日金曜日

入力デバイス再考、コンパクトキーボードのススメ(3)

入力デバイス再考、コンパクトキーボードのススメ(1)
入力デバイス再考、コンパクトキーボードのススメ(2)
 

とまあ、実に色々な悩ましい事象が錯綜した結果、105キーのキーボードを使ってみようということで落ち着いた。
 

こういうキー配列の奴ね。
 





文字キー部分
テンキー部分

 
 

これも最初は絶対無理だとおもったんだけどねえ。
だってさ、カーソルポジションが飛ぶキーは凄く使うもの、それが丸ごとないんだ。
 
Ins、はまあペーストで稀に使うこともあるが使わないとしても、あとDel、Home/End,PgUp,PgDn どれも全部大事なキーだ、押しやすい所から去ってしまうのは非常に困る。。
 
 


燈台下暗し?自分的に


その日も色々悩みながら手元のフルキーボードを見る。
小さめのキーボードほしいけど、右のほうにはテンキーしかないんだよなあ。
 

テンキーっつうと。
 




















7
Home
8
9
PgUp
4
5
 
6
1
End
2
3
PgDn
0
Ins
.
Del

 

あ。
あるやん、必要なもの全部。
 
 


105キーは、NumLockを切って使え


フルのキーボードというのも初めて見てからずっとテンキーはNumLockして使ってきたが、よくよく見れば数字より大事なキーがいっぱい並んでる。
これは今までもったいない使い方をしていたんじゃないか。。。。
 

105キーの採用検討にあたって、フルキーボードとの差を91キーと比べてみたが、91キーはホームポジション基点で見れば右側に違和感がない、しかし実はマウスを基点としたときには105キーの方がフルキーボードに近い。
 

自分は右端のエンターキーを意外と使うのでその感覚が顕著な感じ。
 

それにNumLockを切るという使い方は普通のキーボードでも通用する、むしろ普通のフルキーでも積極的にそうすることでフル⇔105キーの移動の際に困る感覚を最小限に抑えられる(と思う)。
 

もちろん今回買った105キーはFnキーとカーソルの組み合わせでHomeなどの長距離移動はできるんだが、それだと癖が変わりすぎるのでなるべく使わない方向で。
 

ついでにいうとNumLockは切らなくてもShiftを押せばテンキーのところでポジション移動はできる。ただ、シフト+移動をするときに左右のシフトキーを両方押す必要があり、さすがにそれは嫌だし普通のキーボードで出来ない運指なので却下。
 
 

実に3回にわたってキーボードの記事を書いてしまったが、まあそれだけ考えてしまうほど入力デバイスってのは大事だということの裏返しかな。
 

おさらい、しばらく使うのはこれね。エレコムさんは製造終わらせないでください。
 
[caption id="attachment_1603" align="alignnone" width="300" caption="写真:エレコム赤"]写真:エレコム赤[/caption]
ELECOM の TK-U05FRD 。
 











 
 


あとパソコン工房の奴ね。
 
[caption id="attachment_1604" align="alignnone" width="300" caption="写真:パソコン工房のやつ"]写真:パソコン工房のやつ[/caption]
 

積んでるのはフルキーボードとの大きさ比べのため、だいぶスペースが省略できてなにより。
Elecomのと中身ほんと同じだとおもう。。。OEMかな。
 
 

しかしエレの赤はマットな質感+カナ無刻印なのがいいので後悔しない、他の色は手触りが普通だった気がする。
 

2009年12月3日木曜日

入力デバイス再考、コンパクトキーボードのススメ(2)

入力デバイス再考、コンパクトキーボードのススメ(1)
の続き。
 
 

自分の文字入力に影響が少ない範囲で省スペースのものを探すため考えてみた。コンパクトキーボードの夜明けだ。
 




キーボードをセクション分け、必要な部分を検討


キーボードって大体こんな感じだ。
 







文字キー部分
ポジションキー
部分
テンキー部分

 

文字打ちに使う部分、ポジションの移動やテキスト選択に関わるキーの部分とテンキーに分かれる。
 

ファンクションキーやらはまあ、ついてるものを前提に考えたいのでもう書かない。カーソルキーも同様に大体ついてるので考慮外。
 

ここから組み合わせを考えていったんだ。
 
 


文字キー部分+ポジションキー部分


基本のセットと変わらない使用感を保ちつつ、1つ削るとしたら筆頭に挙げられる組み合わせはこうだろう。
 






文字キー部分
ポジションキー
部分

 

テンキーを廃止、ポジション移動関連に使うキーのみあるモデル。これを使うのがベストだと思うんだよね。
 
これなら通常のキーボードに戻してもほぼ違和感なく使えるし、なによりテンキーに頼らず数字入力をやってればノートPCでも困らない。
 

計算とかのエクセル地獄がたまにあるが、そんな時もテンキー増設しちゃえばいいしね。
とにかくこの作りの物を探し、色々みつけたんだ。
いいと思ったぜ91キー!
 


















 

って高っ!
 

いや一個なら、まあ買ってもいいかもしれないなあという程度の物もあるが、複数購入を検討しているとなるとこりゃたまらん。。
 

ううむこれが理想だと思ったんだが、思いのほか価格の壁があったので無理だ。きっと需要がないカテゴリなんだろうな。
 
 



文字キー部分+テンキー部分


ということで残りの組み合わせ。
 






文字キー部分
テンキー部分

 

結論から言うとこれに落ち着いた、だって安いんだもん。
105キーというカテゴリだね。
 











 

これらELECOMから出ている物以外に、パソコン工房が全く同じものを出しており、それのほうがちょっと安い。
見栄えと表面加工はELECOMのほうがいいのでお好み。
 

結局俺は、職場用にELECOM(赤)を買った後しばらくして、自宅用にパソコン工房から1台追加で調達した。
 
 


ポジション移動用のキーがいつものところに無いって相当不便なんじゃないかと思いもしたが、そこは文字通り頭を切り替えて使ってみることで概ね解決する。
 

結構使いやすく、またフルキーボードに戻してもあまり違和感の発生しない使い方もあるということに気づいたんだ。
 
 

それはどういう使い方かって、もったいぶる必要もないんだけど、なんと105キーボード使い方のコツの記事に続く。
 

入力デバイス再考、コンパクトキーボードのススメ(1)
入力デバイス再考、コンパクトキーボードのススメ(3)

2009年12月2日水曜日

入力デバイス再考、コンパクトキーボードのススメ(1)

[caption id="attachment_1600" align="alignnone" width="320" caption="写真:105キーの..."]写真:105キーの...[/caption]
 


ある日(深夜)職場をたらたら歩いて、キーボードの持ち込みが結構多いことをつかんだ。
 
ふむ、確かに文字入力その他もろもろのため、入力デバイスに自分が気にいったものを使うのは道理。
自席に戻り手元をみると配られたDellのキーボード、きっと原価は300円くらいのものだ。これはもうちょっと考えてもいいんじゃないかと思った。
 
 


目的様々十人十色


一口に持ち込み、自分に合ったキーボードと言っても何を重視するかで選ぶものも変わってくるだろう。
大体みんなこんなもん?
 
 


  • 大きさ

  • 打つ感触

  • 特殊機能

  • 色・形

  • 流行・模倣

  • 価格


 
 

コダワリの職人気質HHKBもいれば、キーの押し下げがしんどいらしくパンタグラフ式にしているのもいる。タッチパッド・トラックポイント命というのももちろんありでしょうね。
 
 

で、自分は何を求めて探しに行ったかというと。

  • 普通のキーボードからあまり離れたものでなくて

  • 打つ感触はPC付属よりはちょっといいくらいで

  • 省スペースで

  • 安いもの




常に触るのが自分のPCならいいが、人のやつとかサーバの奴とか結構触るので、そのときあまり戸惑わないように普通っぽさを重視。
用はノートPCみたいにパンタグラフとか、キー配列が特殊なものは避けたいと。
 

で、そんな中でも省スペース指向のものがイイんだ。
 
なにせ机の上がすぐ物でいっぱいになるうえ、ネットワーク図とかをVisioで起こす前は必ず手で書いてみないと出来ないタチでよく『キーボードが邪魔でよける⇒なんか液体こぼれる』ということもある。
 
キーボード自体の取り回しがよければ動かすのも影響が少ない、動かさなくてもよいこともあるだろう。
 

そして何より安いもの。
新しいキーボードを気に入ったとして職場・自宅でそろえてごらん、まず2つ分の代金が必要になってしまう。どちらでも同じ問題を抱えているためだ。
その他経年劣化・お酒に付き合ってもらってしまい乾いた後にもべとつくなど、買い替え需要はそれなりにあるかもしれない。
 
 

と、だいたい自分の求めるキーボード像をまとめて、売り場に触れるキーボードがそこそこ置いてある梅田ヨドバシへ行った。
 
 


梅田ヨドバシで触った結果...


えー、最初行った時はこれだと思った。
というかこれは今でもかなりお勧めの一つ。ついでにいうと「タイムリー」ってところが販売代理店をしてるのかな、ヨドバシのはそうだった。
 

Solidyear ACK-230
 









 

省スペース指向、感触もソフトタッチでとてもいい、安いと3拍子揃っており、WEBで下調べした良キーボードの東プレだとか、ダイヤテックものと比べてもそんなに質に差があるように思わなかった(※使ってりゃあ違うんだろうがね)。
 

しかし値段と第一印象のギャップが大きかった上、知らないメーカーだったので帰ってゆっくり考えようとその場では買わなかった。
いやほんとに質感に比べて、安すぎると思ったんだよね。その後WEBで同キーボードの情報を見たが、やっぱり評判は良かった。
 
これにしようかなっと思いましたよしばらく。
 
 
 


しばらく考えて、大きさが今のとそこまで変わらないんではないかと思い始める。
スペースを削るならテンキー部分くらいは無くてもいいんじゃね?と思い購入を踏みとどまることに。
 
 

そして次のターゲットを探したんだ。
なんせ最初はフルキーボードしか見なかったから、最初からやりなおしさ。
つづく。
 
入力デバイス再考、コンパクトキーボードのススメ(2)
入力デバイス再考、コンパクトキーボードのススメ(3)

2009年11月30日月曜日

Hyper-V上のCentOSで再構築したカーネルがパニックで止まる

Hyper-V上のLinux(CentOS5.4)をいじり始めているのだが、時計がいちいち早いのが多少なりとも気に食わない。
ということで、有効そうな手段の一つである、カーネルのタイマー割りこみタイミングを1000HZ⇒100HZにしたいと思って再構築をすることにした。
前回の clock=pit だけではまだちょっと早いからね。
 
 


適当に見つくろったこちらの情報を参考に、カーネルを再構築。
>> CentOSのカーネル再構築 - adsaria mood
 

menuconfigのところで割り込みを100HZに変更して新しいカーネルとinitrdで起動してみた。
 

しかし・・・
 
[caption id="attachment_1598" align="alignnone" width="648" caption="画像:カーネルパニック"]画像:カーネルパニック[/caption]
 

カネパ(カーネルパニック)だと?
つーかHDD見えてないやん...これはinitrdの中身がまずいんだよなあ。
手順たらないとかかな?
 
 

原因探しはもうちょっと先でやろう、時刻ずれの応急処置としてはやっぱりntpdateだよな。
 
 
 

仕方なくホストOSのWindowsServer2008をNTPサーバに仕立て上げて5分おきにntpdateする。
これやりたくないんだけどなあ、5分おきのntpdate。。
 

WindowsServer2008 のNTPサーバ化は簡単、レジストリを少々いじる。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config\AnnounceFlags
5 に
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer\Enabled
1 に


こんだけ、レジストリを書き換えた後、w32timeを再起動すればOK。
 

少し注意なのは、Hyper-Vではゲストを立ち上げるとそこから見たローカルタイムはWindowsの時間になる。
⇒Windowsが日本時間(UTC+9)で動いてたら、ゲストの基準はそこになる。
ゲストは『UTC+9=UTC』と見てしまう。
という解釈なのかな?とにかくゲストのタイムゾーンを+9にしようもんなら、システムのタイムゾーンは外から見てUTC+18という時間になっちゃう。
 
 


それはいいんだけど、今度はntpdateで問い合わせたら、Windowsは普通にUTCを返す
 

ゲストの時間をUTCにしておく⇒ntpdateで問い合わせたら9時間ずれる。
ゲストの時間をUTC+9にしておく⇒ntpdateで問い合わせる前の時間が9時間ずれている。
 

というなかなか悲しい事態になる、なんじゃいこれは。。
どこに改善要望だしたらいいのか。。『ゲストのhwclockをUTCにしてください?』
ここに書いても拾えないだろうから何処かで受けてほしいなあ。。
 
 

で、結局後者で動かし中。
ntpdateは5分おきなので、起動の瞬間から5分程度だけUTC+18で動いてしまう。
 

ぐぬぬぬぬ。。。
 
 

そのうちカーネルのタイミングを100HZにして、ntpdを動かしたいなあ。
 



カーネルパニックの回避方が判った。
http://sawano.members.icraft.jp/wp/2010/02/07/1666.html
grub.confを編集してね。

2009年11月28日土曜日

Hyper-V上のLinux(CentOS)の時間が早く進むのを何とかしたい

Hyper-VにCentOS5.4を導入してみたが、どうにもせっかちさん。時刻がえらく進む。
 
 

ということでMicrosoftの仮想PC用お勧め設定を実施してみた。
 

The system time runs too fast on a Linux-based virtual machine that is hosted in Virtual Server 2005 R2
http://support.microsoft.com/kb/918461/en-us


 

起動時のカーネルオプションに "clock=pit" を指定しなさいということで、設定の意味もリンク先に書いてある。
 
ちょっち引用。
# Programmable Interval Timer (PIT)
This clock has the following characteristics:

* This clock is set by using the clock=pit kernel parameter.
* This clock uses only the PIT counter for time interpolation.
* This clock uses the simplest of the available algorithms.
* This clock does not gain time because it does not use lost tick correction code.

 

...シンプルだ、ということなのかな。。
 
 

手順通りにgrub.confを修正する。
 
[caption id="attachment_1593" align="alignnone" width="648" caption="画像:grub.conf編集"]画像:grub.conf編集[/caption]
 

で、起動してからntpdateでホストOSと時刻を同期後、少し待って比較する。
 
[caption id="attachment_1595" align="alignnone" width="334" caption="画像:同期してから5分後くらい"]画像:同期してから5分後くらい[/caption]
 

もう結構ずれてる...これでも大分マシになっているのだけど。
これじゃあちょっと物足りないなあ。
 
 

ついでに、サーバ起動直後(ntpdなし)が不思議なんだよね。
 
[caption id="attachment_1594" align="alignnone" width="486" caption="画像:起動時のサーバ時刻"]画像:起動時のサーバ時刻[/caption]
 

なんでホストからさらに+9時間なんでしょうか。
+9時間っつったらインストール時にロケールで日本を選択してるんだけど、調整しておかないほうがイイのかな?
追記:仕様ののようなのでUTCを使うべしという助言をいただきました。
/usr/share/zoneinfo/UTC を /etc/localtime にもってきて変更。

 
 

さらに別の方法を試すので、上手くいったら後編に続く。
 
 



追記:
WindowsServerをNTPソースにするのはこちらを参照しました。
http://d.hatena.ne.jp/hidepon_mory/20071106/1207896724
 

2009年11月27日金曜日

ぶった(切り)、裁断

えー、参考書ぶった切りの季節がやってきました。
 
 

今回の裁断対象はコレ。
 
[caption id="attachment_1590" align="alignnone" width="480" caption="写真:試験区分DBの参考書"]写真:試験区分DBの参考書[/caption]
 



 

切れM@sita-
 
[caption id="attachment_1591" align="alignnone" width="480" caption="写真:裁断!"]写真:裁断![/caption]
 

これを通勤電車読んで特に役に立つわけでもない高度情報処理の試験を受けてきますよー
 
 

...なんて言ってたら仕分けでえらいことにされちゃうのかなー。
だめだなあツンデレが理解できんようでは。
 

まあ冗談抜きで大丈夫かなあIPA、受験料アゲくらいで済めばいいかもだが。
まあそれよりあたしゃあ、お国が心配だよね。
 

2009年11月25日水曜日

CentOS5.4 に 『Linux Integration Components for Microsoft Hyper-V R2』を 導入

前回の続き、折角『Linux Integration Components for Microsoft Hyper-V R2』を探し当てたのでインストールしてみる。
 

やり方は簡単、インストーラはISOイメージの中にあるので、
CDをマウントして、
"./setup.pl driver" と唱えてみる。
 
[caption id="attachment_1585" align="alignnone" width="648" caption="画像:Integration Components その1"]画像:Integration Components その1[/caption]
 

kernel-devel か kernel-sourceがいると、さようか。
 


kernel-devel を yum から入れました。あと当然のようにgccもいる。
 

で、そのあとはCDROMの中身をローカルに移して作業する。
 
mkdir /opt/linux_ic_rtm
cp /mnt/* /opt/linux_ic_rtm -R
/opt/linux_ic_rtm/setup.pl drivers

 


という感じで実行する、書き込み権限があるところに移さないと失敗するのでCDROMからとりあえず場所をうつそう。
添付のPDF読んだらいいんだけどね。
 
 
[caption id="attachment_1586" align="alignnone" width="648" caption="画像:Integration Components その2"]画像:Integration Components その2[/caption]
 


えーと、本能の赴くままインストールしてしまったが、これでどうなるんだっけ...?
 

添付のReadmeを後から読んでみると、どうやら統合サービスが結構有効になる模様。
 
 

これでレガシでないネットワークアダプタが使えたり、ホストとの時刻同期、ハートビートがわかったりするのだな。
インストール後のメッセージにも、vmbusがつかえるだのE-IDE、SCSIとNetworkと書いてある、なるほどvmbus対応はイイネ。
 

あとVSCにも対応できるそうな、透過的に親パーティションの機能が使える?どういう効果があるのかしら、RAWディスクが直接使えたりするのか。
 
 


では普通のネットワークアダプタに接続し直して起動してみよう。
 
[caption id="attachment_1587" align="alignnone" width="648" caption="画像:Integration Components その3"]画像:Integration Components その3[/caption]
 


seth0ってなんじゃい、synthetic nic(ethernet) ってことか。
なんか、本腰入れて作ってる感があって驚いた、能天気にeth0とかで普通に上がってくるもんだと思った。
そうだよね、VMbusだもんな。ともあれ認識&使用もOK。よしよし。
 
 

さあインストールもとりあえず終わった、しばらくテストで動かしてみよー。
まだ時計は激しくずれっぱなしだけどね、ハートビートも見ちゃくれないし。 Integration Components だけじゃ駄目なのかな。
 

Microsoft Hyper-V R2にCentOS5.4をインストール

してみた。
 

特になんの苦労もなしにサクッと入った。
ネットワークは仕組み上、レガシーインターフェイスを選ばないと駄目だね。
 
[caption id="attachment_1582" align="alignnone" width="648" caption="画像:CentOS5.4 on Hyper-V"]画像:CentOS5.4 on Hyper-V[/caption]

 
 

さて、まあどうせ何もしなけりゃ時計がずれるんだよね、仮想の宿命というか。
ということでリリースされたり消されたりしていた『Linux Integration Components for Microsoft Hyper-V』を探しているんですが、誰か行方を知らんかねー
 
追記:
Connectからニュースグループを見たらリンクを教えてくれる人がいた、感謝。
Hyper-V R2 用の Linux Integration Componentsはココだ!
Linux Integration Components for Windows Server 2008 Hyper-V R2 - 日本語
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=c299d675-bb9f-41cf-b5eb-74d0595ccc5c


Microsoft Connect で探しても、肝心のISOイメージが見つからん。
 
 


しかし自宅で触る用のLinuxって何年ぶりだ??軽く10年はそんなことしなかった気がするなあ。
前のはカーネル1.2系だったか...
 
しかしよく見たらsshのクライアントも手元にない (^^;
環境なしなしだ。
 

2009年11月24日火曜日

家に5ポートのギガスイッチを導入する、TCO減らして行こう!

自宅にもスイッチいるよね。
最近のPCはどれを買っても代替1000Baseに対応したNICが搭載されている、ということで折角なのでギガ対応のスイッチを導入することにした。
 
 


さて自宅に置くものとして気になる要素は色々ある。ファンが回るとうるさいし、でかいとやっぱり邪魔なのでポートは5つで十分。
そこらを考慮して、候補を2つに絞ってみた。
 



































































メーカー PLANEX BAFFALO
型番 FXG-05EP LSW3-GT-5EP
製品


対応規格 IEEE802.3:10BASE-T
IEEE802.3u:100BASE-TX
IEEE802.3ab:1000BASE-T
IEEE802.3:10BASE-T
IEEE802.3u:100BASE-TX
IEEE802.3ab:1000BASE-T
AutoMDI/MDI-X
パケットバッファ 104KB 99KB
スイッチング・ファブリック 10Gbps 12Gbps
MACアドレス登録数 1,000個 1,000個
スループット 10BASE-T:14,881pps
100BASE-TX:148,810 pps
1000BASE-T:1,488,095 pps
1000BASE-T 1,488,095pps
100BASE-TX 148,810pps
10BASE-T 14,880pps
ジャンボフレーム 9,216 Bytes 16,000Byte
消費電力 最大4.75W 最大5.5W
ファンレス
未使用ポート節電

 

2製品を比較すると判るように、全体的にバッファロー側のほうが性能が上の印象。
 
バックプレーンの転送量にあたるスイッチングファブリックは2Gも差があるし、ジャンボフレームの最大値に至っては倍近い、唯一パケットバッファが99KBと5KB少ないくらい。
この辺が評価の決め手になってくるのか?
 
 



さあ、ではどっちを買ったか。
 
 
 
 
 
 
 
 
 
 

こっち。
 
[caption id="attachment_1578" align="alignnone" width="560" caption="写真:FXG-05EP"]写真:FXG-05EP[/caption]

 


バッファローのがイイんとちゃうんかい、と思うかもしれないがPLANEXにしたのは理由がある。



  1. 初期コスト



  2. 消費電力


 

この2点でPLANEXのほうが有利だったからだ、先代のスイッチは実に4年も動いていた(何もしなくてもそれなりに熱いという腹の立つ仕様のまま)ので、結局長く使う=目先の性能よりTCOが大事なんだよね、これからは何でも。
 

まあ、積もったところで毛ほどの差しか生まないだろうが、誤差で済みそうな性能の差を無視して、年間でビール一杯くらいの差を確保しようじゃない。
 

ついでにいうと、数年前の100Baseのスイッチ使ってる方、結構それ電力食ってるよ、マジで!今¥3,000-くらいだし、未使用ポート節電タイプに買い替えといてもいいとおもうよ。
常時ONなら1-2年でおつりがくるんじゃないのかな。
 

2009年11月20日金曜日

Windows版のVirtualBoxに、Solaris10の10/09は入らんようだ

タイトルのまんまなのだが、インストーラを起動して暫くしたらPanicで止まる。
 
[caption id="attachment_1576" align="alignnone" width="728" caption="画像:Solaris10 10/09 in VirtualBox"]画像:Solaris10 10/09 in VirtualBox[/caption]
 

panic[cpu0]/thread=fec20160: page_unlock: page fe09cc4b0 is not locked
って...
一体何がやつをそうさせるのか。
 


Windows版VirtualBoxでSolaris10を使いたかったら一個前の 05/09やそれより以前のバージョンは問題ないのでそちらで。
 

2009年11月12日木曜日

Nagiosの状態をステータスバーに表示、FireFoxアドオン『Nagios Checker』

Nagios本体ののアドオン(pnp とか Nagvis とか)で面白いのないかなーと探していたら、別の良いもの発見。
 

FireFoxのアドオン、Nagios Checker
 

NagiosのWEB画面からホスト・サービスのステータスを取得してFireFoxのステータスバーにて通知してくれるアドオンだ。
 

[caption id="attachment_1574" align="alignnone" width="300" caption="画像:Nagios Checker(無風)"]画像:Nagios Checker(無風)[/caption]
 

右下にあるでしょ?Nagiosのステータスが。
異常を発見するとあそこが赤くなり、マウスオーバーで情報がポップアップするというつくり。
管理しているNagiosが一杯あったらとても便利だわこれ、視覚的にすぐ判る分、メールを待つよりいい。
 
 

これでブラウザさえ立ち上げとけばいつもNagiosが一緒だ!監視ライフを満喫しよう。
……しかしどうにも気が重い感じなのは、これを入れるとNagios中心の生活に拍車が掛かるからなのか。
 
 

ついでに設定の仕方メモ
 

  • 定義の名前は何でもいい

  • NagiosのURLはそのまま入力Basic認証はStandalone

  • なぜかスクリプトURLを自動でとらないのでNagiosのURL+"cgi-bin/status.cgi"を手動で入れる。


 

あとは監視間隔や表示領域だの、フィルタ設定だの調整すればOK。
フィルタなんて特に結構かゆいところまで手が届くように出来ている、作者は自分でNagiosを相当使っていそうだ。。
 

あとは設定がエクスポートできれば助かったりしますね、一応ApplicationSettingsの下に設定ファイル本体がxmlでいるので使いまわしたい時はそのファイルを持っていきましょう。

2009年11月11日水曜日

DNSにVRRPという組み合わせはどうなんだろうか

DNSサーバを冗長化する……
っていったら普通は別拠点の別回線とか、全然違うところに置くのが普通の冗長構成です。
外向けのコンテンツサーバとしては大体の場合はそれが一番イイ。
 


さて、別拠点を用意してないとか、中向けのネームキャッシュとして使うとかという時に同じところにDNSサーバを2台並べたりする事もあり。
 

役割の被るサーバが同じ場所にあるならVRRPと組み合わせるとどうかと考えてみる。
 
 



DNSサーバ2台を同じ場所に置く


とりあえず普通に2台並べて置いてみよう。
 
[caption id="attachment_1570" align="alignnone" width="540" caption="画像:DNS2台、普通"]画像:DNS2台、普通[/caption]
 

普通だ、ゾーンとかはマスタ/スレイブで同期してると思ってくれ。
 

片方を遊ばせるのはもったいないので、LAN内のクライアントは適当にクエリ対象を分散させるように優先順を変えてリゾルバを設定した事にする。
 


ああ、図にしてみて思ったがこれでも十分かもしれない。。。
 
 


DNSサーバ2台でVRRPを1つ共有する


最初のでイイかなと思いつつも、折角だからVRRPを使ってみる。
 


図にしてみるとこうなる、まー bind と keepalived かなー。
 
[caption id="attachment_1571" align="alignnone" width="540" caption="画像:DNS2台、VRRP×1"]画像:DNS2台、VRRP×1[/caption]
 

LAN内のリゾルバ設定は統一できる、DNSサーバ1が再起動しても多分すばやめに仮想IPが切り替わるのでアップデートとかメンテナンスの気が楽になるかもしれない。
でもこれじゃあDNS2遊んじゃう。。。
 
 



それならVRRPを2つ共有する?


ルータの勉強してた時だと思うがどっかで見た、VRRP×2を思い出した。
 

構成してみよう、こうかな?
 
[caption id="attachment_1572" align="alignnone" width="540" caption="画像:DNS2台、VRRP×2"]画像:DNS2台、VRRP×2[/caption]
 

おお、こうだよな。
 

DNS1とDNS2で普段から平等に使いつつ、片方落ちたらVRRPで仮想IPを切り替えて生きているほうが落ちたサーバ担当分も引き受ける、復旧まで。
 

これをグローバルIP環境でやるにはIPが4ついる?もったいないかと思いきや、仮想IPだけグローバルでもいけるから2つでも何とかなるかも知れん。
 

これならDNS1が突然永眠した場合もクライアントからは何事もなかったように見えるだろう。
最初の構成では片方に障害が出て、復旧が長引いたときに多少レスポンスがばらつく気がしないでもない。
 
 

もちろん手動で死んだ側のIPを生きてるほうに付けちゃうという手がある、結局IPの手動付け替えをやっちゃうならあんまり変わらんなあ。
そう考えると自動化する手間ばっかりで微妙...
 
 


結論じみたもの


まーちょっとやってみてもいいけど、苦労の割には効果が薄いんじゃないかなかろか。
自動化できるのは規模によってはウレシイが、同時マスタ等、むしろリスクが増加するというマイナス面が心配だ。
 
 

とういことでまとめると、、、
メリットが無くもないがそんなにお勧めでもない、と思いました。
ご利用の際は計画的に。
 

2009年11月7日土曜日

続・ZFS上のiSCSIターゲットをサイズ変更、今度はLVM

前回ext3前々回NTFSとZFS+iSCSIで色々やり、結果がなんだか中途半端だった上『LVMならきっと大丈夫さ!』なんて締めではイカンと思ったのでLVMではどうなったか簡単に書いておく。
 
終始オンラインとはいかなさそうだが、多少はスマートに出来たと思う。
 
 


LVMでもパーティションはさすがに壁


まずちょっと勘違いがあった、LVMのボリューム操作について。
 

物理ボリューム(PV)
ボリュームグループ(VG) にまとめてそこから
論理ボリューム(LV) を切りだしたらその上にファイルシステムを作れる。
 

という所のPVが結構簡単にでかくできると思っていたんだよね、pvresize っていうコマンドあるし。
 

しかし実際は、
こんなパーティション構成でOSをインストールして、
 



















sda1 sda4(ex)sd5 sda3 sda2
ext3 SWAP ext3 LVM(LV00)
/boot SWAP / /data (ext3)

 



ZFS側でケツを拡張してみたら、、、
 






















sda1 sda4(ex)sd5 sda3 sda2 空き
ext3 SWAP ext3 LVM(LV00) ←パーティションの壁
/boot SWAP / /data ←パーティションの壁

 

となり、これでpvresizeを実行してもダメ。
なぜならパーティションに縛られているから、ってことは。
 
 




じゃあパーティションデーブルなんかイラネェや


とある考えのもと、もう一個環境を作った。
 



























sda1 sda4(ex)sd5 sda3
ext3 SWAP ext3
/boot SWAP /
sdb
LVM(LV00)
/data (ext3)

 

HDDは2つ、両方でもいいがiSCSIはsdbだ。
 

で、見たらわかるようにsdbを丸ごとPVにした。
通常見られる createpv では "/dev/sdb1" などパーティション上に作るが、fdiskもしてない状態で"/dev/sdb" にcreatepvしたらこうなる。
これならパーティションの壁を気にしなくていい、だってそんな物(=パーティションテーブル)無いんだから
 
 

この状態でZFSからiSCSIボリュームを拡張する、さすがにLinux側は再起動しないといけなかったが・・・
 












sdb
LVM(LV00) 空き(FreePV)
/data (ext3) -

 

上がってきたLinux上では、きっちりとPVが未使用領域を確認していた、これでpvresize出来る。
 
なぜか自動で一発MAXまで割り当ててくれなかったので一度手動でちょっと大きく(※)したあともう一回pvresizeしたら自動でPVのサイズが最大まで拡張した。
※ここらへんちょっとアヤシイ動きといえるのではあるが。。。
 
 

VG内のPVがでっかくなったので、あとはLVを大きくして、中のファイルシステムを拡張すればOKと。
 
 
追記:某所でつっこまれたので……
もちろん単純にPVを追加してLVを拡張するのみでもOK、というかそれが普通。
iSCSIディスクも拡張するより、もう一個作って接続するほうが真っ当なやり方でしょう。

 
 

ちょっと感想


安易な思い付きってのはなかなか上手くいかないもんです・・・
もっと安全にしたいのであれば、ディスクを追加しPVをVGに入れたあとでリプレースするような感じ、LVMならリデュースかな?をするのがいいかと思います。すっごく普通ですが安全確実でしょう。
 

まあiSCSIディスクはZFS上だったおかげでスナップショットから生み出された幾重ものクローンと、send&recvにより量産されたボリュームを潰し放題と、こういう実験しやすいですね。
 
ついでにVirtualBoxならiSCSIを直接管理できるし、ってこれもSunだなぁ。
 
 

もう本家にならってすっかりSunがスキ!(/sukkri/)」とでも改名したらどうかと思ったりもするが、Windowsだって大好きなので変えない。
 

2009年11月6日金曜日

ZFS上のiSCSIターゲットをサイズ変更、ディスクを拡張して使う(Linux ext3編)

前編、Windows NTFS編からの続きー

 
 

iSCSIターゲットのサイズを拡張して環境変えずに使ってしまおうという目論見のLinux編。
ZFS+iSCSIについては前編に解説
 

使ったのはCentOS5、事前に断っておきたい事ですが記事内では普通のパーティションテーブルに作ったext3を対象に拡張しちゃってますが、普通は初期構築の時点でLVMでやるべきだと思います。
 
追記:LVMやりました。
 


今回拡張に使ったlinuxの環境


すでに結構特殊と言えなくもないが、テストに使った環境について。
 

VIrtualBoxでiSCSIデバイスを管理下のディスクにして、そこに直接CentOS5をインストール。
パーティションはこんな感じ、"/"が一番後ろにあるのがズルいっちゃあズルい環境。











sda1 sda2 sda3
/boot SWAP /

 

最初は8GBのHDDにこれをインストールしました。
 
 

ZFSボリューム拡張してから起動してみる


稼働中に突然拡張、そういえばしなかったなぁ、やってみればよかった。
 
ということで 8GB ⇒ 16GB に増やしたディスクでLinux起動!

容量は……
 
[caption id="attachment_1561" align="alignnone" width="728" caption="画像:増やしたHDDでまず起動"]画像:増やしたHDDでまず起動[/caption]
 
 


増えた増えた(w
もう驚かないぞ。
 

と言ってもいきなり拡張とかできない、パーティションテーブルが変わってないからだ。
さてどうしたもんか。
 
 



パーティションのサイズを変える


変えちゃうかー、パーティションの大きさ。
 

では適当なLiveCDで起動する、今回は手元にあったCentOS5.3のLiveCD。


見た目区別つかんなぁ...LiveCDから起動してますよー
 
[caption id="attachment_1562" align="alignnone" width="728" caption="画像:LiveCDからパーティション操作"]画像:LiveCDからパーティション操作[/caption]
 
 

では操作するディスクに狙いを定め、とにかく "fdisk" と"e2label"コマンドで以下の通り!

  1. "/"を削除 = "/dev/sda3" のパーティション消滅

  2.  
  3. "/dev/sda3" を再作成、残り最大限割り当て
    ※開始シリンダは消去前と死んでも合わせろ!

  4.  
  5. タイプ指定 82 してテーブル書き込み

  6.  
  7. パーティションラベルに"/"指定

  8.  

 

冒険のように見えますか? そうですねこりゃあ大冒険です
 
幸いlinuxのfdiskはパーティションのブートセクタを弄らないのか再作成するのか、このやり方でも後から中身を認識できちゃう。
 
Windows(DOS)のFDISKでやったら即死ですからね、一応HDD解析の鬼みたいな猛者にかかれば復旧の方法は有るみたいですが。
 
 
ではしれっと次に行きましょう。
 
 

ext3ファイルシステムを拡張する


パーティションの準備がすんだら、いよいよファイルシステムを拡張します。
 

シングルユーザで起動とか、甘っちょろいことなしに可能、そのためのコマンドをぶっ叩くまで。


"resize2fs" によって、パーティションの残り容量がちゃんと"/dev/sda3"に割り当てられます。
 
[caption id="attachment_1563" align="alignnone" width="728" caption="画像:ext3ファイルシステム拡張"]画像:ext3ファイルシステム拡張[/caption]
拡張完了めでたしめでたし。
ああ、結構時間かかるので気長に待ってね、たった8Gで10分くらい終わらなかったな。
 
 


あ、inodeとか?そういえば見てなかったな…(汗
いちいちリビルドみたいな事やってるから変わってるのかな。
 
 


LVMだとどうなるんだろう?


この記事の内容は、上手くいっているとはいえ色々なディスクの使用の掟などから完全に目をそむけている気がして正直お勧めはしません。
真っ当にやりたければボリュームマネージャにLVMを使用しておくべきかと思います。。。いやLVM使ってお願い。
 

さて、LVMといえど既存のディスクがいきなり拡張したらどうなるの?という質問をとある方より貰いましたが、実際問題ないと思っています。
後からできた領域は、実際最初からあって使用していなかった領域と同じ扱いになりそうです、16GBのディスクを買ってきて、8GBしかパーティション切らなかったイメージですかね。
 

最初に切ったパーティションの残り容量が0であろうが100GBであろうが、使い始めたらきっと関係ないでしょう。それがいざ拡張しようとしたときに突然現れた残り容量でも然り。
 
 

……と思うんですけどねぇ、実用のためには試してみないといけないなあ。
だれかやってみて!
 
追記:LVMやりました。
 
 
 


追記:なぜ後から拡張したいのか


だって後から容量を柔軟に追加できたら、シン・プロビジョニングが出来るじゃないですかー
今後TCO増加の重荷になりそうなストレージ関係は、裏を返せばコストを減らす事によってグリーンIT推進の原動力になる可能性も十分に秘めている、そこになんとか繋げたいんですよねー。
あとはZFSがデデュープを出来るようになれば・・・!
 

さあいつか役に立てばいいですが。
 

ZFS上のiSCSIターゲットをサイズ変更、ディスクを拡張して使う(Windows NTFS編)

次のLinux ext3編とで前後編。
 

iSCSI経由でマウントしたドライブのサイズを変更して使うというお話。
 


ZFSでiSCSIターゲット


ZFS上にZFSボリュームと呼ばれる容量制限付きのボリュームを作成し、"shareiscsiプロパティ"をonにするとiSCSIターゲットとして利用できる。
 

お手軽高パフォーマンスで重宝するのだが、折角容量可変のZFSを固定容量で使っている気がして、少々もったいないと思っていた。
しかしそれが認識間違いだったのに気づいた、いくらでもサイズ変更出来てしまう
 
 


iSCSIターゲット中のZFSボリュームをサイズ変更


ZFSボリュームは一応普通のZFSファイルシステムとは扱いが違い、独自のプロパティを色々もっているうえOSにマウントされないためzfsコマンド以外では通常見えない。
 

"zfs list"で見るとちゃんと予約したサイズを確保しているので固定だと思い込んでいたが、"clone" とか "send&recv" とかすると利用中サイズが変わる。でもiSCSIでくっつけると見える上限は同じー
 

おかしいと思ってzfsボリュームのプロパティ一覧をみると、 "volsize" とかいうのがある。
どれどれ・・・
 
# zfs get volsize ziscsi/sawa01
NAME PROPERTY VALUE SOURCE
ziscsidev/sawa01 volsize 8G


なるほどZFSボリュームのサイズは単なるプロパティの一つであり、ハードクォータみたいな物なのか。
すっかりファイルをブロックデバイス代わりに使うような感覚でいたよ。
 
 

じゃあ早速、"set" で変更を試みる。

# zfs set volsize=16G ziscsi/sawa01
(特に出力なし・・何か言ってよ!)
# zfs get volsize ziscsi/sawa01
NAME PROPERTY VALUE SOURCE
ziscsi/sawa01 volsize 16G -


おお、変わっちまった、、、
乗せていたNTFSどうなんのよ!?
 
 

ちなみにテストはSolaris10、Zpoolのバージョン15で。
 
 


サイズ変更の瞬間、Windowsでは


サンプルはXP、Vistaみたいにパーティションをゴリゴリいじれないのでどうなるんだろう。。
 
 

まず8Gの時のマウント状況、Microsoft iSCSIイニシエータでZドライブにくっつけ&NTFSフォーマット。
 
[caption id="attachment_1553" align="alignnone" width="553" caption="画像:8GBのiSCSIディスク"]画像:8GBのiSCSIディスク[/caption]
[caption id="attachment_1554" align="alignnone" width="469" caption="画像:8GBのiSCSIディスク(2)"]画像:8GBのiSCSIディスク(2)[/caption]
※実際はSS取るために「8G⇒16G⇒8G」とやったZFSボリュームを使用(^^
 
 



これをZFS側で16Gに拡張するといったんLogoffされる、まあ安全な感じですね。
 
[caption id="attachment_1556" align="alignnone" width="553" caption="画像:iSCSI自動切断"]画像:iSCSI自動切断[/caption]
 
 

では、ログインしなおそう・・・
 
[caption id="attachment_1555" align="alignnone" width="408" caption="画像:MSのWIndows用iSCSIイニシエータ"]画像:MSのWIndows用iSCSIイニシエータ[/caption]
 
 

ディスクの管理を見てみる。
 
[caption id="attachment_1558" align="alignnone" width="553" caption="画像:16GBのiSCSIディスク"]画像:16GBのiSCSIディスク[/caption]
 


増えとるよー!うわー、あたりまえだけど生理的になんだか気持ち悪い。。。
 
 

後はまあ気を取り直して、適当にパーティション操作ソフトでいじるなり、Vista以降なら拡張するなりお好きなようにってところですね。
 

とりあえず手持ちで手っ取り早い方法としてダイナミックディスクにしてみる。
 
[caption id="attachment_1559" align="alignnone" width="553" caption="画像:ダイナミックのシンプルボリューム"]画像:ダイナミックのシンプルボリューム[/caption]
 

変換して追加、ちゃんと8GB ⇒ 16GB のボリュームになりましたね。
ダイナミックディスクって使ったことないけど、相手はZFS上の信頼できるデバイスなのでなんでもイイんです。
 
 

では後編のLinux(ext3ムリヤリ拡張)編に続くー
 
 

2009年11月4日水曜日

テスト用のLANに、とりあえずPPTPでVPNする

検証用に社内にさらにローカルネットワークを組み、こんな環境を作った。
 

[caption id="attachment_1551" align="alignnone" width="474" caption="画像:どこにでもあるテスト環境の概要"]画像:どこにでもあるテスト環境の概要[/caption]
 


作業用のPCからテスト用サーバにアクセスするのに、いちいちルータ兼サーバにログインしたりポートフォワードの設定するのも面倒になってきたのでpptpのデーモン、PoPToPを入れてVPNを張っちゃうことにした。
 

ルータ兼用サーバはCentOS5で作ってたので、インストールは公式のRPMでOK。
 

で、コンフィグした。自分用なので認証無しにしたらとてもシンプル、これだけだった。
 

# cat /etc/pptpd.conf
lock
name pptpd
nodefaultroute
proxyarp
 
localip 10.48.1.254
remoteip 10.48.1.11-15

 

簡単に説明。
まずテスト用LANが 10.48.1.0/24 なのね。
で、PPTPのクライアント用に10.48.1.11-15を払い出そうね、という設定。
 

クライアントはWindows、注意点は「暗号化を必ず要求する」のチェックをはずさないと切断されちゃうことと、IPv4で「リモートゲートウェイを使う」の設定をはずしておくことくらい。
 
ちなみに認証無しの場合はユーザ名/パスワードはなんでもOK・両方空でもOK。不安なので認証したいという人はどうぞ調べて。
 
 

2009年11月2日月曜日

SNIA-Jのストレージ技術セミナー(新大阪)に行ってきた

10/30、SNIA-Jの主催するストレジ技術セミナーの応用編に参加しました。
 

[caption id="attachment_1548" align="alignnone" width="225" caption="写真:SNIAセミナー関連資料"]写真:SNIAセミナー関連資料[/caption]
 

SNIAさんについて詳しくは公式を参照ですが、ストレージ技術の標準化を目指して技術の普及を推進する団体さんです。
...この手の団体さんはたくさんありますが字面だけみると、「世界征服を狙う悪の組織」とかとあまり変わらんですね、信念を持って作戦展開する点など根っこは同じなのでしょうか。
 


冗談はさておき、最近ストレージ関連に関わることが増えてきており、お勉強のためにセミナーに行ってみたのですが、これが面白かった。
一つの物理デバイスからデータセンタの運用まで幅広いテーマでの講演があり、一通り聞いておいて損はない感じでした。
 
 

SNIAさん的にはセミナーに来てほしいでしょうが、ちょっとだけ内容について書いちゃおう、まあ参加は無料だし。
ちなみに講演で引用されまくったオリジナルの英語資料は公開されてるので参考リンク。
http://www.snia.org/education/tutorials/
 
 



ソリッドステートストレージ(SSS)


EMCの方よりソリッドステートストレージ(SSS)について。
 

ソリッドステートストレージ(SSS)ってなによ、SSDは知ってる。
今一般で言うとSSDだとフラッシュの単体ディスク、でもSSDが集合したりDRAMの奴もあろうので、そこらひっくるめてSSSと呼称しようという話が冒頭に。
SSDはSSSの一つだね。
 

そうかー
> ソリッドステートストレージ SSS に一致する日本語のページ 約 115 件

うーん。
 

SSDの技術解説あり、その辺は資料が詳しい。興味深かったのは内部ストライピングでIOPSを稼ぐなど。しっかりお高いSSDはマジで早い。
 

HDDとSSDでは単価が違うが、IOPSや信頼性をベースに試算すると色々用途別の利用法がはっきりする。
システム要件がIOPSベースだと、HDDを20台ストライプしないといけないところでSSDなら1台でOKだったり。
 

とにかく容量単価をって場合は弱くみえるが、消費電力と信頼性を加味して長期的にみると意外とイケる。
場所・消費電力みるとSSD偉く強い。
 
 

ちなみに講師の方が言うに『SSD2010』というやたら詳しい本があるらしい。
http://ec.nikkeibp.co.jp/item/books/184400.html
定価\15,000- 高っ。
 
 

ああ、あとSSDの容量は大分余裕があって、素子が少々ぶっ壊れたり寿命が来ても余分な領域にある代替のものに切り替わるから当面大丈夫みたいな事を言っていた。
言われてみればそうしないといけないのが判るけど、少しどうするのだろうと疑問に思っていた部分なのですっきり。
 
 


ストレージセキュリティ


日立の方よりセキュリティに関したお話。
 

セキュリティ一般論で時間切れちゃった感じ。
個人的に後半の資料がおもしろそうだったので大体知ってる話のうちに終わってしまったのが残念。
ストレージ関連でクラウドサービス内でのストレージの話では、クラウドな為にデータがいつどこに置かれてそれをどうやって特定するのかが難しくなるかもという事が印象だった。
 
 




グリーンストレージ


東芝の方よりグリーンストレージのお話。
 

今回一番のヒット、というか講師のノリがツボでした。。
 

グリーンITが流行っているが、理由が。。。今まで勘違いしていたようだ。
実はグリーンITとは、エコだとか温暖化対策だとかそんな中身のなさそうなボンクラ思想ではなく、『PC関係の消費電力多すぎ!熱出して冷却に金掛かりすぎ!データセンタの維持費たまんねーから何とかしようぜ、つーかしろ!』という実用一点主義だという事を理解することが出来た。
 

これは俄然興味がでてきたよグリーンIT。
iDC運用の悩みの種はやっぱり熱・場所・電力ということで、グリーンITを推進する企業のほとんどが投資効率のUPを狙ってのこと。環境保護は副産物だ、いいぞグリーンIT。
 

さてこの講演で覚えてくれと言われたことがいくつか。
 

その一つが『波及効果』。
サーバの電源を1W節約しました、たかが1W?いやいや、DC変換で0.5、そこに来るまでロスが1W、冷やすの結局1Wで実はiDCトータルで見たら3Wくらい減らせるのだ。
つまり、
これは聖域なき消費電力改革が必要であることを意味する』らしい。
迂闊にもこれでウケてしまった、、、その後も所々で小ネタ的になことやぶっちゃけるような談話など挟まりえらい聞きやすかったな。
 
 

で、あとはストレージの話。
冗長性が求められた結果ストレージ関連設備は肥大化の一途を辿り、消費電力・場所でみた成長率はNo.1だと。
だが容量削減テクノロジーで場所・電力・管理コストを減らしすことでデータセンタのフットプリント削減ができるだろう。
 

シンプロビジョニング、デデュプリケーションなどの技術があれば見た目の容量に比べて実容量は大分減るはず。
 

さてもう一個覚えて帰れという話は、暗号化と圧縮を同時にやりたきゃ、圧縮してから暗号化しないと容量稼げませんよという話でした。
まあごもっともで。
 
 

ストレージ仮想化


最後はNECの方よりストレージ仮想化の話。
 

主に技術より、資料も講演も詳しかったのですが、これは実際に行ったほうがいいや。
記事書くの疲れたとかではなく、何か書いてどうこうという話ではなかったなあという感じ。
 

どこで・どのように仮想化をしてどう見せるかという技術をずらずらと。
 
 
 


と、大体こんな感じでした、東京大阪で年2回ずつやってるようなので、ストレージネットワーク関連を見る人は行ってみては。
 
 


あとはSNIA-Jの資格案内がありましたね。
合格は国内十数名と聞こえました。。数十名?なのかな。。でもほんとに十数名のような気もする。。
なんか狙い目かもです。
 

対策本はこれしかないのかな、まあこれあれば十分のような。
ストレージネットワーキング技術―SNIAストレージ技術者認定プログラム準拠

 

2009年10月31日土曜日

Hyper-V上のWindowsServer2003にVirtualServer2005を突っ込んでみた

タイトルの件を試してみた。
インストールまでは出来たが、仮想PC起動したらゲストの再起動が掛かりました。
 

試した環境。
ホスト:WindowsServer2008R2 Ent.
ゲスト:WindowsServer2003R2 Ent. x64 + VirtualServer2008R2SP1
 
 

うーん意外といけそうな感じがしたんだけど残念。

2009年10月30日金曜日

VirtualServer2005でNAT(NAPT)でゲストを接続、理論を(Hyper-Vで)実践編

前回の理論編で展開したVirtualServer2005でのゲストNAT(NAPT)接続について、どうせ全く同じことなのでWindowsServer2008R2+Hyper-Vの環境でやってみた。
まあ、WindowsServer2003+VirtualServer2005での環境がちょっとすぐに用意できなかったからともいう。
 
ちなみに用語がめんどくさいので、以降親パーティション=ホスト、仮想はゲストで。
 
 

要点をさっとおさらい


実践編はほぼ作業手順になっちゃうので要点だけおさらい。

  1. ホストにLoopBackAdapterを追加、ゲストとはそれで接続しローカルネットワークを形成

  2.  
  3. ホストにRRASをインストール、ルータとしてセットアップ

  4.  
  5. 物理NICを外部用、LoopBackを内部用にルーティング+NAPTで完成

  6.  

 

ではやってしまおう。
 
 

ホストの準備


RRASをインストールする、役割追加の「ネットワークポリシーとアクセスサービス」から。
 
[caption id="attachment_1531" align="alignnone" width="540" caption="画像:RRASの役割追加"]画像:RRASの役割追加[/caption]
 
 

LoopBackAdapterをインストールする、2003ならハードウェア追加と削除、2008はデバイスマネージャの「操作」からレガシハードウェアの追加(※PCを選んでないと出てこない)をする。
 
[caption id="attachment_1532" align="alignnone" width="540" caption="画像:LoopBackAdapter追加"]画像:LoopBackAdapter追加[/caption]
 

追加できたらIPアドレスを振っておく、あくまでプライベートネットワーク用なので、外用とサブネットが被らないように。
 
[caption id="attachment_1533" align="alignnone" width="400" caption="画像:内部ネットワークのゲートウェイ"]画像:内部ネットワークのゲートウェイ[/caption]
 
 



ゲストが使うネットワークの設定


Hyper-V管理から、LoopBackAdapterを外部ネットワークとして構成する。
※これはVirtualServer2005でも出来るように合わせているだけで、Hyper-Vなら多分LoopBackの代わりは最初からついておりそちらを使ってもOK。
 
[caption id="attachment_1534" align="alignnone" width="300" caption="画像:仮想ネットワーク追加"]画像:仮想ネットワーク追加[/caption]
 


じゃあゲストにさっきのLoopBackをあてがおう。
 
[caption id="attachment_1535" align="alignnone" width="300" caption="画像:ゲストが使うNIC選択"]画像:ゲストが使うNIC選択[/caption]
 

ゲストの準備はこれでいいので、起動しておこう。
 
 


ゲスト⇔ホスト間の疎通を確認する


ゲストを起動し、ホストでLoopBackに当てたサブネットで適当なIPアドレスを振り、通信できるか試してみる。
 

PINGを打ったらFireWall切リ忘れで応答無かったので、telnet80 で疎通確認、OK。
 
[caption id="attachment_1536" align="alignnone" width="300" caption="画像:内部疎通確認"]画像:内部疎通確認[/caption]
 


では外部にPingが飛ばないことを確認しておく、現段階ではwww.google.comにpingを送ることが出来ない。
 
[caption id="attachment_1537" align="alignnone" width="300" caption="画像:届かないPING"]画像:届かないPING[/caption]
 


あとはマスカレードするだけだ。
 
 

RRASにNAPT付きルータのセットアップ


ホストに戻ってルーティング。
ウィザードで超簡単、2003だとどうだったかな?ウィザード無くても簡単には違いないが。
 


まずNATをえらんで、
 
[caption id="attachment_1538" align="alignnone" width="588" caption="画像:RRASその1"]画像:RRASその1[/caption]
 



最初にインターネットにつながっている側のインターフェイスを選択する。
LoopBackじゃないほうね。
 
[caption id="attachment_1539" align="alignnone" width="588" caption="画像:RRASその2"]画像:RRASその2[/caption]
 


次に内部のネットワークに接続されたインターフェイス、ここではもちろんLoopbackを選択と。
 
[caption id="attachment_1540" align="alignnone" width="588" caption="画像:RRASその3"]画像:RRASその3[/caption]
 


そのあと内部的にDHCPを有効にするか聞かれる。正直どっちでもいいがDHCPのほうがちょっと楽かな。。
 
[caption id="attachment_1541" align="alignnone" width="588" caption="画像:RRASその4"]画像:RRASその4[/caption]
 


以上でRRASがルータになった、ちょっと見てみよう。
 
[caption id="attachment_1542" align="alignnone" width="300" caption="画像:RRASセットアップ完了"]画像:RRASセットアップ完了[/caption]
 
まあ状況が判るくらいだけど。
 
 


ゲストよNATで出て行こう


さあ、仮設DHCPを有効にしたので、早速ゲストからrenew、DHCP discover だ。
 
[caption id="attachment_1543" align="alignnone" width="300" caption="写真:ゲストにIPアドレス自動付与"]写真:ゲストにIPアドレス自動付与[/caption]
 
IPもらえたー、これはまさにVirtulaPCでやるときのNATモード
 
 

ではGoogleにPING、
 
[caption id="attachment_1544" align="alignnone" width="300" caption="画像:届くPING"]画像:届くPING[/caption]
 
OK.
 

ちなみにデフォだと名前解決できなかったな、FireWallかなあ。
面倒なのでDNSだけ手動で入力。
 

で、WEBへ。
 
[caption id="attachment_1545" align="alignnone" width="480" caption="画像:幾重ものWindowに囲まれ、WEB表示"]画像:幾重ものWindowに囲まれ、WEB表示[/caption]
 
 

はいお粗末さまでしたー
 
 



おわりに


RRASはServer向けのWindowsにしかついてないかと思いきや、ちゃんとクライアントのXPやらにも付いている。
ただGUIがなくて、netshで頑張って設定しなきゃならないみたいだが。。
 
 


さてこれでIPが一個ありゃゲストの面倒はなんとかなるというのが確認できた。
ポートフォワードも出来るのでサーバとしての役割もバッチリ。
 

で、それだけでなく、グローバルIPの付与はホストに全部やって必要ポートだけゲストに渡す、という考え方もあるんだよね。
IPフィルタの一元管理、トラフィックのモニタリングと結構使いでがあったり。
 
 


この記事ではHyper-Vでやっちゃったけど、構成を理解すればVirtualServer2005でも同じことが出来るはずなので是非やってみよう。