システム


2016年1月 8日

ActiveDirectory(LDAP)への問い合わせコマンド

linux
ldapsearchコマンド

Windows(但しクライアントOSでは標準で使用できない)
dsqueryコマンド

※参考)
ドメインユーザ環境でログインしていれば、set userコマンドで所属ドメイン情報を確認できる。

※参考)
RedmineでのLDAP連携参考資料

2010年2月26日

VMWareが遅い

VMWareをはじめ、仮想環境でいろんな環境を試せるようになったことはエンジニアにとって非常に大きい。今まではデュアルブートにして試したり、新しいハードウエアを購入したりといろんな面で負担が大きかったが、スナップショットを使えばいつでもある時点に戻ることができるし、環境のコピーもファイルベースになっているから開発側としても保守をする立場から見ても非常に運用が簡単である。

ただ、万能な仮想環境にみえるが、最近VMWare Server 2.0を使っていてやけに遅く感じることがある。ホストOSのCPUやメモリはほとんど使われていないのにハードディスクのアクセスがやけに多いのだ。そのせいで、ゲストOSがビジーの場合には、ホストOSもフリーズ気味になることがある。

調べてみるとゲストOSでディスクアクセスがされた場合に、ホストOSにて管理しているハードディスクのファイルに直接読み書きがされてしまうために、特に書き込み頻度が多い環境だと、断片化が発生してしまう。そのせいで、運用時間が長くなればなるほどどんどん遅くなるといった現象が発生するらしい。(自分はてっきりメモリに格納しているものだと思っていたのだが。。。)

これを改善するためには、VMXファイルに
host.TSC.noForceSync = "TRUE"
mainMem.useNamedFile = "FALSE"
MemTrimRate = "0"
を設定してあげればよいらしい。デメリットとしてはレジュームする際に時間がかなりかかるようになってしまうことだ。LinuxOSではうまく機能してくれないという情報もあり、簡単に見える仮想環境も、実はパラメータチューニングが重要なのだと改めて思い知らされた。

そのほか、ゲストOSがWindowsの場合にはハードウエアアクセラレータが無効になっているために描画が遅くなるといった問題があるので、次の手順にて設定変更することでゲストOSの応答性能が改善される。
1.画面のプロパティ - 設定タブを開き詳細設定ボタンをクリック
2.トラブルシューティングタブを開きハードウェアアクセラレータを最大にする

いずれもVMWare社の情報ではないので、実稼働している環境に試す場合には、必ずテスト環境にて動作を確認してほしい。

2009年10月28日

ITPro Expo 2009

に行ってきました。
展示の内容は大したものはあまりありませんでしたが、フォーラムの内容がとても有意義でした。私が今日のテーマとして受講したのがサーバーの仮想化でした。

仮想化万歳が続いて、睡眠学習することになると思っていたら、仮想化のメリットと現実を知ることができて、良い意味で期待を裏切ってくれました。

○仮想化にまつわる用語
・マイグレーション(migration) システムを新しいプラットフォームに移行すること。仮想化では、メンテナンスや障害時において、仮想サーバーを別の物理サーバーに移動することを指す。
・スケールアウト(scale out) サーバーの台数を増やして、パフォーマンスを向上すること。サーバーの性能向上をすることはスケールアップという。
・プロビジョニング(provisioning) 必要な時に必要な分だけシステムにリソースを割り当てること。オーバープロビジョニングは、システムが高負荷時でも最適にサービスができるように余剰にリソースが割り当てられている状態のこと。


○一般的に言われているサーバーの仮想化のメリット
1.集約できるので、サーバーリソースをより効率的に利用でき、ランニングコストを抑えられます。
2.マイグレーションにより、物理ハードが故障しても別サーバーに無停止で移動できます。それによって稼働率を飛躍的に向上できます。
3.システムを構築するたびにサーバーを購入しなくて済むようになるので、安価にシステム構築ができます。
4.P2Vという機能を使って既存システムを仮想化することで、Windows NT4.0で動いているレガシーシステムも利用できるようになります。


しかし、メリットが成功に結び付くには現実は避けて通れない。


○メリットに対する現実
1.ランニングコストを抑えられるのは、主に電気代だが、データセンターにてサーバーを置いている場合には、電気代は定額であることが多く、仮想化するためにブレードサーバーなどを購入する費用だけがかかることになる。また、集約を進めていくと通信用のネットワーク以外にも死活監視するためのネットワークや仮想マシン上の差分をバックアップするためのネットワークなどどんどんLANケーブルが増えてしまって、LANケーブルでラックが倒れそうになることも現実として起こっているらしい。また、LANケーブルが張り巡らされて放熱も悪くなって、結果的に電気代がかかってしまうこともあり得る。

