2010年6月22日火曜日

Google Chrome のプロファイルを分けてGoogle(Gmail)アカウントを使い分ける

Googleのアカウントもってるじゃん。1つ?んなわけない。
 
 

FireFoxのプリズムとか、GoogleChromeのアプリケーションとしてショートカットとか便利なものは複数アカウントで使い分けたい。
特にChromeのアプリケーションショートカットはGmailをローカルのメーラっぽく使えていいので、別のアカウントで複数立ち上げたくなったのでやり方を調べてみた。
 

どうやら"--user-data-dir"という引数でプロファイルの場所を指定できるらしい、プロファイルが別ってことは、それぞれGoogleのログイン情報を別に持たせて動かせるってことだね。
 
 

chrome.exe" --app="https://mail.google.com/mail" --user-data-dir="..\..\User Data\hogehoge"

 

Chromeのショートカットを加工して、こんな感じで必要な分だけGmail用Chromeを起動すれば、あたかも複数メーラが立ち上がってるみたいになって便利。
hogehoge のところを適当にいじろう。
 
 

2010年6月3日木曜日

ZFS、デバイスの用途をまとめ。それとTIPS。

ZFSでzpoolを作成するとき、各デバイスまたはファイルに3種類の役割がある。
データ用、キャッシュ用、ログ用とあるが、zpool構成するときにそれぞれどのように使えるかまとめてみた。
 

検証に使ったのは取ったのはOpenSolarisのb131、zpoolバージョンは22だ。
 

デバイスの用途と構成・特徴一覧


ざっとこうなる。
 










zpool形式datacachelog
スパン
ミラー×
RAIDZ ××
RAIDZ2××
RAIDZ3××
detach条件付○条件付○※
ファイルを指定×

 

dataとlogは似ている


data用は取れる構成コンプリートなのは当たり前だが、detachには制限がある。
logも同様だが、完全なデータのコピーがないデバイスは取り外せない、すなわちミラー状態の片割れが唯一取り外しOKで他の構成ではそもそも取り外しができない。
 

もちろんreplaceは可能、順序的にはミラーしてdetachだから当然。
 

data、logともにmkfileで作成したファイルも指定OK。
raidzはdataのみ、dataもlogも後からattachでミラーリングデバイスを追加出来る。
 
 



追記※
Logは最新のコードでは取り外せるようになってると情報をいただきました。
http://twitter.com/hasegaw/status/15496202547
取り外せないことがひそかに疑問だったが、すっきりしました。
 
 


cacheは特殊


一方cacheは冗長構成が一切とれない、必要がないからだろう。
 

また、デバイスの追加削除に制限がない。中身はあくまでキャッシュにすぎなく、ヒットしない・読み込めない場合はさっさと諦めて削除すればよい。
 

もう少し触れておくと、cacheには十分に早いデバイスの割り当てが推奨されている。
ミラーをはじめ冗長な構成では読み取りストライピング効果も確かにあるが、書き込みのペナルティが大きいため不向きだ。
 

また、degradeな状態を想像するといいだろう。
cacheにそんな状態があっては本末転倒だ、リシルバさせる意味も全くない。
高速に動作し、そうできない状態は必要ないのがcacheだ。
 

ちなみにファイルは指定できない、「ディスクまたはディスクスライスを指定すべき」と断られる。
cacheへの割り当てデバイス、お勧めはやはりSSDだ。
 
 
 


という感じ。ではついでにZFS利用にあたって私からのTIPSを。
 
 
 


zpoolミラーは多面鏡


zpoolのミラーリングはRAID1ではない。いくつも複製対象が増やせるのだ。
2つでは何かと心配、というときは3つにすればいい。
 

ミラー台数を増やすたびにリード性能は向上し、ライトはが下がる。リード重視という環境は多かろうので覚えておくとよい。
 

3-Way Mirrorの図、attachで作る。もちろん4つ目5つ目を追加していく事もOK。
NAME STATE READ WRITE CKSUM
zfs ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c4t0d0p0 ONLINE 0 0 0
c4t0d0p1 ONLINE 0 0 0
c4t0d0p2 ONLINE 0 0 0

 


ZILは意外と役に立たない(そんな事は無いというお話を追記してます)


これは特に主観が大きいTIPSなので参考程度に。
(※追記:LOGを別にした場合はかなり勝手が変わります。)
 

ZIL、まあトランザクションログみたいなのだが、アトミック書き込み、CoWが身上のZFSではイマイチ存在が薄いように思う。
実際どういうケースで役に立つのか、あまり実感がわかないのにZIL有効だとパフォーマンスがものすごく落ちる。
 

結局のところ、HDDやストレージ側の障害にZILは無力である。
ライトキャッシュ有効のストレージ装置が気まぐれでキャッシュを捨てたとする、別デバイスに取ったZIL上では正常終了なのにデータはおかしい。
逆もそう、HDDが死んでZILごと失った場合もZFSのCoW特性から、ファイルシステム上特に不都合はない。
 

データの小さい破壊はZFS内でミラーやRAIDZ構成をとっておくことでチェックサムから復旧でき、そこでもやっぱりZILは関係ない。
 
 

さてZIL、有用かな?
 
 




