HDD 組み替え

会社のサーバのプロジェクト用の HDD の空き容量がかなりヤバくなってきた。とはいえ、3 週間後にはマスターアップも控えている。このような状態でサーバをいじるのはよろしくない。しかし、マスターアップまで持つかどうかもちょっと怪しい感じだ。そこで、既に終わったプロジェクトのデータを他のドライブに待避させて、HDD の空き容量を空けることにした。
とはいえ、サーバにはすでに 7 台もの HDD がつながっており、それぞれが様々な用途に利用されている。

各部署に 4TB x 2 の RAID(ミラーリング)が組まれているのだが、このうちの一つを解体し、4TB をもう一台買ってきて、4TB x 3 の RAID-5 で運用することにした。

  • 当初の構成
    • 500GB x 1(System)
    • 4TB x 1(FTP 用)
    • 4TB x 2(ミラーリング:SVN、DB、部署 1 & GLacé & Galette が使用)
    • 4TB x 2(ミラーリング:部署 2 が使用)
    • 1.5TB x 1(共有用)
  • 新しい構成
    • 500GB x 1(System)
    • 4TB x 1(FTP 用)
    • 4TB x 2(ミラーリング:DB、部署 1 &部署 2 が使用)
    • 4TB x 3(RAID-5:SVN、GLacé & Galette が使用)
    • 1.5TB x 1(共有用)