さらに、監視する方法が抽象化されるので、保守要員のスキルなども向上させる必要があり、ランニングコストは変わらないかむしろ高くなる可能性がある。

2.集約はできるが、集約した結果ハイパーバイザの停止は、仮想化システムすべての停止を意味する。また、仮想化サーバーに対して接続されるディスクドライブは、物理的に1つ(ディスクが1つということではない)だったりするので、物理ディスクのメンテナンスを行うときには、そのディスクにつながる仮想化マシンを一度停止しなければならない。(停止しなくてもできるはずだが、基幹システムなどにおいては、計画停止しているのが一般的だそうだ)

「仮想化は今後当たり前になるが、あえて仮想化しないという選択肢をとれるようにする必要がある。」(日本仮想化技術研究所 宮原さん)

また、仮想化はまだまだ始まったばかりの技術。仮想化特有の問題が起こることがあり、長期的に利用した時に何が起こるか分からない。また、パフォーマンスを見れば、仮想マシンとして動かすと物理サーバー上で稼働するよりも、パフォーマンスは10%以上低くなる。最も顕著なのが、I/Oアクセスだそうだ。ユニアデックス 高橋さんのお話によると、DMAコントローラーはCPUとハードディスクの速度差によってCPUが占有されることを防ぐために導入されたにもかかわらず、ソフトウエアでエミュレーションした結果、DMAコントローラーの処理がCPUで行われることとなり、ボトルネックになってしまっているとの指摘だった。今後は、Intel VTなどのように仮想マシンからエミュレーションされたDMAコントローラーを介さなくてもアクセスできるように改善されているので、もう少しすれば仮想化のデメリットも少なくなるのではないかという内容だった。

3.仮想化が最も有効に働くのは、スケールアウトする時だ。ただ、重要なことは、仮想マシンがデータとなっており、それを保持するためには、ハードディスクをあらかじめ大規模にしておかなければならないということだ。仮想マシン1台のオーバープロビジョニングが、数十台集まると、それこそ膨大なストレージの無駄が生まれてしまう。それを防ぐために、日立製作所であったりユニアデックスはストレージ仮想化という技術でもって解決しようとしている。

4.P2Vは仮想化の中でも最もリスクの高い内容であると日立製作所 高衣良さんやユニアデックス 高橋さんはお話しされていた。原因は、Hyper-Vを例にとれば、仮想マシンにするためにWindows PEを起動させて既存サーバーをバックアップする必要があるが、サーバー自体にWindows PEを動かすためのドライバが必要であったりするからだ。また、もし仮想化に成功したとしても、まれにサポートが終息しているOSの不具合によってブルースクリーンが起こってしまったりすることがあり、長らくレガシーシステムに頼らざるを得ないミッションクリティカルなシステムを仮想化することはそもそも危険なことであるということをベンダーは認識しなければならない。


「なぜ仮想化なのか?をよく考える必要がある。仮想化はゴールではない。」(日本仮想化技術研究所 宮原さん)

ところで、仮想化のもたらす劇的な変化訪れようとしていることを、先日Windows 2008 R2を発表しているマイクロソフトが教えてくれた。

社内の物理サーバーに乗っている仮想マシンを一時的に利用したいが、どの物理サーバーもリソースが不足しているとき、IIJのクラウドに申し込んでサーバーを確保し、ライブマイグレーションを使って仮想サーバーを移動させて稼働させるというものだ。実際にデモンストレーションを行っていたが、数分でライブマイグレーションが完了していた。

この前提にあるのは、IIJのサーバーとVPNで接続されており、同一ネットワーク上にある前提がもちろん必要だろうと思われるが、プロビジョニングにより、自動的にサーバーの稼動する物理サーバーが変わるようになれば、今動いているこのシステムは社内にあるのか、データセンターにあるのか、はたまた海外にあるのかそんなことすら意識しなくて済むようになる。自動化がすすめば、ビジネス規模に応じて契約を進めていけばいいので、コストを最適化できる。

ユーザーから見れば夢のような技術だが、保守ベンダだから見れば、こんな面倒な話はない。物理サーバーの位置が変わるとネットワーク遅延が発生する(海外に移動してしまうと数msの遅延が数百msの遅延になってしまう。たいした違いではないかもしれないが100倍遅くなることは事実なのだ)ことで、アプリが動かないとかそんなトラブルに悩まされるようになりそうだ。

