January 15, 2007

bin配下のディレクトリを探索してみよう

私がUNIXを勉強し始めたのは大学生時代。当時のUNIXはとても高価。またLinuxやFreeBSDなどのフリーのOSは存在するにはしていましたが、今のように入門書と呼べるような書籍がほとんど存在しない時代で、UNIXを勉強するにはなかなか敷居が高い時代でした。

その当時UNIX管理者に憧れていた私はいろいろな手段を使って勉強していたように記憶しています。図書館に行ってUNIX関連の書籍を読み漁ったり、UNIX管理を教えてくれそうな研究室を訪ねたりなどなど。そんな中、当時一番実践的で役に立ち、かつ面白かった勉強方法を思いつきました。それはbin配下のディレクトリを探索するというものです。

ご存知かもしれませんが、/binにはシステム寄りのコマンドが、/usr/binや/usr/local/binにはユーザが使うコマンドが慣習的に集められています。ということは、その中に格納されているファイルを手当たり次第manしていくと、(例:% man top、% man gzip、% man tcpdumpなど)いろいろなコマンドの使い方を知ることができます。これは当時は本当に面白かったなあ。


・・・そんなことを思い出したので、今日久しぶりにCentOSの/usr/binの中を見てみました。そうしたらznewコマンド(ファイルを .Z (compress) 形式から .gz (gzip) 形式に再圧縮する)や、yesコマンド(ひたすら'y'という出力を返す)などオモシロそうなコマンドを発見しました。時間があれば他にもいろいろ発見できたのですが、今日は時間がない(現実逃避^^;)なのでまた今度調べてみようと思います。

※補足
UNIXだけでなく、WindowsなんかもC:\Windows\配下やC:\Windows\System32配下の.exeファイルを見てみるといろいろ面白いです。

| | Comments (0) | TrackBack (1)

October 02, 2006

高速ファイルコピーツールを使おう

Windowsでの話しです。

中古パソコン

ファイルサーバのリプレース等、ファイルを大量にコピーしなければならないときがあるかと思います。Windowsでファイルをコピーするととても遅いのでいらいらしますよね。そこで今回は高速ファイルコピーツールのご提案をしたいと思います。

ちょっと探してみるとFire File CopyFastCopyなどのツールが見つかりました。空きメモリを最大限活用したり可能な限り大きな単位でRead/Writeしたりマルチスレッドで動かしたり等いろいろな手段でファイルコピーの高速化を図っているようです。

実は今週末とあるメンテナンスがあり、ファイルコピーだけで5時間もかかることが判明し、なんとかこの時間を短縮できないか検討した出てきたアイデアでした。簡単に実験してみたところ1/3の時間でファイルコピーが完了しました。これは速い!

| | Comments (1) | TrackBack (0)

June 28, 2006

LinuxでLVMのデータを抜き出す方法

keyword: Linux,LVM,HDD,抜き出し

最近久しぶりにLinux(CentOS)をインストールする機会がありまして、いつの間にかLinuxにもLVM(論理ボリュームマネージャ)という概念が導入されていることを知りました。LVMを使うとソフトウェアRAIDが組めたりパーティションのサイズを変えられたりできるので便利といえば便利です。が、最近ちょっとした事件がありました。オペミスでOSが死亡してしまい、データだけでも救出しようとしたときの話しです。旧来の方法であれば、別HDDにLinuxを入れて、OSが死亡したHDDのデータ用パーティションをmountすれば簡単にデータが抽出できたのですが、LVMだとちょっと面倒くさいです。そこで今回はLinuxでLVMのデータを抜き出す方法をまとめてみました。(今回は多分一部ケアレスミスが含まれていると思います。その場合ご指摘いただけたら幸いです)

【LVMについて】
これからやろうとする作業がちんぷんかんぷんにならないためにも、まずはLVMが何かを知っておいたほうがよいです。とは言えここをご覧になっている方の多くは緊急事態なときでしょうから簡単に触れておきます。

まずLVMには3つの構成要素、PV(PhysicalVolume),VG(Volume Group),LV(Logical Volume)があるのを押さえましょう。意味は読んで字のごとくです。scanしてみるとこんな感じです。