GLacé  / Galette だけで 4TB を使いつぶす勢いだったので、GLacé / Galette を独立させた。エロゲってけっこう容量食うんだなぁ……。スマフォ、コンシューマは画面が狭いことも有り、GLacé / Galette の 1/4 も使ってなかった。
驚いたのが、ソフトウェア RAID-5 のファイル転送速度。150 ~ 160MB/sec 出た。しかも再構成中だったのに。凄いなぁ。
金曜の夜中、全社員が帰ってから作業を始めて、土日かかるだろうなと思ったんだけど、土曜日の午前中で終わってしまった。せっかくなので、現在進行中のプロジェクトも移行した。これでまた当分は大丈夫そうだ。1 年は保ってくれればいいんだが……(^^;
filecopy

NTFS の圧縮がイイ感じ

プロジェクトが一つ終わったので、会社のサーバのプロジェクト・フォルダと Sub Version のフォルダと MySQL のバックアップをとった。バックアップ先は外付け HDD にとっている。で、サーバ側の HDD は 4TB のミラーリングなのね(4TB x 2)。ところがバックアップ HDD は 3TB しか容量がない。そこで、NTFS についているドライブの圧縮ってのを使ってみてるんだけど、これがなかなかイイ感じ。バックアップが終わったあとの容量は、以下の通り。

1,587,255,023,066 / 2,452,017,136,145 バイト

右の数字が、データのサイズ。左の数字が実際に HDD を占有しているサイズ。実質 64.3% になってる。今後もこの圧縮率が保たれるなら、4TB すべてバックアップできそうだ。有難い。

じゃぁ、そもそもサーバのドライブも圧縮すればいいじゃんって思うかもしれないが、圧縮を ON にすると書き込み速度がものすごく落ちてしまうのだ。サーバは 40 人近くの人が使っているから速度を落とすわけには行かないのである。
まぁ、何はともあれ、エロゲの開発データのバックアップをとる場合、バックアップ元 HDD の 65% の容量の HDD を買ってくれば良さそうだ。

ところで、この 65% と言う数字は飽くまでもウチのサーバでの話だ。例えば MPEG や H246 などの圧縮された動画ばかりが入っている HDD はそんなに圧縮されないのではないかと考えている。と言うのも、これらの圧縮されたデータはこれ以上さらに圧縮することができないくらいに余地がない。なので、NTFS の圧縮は意味をなさないのではないかなぁと思っている。今度実験してみるかなぁ‥‥‥。

XMail で任意のドメインを、無条件に他の SMTP サーバに転送する方法

bs_hina03r
ボクの勤め先のメール・サーバはボクが立てた glace.me ドメインのモノがある。ただこのメアドは当然うちのブランド用にしか使えない(汗)。親会社は別のメール・サーバを持っているわけだが、メーリング・リストやその他、メールの様々な機能は提供されておらず、現状 glace.me サーバに依存している。
とはいえ、親会社の仕事に glace.me というドメインは使えない。
で、今まではどうしていたかというと、親会社のメール・サーバに転送専用のアドレスを作り、その転送先を glace.me にしておいたのだ。こうすることによってメーリング・リストや新入社員の新しいメアドなどは実体を glace.me 上に作っておき、クライアントや名刺などには親会社のドメインを入れておくわけだ。
ところが困ったことが生じている。それは親会社の分のメールの管理もボクがしなければならないと言うことだ。特にメーリング・リストではプロジェクト・メンバーの出入りがあるとその都度ボクが追加・削除しなければならなかったし、今誰がメンバーに入っているかをプロジェクト・リーダに伝えなければならなかった。
ちなみにメーリング・リストにはリスト・プロセッサという機能があり、そのメーリング・リストにコマンドを書いて送ると、メーリング・リストへの加入や脱退、そして加盟者の一覧を取り寄せることが出来るのだが、これはセキュリティ上殺している。万一、メーリング・リストのアドレスが洩れた場合に第三者から情報を引き出されるのを防ぐためだ。

で、思いついたのが本社用のメール・サーバを別に立てて、本社の人に管理してもらうこと。この時、メール・サーバは LAN 内専用のサーバとなってしまう(つまりインターネットからはアクセス出来ない)。というのもプロバイダは一つしか契約していないし、外向きのメール・サーバはすでに glace.me が稼働しているからだ。ただ、どうせメーリング・リストにしか使わないサーバだから、社外から見えなくても良いのだ。これがメール・ボックスも設置するとなると、外向きのことを考えないといけないが(その場合はルータに仕掛けが必要になる)。

メールの流れはこうだ。

  1. LAN 内メール・サーバ用のドメインを作る -> ml.glace.me
  2. ml.glace.me 宛てのメールが来たら、それを LAN 内のメール・サーバに転送する

うちでは XMail というメール・サーバを使っているのだが、どこをどう探しても任意のドメインだけ他の SMTP サーバに飛ばすという設定が見つからない。単純にドメイン転送ってのはあるんだけど、この方法だと転送元にも同じユーザがなければ機能しない。つまり ml.glace.me に hoge という名前のメーリング・リストを作った場合、glace.me にも hoge というメーリング・リストを作らなければならないのだ。なんだそれ!? それじゃぁ、ml.glace.me でメーリング・リストを作るたびに、glace.me でも同じものを作らないといけないではないか。

というわけで色々と英語と格闘したり、いろんな掲示板を徘徊したりして、どうやらカスタム・ドメインという設定があるというのにようやくたどり着く。XMail の MailRoot ディレクトリにある custdomains というディレクトリの中に転送したいドメイン名のファイル名を作り(この場合、ml.glace.me.tab)、そのファイルの中に転送したい SMTP サーバを指定すると、転送したいメールが来たときにすべてその SMTP サーバに転送してくれることが解った。

ml.glace.me.tab の中身
“smtprelay” “listserver.glace.local”

こうすることによって、めでたく ml.glace.me 宛てのメールはすべて listserver.glace.local というサーバに転送されるようになった。ちなみにこの  listserver.glace.local は仮想サーバである。いやー、ホント、仮想マシンは便利だ。ちょっと何か新しいサービスを立てたいとき、実験したいとき、仮想サーバを立ててそこに入れればすぐに動かせる。昔は何か実験するんでも余っているマシンとかパーツとかを見つけてきて組み立てて、OS インストールしてとかやっていたんだけど、今や、ほぼボタン一発でもう一つサーバが出来てしまう。うーむ、恐ろしい。

最後に、ここであげているドメイン名はあくまでも説明のためにテキトーにつけたモノなので、実際はこれらの名前で運用されているワケではない。

事務所のサーバの RAID が飛んだ

3/12、一週間前の出来ことです。事の発端は、16:35 、事務所のサーバの D ドライブが消えたという報告だった。それを受けてもう一人の管理者がサーバの再起動をしたが、D ドライブは復活しなかった。ディスクの管理を呼び出してみると、「ミラーリングの同期エラー」だった。なんだこりゃー、HDD 逝ったか!? つーても買ったの去年の 10 月やで! まだ5 ヶ月しか経ってないやん。
ということで、とりあえずミラーを分離。片方のドライブが、もう片方のドライブの半分しか容量を使ってないwww
これはヤバいと言うことで、とりあえず容量が半分の方を一度フォーマットし、ミラー再構築するも、わりとすぐにエラーで D ドライブが消えた(ミラーの同期に失敗すると、書き込みからの保護のため、Windows はミラー・ボリュームを OS 上から切り離してしまう。別にデータが消えるわけではない)。
こりゃー完璧に HDD が壊れたな……と判断し、ミラーを解除したら今度は正常なドライブまで読み出せなくなった。
これには一瞬焦ったが、プロパティを見るとちゃんと空き容量と使用容量が変わらずに残っていた。そこでこの HDD を別のマシンにくっつけると、無事認識。データは読み出せた。

ん~……こりゃ一体何だ?
ってネットを調べたら、すぐに答えが出てきた(ぁ

ちょwwwwマジスカwwww!!!!!
っていうか、RAID に使っちゃいけない HDD なんて存在してたのか!?
って知人に何となく聞いて見たら「あぁ、噂は知ってたから WD の Green は避けた」とか言いやがった。うそーん! ボクの情報収集不足かよー!! 悔しいっ!! キ─────!!!
もっともこれが原因かどうかは分からないが……でも現象的にはそんな気がする。
そもそもどちらの HDD も異音はしないし、他のマシンにつないでもちゃんと読み書き出来る。

仕方がないのでミラーとして使っていた HDD を、それぞれのシングルの HDD とし、容量の半分しかミラー出来ていなかった HDD を改めてフォーマットし直して、そっちにバックアップ。新しい RAID に対応した HDD を買うまで、HDD 1 台で運用することにした。バックアップした方は取り外して、とっておく。
なんだかんだで復旧したのは朝の 5:54 であった……。まーほとんどバックアップの時間だけどね。ほぼ 2TB つかってたんだけど、それのコピーに 8 時間以上かかったっぽい。きっついなぁ……。

WordPress のテーマとか

カリカリと WordPress のテーマ用の PHP 書いたりしてた。
ボクが担当しているブランドのウェブサイト公開が近づいている。今までは HTML を書いていたんだけど、今回のブランドでは各プロジェクト・リーダーに更新させようと思っている。プロジェクト・リーダーは HTML や CSS に明るいわけではないので、更新のシステムに CMS を導入することにしたのだ。それが WordPress だ。 で、WordPress でブランド用のサイトのデザインを作っておき、ディレクタは WordPress を更新するだけでよいという方法を試すつもりだ。

ただ、うまく行くかどうかは解らない。と言うのも、エロゲ・ブランドのサイトを WordPress だけで作れるかどうか疑問な点がけっこうあるからだ。バナーだけのページとか作れるのかなぁ……?? 実はよく解っていない。

もう一つの懸念点はまったく違うテーマ(デザイン)をページごとに適用したい場合だ。WordPress では特定の記事のテーマを切り変えることが出来るがしかし、これは単純に今あるテーマにそのページ用のデザインを作るという方法をとっていて、まるごとテーマそのものを切り替えることができない。
エロゲではプロジェクトごとにオリジナル・サイトを用意することが多く、プロジェクトごとにデザインも何もかもが異なる。で、色々調べていると、どうやら WordPress はマルチサイト機能というのがあって、そもそも複数のサイトを一つの WordPress で構築出来るらしい。
モードは二つで、サブディレクトリ・モードとサブドメイン・モードだ。
サブディレクトリ・モードというのは、例えば、 amatsukami.jp が親だとしたら、amatsukami.jp/products/ とか amatsukami.jp/developments/ とかサブディレクトリで別のサイトを構築するモード。
サブドメイン・モードは、blog.amatsukami.jp とか tamaki.amatsukami.jp とかサブドメインで別のサイトを構築するモード。
このマルチサイト機能を使うと、各サイトごとにテーマが 0 から設定出来る。なので、まったく違うページも、一つの WordPress で出来てしまうのだ。これは便利!!
というわけで、本ちゃんのサーバはすぐに設定が完了した。それは本ちゃんのサーバが Apache だからだ。WordPress でマルチサイト機能を ON にすると Apache の設定ファイルも生成してくれる。だから、それをそのままサーバに設定すればよい。
ところが更新前のテストに使っているサーバは Windows Server で、そこに WordPress を入れている。マルチサイト機能を使うには rewrite という機能が必要だ。これはどういう機能かというと、URI を色々と内部で書き換えてくれる機能なのだ。例えばサイトを引っ越ししたときに、旧サイトから新サイトへアドレスをサーバ側で書き換えたり、CGI の引数をあたかも HTML の静的ページに見せたりとかそういうときに使う。
IIS には rewrite 機能があるものの、設定の方法が Apache と違う。で、結論から言ってしまうと、Apache の設定をそのまま IIS に設定する方法があるのだが、ボクはそれを知らずに一生懸命 WordPress の rewite の仕様を探してしまった……orz
rewite の仕様を読み、それから WordPress の書き換え後の URI を調べようとしたのだが、とにかくこの WordPress の書き換え後の URI について解説しているページが見つからなくて、あーでもないこーでもないと色々試行錯誤しつつ、だめだー 404 エラーになるーって途方に暮れていたのだ。
で、ふと IIS の rewrite の設定を見てたら、インポートって言うのがあった。よく見ると、.htaccess に書く Apache の設定をそのまま書けばそれがそのまま IIS の設定になるらしい。イヤン、もっと早く言ってよ!!!<お前の目が節穴なだけだ

ということで、無事、テスト・サーバでもマルチサイト機能が動くようになった。
で、まぁ色々とスキンもとりあえずトップページ用は完成したので、更新準備完了。
これから WordPress とは長いつきあいになりそうである。
紹介する曲は、アランフェス協奏曲。ギター協奏曲というクラシックではけっこう珍しい協奏曲。もっともこれをクラシックを認めない人も多いけど(笑)。その昔 Falcom の Brandish っていう RPG のオープニングはこれのパクリオマージュである(ぁ

たまきんは、正月に何をしていたか?

新年最初の更新です。が、まだ明けましておめでとうは言いません(汗)。
とりあえず年末年始の動きをざさっと。
マスターアップが一件近いので、基本的に仕事してました。スクリプト、プロット、他。親が帰省したので、ちょうど良いというか、一人で静かになれたので。でも考える時間が多くて、振り返ると進みが悪い。プロットの作成はひたすら資料集めとアイデア出しなので、思うように行かない。
他にも仕事用のサーバ周りをいくつか。というわけで今日はサーバの話です。たぶん長いです(ぁ

Hyper-V の仮想ネットワークとNAT

今 amatsukami.jp サーバは VPN を貼るのに仮想サーバを使っているんだけど、その理由は Hyper-V で構築した仮想ネットワークでは NAT をしていけないようで、仮想ネットワークに NAT を設定すると極端に転送速度が遅くなる(この辺とか、この辺とか、この辺とか、この辺)。なので、VPN を仮想サーバ上に構築し、そこで NAT を実現している。
でも考えてみれば、amatsukami.jp サーバには NIC が 2 枚刺さっている(Intel の NIC ともともとマザボについていたカニの NIC)。しかもカニの方を殺している。そこで、カニの NIC を復活させ、そこに仮想ネットワークを構築し、Intel の NIC をファイル転送用&外向きにした。仮想マシンでは主にメールや LDAP のやりとりが主なので、まーカニでいいでしょうと。
で、NAT とか VPN とかの設定をしようかなーと思ったんだけど、とりあえず NIC を二個使う設定をしたところで満足してやめてしまった(マテ

Redmine のデータベース移行

amatsukami.jp で運営している Redmine が不安定だというのは以前日記に書いた。結局それは解消されておらず、一日に一回 Redmine を再起動することで回避しているのだが、そもそもこの回避方法が気に入らない。結局原因は何なんだ? と言った所で、さすがにこれは他の人も困っているはずだろうと色々ネットをあさって調べて見たら(この調べるのに時間がかかる。しかもほとんど英語だし)、どうも最近は起きないらしい。それはつまりどういうこと? 最新の Redmine を入れれば起きないってこと?
というわけで、実は去年末から新しい仮想サーバを立ち上げ、そこに Redmine 2.2.0 を入れて試験運用してみていたのだ。で、とりあえず数日たっても落ちずに動き続けていることを確認。そこで古い Redmine からデータベースを移行して動かしてみた。

それからまた数日問題なく動いている。おぉ、これは成功かもしれん。いや、ただ単にバージョン・アップしただけだけどね!

さらにまた数日、データベースを移行しても動き続けていたので、本格的に事務所のサーバに Redmine を構築することにする。実は 20 時間ほどで飛んでしまうという現象のおかげで、勤め先のサーバには Redmine をセットアップしていなかったのである(この飛ぶ現象が解決できたら、入れようと考えていた)。
というわけで、勤め先のサーバに仮想マシンを立ち上げ、そこに Redmine をセットアップ。そしてデータベースを移行。これまた数日様子を見る。
そして数日後、無事、事務所の Redmine も動き続けていた。これが 1/1 の AM8:00 であった。
苦節 2 週間くらいであろうか。去年の 12 月の下旬頃からあれやこれやと実験を繰り返し、ようやく事務所サーバでの Redmine 運用にこぎ着けた。あー、めんどくさかった。もっとちゃんと英語が出来れば、たぶんもっと根本的な解決出来た(バージョン・アップせずに原因をつぶせた)と思うんだけど……結局バージョン・アップという形でなんとか解決できたようだ。

サーバの完全移行

実は Redmine は amatsukami.jp サーバに残っていた最後のサービスであった。
どういうことかというと、ボクの勤め先のサーバ機能は、最初 amatsukami.jp サーバを利用していたんだけど、去年の 10 月にサーバを用意してもらって、それから 1 ヶ月ほどかけて amatsukami.jp サーバから新しいサーバに移していた。でもこの Redmine だけは解決できず、ずっと amatsukami.jp サーバで運用していたんだけど、この 1/1 の朝 8 時を持って、amatsukami.jp サーバのすべての機能が、新サーバへと移行した。長かった~~~。ようやっと新サーバですべてが完結できるようになった。
amatsukami.jp サーバは今後、ボク個人の同人とかのサーバとして利用される予定である……っていうか、同人ソフト作る時間をください……orz

Perl が動かない

今日こそは PHP を動かす!
というわけで、色々悪戦苦闘。0 から入れ直してみたりとか……でも、そもそもあんまりやることもない。
仕方がないので手がかりを見つけるために、PHP HTTP エラー 500(内部サーバエラー)で検索しまくった。
そもそもエラー 500 というのは漠然としたエラーというか、「なんか CGI がこけてんぞ」っていうようなことを表す程度のもので、CGI が動かなかったらだいたいこのエラーが返ってくる。だから HTTP エラー 500 なんかで検索しても、様々な原因がヒットするわけで……もはやこれを一つ一つしらみつぶしに見ていって、心当たりのありそうなものを探すしかない。
まさにローラー作戦である。

が、思いの外、原因はすぐに特定できた。
php.ini にTIMEZONE を設定する項目があるのだが、そこが何も書かれていないとエラーになるらしい。
そんなの今まで設定したことありませんけどー<マテ
とおもって、amatsukami.jp の方の php.ini を見たんだけど、特に TIMEZONE の設定はされてなかった。
んー、違うんじゃないかなぁと思いつつも、Asia/Tokyo を php.ini に設定してみる。
すると、動いた……orz

うが─────!!!!

この二日間はなんだったんだ……orz
まぁそんなこんなで PHP は動くようになったのだが、5.4.4 を入れたため、Pukiwiki Plus! は動かなかった……。
どうしようかなぁ、これが動かないといろいろ困るんだよなぁ。

で、新しい社屋には会議室が二つある。
で、本社にも一つある。
本社の人がこちらの会議室を使うこともある。
誰がどの会議室をいつ予約しているのかというのをウェブ上で見られるようにすればよいかなと思い、テキトーな会議予約システムを設定してみたのだが……今度は Perl が動かない!! うぎゃー、なんでじゃ!? と思って、サーバ インストール時に仕掛けた Perl で作られたシステムは動く。どういうことだ??

調べて見ると、Perl.exe では CGI としてちゃんと動くことが判明。
ところがこの Perl.exe は相対パスとかその辺に  UNIX と互換性がなく、Windows 版の Perl.exe で動かすことを考えて作られているプログラムなら問題ないが、それを考慮してないものは、ISAPI 版を使わないと行けないんだけど、この ISAPI 版の Perl が動かない。なんか、無許可の動詞を実行しようとしたといってエラる。そもそもすべての動詞を許可していますけどー。
その後、色々調べるも、IIS で POST(動詞の一つ)を受け付けなくなるというところにはたどり着いたんだけど……うーん、なんか違うような、あっているような??

というわけで Perl と悪戦苦闘するハメに……うもー、なんなんだ。
しようがないので Perl はおいておいて、会議室の予約システムを PHP のものを設置してみた。
phpScheduleIt というシステムで、なんでもこの手の予約システムでは定番のシステムらしい。で、設置はすんなりいったんだが、これが重い!! なんでこんなに重いんだ!? というわけで、ボクの感触としては設置に失敗しているような気がするんだよなぁ。だって 3GHz オーバーの最新の CPU のサーバだし、それでこんなに重いのはおかしい……。
実際に使ってみた人からも「重いんですが」という苦情が……うーん、PHP そのものの設置に失敗しているのか、それとも MySQL の設定が不味いのか、それとも phpScheduleIt の設置そのものが悪いのか……しっかしこんなにサーバ設定で苦労するのも久しぶりだなぁ……orz

そんなわけで、サーバの設定はまだまだ続きます。
だいたい、VPN とか証明書回りとかもぜんぜんできてないし(T_T)