仮想化、仮想化、仮想化。。。Webサーバーが耐障害性と性能向上を目的に台数が増えた結果、ネットワーク機器を仮想化して冗長化しなければならなくなり、さらに耐障害性の向上とスケールアウトを進めた結果、物理サーバーすら仮想化の対象となった。あまりに物事が抽象的になった結果、本質が見えにくくなってしまっている。仮想化という時代をまのあたりにしていくエンジニアは、私を含めてその内容自体を理解することが難しくなりつつあるが、仮想化が当たり前で育つエンジニアは、それが理解できるのだろう。しかし、今後仮想化特有の不可解な現象に行き着いたときに本質がわかっていなければ、解決が難しいだろう。これは、きっとDBアクセスにおけるO/Rマッピングのようなものに近いのかもしれない??

今後は、アプリケーションエンジニアも仮想化技術とネットワーク技術を身につけていかなければ、立ちいかなくなると個人的には考える。(そんなのはネットワークエンジニアの仕事だろうという声が聞こえそうだが。。。)

2009年10月 4日

VMWare ESXiを試す

VMWare ESXiを試そうとVMWareから最新版の4.0をダウンロードした。

ターゲットマシンは、HP ML110 G2という古めのIAサーバー。

CDを入れてインストーラーが起動したが、
Module: install.tgz
Loading install.tgz..
Booting: MBI=0x000100f0, entry=0x00100212
のあとになにも応答がない状態になった。