# pvscan
PV /dev/sda2 VG VolGroup00 lvm2 [279.34 GB / 32.00 MB free]
Total: 1 [279.34 GB] / in use: 1 [279.34 GB] / in no VG: 0 [0 ]

# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2

# lvscan
ACTIVE '/dev/VolGroup00/LogVol00' [277.38 GB] inherit
ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit


dfを実行してみるとこんな感じです。

# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00 286285288 21927512 249815340 9% /
/dev/sda1 101086 19070 76797 20% /boot
none 512528 0 512528 0% /dev/shm

LVMは「/dev/mapper/VolGroup00-LogVol00」のように見えます。すなわちLVMでは、PV作って、VG作って、LVまで作らないとmountできないというわけですね。


【同じVG名がついてしまっている場合】
さて、OS用HDDとデータ用HDDをそれぞれ取り付けてLinux起動し、vgscanをしてみると本来であれば両HDDのVG情報が認識されてくるんですが、もし「VolGroup00」1つしか認識されてこないとしたら、それは両HDDでそれぞれ同じボリュームグループ名が付いてしまっている状態です。OSインストール時に何も考えずにインストールしてしまっている多くの人は大抵ここで問題となります。そのような場合はどちらかのボリュームグループ名を変更してあげる必要があります。

この場合よく行われるのはFedoraCoreのレスキューCDを使う方法です。データ用HDDだけを取り付けレスキューCDを立ち上げます。そして

# lvm vgchange -an VolGroup00" <- VGを無効化する
# lmv vgrename VolGroup00 VolNewGroup00 <- 名前を変更する
# lvm vgchange -an VolNewGroup00" <- VGを有効化する

とします。


【LVMのマウント】
OS用HDDとデータ用HDDをそれぞれ取り付けてLinux起動し、vgscanをしてみてうまくVG情報が見えれば成功です。そうしたら

# vgchange -an VolNewGroup00" <- VGを有効化する
# mkdir /mnt/data
# mount /dev/VolNewGroup00/LogVol00 /mnt/data
# ls /mnt/data

でデータが見えたら大成功です。LVM、便利だけど面倒ですね。

| | Comments (1) | TrackBack (2)

April 24, 2006

Windowsにおけるソケットの最大値とTIME_WAITの時間を修正しよう

大規模サイトでは1台のサーバにものすごい数のTCPコネクションが張られます。そのような状況ではOSのチューニングをしないとすぐにリソースが枯渇してしまいます。そこで今回はWindowsにおけるソケットの最大値とTIME_WAITの時間を修正する方法をご紹介します。

【前提知識】
サーバにTCPコネクションが張られるとソケットが1つ消費され、そのときポート番号が1つ消費されます。サーバにはポート番号が65534しかないのでソケット(ポート番号)は限られたリソースということになります。しかし実際OSはTCPコネクションのために65534個全てをリソースと活用するかというとそうではなくて通常制限がかかっています。Windowsの場合は5000がデフォルト値です。すなわちチューニングをしないとWindowsでは最大同時接続5000までということになります。これは大規模サイトには小さすぎます。

ただし同時接続5000と言ってもそれは全てのソケットがTCPコネクションされることができた場合の話しです。netstat -anを実行したときにESTABLISHEDやTIME_WAITなどの表示を見たことがあると思います。TCP状態遷移の説明はここでは省きますが、簡単に言うとESTABLISHEDがTCPコネクション中、TIME_WAITがタイムアウトを待っている状態です。すなわちTIME_WAIT状態のソケットがたくさんあるとそれだけ同時接続可能数が減ってしまうということになります。問題はTIME_WAITがどの程度の時間継続するかなのですが、Windowsの場合はなんと4分がデフォルト値です。これまた大規模サイトには長すぎます。


【Windowsにおける設定変更方法】
 「ソケットの最大数」、「TIME_WAITの時間」はそれぞれ以下のレジストリを変更して設定します。項目がない場合は追加します。

■ソケットの最大数(5,000~65,534の間で設定):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort (DWORD)

■TIME_WAITの時間(30~300秒の間で設定):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelay (DWORD)

