雲の上はいつも青空 -38ページ目

雲の上はいつも青空

不思議な経歴をもつエンジニア!?の徒然なブログです。
お仕事関係の話が多いと思いますが、コメントとかもらえると中の人はとても喜びます(^O^)/

調べてみるとFAQみたいですが、結構やり方が大変なので、備忘録代わりに書いておきます。
また、人それぞれというかいろんなお作法があるようですが、私がいろいろ試して落ち着いた方法は…

1.起動時のkernelパラメータに追加で、Clockの変更を記述する。
2.adjtimexを導入する。
3.統計的に時計のずれを調査し、adjtimexでTick値を絞り込む。
4.後は、ntpなりopenntpdでNTPサーバと同期を取る。

このやり方で、VMwer Server 2.0.1 + Debian GNU/Linux 5.0 lenny環境で時刻の狂いは収まりました。

1.起動時のkernelパラメータに追加で、Clockの変更を記述する。
これは、デフォルトのクロックソースであるtscから、acpi_pmへ変更するという意味です。tscというクロックソースはCPUの割込みをベースに動いているので、仮想環境下ではどうもうまくうごかないようです。この辺はいろいろ調べてみると面白いのです。HPETというタイマーが一番正確っぽいですが、今回のケースでは残念ながら利用できませんでした。
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
で、どんなクロックソースが使えるか出てきます。
※VMware serverが可変クロック環境下での割込み動作を正確に再現できていない…というのが真相らしいですヽ(´ー`)ノ

VMware社のナレッジデータベースを見ても、どうやらacpi_pmへ変更するのが正解っぽいです。

具体的には、/boot/grub/menu.lst を開き、
title      Debian GNU/Linux, kernel 2.6.26-2-686
root (hd0,0)
kernel /vmlinuz-2.6.26-2-686 root=/dev/mapper/minolin-root ro quiet
initrd /initrd.img-2.6.26-2-686
を、以下のように変更して再起動します。
title      Debian GNU/Linux, kernel 2.6.26-2-686
root (hd0,0)
kernel /vmlinuz-2.6.26-2-686 root=/dev/mapper/minolin-root ro quiet clocksource=acpi_pm
initrd /initrd.img-2.6.26-2-686
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
acpi_pm

で、ちゃんとクロックソースが切替わっているか確認できます。

【追記】2009/10/26にVMware serverのV2.0.2がリリースされてまして、このバージョンを使うとデフォルトでクロックソースは、acpi_pmで起動します。ですので、このstep1の作業は不要となります。
リリースに関する詳しい情報はこちら

2.adjtimexを導入する。
これは時計関係のパラメータを変更するためのソフトです。
debian環境であれば、aptitude install adjtimex でインストールは簡単です。
70秒ほど待機すると、初期値を自動で設定してくれます。
インストール後は、adjtimex -p で設定内容が表示されます。
# adjtimex -p
mode: 0
offset: 0
frequency: 0
maxerror: 16000000
esterror: 16000000
status: 64
time_constant: 2
precision: 1
tolerance: 32768000
tick: 10024
raw time: 1245996646s 542050us = 1245996646.542050
return value = 5
このtick値が重要で、ここで時計の大まかな進み・遅れを調整します。
※ntpのようなソフトは、tick値は変更しないでその上にあるfrequency値を変化させます。frequency値は、tick値よりもっと小さい範囲で調整するパラメータのようです。


3.統計的に時計のずれを調査し、adjtimexでTick値を絞り込む。
まずは、時計のずれがどのくらいかを計測します。
host ntp.nict.jp で、タイムサーバのIPアドレスを一つ拾ってきます。
次に、そのIPを使って計測するのですが、私は180秒(3分)の計測を5回繰り返し、その一番大きい値と小さい値を捨て、残り3つで平均をとりました。
※ntpdateを使うので、インストールしてない場合は、aptitude install ntpdateをする。
※ntpdateはntpと同じポートを使うので、/etc/init.d/ntp stopでntpを止めておく。
# ntpdate 133.243.238.243; sleep 180; ntpdate 133.243.238.243;
26 Jun 15:39:00 ntpdate[10457]: adjust time server 133.243.238.243 offset 0.009573 sec
26 Jun 15:42:00 ntpdate[10461]: adjust time server 133.243.238.243 offset 0.341126 sec
まずは一行目がすぐ表示され、二行目は3分後に表示されます。
この二行目のオフセット値をメモります。
※上記の例だと、0.341126になります。
※この値が+だと時計は遅れていることを意味し、-だと進んでいることになります。

計測が終わり平均値が仮に0.32165だとします。
この平均値を計測時間180秒で割ると… 0.32165 / 180 * 100 = 0.17869%
つまり、約0.18%時計が遅れていることを意味します。

tick値=+1で0.01%時計が進むので、この場合だと現在のtick値に18をプラスして再度同じように計測します。二回ほどこの計測を繰り返し、tick値を決定します。
※tick値の設定は、adjtimex -t ○○と設定します。
※上手に設定できると、offset値は(例:-0.004478 secくらいに)小さくなります。

計算上のtick値の補正が1以下になれば、補正は完了です。
その値を、/etc/default/adjtimex に設定します。この際、frequency値は0(ゼロ)にしておきます。


4.後は、ntpなりopenntpdでNTPサーバと同期を取る。
ntpは補正する際にfrequency値を変化させていきますが、openntpdはfrequency値は触らないようです(どこで設定してるのかしら??)。
どちらの場合でも約20分ほど放置しておいて、ntpであればntpq -pで動作を確認してください。複数表示されるntpサーバ名のどれかに*マークがついていれば、クロックの同期がどれています。
openntpdの場合は、grep ntpd /var/log/daemon.log で、ログを検索し、clock is now synced というログが残っていれば同期がとれています。

結構面倒ですが私の場合上記の方法で、いまのところ時計のずれは収まっています。
ちなみにVMware server側では特別何も設定はしていません。
ホストOSがWindows server 2008 Foundationなので、単にwindows上でNTPサーバの設定を行っているだけです。

この方法は、仮想環境だけでなくスタンドアロンサーバでも有効です。
もし、なんだか知らないけど時計がずれて困る場合には使ってみるといいかもしれません。
最後になりましたが、sh2さんのブログがとても参考になりました。本当にありがとうございます。とてもロジカルですっきりしたブログ&文体でわかりやすかったです。


【追記】Windows serverにntpの設定って、意外と調べると手間取るので、簡単に書いておきます。
コマンドラインで以下のコマンドを投入します。
>net time /setsntp:ntp.nict.jp
>net stop w32time
>net start w32time
>w32tm /resync
以上のコマンドが全て正常終了すると、設定が終了です。
念のため、『サービス』を開いてみて自動起動になっていることを確認してください。
これで、このWindowsサーバはntpサーバとしても稼動しています。
雲の上はいつも青空Homeネットワークを変更しました。

まず、VM wareはWindows server機で実行させることにしましたが、最近の流行だとESXiでしょうね。

一応、ESXiの個人用ライセンスも貰っているので、次回チャレンジしてみます。

それと、Amazonで1万円以下で売っているWindows XP proを見つけたので即効Getしました。これで、AD環境下でのsambaサーバの検証ができます。
※しかし中古メモリーにバンドルのXP proでしたが、その中古メモリーって133のSDRAMでしたΣ(゚д゚;)

次に変更した点は、図には書いていませんが外部(インターネット側)から、HomeネットワークへログインできるようにVPNを構築してみました。
やり方は、dynDNS.comを使い動的IPですが名前解決できるようにして、VPNソフトはPacketiX VPN 2.0を使います。これって、V1.0のソフトイーサと呼ばれていた時代には仕事でちょっと触ったことがあったのですが、V2.0になり名前もPackeiXと変わっただけでなく、内容もすごい進歩というか進化していてびっくりしました。
※これならしっかり業務用に使えます。ちょっと認識を新たにしました!

評価用のライセンスを発行してもらい、現在試験運用中ですがとても気に入りました。
特にTCP/IPのセッションを複数張り、実際のスループットを上げる部分など、結構マニアックでプロ受けすると思います(ポイント高いです)。 Homeユーザ用のライセンスを近々購入することにします。

手順は思っているより簡単です。

1.dynDNS.comへ行きアカウントを作ります(無料)

2.自宅サーバのFQDNを決定します。複数あるドメインから選んで、あとはマシン名を入力すると使えるかどうか調べてすぐ結果が表示されます。
※私は、homelinux.comというドメインを選んで、それにマシン名を指定しました。

3.次に、VM Ware上で動いているDebian機にダイナミックDNSのクライアントソフトをインストールします。
aptitude install ddclient
自動的に、いろいろ質問される(ユーザIDとかパスワードとか…)ので、dynDNS.comで登録した内容を入力するとデーモンが動きだしますが、このままだと自分のローカルIPで登録しに行ってしまいます。
すぐに、/etc/ddclinet.confをあけて、最終行にuse=webを追加してください。
更新間隔の設定は、/etc/default/ddclientにありますから、そちらを変更してください。
※私は20分=1200秒に設定してあります。

4.PacketiX 2.0は、ソフトイーサ社のWebサイトへ行くとダウンロードできます。
お試し版はフルに全部の機能が使えるので、とても使いやすいです。V1.0を使ったことがある人なら、なんとなくインストール&設定が出来てしまうでしょうが、もし初めての方ならしっかりマニュアルを読むことをお勧めします。
ここのマニュアルは、とってもよく出来ているのでそれだけでも十分読み物として楽しめますよ♪

5.最後にブロードバンドルータに、インバウンドの穴(トンネル)を開ければ完了です。
私は、443(https)を使って接続するように設定しました。最近のブロードバンドルータであれば、オンラインゲーム用とかにインターネットからの接続を内部へ通せるような設定があるはずなので、お使いのルータのマニュアルを熟読してください。
※ネットワーク屋さん用語だと、ポートフォワーディングっていう機能ですね('~')
※もし、この辺に自信がないなら、適当に設定をしないほうが良いです。インバウンドの設定を間違えると重大なセキュリティホールが出来てしまいますから…

イーモバイルのPHSを使い、インターネットからHomeネットワークへ接続してみました。
当たり前のように、サーバの共有フォルダーが見えますが、何だか不思議な感じがします。
数メガしか速度がでないので、大きな画像ファイルとかは無理ですが、テキスト系のファイルなら自宅に居るように作業が出来るので、私のように個人で仕事をしているような人間にはとても助かります。

PacketiXの場合、VPNトンネル=イーサケーブル、VPN接続ゲートウェイ=仮想Hub、という考え方なので、Ether over IP(L2透過という意味)となります。つまり、VPNの接続が成立した瞬間にHomeネットワークのHubに刺さっているのと同じ状態になります。
ですから、IPアドレスも自宅で動いているDHCPサーバから貰いますし、dnsも自宅内のサーバを参照し、当然インターネットへのアウトバンドパケットは、自宅に設置してあるブロードバンドルータから送出されることになります。
※副次効果ですが、自宅までの経路は暗号化されているので、あまりセキュアでない無線LANスポットでも安心して使えます。
 
APCのES500というUPSも設置したので、これからの雷の季節にも安心です。

さぁ~後は、お仕事・お仕事… 営業活動、頑張らなくてはいけません。
雲の上はいつも青空110Ge痛鯖の続きです。

このサーバはベアボーンキットとかではなく完全な完成品ですので、梱包を開けて電源を挿せばすぐに動きます。 今回は、CPU交換とメモリーを増設、そしてHDDも一台増やしますので、側面のパネルを開けます。

ギガバイトってしっかり書いてあるマザーボードですが、ネットで調べてみると電解コンデンサーを固体コンデンサーに変えたり、BIOSが変更になったりと、サーバ用に強化されているようです。
くわしくはこちらへ… ここにほとんど全ての情報が網羅されています。

ミドルタワーのケースですので中も広く、CPU換装、メモリー増設も楽に出来ます。
CPUは、Core2Quad Q8200s 2.33GHzに、メモリーはDDR2-800 Unbuffed ECC付を4G(2Gx2)にしました。
これで仮想化への準備もばっちりです。

インストールですが、これは付属のDVD ROMを入れて起動するだけでドライバーも含めてインストールが完了です。リカバリーディスクのようなものだと思ってください。

ただ、この状態ではちょっと困ることがあり、2つほどドライバーをインストールする必要があります。
1.VGAドライバーの問題で、ワイドモニターに対応していません。
http://www.xgitech.com/sd/sd_download.aspへ行き、ドライバーをゲットしてください。
serverを選択し、次の項目は一つしかないので、最後はWindowsを選ぶとダウンロードできます。
このドライバーをインストールすると、ワイドモニターに対応できるようになります。
※私の使っているLCDモニターは、Acer X193Wですが問題なく使えています。

2.デバイスマネージャを開いてみるとわかるのですが、SMバスがエラーになっています。
これは、チップセット関係のドライバーの問題なので、インテルのWebサイトからゲットします。
サーバの選択画面になりますので、Windows server 2008を選びます。
すると二つほど候補が出てきますが、どちらを選んでも同じです。私が見た時点(2009/06/14)では、9.0.0.1008というバージョンでした。
このダウンロードしてきたドライバーを当てると、デバイスマネージャでのエラーはなくなります。

3.最後にWindows updateですが、すでにservice pack 2が出ているのでそれを当ててしまったほうが、結果的には早いかもしれません。マイクロソフトのWebサイトへ行くとたくさん情報がありますので、じっくり読んでください。注意することころは、Windows server 2008 Foundationは64ビットバージョンしかないので、x86を選択しないようにする事ぐらいです。

■以上で、110Geのインストール作業は完了です。
サーバとしての性能は別として、この痛鯖ですが家族にとっても評判が良かったです。
小学校2年生の娘からは、とっても綺麗でかわいい~♪ と言われました。
よく見ると結構エッチな絵なのですが、全体的にはかわいい雰囲気があって、家族みんなでシール張りをして楽しかったです。


---- 次は仮想化の話を書いてみます。