Xen上のWHSに2TBのHDDを増設しようとしてハマる

 

我が家のWindows Home Server(以下WHS)はCentOSのXen上に完全仮想化で構築されています。で、そのHDD容量が逼迫してきたので増設を決意。今なら最大容量である2TBしかないだろう、と思ったんですが、WHSはWindows Server 2003ベースなので、WD20EARSは問題になるかも知れないと思ってWD20EADSを調達しました。

どのみちLinux用のパーティションも必要だったので分割して、1.8TBをWHS用に確保(基本パーティション)。Xenのプロファイル的にはpsy:~という形式(これなんて呼ぶんだろ?)で、Domain 0上のパーティションを仮想マシン上の/dev/hdx(IDEな物理ディスク)に見せる方法でマウントしました。以前に追加したドライブもこの方法でバッチリ動いていました。

が、今回はNG。写真のようなエラーが出てWHS管理下に追加できません(クリックで拡大)。

Hard drive initialization failed. The Wizard was unable to create a volume on the hard drive.

(日本語版の人が同じエラーでこのエントリにたどり着けるよう、一応訳を書いておくと「ハードディスクの初期化に失敗しました。ウィザードはハードドライブ上のボリューム作成ができません。」となります。まぁ一言一句同じでないとあまり意味ないかもですが…)

なんとも情報の少ないメッセージで、原因についてはまったく触れてません。ちなみにマイコンピューターを右クリックして管理->ディスク領域とかからフォーマットしてもやはり失敗。

2TBのドライブといっても実質は2TB未満なので各種2TBの壁には抵触しない気がするんですが。ちなみに別のところでAcerのWHS機に同じWD20EADSを普通に増設できたので、WHS単独の問題ではなさげ。ということは、Xen絡みかLinux周りっぽい。ただXen+WHSなんてマイナーすぎてググってもあまり手がかり無し。

で、fdiskは2TBの壁があるらしいというので、partedでパーティション分割しなおしてみてもダメ。パーティションの順番を入れ替えてみてもダメ。

結果としてはパーティションサイズを小さくしたらOKでした。で、その壁はどうやら1TB。parted上で1100GB確保すると、WHS上では1TBと表示されて失敗。同1000MBだと931.32GBとなりOKでした。うーむ、理由がわかんないですね。まぁ、別パーティションをもうひとつ作ってWHS上で結合して使えば実質的な不利益はないんですけど、なんか悔しい。それが可能かどうかは追って検証します。既にWHS用にドライブを4つマウントしてるので、Xen的に/dev/hda~/dev/hddまで消費しちゃってるので(いや、普通に/dev/hdeとか可能?)。少し様子をみて古いHDDを外してから挑戦します。

FireFox Weaveの自前サーバーを立てる

FireFoxのブックマークやパスワード、設定などをPC間で同期するWeave Syncというアドオンの正式版がリリースされました[impress]

σ(^^)のように何台ものPCを使い分けている人間にとってはとても便利そうなツールなので早速導入。ただWebサイトの認証情報まで外部サイトに預けるのはちょっと抵抗が。万全の体制で管理されているであろう公式サイトと、半端な知識で運用している自サイトのどっちが安全化は議論が別れるところですが、まぁ技術的関心もあってとりあえず自前サーバーを立ててみることにしました。

ざっとググった感じ最新の1.0プロトコルに対応したサーバーに関して日本語解説がなかったようなので、簡単にまとめてみます。まぁ、配布に含まれるREADMEのまんまなんですが。以下、既にSSLでコンテンツが公開できるApacheが設定済みという前提です。

個人運用向けに機能を絞ってリリースされているWeave Minimal Serverというバージョンを利用します。本家サーバーはMySQLを使って結構面倒なんですが、こっちはsqliteを使ってるし、DB構築もほぼ自動でやってくれるので導入が遙かに簡単です。Minimal Serverの正式な配布サイトは不明ですが、とりあえず作ってる人のこちらのブログ記事で「here」というリンクを叩けばtar玉が落ちてきます。

・インストール

解凍したファイルを適当な場所に配置します。ここでは /var/www/weaveserver/と仮定します。

次にApacheの適切な場所にssl.conf等に下記の赤字の行を追加します。

<VirtualHost _default_:443>
  Alias /weaveserver /var/www/weaveserver/index.php
</VirtualHost>

これで、https://ホスト名/weaveserverを叩くと、インストールフォルダのindex.phpを挿すようになります。SSL.confにだけ書くので、暗号化無しのhttp://ではつながらないので安全です。

またインストールフォルダ内にsqliteがDBを作成するのでApacheユーザが書き込める権限が必要になると思います。

・JSONライブラリの追加

ウチの環境(CentOS 5.4、PHP 5.1.x)ではPHPのJSONライブラリの追加導入が必要でした。PHP 5.2以降だといらないみたいです。

# pecl install json

でインストールしてから、/etc/php.d/json.iniを作成し、

extension=json.so

と記入し、Apacheを再起動しておきます。

その他、sqlite3などを利用するので環境によっては追加インストールが必要になるかも知れません。

・ユーザDB作成とユーザ登録

以上の準備が整ったらブラウザから、