※設定後は再起動しないと設定が反映されません。


【余談】
今回の設定はあくまでも大規模サイトで必要になるものであり普通のサイトではデフォルト設定のままで十分です。同時接続5000以上なんてテスト環境を作るのも結構大変そうですよね。

| | Comments (1) | TrackBack (1)

April 17, 2006

リモートデスクトップ接続でコンソールのセッションをコントロールする方法

WindowsXPや2003などでリモートデスクトップ接続しようとすると新しいセッションが作られて接続されます。これは、コンソール上で立ち上げているアプリケーション、例えばタスクで定期的に流されるバッチの状況がリモートでリアルタイムに確認できないことを意味します。

そのような場合は

% mstsc /console

と実行するとコンソールのセッションが取得できます。

| | Comments (0) | TrackBack (0)

March 01, 2006

Windwos2003Serverでの自動ログオン設定方法

Windows Updateをする度にログインするのは面倒くさいので、大勢が使うサーバの一部で自動ログインを実施しています。今回は覚え書きの意味も含めてそのやり方を記載してみます。(この方法、ちなみにWin2000でもできます)

1) スタートメニュー⇒ファイル名を指定して実行で
control userpasswords2
と入力しEnter 。

2) ユーザアカウントウィンドウが開くので、 「ユーザがこのコンピュータを使うときにはユーザ名とパスワードの入力が必要(E)」のチェックをはずし、 「OK」ボタン押下。

3) 自動ログオンウィンドウが開くので、自動でログオンしたいユーザ名とパスワードを入力して「OK」ボタン押下。

| | Comments (0) | TrackBack (0)

February 27, 2006

Windows2003 R2の仮想化環境を使いこなすためのコツ

Win2003 R2の売りはいろいろありますが個人的に注目しているのは仮想化環境です。そこで今回は仮想化環境に注目している理由とそれを使いこなすためのコツを述べてみたいと思います。

【R2の仮想化環境とは何?】
・仮想化テクノロジを使用すると単一の物理的なハードウェア システム (サーバーなど) で複数のオペレーティング システム環境 (OS 環境) を実行することができる。
・x86 および x64 ハードウェア プラットフォームでの仮想化テクノロジ。
・追加コストなく4つまでの仮想インスタンスを実行できる

仮想化環境という考え方は大型汎用機やエンタープライズUNIX機の世界では一般的に使われていましたが、ついにWindowsでも一般的に使えるようになったのだということで感慨無量です。


【仮想化環境で注目している点】
仮想化環境ではハードウェア資源の有効活用というのが何よりもメリットが大きいです。例えばグループウェア、メール、DNS、WEBという4つのサーバが必要な会社において、仮想化環境という技術がなければ4種類のサーバを用意するか無理やり1台のサーバに詰め込むということになっていました。しかし前者はハードウェア資源がもったいない、後者は運用管理が難しいというデメリットがあります。

仮想化環境下では、1台のサーバ上にリアルOSをインストールし、その上に仮想の4つのOSインスタンスを立てることになります。4つのインスタンスはそれぞれ完全に独立していますから1つのOS上に無理やり全てのアプリケーションを立てるのと比べて運用管理コストが大幅に軽減することになります。

【仮想化環境を使いこなすためのコツ】
仮想化環境では複数のインスタンスが同時に動くわけですから普通の環境と比べて多くのハードウェア資源を消費することになります。仮想化環境を使いこなすためのコツは、ハードウェア資源の利用状況を押さえておくことに尽きます。

ただこのblogで何度も述べているように、ボトルネックの調べ方をしっかり押さえておかないと意味なくメモリやCPUを増設するハメになりますので、システム管理者としてはボトルネックの見極め方がとても大切になります。下記に過去記事リンクを載せて置きます。最適な投資を心がけましょう。

サーバのボトルネックはどうやって調べるか

| | Comments (0) | TrackBack (0)

December 21, 2005

ポート番号を使っているアプリケーションの特定

どのポート番号が使われているかはnetstat -anで確認することができます。しかし残念ながらWindowsやSolaris等には標準でポート番号を使っているアプリケーションが特定できるようにはなっていません(多分)。そこで今回はポート番号を使っているアプリケーションを特定できるアプリケーションをご紹介します。