さて、ZILに関して有識者の方からご助言をいただきました。Twitter:hasegaw さんより。
ってか、『Xen徹底入門』とか付箋バリバリなのでえらい驚きましたが(汗
 

ZILはRAID-Zの上NFSサーバにしたときには効果大。Logデバイスは最新のコードだと取り外し可能に
http://twitter.com/hasegaw/status/15496202547

 

NFSですか。実は具体的にどう効果がもたらされるのかイメージが・・・
多分非同期だからということが関係してくるんだろう、ちょっと考えておこう。
本文がZILを完全に批判しているようになっているので載せるところまでは早くしないと。
 

で、答えはこちら。
http://togetter.com/li/27626
親切丁寧に教えてもらっちゃいました、なるほどですねえ。
 

RAIDZはデータをストライプした全デバイスに書く


使用デバイスの台数から RAIDZ=RAID5、RAIDZ2=RAID6と思ってはいけない。
詳しくは書き込みホールの問題を調べたらわかるので割愛する。
 

で、余所ではあまり触れてないと思ったことについて。
データを全部に書くのでRAIDZにあまり一杯デバイスを並べると書き込みのペナルティが馬鹿にならなくなってくる。
 

よってRAIDZを構成するのは6-8デバイスにとどめておき、大容量を求めるならRAIDZ構成をたくさんストライピングするのが多分賢い。
 
 


単純なスパン構成でも、後から冗長化できる(1)


導入時にRAID0っぽい構成にして、後からマズイと思ったりしますか?
zfsだとattachしていくことで冗長構成にする事が可能だ。
 


たとえばこんなスパンボリューム。
NAME STATE READ WRITE CKSUM
zfs ONLINE 0 0 0
c4t0d0p0 ONLINE 0 0 0
c4t0d0p1 ONLINE 0 0 0

 


attachであれよと言う間にRAID1+0相当に。
NAME STATE READ WRITE CKSUM
zfs ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c4t0d0p0 ONLINE 0 0 0
c4t1d0p0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c4t0d0p1 ONLINE 0 0 0
c4t1d0p1 ONLINE 0 0 0

 


多少容量は犠牲になるが、RAID0相当の構成はすぐにRAID6以上の稼働率&ハイパフォーマンスを誇るRAID1+0に進化させることができる。
これも覚えておいて損はないだろう。
 
 

単純なスパン構成でも、後から冗長化できる(2:追記)


追加するデバイスなんかネエヨ!って方のためには、copies プロパティの変更をお勧めする。
何が起こるかって言うと、ZFSが書き込むブロックのコピー保持数を指定できるのだ。
 

なのでコピー=2とすれば複数のデバイス間で同一のブロックを2つ持ってくれるというわけ、hadoopにもこんな機能あるね。
このように設定しよう。
 

# zfs get copies tank
NAME PROPERTY VALUE SOURCE
tank copies 1 default
 
# zfs set copies=2 tank
 
# zfs get copies tank
NAME PROPERTY VALUE SOURCE
tank copies 2 local

 

これで一応冗長構成になった、容量は半分になるけどな。
ミラーと違うのは、ミラーがどれだけデバイスを追加しても容量が大きくならないのと違い、デバイスを追加したらその半分だけ容量が増えていくことかな。
 
 

思いったったら即、実質ミラーリングが可能だ、


デバイスたくさんのZpool


悩むところだが、Log,cacheを入れたら・・・
 

logをミラー、cacheを複数、dataはRAIDZ以上の複数スパン(または1+0構成)がいいかなあ。
こんな感じ?あくまで一例ね。
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
c4t0d0p0 ONLINE 0 0 0
c4t1d0p0 ONLINE 0 0 0
c4t2d0p0 ONLINE 0 0 0
c4t3d0p0 ONLINE 0 0 0
c4t4d0p0 ONLINE 0 0 0
raidz1-1 ONLINE 0 0 0
c4t0d0p1 ONLINE 0 0 0
c4t1d0p1 ONLINE 0 0 0
c4t2d0p1 ONLINE 0 0 0
c4t3d0p1 ONLINE 0 0 0
c4t4d0p1 ONLINE 0 0 0
raidz1-2 ONLINE 0 0 0
c4t0d0p2 ONLINE 0 0 0
c4t1d0p2 ONLINE 0 0 0
c4t2d0p2 ONLINE 0 0 0
c4t3d0p2 ONLINE 0 0 0
c4t4d0p2 ONLINE 0 0 0
raidz1-3 ONLINE 0 0 0
c4t0d0p3 ONLINE 0 0 0
c4t1d0p3 ONLINE 0 0 0
c4t2d0p3 ONLINE 0 0 0
c4t3d0p3 ONLINE 0 0 0
c4t4d0p3 ONLINE 0 0 0
logs
mirror-4 ONLINE 0 0 0
c4t0d0p4 ONLINE 0 0 0
c4t1d0p4 ONLINE 0 0 0
cache
c4t2d0p4 ONLINE 0 0 0
c4t3d0p4 ONLINE 0 0 0
c4t4d0p4 ONLINE 0 0 0

 
ちなみにこれ、コマンド一発で構築可能だ。

 
 
 

ZFS特集でした!

2010年5月19日水曜日

「Windows XP Mode」のネットワークはNAT

先日Windows7のおまけ、XPモードの記事を書きました。社内から「あれってIPどうなるの?」という質問をいただいた。


そうですね、知っててきっちり答えるところに聞くのは最良のメソッド。




画像:XP Modeの設定画面


ベースがVirtualPCなので、デフォルトではNATです。
既存のネットワークに影響なく利用可能で、もちろんホストと同一のLANに参加させることも可能。


画像:XP Mode 内でIpconfig


サブネットは適当、この例では『192.168.131.0/24』。多分ホストとは被らないようにやってくれてるのでしょう。
しかしルータがBaffaloだとわかってしまう図だな、まあいいか。



以上。

2010年5月18日火曜日

気になっていた本を購入、『子どもをネットから守り、ネットで育てる』

いくら仕事でIT関係をやっているといっても、いざ家庭に導入となると困る。
仕事でやってるからなおさらといおうか。ハンパにネット社会を見慣れていると、ネットの嫌なところが先に立ってなかなか上手くできると思わない。
 
 

しかし何時までもそんなことは言ってられず、"互いの"リテラシを向上しなければと思い、以前立ち読みして以来気になっていた書籍を買ってきた。
 


 

いやぁコレ、すごくいい本だと思うよ。紹介する俺がアルファブロガーでなくて申し訳ないくらいだ。
なんというか必死?守ること、教えることに必死な感じが書かれているのがいい。
 
 

こういうジャンルで他の物は少ししか見たことないので褒めすぎかもしれん、もう数年すれば世界もだいぶ変わってるかもしれんが、家庭内でITの事が分かるのが自分ひとりという状況のお父さんは読んでおいて損はないんじゃないか。
 

自分なんかはもうすぐ子世代の使う端末・リテラシについていけなりそうだが、それの巻き添えで子のIT活用を出遅れさせるのもつらいしね。
 
 
 

けんじろう と コラボろう!
http://blogs.itmedia.co.jp/kenjiro/

 

この本の内容は著者のブログ↑でだいたい読めるっぽいんだが、やっぱり紙がいいんだよな。
 

2010年5月6日木曜日

Windows XP Mode があればNameLandもWindows7(x64)で使える

G/Wにちょっと部屋を片付けたよ。
 

で、整理整頓と言えばラベルプリンター、一家に一台くらいあるだろう。キングジムのTEPRA(テプラ)とかCASIOのNameLand(ネームランド)とか。
 
 


経緯を省くが色々あって自宅のWindwosが 64ビット版Windows7しかなくなりました。
それでNameLandを使おうとしたら64ビット対応のドライバないんですって。
 
 

うちのNameLandはKL-E20、PCがなければラベルプリントできない!

 
 



しかし、困ったところの救いの手が、Windows XP Modeだ。

Windows XP Mode のダウンロード
http://www.microsoft.com/japan/windows/virtual-pc/download.aspx


 

母艦であるWindows7微妙に統合されたWindowsXP on VirtualPCがインストールされる。アプリケーションのみの使用も可能だ。
 

画像:XP Mode

 
 


かくして無事にラベルのプリント環境は維持された。
他にも無線アダプタをルータにする系のデバイスとかもXPModeで動作確認取れてるみたい。
 
 

XPとの互換でWindows7への乗り換えを躊躇している人、XP Modeがあるから何とかなるぞ。

2010年4月21日水曜日

DeskNet'sからエクスポートしたスケジュールをPythonでGoogleカレンダー用に 整形する

DeskNet's(デスクネッツ)のスケジュールをGoogleカレンダーにインポートして何かいいことあるのかい?
iPhone / iPod Touch が勝手に同期してくれるじゃないか。
 
 

というわけで、PGほぼ素人ながらPython手習いの一環としてスクリプトを書いてみた。
DeskNet'sからエクスポートしたCSVのスケジュールを、Googleインポート用にヘッダ変更と並び変えをして保存するというつくり。
 

まあ、変換するだけなので簡単ですね、サンプルをつなぎ合わせたような。
 

import csv
 
csvfile_in='schedule.csv'
csvfile_out='schedule_out.csv'
 
reader = csv.reader(file(csvfile_in, 'r'))
writer = csv.writer(file(csvfile_out, 'w'), lineterminator='\n')
 
writer.writerow(['Subject','Start Date','Start Time','End Date','End Time','Description','Location'])
 
i = 0
for row in reader:
if i != 0:
# print unicode(row[6], 'cp932').encode('utf8')
rw = [row[8],row[3],row[4],row[5],row[6],row[9]]
print rw
writer.writerow(rw)
 
i = i + 1
 

 

応用でサイボウズもいけますね、ファイル名もなぜか同じだし。
 

これをGoogleのAPIに投げてインポートまで自動化出来たらいいんだけどなあ。
テストツールを使えばともかく、取得元のDeskNet'sやサイボウズとかから取ってくるのをスクリプトで自動化するのが大変。
 
これだけだと汎用性が微妙にエクセルマクロ以下なので、WEBにおいて、CSVアップしたら加工して戻してくれるようにしたいな。
 
 

サイボウズLiveとか、もっとAPI充実しないかなー
 

2010年4月14日水曜日

pythonのコマンド一行WEBサーバは便利、ファイル転送やWEBアプリの確認に

性懲りもなく python なぞに手を出し始めていますが、初期モジュールにHTTPサーバがいくつか入ってます。
その中にWEBサーバがあるんですが、これに驚いた。
 

python -m SimpleHTTPServer
 

Windowsでもいいし、Linuxほかでもいい。この一行でカレントディレクトリをルートにしたWEBサーバがあがる。
 

画像:PythonのSimpleHTTPServerモジュール
 
 

デフォルトだと TCPの8000番で待つのでアクセスしてみる。
 

画像:WEBブラウザでアクセス
 

ちゃんとカレントのディレクトリリスト※が出ている、(起動したユーザのアクセス権によるが)もちろんブラウザやWgetからダウンロード可能。
 

※ index.html があったら優先される。
 
 

設定やら色々追加することでCGIにもなったりしてかなり使いでがあるようだが、とりあえずこれだけすればwget,ブラウザですぐファイルを運べるので覚えとくと便利。
相手が iphone とかでもいいんだよね。
 

覚えておけ!いいからPythonいれとけ!
 

2010年3月27日土曜日

XenのおまけのVNC、起動終了時のコンソール出力をクライアント側に

XenでVM起動するときに、組み込みのVNCを使うことができる。
Qemuのライブラリ使ってるとか何とか。
 

しかし、適当に順仮想で導入したCentOS5.4では、起動と同時にVNC接続できるのはいいんだがペンギンしか見えない。
 

DISPLAY情報とか起動シーケンスの文字が流れなくて実に寂しい思いをしたので出す方法を探ってみた。grub.confの書き換えでOK。
 
 

grub.conf をみたら デフォルト起動になっているセットのカーネルオプションに、
(略) console=xvc0
の記述が。

なるほどね、Xenの consoleコマンドで入る仮想端末にはちゃんと名前があって、それを指定していたのか。
 
 

ということでこれを丸ごと削除。
無事にVNCクライアント上で起動終了の様子が流れるようになった。

2010年3月24日水曜日

WEBサイト組み込み用途に最適?TightVNCのVNCViewer(Java)

VNCを適当に入れたら、ポート5800でWEBサーバが立つじゃない。
RealVNCのJavaのアプレットがぽつんと置いてある奴。
 

あれが重たい&ちょっと別用途でWEBブラウザから使いたいと思ったので別のものを探してみた。
 
 


TightVNC
http://www.tightvnc.com/
 
これが良かった。
 
 

Viewer Only のアーカイブをダウンロードしたら、サンプルのindex.htmlをclassesの中に放り込み、適当にWEBサーバの公開領域におこう。
それだけでVNCのクライアントが使える。まあ普通のJavaアプレットの展開と同じなんだけど。
 

TightVNCの利点はこのビュワーの手軽さと、軽快な動き。
RealVNCの奴は重たくてなかなか使い物にならなかったけど、これは軽い。CLIならほとんどストレスなく動かせた。
 
 


ちなみにサンプルのHTMLはこんな感じ。
最初直接叩いてみたが、*.jarが同一ディレクトリに無いと怒られる。
 
<HTML>
<TITLE>
TightVNC desktop
</TITLE>
<APPLET CODE="VncViewer.class" ARCHIVE="VncViewer.jar"
WIDTH="800" HEIGHT="632">
<PARAM NAME="PORT" VALUE="5901">
</APPLET>
<BR>
<A href="http://www.tightvnc.com/">TightVNC site</A>
</HTML>

 
 

このファイルを編集して、パラメータを渡せば別サーバに接続とか行ける。
<param NAME="HOST" VALUE="hoge.example.com">
 
 

さてこれをどっかに組み込んでみたいなと思ってる。
なぜ今更こんなのかっていわれると、VNCで使い勝手が上がるものがあるじゃない、Qemuとか、Xenとか・・・
 
 


ただ、これを別サーバ接続用のクライアントとして使おうとしたら、ポリシーの関係で なんだっけ、SocketPermission の違反が起きちゃうんだよね。
この制限解除はどこでやるんだ?できると助かる、サーバ側で指定できるといいんだがなあ。
 



追記
やっぱクライアント側か。。

fail2banでブルートフォース対策

以前のものでiptablesのipt_recentをつかって、2行のコマンドでsshのアタックを防ごうという記事があるのだけど、とあるサーバで適用できなかったので別手段を。
 
 


(ほぼ)共同で借りているVPSレンサバがあるんだが、OpenVZかVirtuozzoかのコンテナらしくてiptablesのモジュールが自由にできないのがある。
そこではipt_recentをつかうとエラーになってしまい、前述の簡単ブルートフォース対策が使えないのだ。
 
 


仕方ないので fail2ban を使うことに。
pythonで動く、アクセス制限操作用のプログラムだ。
ちなみに導入先はCentOS5.4。
 
 

fail2banのインストール


開発元のサイトから最新のStableを落とそう、記事の時点では0.8.4だった。
http://www.fail2ban.org/wiki/index.php/Main_Page
 

RPM があるみたいだけど、ここはtarボールで。簡単だから。
 

展開したらPythonのスクリプトを流そう、Python2.3以上がいるらしいが、
まあ問題ないだろう。
# python ./setup.py install
 
なんとこれだけで終わりだ、便利になったもんだ。

 
 

"/etc/fail2ban/" に設定が一式、"/usr/share/fail2ban"にpythonのスクリプトが入る。


  1. fail2ban.conf:基本の設定

  2. jail.conf:サービス別設定


これだけ覚えてりゃなんとかなる、今回は jail.conf しかいじらない。
 
 


fail2banの動作パターン


ログを30秒ごとに監視する⇒パターンマッチしたらアクション(iptables設定追加など)
一定時間経過⇒適用済みのアクションを解除
 
という感じだ。
 
 

色々細かい設定やテストが出来るが基本はこのパターン。シンプルで他に影響が出ない。
導入の敷居としては低いんじゃないかな。
 

※当然iptablesを動かして無いと効果がない。
 
 

sshの制限(設定)


じゃあ導入のきっかけ、sshの制限をしよう
 
 

jail.confにもともと書いてある設定をちょっといじる。太字は大事なとこで、他も適当に書き換えよう。
 

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
# sendmail-whois[name=SSH, dest=hogehoge@example.com, sender=fail2ban@mail.com]
logpath = /var/log/secure
maxretry = 5

 


有効にして、メール通知やログパスの設定を環境に合わせる。
通知はコメントアウトしているが、動作確認などでは便利なので安定動作を確認するまで使ったほうがいい。
 
 

sshの制限(デーモン稼働)


fail2banの軌道方法だけど、スクリプトが用意してある。
デーモンモードとなり、制御端末は切り離されるのでログアウトしても心配いらない。
# /usr/bin/fail2ban-client start
 

設定を変更した場合などは、
# /usr/bin/fail2ban-client reload
 
 

自動起動についてだけど、init.d/に置くスクリプトはとくに用意してないみたいだったので、inittabに書いちゃったな。
これについてはきっちり試してないのだが多分大丈夫だろう。
 
 


fail2banの様子


とりあえず同一のIPから600秒以内に5回ログインミスったらbanするように(さっきの設定)した。
デフォルトではbanして600秒たったら元に戻る。
 

"/var/log/fail2ban.log" にbanの様子が記録されるので見てみよう。

# tail /var/log/fail2ban.log
2010-03-23 18:20:55,628 fail2ban.actions: WARNING [ssh-iptables] Ban 211.142.19.251
2010-03-23 18:30:55,810 fail2ban.actions: WARNING [ssh-iptables] Unban 211.142.19.251
2010-03-23 21:35:14,533 fail2ban.actions: WARNING [ssh-iptables] Ban 211.142.19.251
2010-03-23 21:45:14,707 fail2ban.actions: WARNING [ssh-iptables] Unban 211.142.19.251
2010-03-23 22:33:37,424 fail2ban.actions: WARNING [ssh-iptables] Ban 211.157.108.132
2010-03-23 22:43:37,616 fail2ban.actions: WARNING [ssh-iptables] Unban 211.157.108.132
2010-03-24 00:00:34,088 fail2ban.actions: WARNING [ssh-iptables] Ban 64.3.96.221
2010-03-24 00:10:34,310 fail2ban.actions: WARNING [ssh-iptables] Unban 64.3.96.221
2010-03-24 00:53:33,939 fail2ban.actions: WARNING [ssh-iptables] Ban 211.142.19.251
2010-03-24 01:03:34,114 fail2ban.actions: WARNING [ssh-iptables] Unban 211.142.19.251


おお、引っかかってるね。Banして、10分後にUnban、10分もすりゃたいがい攻撃は終わってる。
こいつらほっといたら万単位で試行しやがる、まったく。
 
 


ついでにログを何秒間隔で掘っているのか気になったのでstraceして測ってみた。
# strace -p 26424
Process 26424 attached - interrupt to quit
poll([{fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 1, 30000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 1, 30000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 1, 30000) = 0 (Timeout)


30秒間隔見てるね、まー十分だろう。
 
 


他にも各種サービス用の設定がプリセットされていた、使いやすいツールの一つとして覚えておこう。
 

2010年2月18日木曜日

Hyper-VにOpenSolaris、ZFSのdeduplicationを試そう

前略、Hyper-VにOpenSolarisをインストールしました。
しかしそれは本題ではなく、ZFS(Zpool)のバージョン21から有効になった、データのデデュプリケーションを試すのだ。
 
 

ちなみにHyper-VにOpenSolaris入れるにはメモリたっぷりいるよ、失敗する人は増やせばOK。
VirtualBoxでもいける、VirtualBoxの方が相性は良さそうな感じ。
 

画像:Hyper-V上のOpenSolaris

ZFSのバージョンは22、『やっぱりSunがスキ!』よりテキストインストーラのbuild131だ。
 
 
 


じゃあリアルタイムのデデュープを試してみよう!
 

さて、makefileでファイルをつくり、それをデバイスとして"ddzfs"というZFSストレージプールを作りました。
"zfs set dedup=on ddzfs" で準備完了。プールじゃなくてファイルシステムが対象ね。
サイズは1GBだ。
 
 

1GBの領域に/dev/zeroをダンプして5GBのファイルを作るとどうなる?
こうなる。
 


画像:ZFS Dedupの様子
※VirtualBoxに変わっているのは諸事情のため差し替えたので。
 


手抜きでごめんねぇ、キャプチャだ。
雰囲気は伝わるだろう、途中で言い逃れできないようなアハ体験が訪れていることがわかる?。
 
 

しかしリアルタイムで計算してデデュープしてる割にはよいスループット出てるやん。リハのHyper-Vでも60Mちょっとは出てたし。
完全仮想なことを考慮したらすごく早い気がする。
 
 

用途がファイルサーバならCPUなんていつだって遊んでいるから実用にも全然つかえるんじゃないか?
メールサーバでも効果が高そう、C.C.での同報メールなんかは文字通りカーボンコピーになるね。
※ブロック単位なので実際はちょっと違うが。
 
 
 


send&recvとか試してみたいことは山盛りだが、なんかもう理解の範疇を越えてきたな。
ZFSほか、新しいファイルシステムにはどんどん期待がもてるね。
 

2010年2月9日火曜日

Virtualboxでx86用Android (1.6)

Androidを試したいという要望があったので調べたら、x86で動かすプロジェクトがあるじゃない。これならPCで動くんだ。
http://www.androidx86.org/
 
 

リモートデスクトップで操作することを考慮して、VirtualBoxに入れてみた。
 


 

公式のISOファイルを落としてきてそれから起動して仮想HDDにインストール、導入は数分で完了してしまったな。
ダウンロードに掛かった時間の方が長かった。
 

画像:android1.6 on Virtualbox
 

これはカンタン面白いので是非。
Nexus Oneはandroid2.1なので、1.6はちょっと古いのかな?
 
 


アプリケーションを追加するなど、もう少しちゃんと触ってみたいという場合は、このへんの情報を参考に導入したらよいようです。
>> Android-x86で各種設定、アプリケーションインストール
 

2010年2月8日月曜日

Hyper-V上のCentOSをyumで最新のカーネルを入れてみる

普通に入れたら起動しないし、前回記事みたいにオプションを変更しても無理だった。
 

http://08thse.blog87.fc2.com/blog-entry-185.html
を見て、Genericの下の、RCU Subsystem あたりで調整。
CONFIG_SYSFS_DEPRECATED_V2=y
になるように。
 
 

画像:最新カーネル on Hyper-V
 

一応起動したが、Hyper-V用の追加機能が入れられなかった。
これじゃあちょっと使いもんにならない気がするので、yumで入れたバージョンに戻した。
カーネルとドライバ、どっちのせいで入らないのかなあ。
 

Hyper-V上のCentOSをyumでカーネルアップデート

したら次回起動で止まる。
 

性格にはvmbusを有効にすべく、追加機能をインストールしている場合に止まる。自動で追加されるオプションの影響みたい。
 


追加機能導入後の状態でyumからカーネルをアップデートしてしまうと、 起動時に switchroot の所で新しいルートをマウントできずに止まっちゃう。
 


いったん grub.confでカーネル指定のオプションから
hda=noprobe hdb=noprobe
を消したらOKだった。


マトモに起動したら、追加機能を改めてインストールすればよろし。

2010年2月1日月曜日

WindowsVistaからWindows7にアップグレードしようかという時の制約

なんだかんだと検証でVistaを入れていたマシンに、折角だからとWindows7のDVDを入れてみた。
 

アップグレードインストールを選択したら、以下のような制約があることを教えてくれた。
 
 

Windows をアップグレードするには、ユーザー、Program Files、Windows の各ディレクトリが同じパーティション上にある必要があります。これらのディレクトリが同じパーティションにない場合、アップグレードはサポートされません。また、これらのディレクトリを同じパーティションに移動することもできません。代わりに Windows 7 Enterprise の新規インストールを行うことはできますが、アップグレードとは異なり、新規インストールではファイル、設定、プログラムが保持されません。現行のプログラムはすべて、元のインストール ディスクやインストール ファイルを使用して再インストールする必要があります。Windows のインストールを行う前にファイルを保存するには、CD、DVD、または外付けハードドライブなどの外部の保存場所にバックアップしてください。Windows 7 Enterprise の新規インストールを行うには、左上隅にある [戻る] ボタンをクリックし、[新規インストール (カスタム)] を選択してください。

 

プロファイルをDにうつしちゃったからかなあ。
最近はHDDもでかいし、CにシステムいれてDにユーザデータとProgramFilesを入れるのも古い考えかたなのかもしれない。
 
 

ChormeOSとまでは言わないけど、今後は手元のPCは構成を極力シンプルにして、データストアはどっかのクラウドをどんどん使っていくのがいいだろうね。
 

宅内のNASでもいい、オンラインストレージでもいい。
物理デバイス(HDD)を基準にしたパーティショニングは考え方から改めて行きたいね。 
 

2010年1月22日金曜日

イーモバイル Pocket WiFi のファイアーウォールを無効にしたら、WANからログ インできる

ほぼタイトルオンリーだが、驚いたのでエントリ。
 
 

イーモバイルの「Pocket WiFIことD25HW」 なんだけど、ルータとして所々妙な動き。
中でも驚いたのは本体設定のファイアーウォール機能を無効にしたら、WAN側の回線からHTTP管理画面が開けるところ。
 

確認したのは 2010/01/16 に契約した端末で、ソフト的にはこれ。
ファームウェアバージョン:
706.11.174.12.109sp07

 
 

これはファームウェアの改良希望だな、そっちにバインドせんでええちゅーねん。
 

ほか、うちの環境だけという奴もあるかもしれないが、現行ファームでなんか変な所。
・ファイアウォール機能をONにしたら、ipod touch からプリセットでない自前設定したPOPSサーバに接続できない。なんだろねこれ。
・余計なトラフィックを外に流さないという、IPフィルタの設定がLAN側192.168.1.0/24 のルールばっかり、0.0.0.0 でいーやん。おかげでデフォルトのIPを変えづらい。
 
したは設定次第だからいいけど、上はなあ、、Touchはトラブルシューティングしづらいなさすがに。
 

ファームウェア更新の要望窓口を探さねば・・・
管理画面開くのははイヤん。
 

2010年1月21日木曜日

Pocket WiFi のIPアドレスを変えたら色々不都合がある、メール出来なかった り。

イーモバイルのPocket WiFi(D25HW)でインターネットに接続するも、メール出来んという事態に陥ったことはありますか?
 

私はあります、原因はファイアウォールの初期設定
デフォルトのネットワーク192.168.1.0/24 からLANの設定を変える、かつファイアウォール有効ではなんとSafaliによるWEBくらいしかマトモに動作しません。
 

おかげで「ipod touch」+「Pocket WiFi」というヨドバシ黄金セットが危うく全く使えないものになる所でした。。
 
 


POPサーバにつながらない、IMAP・SMTPも無理でどうも困ってしまったので、設定を色々いじったのが原因かと思ってログインしてそれらしい個所を探してみました。
 

[caption id="attachment_1659" align="alignnone" width="300" caption="画像:Pocket Wifiの設定画面"]画像:Pocket WiFiの設定画面[/caption]
 
 

結局FireWallを切ったらPOPアクセスOKでした、細かい設定が無いのでプリセットなんでしょうが、「デフォルトのLAN『192.168.1.0/24』」←コレはいろんな環境で被りそうで嫌じゃん。。。
 

まあ仕方ないか。
 
 

pocket WiFiでメール出来んぞ?という方がいたらファイアウォール切ってみてください。
その他、あれ動かんこれ動かんというのがあったら、きっとIPアドレスをデフォルトから変更していることに起因しています、潔く戻しましょう。
 
 



追記:なんか微妙に違うような気がする、結局ファイアウォールだけのもんだいかもしれない。
続編みたいな記事が出来ている。
イーモバイル Pocket WiFi のファイアーウォールを無効にしたら、WANからログインできる

2010年1月18日月曜日

Nagiosのプラグイン、check_multiを試す

Nagiosに一風変わったプラグイン、check_multiというのがある。主に通常のプラグインのラッパーとして利用する。
 

公式これかな?
http://my-plugin.de/wiki/projects/check_multi/start
 
 

基本的にはプラグインをまとめて叩くという使い方をする、他にも幾つかあるようだが。
 

まとめて叩くと何がいいかというと、Naigosの表示画面でまとめられたり、NRPE経由で呼ぶときに監視用のセッションが1つでよくなるなど挙げられる。
詳しいコンセプトは公式サイトに図入りで説明があるので、興味があれば参照されたし。
 
 



で、リクエストのやり方とレスポンスはこんな感じ。リモート相手の時はちゃんとホストを指定しよう。
 

コマンドラインから。
./check_multi -x “command [ procs ] = check_procs”-x “command [ load ] = check_load”

 

設定ファイルから
command [ httpd ] = check_procs -C httpd
command [ crond ] = check_procs -C crond


./check_multi -f configfile

 

レスポンスの例。
OK - 12 plugins checked, 12 ok
[1] httpd PROCS OK: 9 processes with command name 'httpd'
[2] crond PROCS OK: 1 process with command name 'crond'
[3] mysqld PROCS OK: 1 process with command name 'mysqld'
[4] ntpd PROCS OK: 1 process with command name 'ntpd'
[5] sendmail PROCS OK: 2 processes with command name 'sendmail'
[6] load OK - load average: 0.22, 0.13, 0.09
[7] dev_hda DISK OK - free space: / 57922 MB (83% inode=99%);


 

テストしてみたが、NRPE経由でもちゃんと動いた。
通知内容にもどのプラグインがどういう状態か載ってくるので心配ない。
 

ちなみにActionURLなど使って、NagiosのUIに統合出来るようになっているがそこまでやる事はないので、プラグインをコンパイルしたらそれだけ拾って使ってみてます。
 

結構いい感じだ。
 

2010年1月8日金曜日

VMware ESXi4 内にさらに仮想環境を構築するならスイッチはプロミスキャスモ ードで

仮想化を色々試しているなか、VMware ESXi4をベースにして、それ上に構築したVMにもハイパーバイザを入れるという環境を作ったときのメモ。
 

まあ載っけたのはXenなんですが、ちょっとマシンがたらなかったので無茶をしてるね。
狭い区画の中で、よりコマ切れにされたリソースを使って活動。。なんとも日本的な環境になったと思うわけで。
 
 

それはさておき、当然ネットワークは VMware ESXi4の仮想スイッチを通ってさらに中のXenへーとつながるわけだが、そのまま繋いだのでは孫に当たるVMが外部と通信できないみたい、。
対策として仮想スイッチのプロミスキャスモード(日本語版管理ツールでは無差別モード)を有効にすることで通信出来た。
 


理由について多分こうかなというのを図にしてみた。
 
[caption id="attachment_1655" align="alignnone" width="407" caption="画像:親子孫VM"]画像:親子孫VM[/caption]
 
 

いじるのは1の所にある仮想スイッチ、ここがプロミスキャスでないと既知のアダプタ2まではブリッジしてくれるが、知らない相手の3のアダプタ宛はブリッジしないってことだろうか。
スイッチと言いつつも多少通常のL2とは動作が違う、まあ設定としては妥当かも。
 

こうなるとMACアドレステーブルとか気になる所だな、まさか全部フラッディングするわけでもあるまいて。
学習・・・するのかな?
 
 


しかしプロミスキャスモードの日本語訳って「無差別モード」なのな。
スイッチのプロパティ開いたときに正直困惑したね、動作からしてプロミスキャスモードだとは分かったけど、なんか物騒じゃないか(^^;)
 
…と思ったが一応Googleで検索したら無差別の方が多いのな。。
いやあ、プロミスキャス(promiscuous)でいいと思うよ。いざ何かで英語版という時に困るし。
 

2010年1月7日木曜日

Windows上でcactiのpollerにspineを使うときのspine.conf

メモエントリ
 
 

WindowsでIIS+php+MySQLでCactiをセットアップして、pollerにspineを使おうとしてもデフォルトでは駄目。
 

spine.conf を見ると接続先 MySQLサーバ(host)の指定がlocalhostとなっており、そのままだとspineの仕様でunixソケットがないよといわれてこけるのだ。
 
 

127.0.0.1に変えるとよい。
 

2010年1月6日水曜日

Cactiでグラフが出ない -やたら長いOIDだとグラフ作成に失敗する-

CentOS5.4にyumでCactiを入れまして、Windowsサーバのネットワークトラフィック状況をグラフにしようとしたんだ。
 

しかし特に何も考えずにそのまま使おうとすると、SNMPクエリでOIDの一部をインデックス扱いするもののうち、その一部が255文字を超えるものはグラフ化出来ないので少々調べてみた。
 

ちなみにどういう場合に該当するかというと詳しい内容は省くが結構ある。
WindowsServer2003だと、NICのQoSを有効にしたらフレンドリ名が「(NICの名前)+パケットスケジューラ ミニポート」となる、この日本語がやたら曲者。
 
WindowsServer2008ではQoSを有効にしても英字で文字列が追加されたりと良くなっているが、もNIC周りをちょっといじればすぐフレンドリ名が長くなる。
突然「ローカル エリア接続 - 仮想ネットワーク」とかいうフレンドリ名が出来たりと余計になかなか。。。
 
 

結果、それがOctetStringでIOD一部として使われるとあっという間に長いOIDが完成。
 

SNMP Informantを使ったときにはそれがそのままインターフェイスの識別符号になるため困ってくるのだ。
せめて物理アドレスなりをインデックスにさせてくれればよいものを、SNMP Informantは最小限しかMIBを定義していない。
 

まあこんな感じになっちゃうのよね。
SNMP Informantでは networkInterfaceTable 以下のNetInstance(.1.3.6.1.4.1.9600.1.1.3.1.1) に続くOctetStringを各インターフェイスのインデックスとして使う。
 

「Microsoft Loopback Adapter」 ならこう。
 
netInstance.26.77.105.99.114.111.115.111.102.116.32.76.111.111.112.98.97.99.107.32.65.100.97.112.116.101.114
最初の26で文字数、後はASCIIなり。cacti用にインデックスとして扱える部分は77以降、94桁だね。
 

これ以降のOID、netBytesTotalPerSec とかでは末尾の文字列を参照しつつ、「Microsoft Loopback Adapter」 のものだと識別するわけだが。
 
 

これが「ローカル エリア接続* 2」(だと思う) ならこう。
netInstance.31.4294967267.4294967171.4294967213.4294967267.4294967171.4294967228.4294967267.4294967170.4294967211.4294967267.4294967171.4294967211.32.4294967267.4294967170.4294967208.4294967267.4294967171.4294967210.4294967267.4294967170.4294967202.4294967270.4294967182.4294967205.4294967271.4294967222.4294967194.42.32.50
 
インデックス用には300桁もいるじゃねーかよ!!
 
 


さてここらでCactiのグラフについて。
 

冒頭で説明した環境ではインデックス部になぜか 255桁しか入りません。つまり「New graph」作成の段階で桁が落ちちゃう。
これではそれ以降のSNMPクエリが出来ない(指定したOID+桁落ちしたインデックス用の数字でクエリ=UNKNOWN)ので、まったく値がrrdに突っ込めない。
 
 

これをインデックス扱いして使うにはMySQLでCactiテーブルの改造が必要だったのでその個所をメモっておく。
 
 

まずは[poller_item] のarg1,arg2,arg3。
ここのarg1にインデックスを入れるようになってるんだけど、これがTEXT型なのに255文字で切れている、切れたOIDが入っていたので多分ここだ。
細かい理由は調べてない、UTF8だからとかバッファ容量の関係とかそういう理由かな。。
MySQLのTEXT型の説明を少し見たけどややこしいのでよくわからん。
 

とりあえず全部varchar(512) に変えてみたら、グラフの設定はきっちりできた。
 
 

これ以降はどこをやればいいかはっきり調べてないが一応触った個所を。[poller_item]を最後に気付いたので、それまで結構いじってしまった。
もしかしたら後はまったくいじらなくてもいいかもしれないが、[data_local] ,[poller_reindex]あたりは怪しいかな。
 


  • [data_local] の [snmp_index] が varchar(255) だったので512にした。


  • [graph_local] の [snmp_index] が varchar(255) だったので512にした。


  • [host_snmp_cache] の[snmp_index] が varchar(255) だったので512にした..かったけどキーだったのでUTF8のままでは1024バイトの制限を超えちゃう。
    しかたないのでUTF8を諦めラテンにした。


  • [poller_reindex] の[arg1] が varchar(255) だったのでラテンで512。




 

とりあえずこれだけやればOKだった。
どれが必要かはちょっと精査してないが、もしも同じ悩みを持った人がいたら参考にしてちょ。
 
 

それにしてもMySQLのTEXT型は定義がややこしいな。
 

2010年1月5日火曜日

MySQLを救う!...ってどういうことになんだろう?

OracleがSun Microsystemsを買収します。去就が注目されるMySQLですが、相手がOracleというRMSDBの大御所だからなのか、MySQLを救えという呼びかけがあるようです。
 
 

MySQLを救え! ≫ 請願書への署名
 

サイトでは嘆願書に署名をするよう促しており、署名することで下記の事を支持することになる。
 

MySQLに関連する将来の技術革新を保障し、MySQL を主な競争力として保護すること

 
 

で、自分の立ち位置というのを3つのパターンから選択できるようになっている。
 

  • MySQL は、GPL のもとでその開発を続けることのできる適切な第三者へ放棄しなければならない。


  • オラクル社は、クライアントのライブラリとともに MySQLを使用するアプリケーション(全プログラミング言語について)に対し、またプラグインおよびlibmysqldに対し、リンク例外を約束しなければならない。 MySQLそのものはGPL のもとでライセンスされた状態に留まる。

  • オラクル社は、アプリケーションや派生バージョン(フォーク)の開発者がコードに関して柔軟性を保つことができるよう、MySQLの過去と未来の全バージョン(2012年 12 月まで)を、アパッチ ソフトウェア ライセンス 2.0または類似の寛容なライセンスのもとでリリースしなければならない。


 
 

……正直なところよくわかりません。これまでのSunの姿勢は是するもので、Oracleは否定されるべきって事なのかな。
 
 

しかしOracleに渡すとMySQL死ぬんか?
発表によるとなんか逆のように見えるが。。。
 




 

GPLによるMySQL組み込みのエンジンのソース公開要求を撤廃するし、APIを使うだけでもコマーシャルライセンスいるという体制も撤廃。
そしてSun時代より巨額の開発費を投じ、GPL版やその他のリリースも継続するという。
どの点で不満なんだろうか...?ごめん全然わからん。
 
 



こういう運動に対し、
『嘆願するより自分でMySQL買えばいいやん』それこそ募金でもして。
とか、
 

背景を理解してない不勉強というのを承知で詮索すると、「俺たちのMySQLが金満主義のOracleなんかに~!! イヤイヤ!良くならないに決まってるぜ!」っていうようにも見えるよね。
などと思ってしまう私はオープンソースの思想を理解してないんだね、きっと。
 

2010年1月4日月曜日

「Microsoft Web Platform Installer」を使ってWindowsにWordpressをインスト ール

検証用の WindowsServer2008 に Wordpressを入れてみようと思ったのです。テンプレート制作用ね。
 

FastCGIにphpを入れてー Mysqlを入れてー と手順を考えていたのだが、「Microsoft Web Platform Installer」 を見たらWordpressがラインナップされていた。
 
[caption id="attachment_1638" align="alignnone" width="758" caption="画像:WPI2.0アプリ選択画面"]画像:WPI2.0アプリ選択画面[/caption]
 
 

ちょっと興味があったので使用してみることに、どうなるんだろうか。
 


依存関係でインストールするソフトの一覧が表示される。
 
[caption id="attachment_1639" align="alignnone" width="700" caption="画像:Wordpress依存関係1"]画像:Wordpress依存関係1[/caption]
[caption id="attachment_1640" align="alignnone" width="700" caption="画像:Wordpress依存関係2"]画像:Wordpress依存関係2[/caption]
 

おお、MySQLがある。Rewriteとかもいるなあ。
ちなみにWindowsの状態は、CGIを有効にしたIIS7を入れただけでかなり素だ。
 
 


その後必要パッケージのダウンロートとインストールがはじまる。
 
mysqlがインストールされるのでroot@localhostのパスワードを聞いてくれる、なかなか気が利いているね。
 
[caption id="attachment_1641" align="alignnone" width="700" caption="画像:Mysqlインストールの設定"]画像:Mysqlインストールの設定[/caption]
 
 
そしてしばらく待つと。。。
 
[caption id="attachment_1642" align="alignnone" width="700" caption="画像:インストール中・・・"]画像:インストール中・・・[/caption]
 
 

Wordpressのインストール設定が始まった!
 
[caption id="attachment_1643" align="alignnone" width="700" caption="画像:Wordpress固有設定1"]画像:Wordpress固有設定1[/caption]
[caption id="attachment_1644" align="alignnone" width="700" caption="画像:Wordpress固有設定2"]画像:Wordpress固有設定2[/caption]
 
 

意外とスゴい、初期設定に必要なことは一通り聞いてきて、丁寧に作られているなあと思う。ここではさすがに色々入力する必要があるのでちゃんとやろう。
SQLServer2008も入れてるんだが、さすがにDB選択のリストにはないな(^^
 
 

で、完了と。
 
[caption id="attachment_1645" align="alignnone" width="700" caption="画像:WPI2.0完了画面"]画像:WPI2.0完了画面[/caption]
 
 


IEでwordpressにアクセスすると初期画面。
 
[caption id="attachment_1646" align="alignnone" width="763" caption="画像:Wordpress初回アクセス"]画像:Wordpress初回アクセス[/caption]
 
 

ブログを表示したらちゃんとされる。
 
[caption id="attachment_1647" align="alignnone" width="779" caption="画像:ブログ表示"]画像:ブログ表示[/caption]
 
 

実に楽ちんだ、、phpもmysqlも特に何も考えることなく導入されてしまった。
これは世話焼きすぎだろうに。。。と思う反面、WEBアプリなんてこうあるべきだよねーという気もする。
 

ほかにもjoomla!やXOOPSCubeLegacy(なんとホダ塾ディストリビューション)などをはじめ、wikiなんかも自動でインストール可能な様子。
アップグレードとかはどうすんだろとか気になる点もあるが、「Microsoft Web Platform Installer」は凄いな。
 
 
 

ついでにrewriteモジュールの存在をチェック。
 
[caption id="attachment_1648" align="alignnone" width="609" caption="画像:Rewriteモジュール確認"]画像:Rewriteモジュール確認[/caption]
 
 

ちゃんといるね、web.configに設定をすることでWordpress側で指定するパーマリンクの変更も出来ることを確認した。
 

つうかwordpress側もIISで動いていることを判断するんだなあ、パーマリンクの変更画面でちゃんとweb.configを指定して、なおかつXMLを表示してくれる。
 
[caption id="attachment_1649" align="alignnone" width="820" caption="画像:パーマリンク変更画面、rewrite指定"]画像:パーマリンク変更画面、rewrite指定[/caption]
 
 

ちょっと目を離すと進歩している、油断できんなあ。
 
と思いつつ、素のwindowsだったので「web.config」ファイルを作成したつもりが「web.config.txt(※拡張子表示なし)」というテキストファイルが作成されて『あれ、Rewrite動かん。。??』とか思ってしまった。
Serverの拡張子(=ファイル名の一部を) デフォルトで隠してどーすんのよと。そっちは感心できない。