北青山通信 – from aoyama » システム関連

TeraStation ISが来て、iSCSIと通常のデータとネットワークを分けるためギガビットに対応したハブとLANカードを買ってきました。

今使っているPCにLANカードを入れて起動してみました。すると起動したときのBIOS画面が出てきません。しかし、画面が写らないだけで起動できているようです。

モニタとキーボードとマウスはでもう一台のPCと共有しているため、まずは切換機を疑います。切換機のケーブルを入れ替えてみます。しかし、別のPCが正常にモニタに表示されます。

次は切換機のケーブルを疑います。表示できないPCに表示できているPCのケーブルをつなぎます。まだ表示できません。

次に疑うのはディスプレイカードです。デジタルからアナログの変換コネクタを付けると色がおかしい。水色で表示されます。ついでに表示できるPCにもアナログから入力してみます。こちらは正常。

しかし、色がおかしいPCのアナログのコネクタを触ると正常に色が出ます。続いてデジタルのコネクタを、今度はきちんとねじでねじ込んでみると今度はうまくいきました。

何のことはないきちんとディスプレイのコネクタをねじで固定していないが原因でした。

ここまではよくある話し。最後の落ちです。

今回の目的のLANカードを入れた後、後ろのコネクタをよく見ると、もう一つLANポートがあるのを見つけました。つまり最初からこのPCには2つLANポートがあるのでした。

新しくLANカードを買うこともありませんし、これまでのモニタが写らないというトラブルも起こりえないのでした。

結局ハブからLANケーブルをつないで、BIOSで2つめのLANポートを有効にするだけで作業終わり。

今回は無用なトラブルを起こしただけのことでした。力が抜けます・・・。

以前、社内のサーバーをどうするかという話しをしましたが、Linuxサーバー+TeraStation ISにしました。新しもの好きといわれても仕方がないかも。

Amazonに注文したTeraStation ISが届いたので設定しました。普通の量販店から手に入らないので、今回はAmazonで見つけました。在庫無しとなっていましたが、とても早く入手できました。今なら在庫があるようです。

まずはIPアドレスの設定。初期設定ではDHCPで取得されています。ここまでは、付属のCD-ROMからiSCSI接続ツールからできます。これ以降は、Webブラウザから設定していきます。

あとは、NTPの設定。サーバーはきちんと時間は合わさなければいけません。

RAIDのメンテナンススケジュールと、障害が発生したときのメールの設定をしておしまい。後はデルからサーバーが届いてから行います。

Windows PC(特にVista)からTeraStation ISにiSCSIで接続するのは、付属のiSCSI接続ツールを使えば簡単なようです。今回は、Linuxサーバーに接続してしまうので、使う機会はありませんが。

Amazon

BUFFALO TeraStation IS RAID機能搭載 HDD 2TB TS-I2.0TGL/R5

青山オフィスあるPCにリモートデスクトップ接続がつながらなくなる。どうしてもそのPCでからサーバーにアップしなければいけないファイルがあるので、本日は青山オフィスまで行く。心当たりがある・・・。

原因は、そのPCからVPNでサーバーに接続していて、リモートデスクトップ接続を切断してしまったのが原因。

青山オフィスに行ってVPN接続を切断。無事にファイルのアップが完了。

VPN接続のタイムアウトで勝手に切断なんてしてくれないのでしょうか?

サーバー管理がうるさくなったせいか、直接サーバーにFTPで接続できなくなってきた。scpもsshで端末を利用できてしまうので使用禁止。これって意外と手間がかかるのです。

VPNで接続してからFTPでファイルをアップしかできないので、サーバー上のサイト構築では苦労する。設定ファイルをいじるだけでも面倒。

そこで利用しているのはWS-FTP LEという昔から使っている古いFTPクライアントソフトです。このソフトを使うとFTPで接続したリモートのファイルを、テキストエディタ(普段使っている秀丸)で編集できる。サーバー固有の設定ファイルはこれでいじってしまいます。