【UNIX系OSの場合】
UNIX系OSの場合はlsofを利用します。RedhatやFedoraCoreにはlsofが標準でインストールされているようですね。

ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/


【Windowsの場合】
Windowsの場合はActivePortsが便利です。

ActivePorts

| | Comments (3) | TrackBack (0)

October 18, 2005

サーバ用途の場合ロケールをどうするか

OSやアプリケーションをインストールする際、何も考えないでいると日本語ロケールでインストールしていることが多いと思います(Select your languageとか言われるとそりゃJapanese選びますがな)。しかし本当に日本語ロケールでいいの?ということを今回考えてみたいと思います。

【UNIX系OSでサーバ構築する場合は英語ロケールが安全】
あくまでもサーバ用途と考えた場合、日本語ロケールを選ぶことはよくない場合が多いです。サーバ構築の大原則は「シンプルかつ余計なものは極力入れない」ですから、英語に都合よく作られたOSをあとで日本語が出るように機能追加するということはリソースは喰うしバグやセキュリティホールが含まれていることがあるしあまりいいことがありません。

「日本語処理をしたいんだけど英語ロケールでも問題ないの?」という質問があるかもしれません。どの開発言語を使うかによるかと思いますが、ほとんどの開発言語の場合その処理構造を考える限り文字コードを自然言語の区別なく単なるデータとして処理しているだけなので問題ないかと思います。(もちろん実験はしてね)


【Windows等GUI系サーバ構築の場合は・・・日本語ロケールかなぁ】
同様にWindows等GUI系サーバ構築の場合も、「シンプルかつ余計なものは極力入れない」の原則でいくと英語ロケールが一番いいと思うんですが、問題はオペレータのレベルですね。Windowsの場合オペレータの数が世の中に豊富で割と安価に確保ができますが、英語版Windowsを扱えるオペレータということになると極端に少ないです。例え英語版Windowsのほうが安定していたとしてもオペレータがオペミスしてしまっては意味がないのでそれなりのレベルのオペレータを揃えなければならない・・・と考えていくと日本語ロケールを選んだほうが無難なのかな、と思ってしまいます。


【DBの場合】
応用でDBの場合も考えてみたいと思います。コマンドラインベースのDB(MySQL,PostgreSQL,Oracle)の場合は同様の理由で英語ロケール、SQLServerの場合は日本語ロケールがよいかもしれません。

| | Comments (0) | TrackBack (0)

September 16, 2005

Win系サーバのリモートからのリブートやシャットダウン

Windowsサーバがたくさんある場合、パッチ適用後にリブートするだけでも結構な手間です。そこで今回はサーバのシャットダウンやリブートをリモートで行う方法をご紹介します。

【shutdown.exeコマンド】
WinXPやWin2003 Serverにはshutdown.exeコマンドが標準装備されています。Win2000でもおそらくリソースキットの中に入っています。このコマンドを使うとリモートでサーバリブート/シャットダウンができます。

例:
shutdown -f -r -t00 -m \\SERVER01
shutdown -f -r -t00 -m \\10.1.0.1


【このコマンドの活用方法】
例えば5台のサーバを定期的にリブートしたいとします。そういった場合は

reboot.bat:
shutdown -f -r -t00 -m \\10.1.0.1
shutdown -f -r -t00 -m \\10.1.0.2
shutdown -f -r -t00 -m \\10.1.0.3
shutdown -f -r -t00 -m \\10.1.0.4
shutdown -f -r -t00 -m \\10.1.0.5

のようなバッチファイルを作っておいて、タスクやatコマンドで登録しておきます。そうすると定期的にサーバリブートが行えるようになります。

| | Comments (0) | TrackBack (0)

September 13, 2005

Windows2000のログイン画面カスタマイズ方法

こだわりのサーバはログイン画面もカスタマイズすべきです。(暇ならば)

■壁紙を使う

HKEY_USERS\.DEFAULT\Control Panel\Desktop\Wallpaper

に壁紙となる画像ファイルのファイル名を指定します。


■壁紙の表示方法の指定