何度やっても同じ。インターネットで調べてみると、4.0が32bitは対応していないことがわかった(笑

といういわけで、3.5をダウンロードした。
VMware ESXi を USB メモリにインストールして HP ML115 で起動と同じようにCD-ROMからは起動できず、USBから起動することになった。

しかし、紹介されている手順と同じようにしても、インストーラーのところで
Starting VMWare ESX Server 3i: Loading module ipmi_si_drv ...
でハングアップしてしまうように見える。

しかし実はHP ML110G2 で ESXiにあるようにロードに時間がかかっているだけであるらしい。もはやフロッピーディスクドライブなんてものは存在しないので、ファームウェアも当てられず・・・・1時間放置しておいた。

すると画面が切り替わっており、
Using /mod/ipmi_si_drv.o
Using /mod/ipmi_devintf.o
Module load of ipmi_devintf succeeded.
config explicitly loaded
Wating for USB boot partition to show up... retrying after 1 additional seconds
Wating for USB boot partition to show up... retrying after 2 additional seconds
Wating for USB boot partition to show up... retrying after 4 additional seconds
Wating for USB boot partition to show up... retrying after 8 additional seconds
Wating for USB boot partition to show up... retrying after 16 additional seconds
Wating for USB boot partition to show up... retrying after 32 additional seconds
PANIC: Failed to find USB boot partition

となってしまう。一連の過程でかなり時間をロスしてしまった。今回はこれであきらめることにしよう。

2007年9月 7日

qmail+vpopmailで発生したエラー

Uh-oh:_.qmail_has_prog_delivery_but_has_x_bit_set._(#4.7.0)
送信時にこのエラーが発生した。原因は、/home/vpopmail/domains/XXX.co.jp/.qmail-defaultに実行権限があったから。

vchkpw-pop3: autocreate dir errno 13
受信時にこのエラーが発生した。原因は、/home/vpopmail/domainsに実行権限がなかったから。

2007年9月 3日

qmail+vpopmail

それ行けLinux~qmail/vpopmail~が非常に参考になるが、一部補足があるので記載を行っておきます。

tar zxvf ucspi-tcp-0.88.tar.gzにてmakeをすると
#cdb.a(cdb.o)(.text+0xda): more undefined references to `errno' follow とエラーが出るのでパッチを適用するとmakeできるようになる
patch -s < ../ucspi-tcp-glibc.patch

ちなみに、qmailで送信時に421 unable to read controls (#4.3.0)のエラーがSMTPサーバーから返されるようであれば、/var/qmail/controlsディレクトリ内のファイルが正しくない。おそらくqmailのインストールの中でmakeコマンドの後で実行する./config-fast (デフォルトドメイン名)をするのを忘れているので、コマンドを実行すれば解決する。

2007年7月30日

SMTPコマンドを使う

メールがうまく送信できないとき、メールクライアントソフトを使えばいいのかもしれないが、サーバーだったりするとインストールしたくてもできないなどの制約が発生する場合がある。そんなときはコマンドを使って送信する方法を知っていれば便利だ。
http://members.jcom.home.ne.jp/j-klein/security/network-proto-smtp.html

2007年7月 3日

セキュリティと利便性

つい先日、メインバンクの新生銀行のログイン方法が強化されて、口座番号+パスワード+ログインパスワードの従来の認証パターンに乱数表による認証が追加された。

おそらく推測されやすいパスワードによる不正アクセスに対応したものなのかもしれないが、さすがに乱数表を入れられてしまうと覚えられないので乱数表を持ち歩かなきゃいけなくなってしまう。

乱数表をなくしてもログインされることはないだろうけど、再発行されるまでログインできない。

セキュリティ強度を上げれば使いにくいシステムになることは仕方ないわけだけど、ユーザーのリスク認識に応じてセキュリティ強度を選べるようにしてほしい。

2007年5月 4日

qmailの中継設定

qmailはデフォルトで運用している場合には不正中継しないようになっているが、それでも疑いがある場合には、以下の観点でチェックをすると良いと考えられる。

1.中継先を決定するリストのファイルをチェックする
/var/qmail/control/rcpthosts が存在するかどうかをチェックしてみてください。もし存在すればどのような状態になっているかを確認してください。もし存在しなければ、不正中継することになります。もし存在した場合、自ホスト以外のものが登録されていると、そこへの中継は送信元がどこであれ、許可されます。


2.SMTP接続を受け付けるホストリストのファイルをチェックする
/etc/relay-ctrl/RELAY_CTRL_RELAYCLIENT がどのような状態になっているかどうかを確認してください。ここにホストが含まれているものは、接続を受け付けることになり、中継可能となります。

2007年2月14日

Webサーバーの負荷分散

Webサーバーの負荷分散を行うにはどんな方法をとればよいか?

・DNSラウンドロビン【ネットワーク層】
ネットワーク層による実現なので設定は簡単。同一のAレコードに複数のIPアドレスを割り当てるだけでよい。しかしながら、クラスターが応答しなくなっても割り振ってしまうし、設定変更してもすぐに反映されるわけではないので、負荷分散として含めてよいかどうかは疑問視されるところ。他のシステムと合わせて使うことで効果がある。

・LVS、Pound【トランスポート層】
サーバーが動作しているかどうかをheartbeatを用いて判断して負荷分散をしてくれる。但し、トランスポート層での処理なので、セッションを伴う負荷分散が出来ない。(ショッピングカーとシステムを稼動させるためには、セッションを保存するディレクトリをNFSなどで共有させる必要がある)

・mod_proxy、Squid【アプリケーション層】
(アプリケーション範囲以外の点をいろいろ心配しなくてもよい分)最も簡単な負荷分散。但し、高負荷になるとうまく処理できないこともある。

http://www.atmarkit.co.jp/flinux/rensai/apache2_05/apache05a.html などもご覧ください。

2007年1月22日

Tomcatのアプリケーション登録

DocumentRootに紐付けられているアプリケーションはインストール先(Windowsデフォルト/C:\Program Files\Apache Software Foundation\Tomcat 5.0)\conf\Catalina\localhostにあるxmlファイルによって登録される。

xmlファイルに登録する名前と実際に存在するパスを設定する。
<Context path="/flex"
docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\flex"
reloadable="false"/>
(path=/flexならばhttp://localhost:8080/flex/でアクセスできる)

docBase内でユーザー定義クラスを使いたい場合には、docBase/WEB-INF/classesに登録する。
たとえば、abc.defクラスを利用したい場合には、docBase/WEB-INF/classes/abc/に
package abc;
public class def {
}
のjavaファイルをコンパイルしたdef.classファイルを配置する。

JSPファイルは動的にコンパイルされるが、
(Windowsデフォルト)\work\Catalina\localhost\(登録名)\org\apache\jsp
に保存されている

2007年1月11日

Wikipediaからサーバー構成のキモをさぐる

MediaWikiのインストールドキュメントを調べていたらMediaWikiで運用されているフリーの百科辞典「Wikipedia」のシステム構成が出てきたので、サーバー構成の重要性について検証してみたいと思います。


サーバー構成サーバーステータスをまず見てください。

・割と多目のsquidサーバー
squidサーバーとは、プロキシサーバーのことであり、コンテンツをキャッシュさせる仕組み
これにより75%の要求はプロキシサーバーで応答できる(つまり上位75%はリクエストされる内容が偏っているわけ)。とくにメディアに取り上げられてアクセスが集中するときはキャッシュヒットが100%近くになるというから、Webサーバー設計においてプロキシサーバーは無視できないことがわかる ※注:ただ広告媒体などになれば話は別だろう。広告の箇所だけはプロキシを経由しないようにして、設定どおりの広告配信ができなければならない。ただ大量のコネクションが張られることから、メモリは3GBと多めだ。

・大量のApacheサーバー
squidで保持していない残り25%の要求はWebサーバーであるApacheサーバーで受ける。基本的にメモリが1GB程度つまれていて、ストレージにはRAID構成になっていない。ソフトウエア類はNFSで共有されているらしいので、ディスクが飛んでもさほどダメージはないようだ。個人的には少量のApacheサーバーにメモリをつんで待ち受けコネクション数を増やすというのでもよさそうと考えたのだが、squidサーバーやMySQLサーバーで運用していて古くなったものを転用していけると考えるとおのずと低スペックの理由もうなずける。

・NFSサーバー(ファイル共有サーバー)
ソフトウエアを一括でこのサーバーで管理することによって、ソフトウエアのバージョンアップが発生してもこのサーバーだけをアップデートすればいいことになり、保守コストが下がる。ストレージはRAID構成になっていて、一応冗長化されているようだが、全体の構成で考えると少し弱いような気もする。

・少数のMySQLサーバー
2プロセッサ構成で、メモリはマスターで16GB、スレーブで4GBと大量に積まれていることがわかる。ただ注目したいのは、マスタサーバーが冗長性よりも応答性を重視したRAID0でありスレーブサーバーがRAID10になっていることだ。データベースへのアクセスが多いことを考えるとこれはうなずけるかもしれない。
また64ビットへの移行を進めていて、これが実現できればオンメモリデータベース(データベースをメモリ上に展開させること。データの保存先が応答性の悪いハードディスクから応答性の良いメモリに移行されることにより、応答性が向上する一方、電源が切れれば保存内容が失われてしまう問題と、32ビットシステムでは扱えるメモリ上限が2^32/2-1=約2GBに制限される)が実現することになり、応答性が劇的にあがることになる。

ここから言えることは・・・
要求されるリアルタイム性にもよるだろうが、システム増強を目的に投資をする場合、DBを高性能にすることを検討しているのであれば、プロキシサーバーなどキャッシュできる仕組みを導入し、DBへのアクセスを減らすような仕組みを検討するべきということがこの構成から学ぶことができるだろう。

またOSがほぼFedora Coreで運用されているのは愛用ユーザーとして個人的に非常にうれしい。

2006年12月12日

ログを安全に管理する

syslogというのは実はファイル書き込みをする代わりにリモートホストにUDPを使ってログを転送することが出来るようだ。

ログサーバーを立ててsyslogポート以外をブロックしておくことで堅牢なログサーバーを設置し、改ざんされないログを管理することが出来る。

詳しくはこちらを参考にされたい。

2006年12月11日

分散と集中の歴史

何事においても歴史を知ることは今後を予想する上で非常に重要であることは間違いなさそうだ。
コンピュータの歴史においても同じことが言える。コンピュータの歴史は半世紀程度しかないけれども常に分散と集中を繰り返しつづけているといえるだろう。

ホストコンピュータによる集中時代
マシンが非常に高価だったため、クライアント機はホストコンピュータにつながった端末であり、その端末時代には処理する機能は存在しなかった。(ホストコンピュータにログインして、そこで処理を行うので、画面への出力とキーボードの入力のみを処理)
そして時間単位で課金されていた。とはいっても僕はこの時代にマシンを利用していたわけではないので、詳しいことは良くわからない。

クライアントマシンによる分散の時代
マシンの単価が下がってくると、あえてサーバーで処理する必要もなくなり、より応答速度が速いローカルで処理するようになってきた。この流れは、サーバーの乱立を招く結果となる。

シンクライアントによる集中の時代
サーバーの乱立に伴う管理費用の増加とクライアントマシンにデータがあることによって発生する情報漏えいの2つの観点から、マシンを集約することになる。集約できるようになった大きな背景として、ネットワークの高速化が上げられる。

とくれば次は分散かもしれないが、分散の対象はおそらくマシンではなくネットワークになるだろうと予想する。

2006年11月28日

postfixでバーチャルドメインを運用する

[/etc/postfix/main.cf]
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual #おそらくデフォルトで設定されている

[/etc/postfix/virtual]
example.com anything #ドメインをバーチャルドメインとして認証させる
tommy@example.com foo #tommy@example.comをfooアカウントに転送.
設定の変更は

/usr/sbin/postmap /etc/postfix/virtual
/etc/init.d/postfix restart
で適用できる。

2006年11月 1日

kernel2.6.18

9/20にLinuxのKernelがバージョンアップしていた。Fedora Core6が出ていたが、最新のkernelを利用したいためだけにFedora Core6を入れるのもおかしな話だったので、yum installでバージョンアップさせることにした。(kernelのアップグレードは yum update kernelでは適用できない)
kernel2.6.18にはCache Pollution Aware Patchが適用されており高速化が見込めるようだ。詳しくはこちらを参考にされたい。

2006年10月26日

nrpe

nagiosをリモート管理するためのエージェントソフトnrpeについてのインストールメモ

まず、mysqlをチェックするためのライブラリが依存関係として存在するので、コンパイルエラーにならないようにするためインストールする。

yum install mysql-devel

次にnrpeの動作プラットフォームであるnagios-pluginをインストールする

tar zxvf nagios-plugins-1.4.4.tar.gz
cd nagios-plugins-1.4.4/
./configure
make
make install

次にnrpeをインストールして、環境設定を行う。

tar zxvf nrpe-1.9.tar.gz
cd nrpe-1.9/
./configure
make
make all

/usr/sbin/adduser nagios
cp src/nrpe /usr/local/nagios/libexec/
mkdir /usr/local/nagios/etc
cp nrpe.cfg /usr/local/nagios/etc/
chown nagios.nagios /usr/local/nagios/etc/nrpe.cfg


nrpe.cfgを変更する

vi /usr/local/nagios/etc/nrpe.cfg

allowed_hosts=127.0.0.1 ↓
#allowed_hosts=127.0.0.1 allowed_hosts=192.168.0.0/25

次にポート設定を行う

vi /etc/services

nrpe 5666/tcp # NRPE

を追加(5999で検索して、その上に追加すると良い)

そしてサービス立ち上げできるようにxinet.dを設定する

vi /etc/xinetd.d/nrpe

service nrpe
{
 flags          = REUSE
 log_on_failure    += USERID
 port          = 5666
 socket_type      = stream
 protocol        = tcp
 user          = nagios
 server         = /usr/local/nagios/libexec/nrpe
 server_args       = -c /usr/local/nagios/etc/nrpe.cfg --inetd
 type           = UNLISTED
 wait           = no
}
を追加する

/etc/init.d/xinetd restart

netstat -nl | grep 5666

で存在することを確認

サーバー側で

/usr/local/nagios/libexec/check_nrpe -H (リモートホストIP) -c check_load

などでチェックして正しく取得できることを確認する

nagiosで以下のとおり設定する

vi /usr/local/nagios/etc/hosts.cfg

にホストを追加

vi /usr/local/nagios/etc/services.cfg

にチェックするサービスを追加(LOADで調べて他のホストと同じにして)

2006年10月22日

人月の神話

「ソフトウエア開発プロジェクト遅れたからといって人員を増やせば、チームの規模は肥大化して内部コミュニケーションが指数関数的に複雑化し、プロジェクトがさらに遅れる」と指摘している本『人月の神話―狼人間を撃つ銀の弾はない』。実は1975年に出版されており、26年経った今でも同様のことが議論されているなんて言うのは驚きである。開発しているものはどんどん進化(?)しているが、そのやり方にはあまり進歩が見られないという、ソフトウェア工学の難しさでもある。

2006年10月20日

システム監視のツール

システム監視コマンドには以下のものがある。

システムに関するもの
uptimeコマンド load averageを監視できる(load averageは待ち行列の数を示し、CPUのコアの数(通常は1, 最近のマルチスレッド方式のCPUなどは2)を超えると実行待ちになっているプロセスが存在することを示す)

freeコマンド メモリに関する情報を監視できる。Swapのusedが多いものは、メモリの増設によって速度向上が図れる可能性が高い状態。

topコマンド uptimeとfreeを同時にチェックし、プロセス状態についてもチェックできる。

vmstatコマンド メモリとI/Oに関する情報を取得できる。

sarコマンド システム状態を統合的にチェック
iostatコマンド I/Oに関する詳細な情報を取得できる。

ちなみにsar, iostatコマンドはsysstatパッケージで提供される

Apacheに関するものにmod_statusがある。

コネクション部分だけを見たい場合にはDirectory設定が / だった場合


http://(server-statusのパス)?auto&refresh=5

で表示できる

続きを読む "システム監視のツール" »

2006年10月19日

bounce mail

メールのあて先がなければ送信元にその旨を通知するエラーメールをbounce mailというが、これによってスパム認定を受けてしまう可能性があるということを知って、びっくりした。

これは本日行ってきたSecurity Solutions 2006で出展社の担当の方からお話いただいた内容である。

まず、スパム認定をしてもらうドメイン(たとえば、YahooとかMSNなどの大手ポータルやISPなど)をFromもしくはReturn-Pathに設定(詐称)して、Toをターゲットとする企業のドメイン(アカウントは存在しなさそうなもの)あてに大量に送信する。そうするとターゲット企業のメールサーバーはエラーメッセージをReturn-Pathに送信することになるから、Return-Pathに設定されたメールを管理するメールサーバーから見ると、ターゲット企業から大量のメールが来ることになるので、自動的にスパム認定が行われてしまうというようなものだ。

bounce mail自体は正常なメール配送の仕組みなので問題はない。問題なのは、スパムメールに対するエラーをそのままReturn-Pathに返してしまうことが問題なのだ。スパムメールフィルタリングを実施していない会社があれば、間違いなくターゲットにされ、実際の営業メール(販促用のメールなど)が届かないといったトラブルに悩むことになりそうだ。

2006年10月17日

yesコマンド

同僚に教えてもらった面白いlinuxコマンドです。おそらくほとんどのLinuxシステムで利用できます。

ちなみにnoコマンドはないようですのであしからず。なぜこのようなコマンドができたのかは定かではありませんが、おそらく確認(たとえば削除しますか?という内容)を抑制できないコマンドに対してひたすら「y」を送りつづける必要があり、開発されたのではないかなと個人的に考えています。知っている方がいらっしゃれば是非コメントを頂きたいと思います。

2006年10月15日

バグると言う言葉の恐ろしさ

先ほどと同じ佐野裕さんの日記から。同じ体験が現職でもあります。社内の営業からこれバグってますよと気軽に言われて腹を立てたことがあります。システム屋さんにとってバグは天敵。バグがないように常に品質に注意しながらコーディングしている立場からすると、気安いバグ報告はいいような悪いような。そしてそれが仕様だった時にはなおさら・・・・。

RAID0+1とRAID10の違い

RAID0+1とRAID10に関して特に意識したことはなかったが、NASに関するソリューションを調べていたときに詳しく説明されていたので参考まで。RAIDの読み書きに関する関係は以下のとおりになるのだろうか?

・読み込み速度:RAID1 < RAID0, RAID5, RAID6, RAID10
・書き込み速度:RAID1・RAID6 < RAID5 < RAID10 = RAID0+1 < RAID0
・信頼性:RAID0(1台故障すると×) < RAID1, RAID0+1, RAID5(2台故障すると×) < RAID10(2台故障しても場合によっては○) < RAID6(3台故障すると×)

2006年10月14日

RAS尺度

Reliability(信頼性)、Availability(可用性:いつでも利用可能な状態であること)、Serviceability(保守性)の頭文字をとったもの。MTBF(平均故障間隔:故障するまでの時間)、MTTR(平均修理時間)を用いると以下の通りあらわすことができる。

R = MTBF
A = MTBF/(MTBF+MTTR) ※つまりは稼働率のこと
S = MTTR

2006年10月13日

set_loginuid failed opening loginuid

Fedora Core OSで起こったエラーメッセージ。SSHでログインすると認証は通るのにその先にはなぜか進めない。今までうまくいってたのに・・・と思ってググッて調べてみたら/etc/pam.d/sshdが変更されているということに気づいた。以下が問題の状態。

#%PAM-1.0
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session include system-auth
session required pam_loginuid.so

そして以下がログイン可能なサーバーの状態。

#%PAM-1.0
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth

もちろん2番目の設定に変更したらうまくいったことはいうまでもない。

もっとpamについての仕組みを調べる必要があると思いました。

続きを読む "set_loginuid failed opening loginuid" »

露出メディアによる負荷の増大の違い

今の会社ではメディアへ露出する場合が時々あります。その際にやはりアクセス数が急激に伸びるわけで、そのピーク時の負荷にあわせて本来設計する必要がありますが、如何せんそこが十分に読めないわけです。

たとえば、Webや新聞への掲載があった場合には負荷は時間とともに順次伸びるわけですが、テレビの場合にはその延びるまでの猶予時間が極端に短いようです。やはりテレビを見ながらネットをしている人がいるからなんでしょうか?(こんなことは言ってはいけませんが)運用側の立場から言わせてもらえばとっても迷惑な話です。

2006年10月 9日

WinFS開発中止

WinFSがVistaから搭載を見送られることは知っていましたが、結局開発中止になるなんて思っても見ませんでした。ここまでハードウエアが発達した現在、ファイルシステムの改良というローレベルのアプローチはあまり意味のないもの(苦労する割には効果が少ない)になりつつあるのかもしれません。

2006年10月 6日

複数のグループに所属させる

Linuxにおいて複数のグループに所属させるときには、/etc/groupファイルを編集し、GIDの箇所をカンマ区切りで複数設定すればよい。なお、所属状況を表示させる時には、groupsコマンドが用意されており、こちらで確認できる。

2006年10月 3日

データセンター

データセンターの価格はピンきり。ちょっと調べてみました。

Sinfony (ソニーコミュニケーションネットワーク)


データセンター:東京都千代田区神田多町(神田駅)

100Mbpsで対象接続 1/8ラック 15万円 1/2ラック 33万円 1ラック50万円 いずれも回線費用込みで初期費用5万円

WebARENA Symphony(NTTPC)

データセンター:東京都内に6拠点(飯田橋・白金高輪・不動前・勝どき)

回線は別途組み合わせ 1/4ラック 7.3万円 1/2ラック 14.7万円 1ラック26.2万円 初期費用は5.25万円(1ラックのみ10.5万円)

続きを読む "データセンター" »

2006年10月 2日

99.9%の稼働率

99.9%の稼働率といえば、1日に86.4秒システムダウンしていることになるわけだが、多くのWebサイトにおいては、計画メンテナンスを含めると、99.9%の稼働率を達成できているところは意外に少ない(らしい)。

理由はWebが3層クライアントサーバーシステムになっていてシステムが複雑系だからというほかに、アプリケーションがバグだらけ、スパゲッティ―コードだらけ、テストが不十分、負荷の増大が予測しにくいなどの理由があると思われる。でも、Webアプリケーションはまだまだ未熟な様な気がしてならない。

2006年10月 1日

Linuxファイルシステム

ディレクトリの作成について

下位ディレクトリが生成されるかどうかは親ディレクトリのグループにファイル作成所有者が含まれるかどうかによる。



シンボリックリンクについて

シンボリックリンク先(以下実体と呼ぶ)とリンク元いずれも読み書きはでき、シンボリックリンクへの書き込みは実体に反映される。但し、シンボリックリンクを削除した場合には、リンクのみが削除され、実体を削除した場合にはリンクが切れた状態で残る。

2006年9月29日

Windows起動時に\system32\Config\Systemが破損しているため起動できないというエラーが発生する

友人のパソコンでWindows起動時に\system32\Config\Systemが破損しているため起動できないというエラーが発生していたので、検索してみたら結構エントリがありました。自分は一度も遭遇していないけれども、こういうことがあるらしい。

http://www7.plala.or.jp/asahikawa-ing/winxp_2.html

続きを読む "Windows起動時に\system32\Config\Systemが破損しているため起動できないというエラーが発生する" »

2006年9月26日

iptables

ファイヤーウォールを初期化して保存する方法について

iptables -L #ファイヤーウォールの設定状況を確認する
iptables -F #ファイヤーウォールの設定を初期化する
iptables -A RH-INPUT-CHAIN -p tcp --dport 80 -mstate --state NEW -j ACCEPT #80番ポートの受け入れを許可(厳密にはSYNパケットを許可)
#外部DNSを参照できなくする(こんなことはほとんどすることはないが。。。)
iptables -A OUTPUT -p tcp --dport 53 -j REJECT
iptables -A OUTPUT -p udp --dport 53 -j REJECT
#外部にメールが飛んでいかないようにする
iptables -A OUTPUT -p tcp --dport 25 -j REJECT
/etc/init.d/iptables save #ファイヤーウォールの設定を保存する(これを実行しないと(iptablesを)再起動すると元に戻ってしまう)

usキーをjp106へ変更する方法

/etc/sysconfig/keyboard で

KEYBOARDTYPE="pc"
KEYTABLE="jp106"

に変更するとjp106に変更できる。(/etc/sysconfig/keyboard が存在しないこともあるのでその場合には作成する)

2006年9月22日

特定コマンドがどのRPMパッケージに含まれているのか知りたい

http://www.itmedia.co.jp/help/tips/linux/l0644.html

# rpm -qf /usr/bin/dig

bind-utils-9.2.1-9

2006年9月14日

ファイルセーフとフェイルソフト

どこかにトラブルがあっても他の部分でカバーして全体の機能に影響がでない仕組みを「フェイルセーフ」といい、若干機能が落ちるもののなんとか動く場合を「フェイルソフト」という

http://www.ffortune.net/comp/tidbit/failsafe.htm