もちろんサーバーの管理者権限をいただけるはずはないので、Apacheのhttpd.confやPHPのphp.iniの設定は、お手数ですがサーバー運用会社の管理者にお願いする。今回は大きなデータをデータベースに初期投入する必要はありませんが、もしある場合はお願いしなければいけません。管理者に嫌がれようが(実際には面倒らしくて嫌がれます)、こればかりしょうがない。

タイトルの件、考えてみれば当たり前なのですが、お客さんからの仕様で引っかかりました。ここでいう全角文字は、マルチバイト文字のこと。

フォームに文字を入力する処理で、入力した文字の長さをチェックする処理が必要です。そこで文字長でチェックするか、バイトでチェックするか。

これをCakePHPのバリデーションで用意しているmaxLengthのルールでチェックしたところ、何も考えずに内部コードのバイト長でチェックしていまいます。これをお客様から指摘されました。希望としては、全角文字を2バイトでチェックして欲しいとのこと。

例えば、「あああ」は6バイトではなく9バイトとして判定されます。これは内部のコードがUTF-8だからです。CakePHPのバリデーションで正しく文字数で判定するには、maxLengthの処理をmb_strlen()で変更してあげます。詳細な対応方法は、こちらのサイトをご覧ください。

ここで簡単な実験です。こんなコードと結果です。

<?php

$str = "あああ";

echo(strlen($str)); // 9

echo(mb_strlen($str));  // 9

echo(mb_strlen($str, ‘UTF-8′));  // 3

echo(mb_strlen(mb_convert_encoding($str, ‘SJIS’, ‘UTF-8′), ‘SJIS’)); // 3

echo(strlen(mb_convert_encoding($str, ‘SJIS’, ‘UTF-8′)));  // 6

?>

UTF-8のままですと、全角文字は2バイトにはなりません。しかも、正しく文字コードをしてあげないと正しい文字数になりません。

一旦、シフトJISに変換してあげて、mb_stringではないstrlen()で全角文字を2バイトで計算してくれます。

昔の人間ですと、どうしても全角=2バイト、半角=1バイトと考えてしまうのですが、この考え方は古いかもしれませんね。

社内で使っているデルのサーバーは、ファイルサーバー、IMAPサーバー、AsteriskのソフトPDXのサーバーとして利用しています。メモリ1GBでディスク100GB4台をRAID5です。

導入して4年目、多少トラブルがあったものの、とりあえず無事に動いています。

しかし、いつ壊れるかもしれません。ファイルサーバーのバックアップは毎日取っていますが、安心してはいられません。しかも、そろそろディスクの残量がなくなってきています。

そこで、サーバーの更新を検討してみます。条件としては、

  • ディスクは1Tバイト以上。
  • RAID構成で安全に。
  • メモリは仮想化されたサーバーを動かすので2MB以上。
  • 日頃メンテナンスで面倒がないこと。

となります。現在のサーバー構成でメモリとディスクを増やして、デルで見積もりをしたら、30万近くになります。。

代案として

  • Linuxのサーバーで構築するのをやめて、NASのTera Stationとを入れてしまう。しかし、これですと、IAMPとかAsteriskなどのアプリケーションが動かない。
  • NASのTera StationとLinuxサーバーを入れてしまう。そのときのLinuxサーバーはディスクは最小構成。ディスクはTera Stationにマウントする。Linuxサーバーが故障したら、OSだけ再インストール。でも、LinuxサーバーからTeraStationへのマウントはSMBでマウントするの? 遅そうですね。
  • 上のNASのTera Stationの代わりにiSCSIのTeraStarion ISを入れる。もし、ディスクが足りなくなったら、iSCSIの機器を追加していく。NASよりもパフォーマンスは上か? でも、iSCSI自体、新しい技術のためハードルが高いか? それにLinuxとの接続はBUFFALOも推奨していなさそうだし。
  • サーバー自体をパーツを買ってきて自作してしまう。でも、自作してしまうと故障したときに自分で面倒みなければいけないし大変かもしれません。

お客様には、何台もTeraStationを薦めてきましたが、そろそろ自社でも導入しておいたほうがいいかもしれません。3番目がおもしろいかもしれません。

さて、どうするか・・・。