HKEY_USERS\.DEFAULT\Control Panel\Desktop\TileWallpaper

の値を0にすると中央に表示。1にすると並べて表示。


■壁紙の拡大

HKEY_USERS\.DEFAULT\Control Panel\Desktop\WallpaperStyle

の値を0にするとデフォルトの大きさ。2にすると拡大して表示。

| | Comments (0) | TrackBack (1)

July 11, 2005

Win2000でスタートアッププログラムを止める方法

Win2000にはmsconfigがないのでスタートアッププログラムを止めるのはちょっと面倒です。

1. [スタート]→[ファイル名を指定して実行]してmsinfo32と入力
2. [システム情報]が表示される。左側から[ソフトウェア環境]→[スタートアッププログラム]とサブカテゴリを選択する。
3. 右側に起動されるプログラムの一覧が表示されるので削除したいプログラムをメモする。
4. [スタート]→[ファイル名を指定して実行]してregeditと入力。
5. レジストリエディタが起動したら、メモしたものを検索して削除する。

※補足 (2005/7/11)
・・・と書いてみたけど、以下のレジストリ直接いじるのが早いな。
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

| | Comments (1) | TrackBack (0)

April 11, 2005

Linuxで表示言語を変えたいときは

完全覚え書きです。Linuxで表示言語を変えたいときは

/etc/sysconfig/i18n

を書き換えます。

LANG="ja_JP.eucJP"

LANG="en_US.UTF-8"

とするとメッセージが日本語から英語に変わります。日本語だと文字化けするので嫌という人にお勧めです。(?!)

| | Comments (1) | TrackBack (0)

February 18, 2005

悪意のあるソフトウェアの削除ツール

「Microsoft Windows 悪意のあるソフトウェアの削除ツールを使用すると、Windows XP、Windows 2000、および Windows Server 2003 コンピュータが、Blaster、Sasser、Mydoom などの特定の悪意のあるソフトウェアに感染していないかどうかをチェックし、感染している場合は駆除することができます。検出処理と駆除処理が終了するとその結果が表示され、検出されて駆除の対象となった悪質なソフトウェアが表示されます。」

だそうです。ActiveXベースなのでインストールもいらず簡単楽ちんです。

http://www.microsoft.com/japan/security/malwareremove/default.mspx

| | Comments (1) | TrackBack (1)

February 08, 2005

negotiation設定変更方法(FreeBSD編)

①ifconfig で現在の状態を確認

# ifconfig
fxp0: flags=8843 mtu 1500
inet 10.0.0.21 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::206:5bff:fe3c:970%fxp0 prefixlen 64 scopeid 0x1
ether 00:06:5b:3c:09:70
media: Ethernet autoselect (none)
status: active
fxp1: flags=8802 mtu 1500
ether 00:06:5b:3c:09:71
media: Ethernet autoselect (none)
status: no carrier

②以下のコマンドで 100M full に設定

# ifconfig fxp0 media 100baseTX mediaopt full-duplex
# ifconfig fxp1 media 100baseTX mediaopt full-duplex

③ifconfig で確認

# ifconfig
fxp0: flags=8843 mtu 1500
inet 10.0.0.21 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::206:5bff:fe3c:970%fxp0 prefixlen 64 scopeid 0x1
ether 00:06:5b:3c:09:70
media: Ethernet 100baseTX
status: active
fxp1: flags=8802 mtu 1500
ether 00:06:5b:3c:09:71
media: Ethernet 100baseTX
status: no carrier

④/etc/start_if.fxp0 を作成
ifconfig fxp0 media 100baseTX mediaopt full-duplex
ifconfig fxp1 media 100baseTX mediaopt full-duplex

| | Comments (3) | TrackBack (0)

negotiation設定変更方法(Solaris編)

やりかたをよく忘れるのでφ(..)メモメモ。

①etc/system に以下の様に設定を行う。

set hme:hme_adv_100fdx_cap=1
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_10hdx_cap=0
set hme:hme_adv_10fdx_cap=0
set hme:hme_adv_autoneg_cap=0

※hme以外の qfe, eri, hmeについても、上記の設定方法は共通。パラメタの指定で、hme とあるところを、それぞれ、qfe, eri, hme に置き換えることで設定を行うことが可能。