https://ホスト名/weaveserver/1.0/blah/info/collection

にアクセスします。BASIC認証ダイアログが出るので、IDにblah、パスワードはデタラメでいいのでOKを押します。認証は失敗しますが、これでインストールフォルダの中にweave_dbというファイルが作成されているはずです。

最後にインストールフォルダ内のcreate_userスクリプトを(シェルから)実行します。

# php create_user

作成はcを入力し、ユーザ名とパスワードを設定(rootじゃなくてもDBに書き込み権があれば一般ユーザでもいいかも)。

FireFoxのWeave Syncアドイン上でのカスタムサーバーURLには、

https://ホスト名/weaveserver/

を指定します。

ウチでは以上で動きました。

IPv6問題解決

ここんとこIPv6問題(Google等の一部のIPv6対応サイトにIPv6でつなごうとしてタイムアウトするまでの時間が無駄にかかる、もしくはタイムアウトしてエラーになる)に悩まされていました。どうもいくつかの偶然が重なって起きてたっぽいです。

  • ウチのプロバイダIIJmioはIPv6対応に積極的でDNSがIPv6対応済みのため、IPv6対応サイトに関してIPv6(AAAA)レコードも返してくる(IPv4で問い合わせた場合でも)
  • 最近のOperaはOS設定無視してIPv6優先でアクセスしようとする(→結果タイムアウトする)
  • ウチのルーターMN8300はIPv6トンネリングに対応している
  • 今までWindowsマシンではIPv6スタックをわざわざオフしてたけど、Windows7のリモートメディア共有機能を使う為にオンにした
  • (これは関係ないかもですが)NTTのBフレは地域網内専用のIPv6アドレスを振る(インターネットとは通信できない)

という条件がかさなって現象が発生していました。昨日書いたサーバー機のyum updateが遅い件もそうですね。あっちはIPv6を無効にしても困らないのでそうしましたが、Windows7機に関してはリモートメディア共有を使いたいのでIPv6自体を無効にしてしまうワケにはいきません。

で、改めて色々ググってわかったことには、DNSへの問い合わせがIPv4かv6かってことと、返ってくるレコードがv4/v6どっちかってことは全く独立であるということです。

今まではなんも考えずにLAN内のマシンはDNSサーバーとしてルーター(MN8300)を指定していました。MN8300はPPPoEで割り当てられたIIJのDNSサーバーを使うので、結果として、IPv6アドレスを含む返答が返ってきていました。

dns_iij

この結果として、Operaやyumのような一部ソフトはまずIPv6での接続をしにいってしまいトラブルになっていました。余所のDNSを勝手に使うのはマナー違反だし、じゃぁこれを回避するにはLAN内にIPv6を無効にしたDNSキャッシュサーバーを別途立てるしかないかなぁ、とため息をつきかけてふと気付きました。そういえば先日Googleが公開DNSを提供しだしたじゃんか!と。てことでDNS設定を8.8.8.8/8.8.4.4とGoogleのものに変更(さすがGoogle、こんなアドレスまで良番とってますな)。

dns_google

おぉ、IPv4だけだ。むしろGoogleの方が積極的にIPv6に対応してそうなイメージですが。実際この設定をしたマシンからならOperaも普通にGoogleが開けるようになりました。

ので、LAN内のDHCPサーバーが知らせるDNSサーバーアドレスをGoogleのものにして対応完了。Windows7導入して一ヶ月半くらいぶりに快適なネット環境が戻って来ました。

Linuxで妙にネットワークが重い時の覚え書き

CentOS5マシンで久しぶりにyum updateしたら、パッケージのダウンロードがやたら遅いことが発覚。fastestmirrorの設定を見直しても変わらず。そもそもウチはIIJmioなので、ftp.iij.ad.jpミラーで遅いワケがない。でもほんの数十KB程度のパッケージでも2,3分かかる始末。

で、結局何が悪かったかというと、IPv6でした。DNSのフォールバックに時間食ってたみたい。こちらのブログを参考にさせてもらって無効にしたところ見違えるようなスピードでパッケージが落ちてきました。

XenのDom-0機だったので基本通信しないので今まで気付かずに使ってたんですね(^^;)。

サーバー機のCPU換装メモ

先日までリビング録画マシンに使っていたAthlon X2 4850eが余ったので、サーバー機(ML115 G1)に転用してみました。もともとAthron 64/3500+(2.2GHz, 62W)がついていたのを、X2 BE2400(2.3GHzx2, 45W)に換装して使っていて、今回、2.5GHzx2, 45Wと微妙なクロックアップ。

ただ、ML115は倍率が整数倍しか効かないようで、BE2400では定格が11.5倍のところ11倍動作で2.2GHz動作でした。今回の4850eも同様で2.4GHzと表示されます。またモデルが「Unknown CPU」となるのも同じ(まぁ2007年からBIOS更新されてないので当たり前ですね)。

ちなみにUnkown認識だとLinuxではCool’n Quietは昨日しないみたいですね。どのみちXenカーネルの場合、3.3以降でしかpowernow-k8が機能しないのでCentOS(最新5.4でもXen3.0.3)のウチでは意味ないんですが。