※ただしdmfeの場合は/etc/systemに書く方法は使えない。

②リブート

③どうしてもリブートできない場合は、上記の記述に加えて、下記のコマンドを実行

# ndd -set /dev/hme0 adv_100fdx_cap 1
# ndd -set /dev/hme0 adv_100hdx_cap 0
# ndd -set /dev/hme0 adv_10hdx_cap 0
# ndd -set /dev/hme0 adv_10fdx_cap 0
# ndd -set /dev/hme0 adv_autoneg_cap 0


■確認方法
# ndd /dev/dmfe0 adv_autoneg_cap

のようにして、無効であれば0が、有効であれば1になります。

| | Comments (0) | TrackBack (0)

December 29, 2004

Windwos2000Serverでの自動ログオン設定方法

Windows Updateをする度にログインするのは面倒くさいので、大勢が使うサーバの一部で自動ログインを実施しています。今回は覚え書きの意味も含めてそのやり方を記載してみます。

1) スタートメニュー⇒ファイル名を指定して実行で
rundll32 netplwiz.dll,UsersRunDll
と入力しEnter 。

2) ユーザアカウントウィンドウが開くので、 「ユーザがこのコンピュータを使うときにはユーザ名とパスワードの入力が必要(E)」のチェックをはずし、 「OK」ボタン押下。

3) 自動ログオンウィンドウが開くので、自動でログオンしたいユーザ名とパスワードを入力して「OK」ボタン押下。

| | Comments (4) | TrackBack (0)

September 22, 2004

Linuxで空きメモリ容量の調べ方

サーバ増強の検討に入るとき現在のサーバリソース使用量を知ることがとても大切になりますね。最近はサーバ増強台数の決定をうちの若いもの達にやってもらうようにしたのですが、そうすると勘違いが多く見られてちょっと驚きました。そこで今回はLinuxで空きメモリ容量の調べ方を記してみましょう。

【よくある間違い】
メモリ空き容量を調べる際、経験が浅い人だとtopもしくはvmstatあたりのコマンドを使って判断しようとします(マニアックな方はprocinfoを使うかもしれない)。次の例をみてください。


# top

Mem: 902772k av, 883884k used, 18888k free, 0k shrd, 42396k buff
547404k actv, 0k in_d, 18852k in_c
Swap: 2096440k av, 2956k used, 2093484k free 647904k cached



topで見るとメモリ搭載量1GBに対して空きが18Mbしかないように見えます。メモリ増強が必要? でもちょっと待ってください。Linuxはメモリに空きができるとバッファとキャッシュに割り当てようとしますが、これらは空きメモリ容量と考えられます。

【正解】
というわけで正解です。Linuxの場合、空きメモリ容量はfreeコマンドで確認します。


# free
total used free shared buffers cached
Mem: 902772 895416 7356 0 40424 689488
-/+ buffers/cache: 165504 737268
Swap: 2096440 2392 2094048


2行目がバッファとキャッシュで使われた分を除いた本当の空きメモリ容量になります。freeで確認すると737MBも空いていることがわかりますね。なんだ、メモリ増強の必要がないや、とわかりましたね。めでたしめでたし。

| | Comments (0) | TrackBack (1)

August 13, 2004

RedHatの代わりにFedora Core2を使おう

先日社内で各OSのパフォーマンステストをやってみました。比較対照はRedHat9、Fedora Core2、Windows2000、Windows2003の4つです。

RedHat9.0とFedora Core2の比較だけでいうとFedora Core2が圧倒的でした。OSの違いというよりはLinux Kernel2.4とLinux Kernel2.6のパフォーマンスの違いがそのまま結果として現れたということになるのかもしれません。すばらしいです。

またついでに各OSの上にWEBサーバもやってみました。一番速かったはWindows2003+IIS6、二番目に速かったのはFedora Core2+TUX3になります。


【結論】
RedHat9.0である必要がない人は迷わずFedora Core2を使いましょう。

| | Comments (0) | TrackBack (0)

June 06, 2004

Windows vs UNIX論争はナンセンス。サーバOS選定のポイント

私はWindowsとUNIXのどちらが優れているかを論じることはあまり意味がないと思っています。要はそれぞれのOSの個性を知り、使い分ければよいだけの話です。(とは言いつつも1つのOSを覚えると他のOSを覚えるのは大変なのでそのOSに固持したくなる気持ちはよくわかりますけどね)

そこでここでは各OSの一長一短に触れ、適切なOSの選定について私見を述べてみたいと思います。

【資料】各OSの比較

-----------------------------------------------------------------------
OS response Disk I/O安全性 備考
-----------------------------------------------------------------------
Windows ○ ○          ASP言語を使える
Linux ◎◎ ××× 最速
Solaris × ◎◎ 安全
FreeBSD ○ ○          JAVAに弱い
-----------------------------------------------------------------------


●Windows
ASP言語が使える唯一のOSです。開発納期を短縮するために習得が簡単なASP言語を選択するのはとてもよい考えだと思います。開発納期が短いサイトのWEBサーバに最適です。

IISはセキュリティ上弱いと思われていますが私はそうは思いません。サーバの設定を適切に行っておけば不正アクセスから十分保護できます。UNIX系OSと比べてWindowsはWindowsUpdateがあるおかげでパッチ適用が簡単な点は十分評価すべきだと思います。

●Linux
処理は速いけどDiskI/Oまわりの安定性が貧弱。自動車に例えるとスーパーカーのようなOSと言えます。DiskI/Oを駆使するアプリケーションをがんがんまわすとOSがフリーズするか最悪HDD自体が死亡します。

Linuxはセキュリティパッチが非常に多く出回るので油断ができません。Windowsより危険なんじゃないかと個人的に思っています。

RedHat Linuxでは世界最高速のWEBサーバ、TUXが使えるのが大きなメリットです。TUXではCGI等の動的なコンテンツは扱えませんが、その欠点を除けばapacheの2倍~5倍くらいのパフォーマンスが出ます。世界的に見て実績が非常に少ないですがなんでこんなよいものを使わないのか不思議でたまりません。画像データ等の静的データを配信するWEBサーバに是非お使いください。

WEBサーバとしては最適ですがDBサーバとしては決して使いたくないOSです。

補足:Kernel2.6はDiskI/Oが安定しているとの情報入手。余裕ができたら一度確認してみます。

●Solaris
Solarisは固いので有名ですが、個人的にもその名声に恥じないとても安定したOSだと思っています。特にDisk I/Oまわりの処理は遅いけど確実であることは大きな安心です。見た目は他のOSと変わりませんが、システムの状態を知るためのコマンド類がとても充実しています。かゆいところに手が届くOSと言えます。

が、残念ながらハードウェアは故障が多くてあまりよくないかもしれません。最近のモデルは知りませんが、昔のEnterprise系のモデルではよくCPUやメモリが死んでいました。ただしエラーログにパーツ故障情報が詳細に載るので予備部品を持っていれば怖くはないですけど。

絶対に止められないDBサーバやWEBサーバにお勧めです。


●FreeBSD
フリーのOSとして一時期Linuxと人気を二分していたのに、いつの間にかLinuxの圧勝な情勢となってきています。

OSの安定性はとても高いです。またセキュリティパッチがほとんど出ないのも安心です。Linuxと比較してディストリビューションが1つしかないので情報の入手がしやすいというのも大きなメリットです。

FreeBSDの弱点はライセンスの問題か何かでJAVAのサポートが遅れたことです。現在の状況は正確に知りませんが、まだまだFreeBSDで本格的にJAVAを扱うには時間がかかることでしょう。

あと大きな点ではありませんが、インストールがとても簡単で、慣れれば5分もあればインストールが完了します。

ということでDNSサーバ、メールサーバ等に最適です。


●(おまけ)IRIX,AIX,HP-UX
これらは私は多少経験がありますがほとんど知りませんので評価できません。しいて言えばAIXはコマンドが独特で、Linuxからの乗り換えだと学習が面倒かもしれません。Solarisからの乗り換えだとIBMがそれ用の資料が提供されているので多少は楽ですけれども。

| | Comments (1) | TrackBack (1)